未署名、又は一部署名済みトランザクションのシリアライゼーション

Electrum2.0はトランザクションのために拡張シリアライゼーション形式を使用します。この形式の目的は未署名、又は一部署名済みトランザクションを共同署名者又はコールドストレージに送信することです。

これは、トランザクションインプットの「pubkey」フィールドを拡張することによって実現されます。

拡張公開鍵

pubkeyの最初のバイトを見ることで拡張公開鍵であるかどうかがわかります:

  • 0x02, 0x03, 0x04:正当なMonacoin公開鍵(圧縮されているかどうか)
  • 0xFF, 0xFE, 0xFD:拡張公開鍵

拡張公開鍵には3種類あります:

  • 0xFF: bip32の拡張公開鍵とデリベーション
  • 0xFE: Electrumのレガシーデリベーション:マスター公開鍵+デリベーション
  • 0xFD: 未知の公開鍵だがMonacoinのものであることはわかっている公開鍵

公開鍵

これがMonacoinにおける公開鍵の正しいシリアライゼーションです。

0x02 or 0x03 compressed public key (32 bytes)
0x04 uncompressed public key (64 bytes)

BIP32デリベーション

0xFF xpub (78 bytes) bip32 derivation (2*k bytes)

Electrumのレガシーデリベーション

0xFE mpk (64 bytes) derivation (4 bytes)

Monacoinアドレス

アドレス(又はアウトプットスクリプトのhash 160)はわかるけど公開鍵がわからない場合に使用されます。共同署名者は公開鍵を知っている必要があります。

0xFD hash_160_of_script (20 bytes)