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

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

ブロックチェーン

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ではそれぞれマークルツリー、マーク…