初めて WEB3 ウォレットを使用したとき、喜んでビットコイン ウォレットを開いてアドレスをコピーする準備をしていましたが、突然、自分が作成したウォレットに実際には複数の異なるアドレスがあることに気付いたという初心者の友人も多いかもしれません。それは、困惑した表情を浮かべながら、見慣れない交差点に向かって歩いているようなものです。
アドレスが異なるのはなぜですか?これらのアドレスのうちどれを使用する必要がありますか?
<img src="https://img.php.cn/upload/article/000/000/000/171751057878929.png" alt="Web3 初心者シリーズ: 私のビットコインに複数のアドレスがあるのはなぜですか?">OKX 钱包的多个 Bitcoin 地址
ビットコインコミュニティはテクノロジーが絶えず発展しており、テクノロジーの発展によって新しいコンテンツが生み出されるコミュニティです。さまざまなアドレス形式は、新しいテクノロジーを適用した結果であると考えられます。次に、さまざまなアドレス形式の違いを調べます。
この形式は、2009年にビットコインが初めて登場したときに採用されたため、レガシー形式と呼ばれ、当時のビットコインアドレスは公開鍵と秘密鍵のペアから作成されていたため、レガシーアドレスとも呼ばれます。支払い公開キー ハッシュ (P2PKH) アドレス。
現在、レガシータイプのアドレスはトランザクションでより多くのスペースを占有し、その結果、トランザクション手数料が高くなるようです。現在、このタイプのアドレスは、新しいアドレスと互換性のない古いウォレットを使用する場合にのみ使用されます。
レガシーアドレスの特徴はすべて「1」で始まることが分かります。これは、アドレスを生成するときに、さまざまなシナリオ (例: testnet/mainnet) に従って生成された公開キーの前にプレフィックスが追加され、プレフィックスが追加された公開キーがハッシュによって計算されるため、最終的にアドレスは次のようになります。 「1」。
従来のレガシー アドレスと比較して、P2SH アドレスは公開鍵のハッシュではなく、引き換えスクリプト (redeem-script) のハッシュを使用します。平たく言えば、P2PKH は公開鍵のハッシュに支払いますが、P2SH は償還スクリプトに支払います。受信者が償還スクリプトの転送条件を満たした場合にのみ、内部の資金を使用できます。
支払いオブジェクトが公開鍵からスクリプトに変換されるため、柔軟性が大幅に拡張され、引き換えスクリプトの実行ロジックをカスタマイズできます。一般的なアプリケーションには、マルチシグネチャ トランザクションの実装が含まれます。
P2SH に基づいて、Segregated Witness テクノロジーが組み込まれている場合、このアドレスの形式は Segregated Witness 互換アドレス (Nested SegWit) になります。 Segregated Witness のアドレスを紹介するときに、Segregated Witness について詳しく知ることができます。 Segregated Witness テクノロジーの導入後は、取引量を削減できるため、取引手数料が削減されます。
P2SHアドレスが「3」で始まることがわかります。
このタイプのアドレスを導入する前に、その内部の主要なテクノロジーである Segregated Witness (SegWit) を導入する必要があります。名前が示すように、Segregated Witness は証人データ (証人) を分離し、個別に処理します。
これを行うことの大きな利点は、取引情報のサイズが削減され、それによって取引手数料が削減されることです。サイズの縮小によってもたらされるもう 1 つの利点は、ビットコインのブロック トランザクション サイズの上限が 1 MB から 4 MB に増加したことです。
Segregated Witness のアドレスの特徴は、アドレスが「bc1」で始まることです。
Taproot アドレスの利点は、複雑なトランザクション シナリオにおけるプライバシーと効率性です。ネイティブ SegWit と比較して、Schnorr アルゴリズムを使用して楕円曲線デジタル署名アルゴリズムを置き換えます。前者はバッチ トランザクション シナリオでより効率的であり、マルチ署名ウォレットのプライバシーを向上します。
メインルートアドレスの特徴は、アドレスが通常「bc1q」で始まることです。
OKX、Unisat、その他のウォレットなどの現在の主流のウォレットは、上記の 4 つのアドレスをサポートしているため、トランザクションコストを削減するには、ネイティブ SegWit および Taproot 形式のアドレスを使用する方が合理的です。 。
さらに、ビットコインの刻印などに興味がある場合、ほとんどのウォレットはこれら 2 つのアドレスの刻印に対して追加の処理を行っており、特別な UTXO を保護することはできません。取引中に誤って転送されてしまいました。 「bc1」で始まるウォレットアドレスを探してください!
もちろん、アドレス形式が異なるウォレットでも資金取引は可能ですのでご安心ください。
ビットコインの残高やブロック情報を確認したい場合は、開発者向けに豊富なAPIを提供するZANのノードサービスをご利用ください。 API ドキュメントの詳細: https://docs.zan.top/reference/zan_getbalance-enhance
上記の紹介を終えて、皆さんはウォレットについて予備的に理解しました。私と同じように、ウォレット内のテクノロジーの取得に興味があるので、内部にある謎のテクノロジーを見てみましょう。
P2SH を導入するとき、これが償還スクリプト トランザクションのためのテクノロジーであることはわかっていました。そのため、償還スクリプトとは何なのか、ビットコイン エコシステムにおけるその役割は何なのかを理解していました。
引き換えスクリプトを紹介する前に、ビットコイントランザクションの基本構造を紹介する必要があります。
以下は典型的な P2PK タイプのトランザクションで、04ae で始まるアドレスから 15kD で始まるアドレスに 10 BTC を転送したいと考えています。 04ae アドレスを持つアカウントは、このアカウントを使用する権利がある (秘密キーを所有している) ことをチェーン上の他のユーザーに示す必要があり、その後、このトランザクションでその身元を証明するために署名 (ScriptSig) を提供する必要があります。
署名の取得に加えて、検証者は、UTXO に対応する前のトランザクションの出力スクリプトを見つける必要もあります。これら 2 つのスクリプトが結合されて引き換えスクリプトが形成されます。引き換えスクリプトの機能は、トランザクションの正当性を証明することです。
このトランザクションでは、署名と出力スクリプトが両方ともコンピューター命令であることがわかります。 「OP_PUSHBYTES」は、データをスタックにプッシュすることを意味します。まず、04ae が ScriptSig 内の独自の秘密キーを使用してトランザクション全体に署名し、署名がスタックにプッシュされます。次に、公開キーをスタックにプッシュし、最後に「OP_CHECKSIG」で公開キーを使用して署名を復号し、トランザクションが一貫しているかどうかを比較します。それらが一貫している場合、ID は有効です。
この P2PK 方式に加えて、引き換えスクリプトは P2PKH や P2SH などのさまざまな認証方式を実装することもできます。
上記の紹介から、新しいウォレット形式では現在 Segregated Witness テクノロジーが使用されていることがわかります。それでは、Witness とは何で、どのように分離されているのでしょうか?
ここでの Witness は、ビットコインの基本構造におけるスクリプト署名 (scriptSig) 情報を基本構造から抽出し、新しいデータ構造に置くものと考えることができます。
上の図でわかるように、トランザクションに必要なコンテンツはトランザクションのソース情報とトランザクションの出力情報だけです。これは、黄色の部分 (トランザクションの合計サイズ) により、トランザクションのサイズが減少します。にはサイズ制限があるため、トランザクション署名を個別に分散すると、1 つのブロックでより多くのトランザクションに対応できるようになります。さらに、トランザクションの署名を計算する際、署名部分の内容は含まれないため、トランザクションの展性の問題を効果的に解決できます。
以下は P2TR トランザクションです。このトランザクションには追加の監視部分があることがわかります。その機能は、トランザクションの正当性を検証することです。 ScriptSig の代わりに Witness を使用した後も、正当性を検証する方法は変わりません。つまり、公開鍵を使用して Witness の署名を復号し、トランザクションの内容が一貫しているかどうかを検証します。ノードは、トランザクションの正当性を検証する必要がある場合にのみ、証人情報を要求します。今すぐ ZAN ノード サービスを無料で使用して (ZAN.TOP にアクセスしてください)、BTC ネットワークに安定かつ高速で接続します。
要約すると、Segregated Witness は、トランザクション署名部分の内容を元のトランザクションの残りの部分から分離することで、単一トランザクションのサイズを削減し、ブロック全体の容量を増加します。さらに、署名部分の内容はトランザクションのハッシュ値の計算に含まれないため、トランザクションの展性の問題を効果的に解決できます。
この記事は、ZANチーム(Xアカウント@zan_team)のYeezo(Xアカウント@GaoYeezo75065)によって書かれています。
以上がWeb3 初心者シリーズ: 私のビットコインに複数のアドレスがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。