Electrum 2.0では、トランザクションをシリアライズする方法が改良されました。この新しい方法により、署名されていないトランザクションや部分的に署名されたトランザクションを他の署名者と共有したり、コールドストレージデバイスに保存したりすることができます。
このシリアライズ形式の主な変更点は、トランザクション入力に見られる。具体的には pubkey
フィールドに追加情報を含めることができます。この拡張により、ウォレットはまだ完全に署名されていないトランザクションを扱えるようになり、マルチ署名のセットアップやコールドストレージの運用管理が容易になる。
拡張公開鍵
標準的なビットコインの公開鍵は 0x02
, 0x03
あるいは 0x04
.これらはビットコイン取引で使用される通常の圧縮または非圧縮の公開鍵である。
拡張公開鍵は 0xFF
, 0xFE
あるいは 0xFD
.Electrumはこれらを使って、鍵の出所や派生経路に関する詳細な情報を提供する。
拡張公開鍵には3種類ある:
- で始まるキー
0xFF
は、BIP32拡張公開鍵(xpubs)とその派生パスである。 - で始まるキー
0xFE
Electrumは、マスター公開鍵とその導出パスを組み合わせたレガシー導出方式を採用しています。 - で始まるキー
0xFD
は、ビットコインアドレスのみが知られている未知の公開鍵を表す。
種類
- BIP32の派生 (で始まる
0xFF
):この形式は、78バイト長の拡張公開鍵(xpub)と、それに続くBIP32派生パスで構成される。派生パスは4バイト整数の羅列で表現され、全長は派生ステップ数の2倍となる。 - レガシー・エレクトラムの派生 (で始まる
0xFE
):この古い形式では、64バイト長のマスター公開鍵(mpk)と4バイトの派生値を使います。この方法は、以前のバージョンのElectrumに特有のものです。 - ビットコインアドレスのみ (で始まる
0xFD
):この形式は、完全な公開鍵は利用できないが、ビットコインアドレスまたは対応するスクリプトのハッシュがわかっている場合に使用する。出力スクリプトの20バイトのハッシュ160が格納される。この形式は、連帯保証人が必要なときに実際の公開鍵を提供できることを前提としている。
これらの拡張フォーマットにより、Electrumは様々なウォレットタイプと派生方法を扱うことができ、最新のBIP32ベースの階層型ウォレットと、旧来のElectrumウォレット構造の両方をサポートします。その 0xFD
フォーマットはまた、部分的に既知のトランザクションデータを扱う際に柔軟性を提供する。
標準公開鍵
ビットコインは、公開鍵を表現するために特定のフォーマットを使用します。これらのフォーマットはビットコインネットワーク全体で標準として認識されている:
圧縮された公開鍵:で始まる。 0x02
または 0x03
その後に32バイトのデータが続く。開始バイトは y
-楕円曲線上の公開鍵の点の座標が偶数(0x02
)または奇数(0x03
).
非圧縮公開鍵:で始まる。 0x04
その後に64バイトのデータが続く。このフォーマットには x
そして y
楕円曲線上の公開鍵の点の座標。