未署名、又は一部署名済みトランザクションのシリアライゼーション¶
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) |