よくある質問
ソフトウェアウォレットは乱数を使用して生成しますメイン秘密鍵。
それから、パスしてください決定的かつ不可逆的なアルゴリズム、無制限の数を導き出すことができます。サブ秘密鍵。
なぜ決定的かつ不可逆的なアルゴリズムが必要なのでしょうか?
なぜなら確実性すべての子 秘密鍵 は常に同じメイン 秘密鍵 から生成できることを意味します。不可逆的つまり、マスター 秘密鍵 を子 秘密鍵 から再構築することはできません。
それがそう呼ばれる理由です階層的決定論的 (HD) ウォレット。 秘密鍵 の導出構造はツリーに似ています。親キーは複数の子キーを導出でき、各子キーは複数の孫キーを導出でき、このプロセスは無期限に継続できます。
HD ウォレットまたは バックアップ ウォレットを初めて作成すると、シードフレーズ。 シードフレーズ は、一連の英単語のセットで構成されます。このシーケンスは生成するために使用されます。種子、その後、シードからウォレット内のすべての 秘密鍵 を生成します。つまり、シードフレーズ は、復元する ウォレットで使用できるウォレット バックアップ です。そしてシードは、決定論的ウォレットの背後にある元の乱数に対応します。
HD ウォレットの大きな利点の 1 つは、必要なのはメイン公開鍵任意の数を生成できますサブ公開鍵。つまり、メイン 秘密鍵 またはサブ 秘密鍵 にアクセスせずに、メイン 公開鍵 から新しいパブリック アドレスを作成できます。ただし、これらの生成されたアドレスは、最終的にはメインの 秘密鍵 によって制御されます。
もちろん、この設計にはリスクがあります。 シードフレーズ が公開されると、基本的にすべての 秘密鍵 が公開されます。これが発生すると、ウォレット内のデジタル資産のセキュリティは事実上失われます。
なぜこれほど多くの 秘密鍵 が必要なのでしょうか?
なぜユーザーはこれほど 秘密鍵 を必要とするのでしょうか?これはビットコイン取引を通じて実現できます変更メカニズム理解すること。
ビットコイン取引というのは、入力そして出力データ構造には、ソース (入力) から宛先アドレス (出力) に値を転送するために必要なスクリプト情報も含まれています。
ビットコインのインプットとアウトプットを理解するには、まず次のことを理解する必要があります。 UTXO(未使用のトランザクション出力)。 UTXO はビットコイン トランザクションの基本単位であり、まだ使用されていないトランザクション出力を表します。単一のビットコインは、実際には UTXO として複数のトランザクションおよび複数のブロックに分散される場合があります。ビットコインには、一元的に記録される単純な口座残高はありません。代わりに、オンチェーン には、それぞれの所有者によって制御される分散型 UTXO のみがあります。
UTXO は任意の量の価値を表すことができますが、一度作成されると、物理的なコインを半分に分割できないのと同じように、分割することはできません。 UTXO の値がトランザクションに必要な金額よりも大きい場合でも、UTXO 全体を使用する必要があり、超過分はおつりとして返されます。
たとえば、20 ユニット相当の UTXO を持っていて、1 ユニットを支払いたいとします。トランザクションでは、UTXO の 20 ユニットをすべて消費し、2 つの出力を作成する必要があります。1 つは受信者に 1 ユニットを送信し、もう 1 つは釣銭として 19 ユニットをウォレットに送り返すものです。したがって、ほとんどのビットコイン取引では小銭が発生します。
これは別の疑問につながります。変更は元のアドレスに送り返されるべきですか、それとも新しく生成されたアドレスに送り返されるべきですか?
サトシ・ナカモトがビットコインを設計したとき、彼は次のように導入しました。アドレスメカニズムの変更: 通常、トランザクションごとに釣銭を受け取るために新しいアドレスが作成されます。そうすることで、ユーザーのプライバシーが保護され、一部のセキュリティ リスクが軽減されます。
実生活では、これは、異なる銀行で異なる名前と ID で複数の銀行口座を開設することに似ています。たとえ誰かが各口座の資金の流れを観察できたとしても、デジタル資産の真の所有者まですべての資金を追跡することは困難でしょう。これが、ビットコインが比較的匿名性が高い理由の 1 つです。
これが、ウォレットユーザーが大量の 秘密鍵 を必要とする理由です。 公開鍵と秘密鍵は常にペアで存在し、トランザクションごとに新たな変更アドレスが生成される可能性があるため、これらのバックアップのアドレスに対応する秘密鍵を1つずつ格納すると管理コストが高くなります。 HD ウォレットは、1 つのルート キーから任意の数の sub-公開鍵 および sub-秘密鍵 を派生することでこの問題を解決し、デジタル ウォレットの使いやすさを大幅に向上させます。
