トランザクションへの署名

Casperネットワーク上にて実行するトランザクション(Transaction)を作成する際、アカウントオーナーもしくは正確には権限を持った署名者がアカウントの暗号鍵のペア(key-pair)にてトランザクションに署名しなくてはいけません。鍵ペアは、アカウントの秘密鍵と公開鍵の組み合わせとなっています。トランザクションへの署名は、そのトランザクションが実行対象であることをネットワークにて確認できる状態にします。

トランザクションが署名されると、署名者の公開鍵と紐づけられApproval(承認)とみなされます。有効な各トランザクションは、少なくとも1つの承認を得ています。

署名作成の過程は、ペイメントのハッシュとBodyHashを生成するトランザクションのセッションにて開始されます。BodyHashは、シリアライゼーション規格に記述しているようにTransactionV1Headerのコンポーネントとなります。それ以降は、TransactionV1Headerはハッシュされ、TransactionV1Hashを生成できるようになります。上述のとおり、TransactionV1Hashはアカウントの鍵ペアと結合されトランザクションの署名を生成します。

TransactionV1Hashにはトランザクションのボディ内のハッシュを含んでいるため、トランザクションや送信アカウントのキーに何らかの変更があった場合、TransactionV1Hashは無効となります。

公開鍵の暗号化

Casperネットワークは、Ed25519secp256k1両方の公開鍵暗号化と互換性をもっています。シリアル化の際に公開鍵と署名にはシングルバイトの接頭辞がつき、アルゴリズムを表示するタグとして使用されます。Ed25519の公開鍵の場合は接頭辞1が付き、secp256k1の場合は、接頭辞が2になります。

Casperはシリアライゼーション内ではblake2bのハッシュを使用しています。ただ、このハッシュの値は署名を行う際に再度ハッシュ化されます。ハッシュの型は、以下に記載しているように紐づいた鍵ペアのアルゴリズムによります。

・Ed25519の署名は、 SHA-512ダイジェスト認証を使用

・secp256k1の署名は、SHA-256ダイジェスト認証を使用