ブロックチェーン技術ブログ

ブロックチェーンと英語、数学に関するブログ

Ethereum クライアント < Go Ethereum / Prysm >

今回は、Ethereumクライアントについてみていきます. Ethereumクライアントは、Ethereumのブロックチェーンをダウンロードし、各ブロックを検証し、Ethereumのネットワークにアクセスするのに使用するソフトウェアです. また、Ethereumクライアントが他のEth…

ERC20を実装したトークンを作成する

今回は、ERC20の規格に準拠したトークンを作成してみましょう. ERC20は、FT(Fungible Token)のためのインタフェースです。 ERC20に準拠することで、スマートコントラクトから扱いやすくなり、別の種類のトークンとの交換が容易になります。 ここで、FTとは代…

スマートコントラクトを作成して、Hardhatでテストをしてみる

今回は、Solidityで作成したスマートコントラクトをHardhatでテストしてみたいと思います. スマートコントラクトの概要 作成したスマートコントラクトは、クイズを題材にしたものです. まず、問題の出題者がETHの送金とともに、問題を作成するトランザクショ…

Hardhatを使って、EtherWalletと対話してみる

今回は、Hardhatを利用して、Contractをデプロイをして、コンソールでいろいろ試してみたいと思います. デプロイするコントラクトは、下記のリンクから引用したEtherWalletです. https://solidity-by-example.org/app/ether-wallet 送金とオーナーによる引き…

Ethereumウォレット < MetaMask >

Ethereumウォレット Ethereumウォレットは、Ethereumアカウントを管理するためのアプリです. このアプリを使用することで、アカウントの残高の取得やトランザクションの送信をおこなうことが可能になります. 単一のウォレットで、複数のアカウントを管理する…

Solidity入門2 <Functions, Events, Errors>

Functions 関数は、呼び出し可能なコードの単位です. Solidityでも、他の言語と同様に関数を定義できます. 関数には、引数と返り値を定義できます. 返り値がない場合、returns (T) を省略可能です. function multiply(uint _a, uint _b) public view returns…

Solidity入門1 <Pragmas, Contracts, Types>

Solidityは、スマートコントラクトを実装するのに利用されるオブジェクト指向言語です. Solidityの文法や基本的な機能についてみていきます. Pragmas Solidityのソースコードは、ファイルの先頭に Version Pragma を書く必要があります. Version Pragmaは、…

Ethereum入門1 <アカウント、トランザクション、ブロック、ガス>

Ethereumは、Bitcoinと同様に仮想通貨の一種です. 仮想通貨とは、ブロックチェーンの分散台帳に記録された交換可能な電子データです. 仮想通貨は、仲介業者を介することなく、当事者間で送金や商品の売買をおこなうことができます. また、特定の団体が中央主…

デジタル署名 < ECDSA署名 >

デジタル署名は、"ある人がデータを作成したこと"あるいは"あるデータに同意したこと"を保証する仕組みです. ブロックチェーンでは、トランザクションが送信者本人によって作成されたものであることを示すために利用されます. デジタル署名には、公開鍵暗号…

公開鍵暗号 < RSA暗号 >

公開鍵暗号では、暗号化と復号で異なる鍵を使います. また、事前に鍵を共有する必要がなく、公開鍵は他のユーザが見えるようにしておきます. 秘密鍵のみ漏洩しないように管理する必要があります. ブロックチェーンで使用するディジタル署名でも、公開鍵暗号…

暗号学的ハッシュ関数 < SHA-2, SHA3 >

暗号学的ハッシュ関数は、任意のメッセージ(入力値)に対して、固定長の数値を生成します. メッセージに識別子を付与することで、メッセージの認証等に利用されます. 例) SHA-1 を使用したハッシュ値 入力値が abc => a9993e364706816aba3e25717850c26c9cd0d8…

ブロックチェーンのデータ構造 < マークルツリーとマークルパトリシアツリー >

BitcoinやEthereumといった仮想通貨では、ブロックチェーンのデータを複数のノードで分散管理をしています. その際に、ブロックチェーンの改ざんを検知できるように、データを保持する必要があります. Bitcoin、Ethereumではそれぞれマークルツリー、マーク…