ソフトウェアウォレットのコンセプト
ソフトウェアウォレットは、乱数を用いてマスタープライベートキーを生成する。
そして、決定論的かつ不可逆的なアルゴリズムを用いて、マスター秘密鍵をもとに任意の数のサブ秘密鍵を生成する。
では、なぜ「決定論的かつ不可逆的」なアルゴリズムを使うのか。なぜなら、「決定論的」はマスター秘密鍵からすべてのサブ秘密鍵が生成できることを保証し、「不可逆的」はマスター秘密鍵がサブ秘密鍵によって逆転されることがないことを保証するからである。
階層型決定論的財布と呼ばれる理由は、秘密鍵の派生構造が木構造であり、親鍵が一連の子鍵から派生し、そのそれぞれが一連の孫鍵から派生し、無限大に派生することができるからである。
HDウォレットやバックアップウォレットを最初に作るとき、英単語の並びであるヘルパーワードが生成され、この単語の並びがシードを作り、それがすべての秘密鍵を作ることになります。言葉の並びは、ウォレットのバックアップでもあり、復元することができる。そして、シードは決定されたウォレットの乱数に対応する。
HDウォレットの利点は、マスター公開鍵のみで、任意の数のサブ公開鍵を生成できることです。つまり、秘密鍵(マスター・サブ秘密鍵)を介さずに、マスター公開鍵に基づく新しい(公開)アドレスを生成することが可能であり、実際にはマスター秘密鍵によって制御することができる。
メリットとデメリットがあり、ヘルパーキーを公開すると、すべての秘密鍵も公開することになり、持っているデジタル資産のセキュリティはゼロになります。
秘密鍵をたくさん持つ理由
ユーザーがこれほど多くの秘密鍵を必要とする理由は、ビットコインの取引の変更メカニズムで説明できる。
ビットコインの取引は、入力値と出力値を含むデータ構造であり、データ構造には、メタルを初期点(入力値)から宛先アドレス(出力値)に移動させるコードの情報が埋め込まれています。
ビットコインのトランザクションのインプットとアウトプットを語るとき、ビットコインのトランザクションの基本単位であるUTXO(Unspent Transaction Output)という言葉も理解しておく必要がある。1つの使用済み交換単位が、UTXOとして数百のトランザクションと数百のブロックに分散されます。現実には、ネクサスの口座の住所や残高を保存する場所はなく、所有者がロックしたUTXOが散在しているだけである。
UTXOはどんな価値でもあり得ますが、作成された時点で、半分に切ることのできないコインのように不可分な存在となります。UTXOがトランザクションの需要より大きい場合、全体としてはまだ消費されるが、同時にトランザクションの端数となる。
これはどういうことかというと、もう少し生々しい例を挙げると、次のようなことです。20ルピアのUTXOを持っていて、1ルピアを支払いたい場合、取引は20ルピアのUTXO全体を消費し、1ルピアが受取人に支払われる出力と、19ルピアがあなたの財布にお釣りで支払われる出力の2つを作らなければなりません。この場合、為替取引のほとんどがおつりを発生させることになります。
このとき、発生したおつりを元の住所に戻すのか、新しい住所に戻すのかが問題になる。サトシ・ナカモトがビットコインを設計したとき、彼は取引のたびに新しいアドレスを作成することで、ゼロリターンのメカニズムを使用しました。この設計の利点は、トランザクションのユーザーのプライバシーを保護し、いくつかのセキュリティリスクを回避することです。
これは現実には、複数の銀行で複数の名前とIDで口座を開設するようなもので、仮に誰かがそれぞれの口座を経由するお金を知っていたとしても、デジタル通貨の本当の所有者にまで資金の流れをたどることはできない、これがビットコインのいわゆる匿名性である。
このため、ウォレット利用者は多くの秘密鍵を必要とします。公開鍵と秘密鍵は常に対になっており、取引のたびに変更アドレスが発生する可能性があり、これらのアドレスに対応する秘密鍵がデジタル取引の技術的な問題となります。HDウォレットは、1つの公開鍵から任意の数のサブ公開鍵を生成できるため、デジタルウォレットの利用におけるハード問題を大きく解決します。