この記事の著者は、Huobi Blockchain Research Center の技術専門家である Liao Xuefeng です。彼はソフトウェア開発で 10 年の経験があり、Java/Python/Ruby/Visual Basic/Objective C/Lisp などのプログラミング言語に精通しています。彼はオープンソース フレームワークについて深く研究しており、「Spring 2.0 Core Technology and Best Practices」という本の著者でもあります。彼はまた、GitHub でホストされている複数のアマチュア オープン ソース プロジェクトも運営しています。 この記事では、ビットコインとビットコインブロックチェーンの関連知識を詳しく紹介します。 ビットコイン ブロックチェーンでは、各ブロックは前のブロックを指しており、SHA256 によって計算されるこれらのブロック ハッシュ チェーンが、ビットコイン元帳の改ざん防止の基礎となります。 ブロックでは、ビットコイン システムはトランザクションを使用してビットコインのトランザクションを表します。ブロックには少なくとも 1 つのトランザクションが含まれます。これらのトランザクションのハッシュは、マークル ツリーを介したすべてのトランザクションのマークル ハッシュを計算するために使用され、ブロック ハッシュに含まれるため、トランザクションは変更不可能になります。 各トランザクションを詳しく見ると、マイナーのマイニング収益である最初のトランザクションを除いて、各トランザクションには 1 つ以上の入力 (TxIn) と 1 つ以上の出力 (TxOut) があることがわかります。 最初のマイナーの収入取引は通常、Coinbase と呼ばれます。入力がないので、TxInのハッシュは常に00000000…0000とマークされます。 他のトランザクションの場合、TxIn は、ブロックチェーン上のこのブロックの前のトランザクション ハッシュとインデックスに一意に遡ることができます。 トランザクション ハッシュとインデックス (0 から始まる) を通じて、未使用のトランザクション出力 UTXO (Unspent Transaction Output) を一意に特定できます。このようにして、各 Tx 入力は前の Tx 出力に関連付けられます。 前回の取引で、ボブがアリスに 0.15 BTC を支払ったと仮定します。 では、アリスがこの 0.15 BTC を使いたい場合、自分がこの UTXO を所有していること、そして他人がアリスになりすましてこの UTXO を使うことができないことをどのように証明すればよいのでしょうか?
このうち、abcd1234…9876 はアリスの公開鍵ハッシュです。スクリプト全体の意味は、このスクリプトを実行するための署名と公開鍵を提供できる人は誰でも、このトランザクションの 1.5 BTC を使用できるということです。 署名の作成にはアリスの秘密鍵のみを使用できるため、アリス以外の秘密鍵で作成された署名はこのスクリプトの検証に合格できず、他の人がアリスになりすましてこの出力を使用することはできません。 アリスが署名と自分の公開鍵を提供すると、この出力を使用する別のトランザクションが実際に作成されます。 誰もが、アリスが作成した新しいトランザクションが有効であることを確認できます。有効な場合、トランザクションはマイナーによって新しいブロックにパッケージ化され、ブロックチェーンの変更不可能な部分になります。 トランザクションが有効かどうかを確認するために、有名なピザトランザクションを例に挙げてみましょう。 トランザクション cca75078…4d79 では、唯一の TxIn 入力によって提供される sigScript は次のとおりです。
sigScript は実際には 2 つの部分で構成されています。
トランザクションが有効であることを確認するには、まず、TxIn: a1075db5…d48d およびインデックス 0 で宣言された以前の出力ハッシュに基づいて、前のトランザクションの出力を見つける必要があります。 https://webbtc.com/tx/a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d このトランザクションのスクリプト出力は次のとおりです。
Bitcoin スクリプトは一連の命令とデータで構成され、各命令は 1 バイトを占め、データはデータ ヘッダーの長さによって決まります。上記のバイナリ スクリプトから変換された Bitcoin 命令は次のとおりです。
これで、署名、公開鍵、スクリプトができました。
このスクリプトを実行すると、トランザクションが有効であることを確認できます。 Bitcoin スクリプトは、スタック上で実行される仮想マシン命令として設計されています。命令の数は限られており、ループや条件付きジャンプが意図的に排除されて設計されています。したがって、Bitcoin スクリプトはチューリング完全な言語ではありません。 Bitcoin スクリプトの実行は非常に簡単です。まず空のスタックを準備し、署名と公開鍵をスタックにプッシュする必要があります。 次に、TxOut スクリプトを実行します。
まず、OP_DUPが実行されます。この命令はスタックの一番上の要素をコピーするので、結果は次のようになります。 次に、OP_HASH160 が実行され、スタックの最上位要素で SHA256/RipeMD160 が計算されます。これは実際に公開鍵ハッシュを計算するため、実行結果は次のようになります。 次の命令は実際にはデータであり、そのデータを直接スタックにプッシュします。 次に、OP_EQUALVERIFY を実行します。この命令は、スタックの一番上の 2 つの要素が等しいかどうかを比較します。等しくない場合、スクリプト全体の実行は失敗します。等しい場合、スクリプトは実行を継続し、実行結果は次のようになります。 最後に、署名を検証する命令 OP_CHECKSIG を実行します。まず、署名タイプSIGHASH_ALL(0×01)に基づいてトランザクション全体を検証します。検証方法は次のとおりです。 現在のトランザクションのすべての TxIn の scriptSig を削除し (赤い部分)、現在の TxIn の scriptSig を UTXO のスクリプトに置き換え (青い部分)、長さフィールドを調整します (緑の部分)。 最後に、リトルエンディアンの 4 バイト署名タイプ 0×01 (灰色の部分) を追加し、SHA256 を 2 回計算すると、次のようになります。
次に、ECDSA アルゴリズムを使用して署名を検証します。
署名の検証結果に基づいて、トランザクションが有効かどうかを確認できます。 スクリプトの導入により、ビットコインは実際にプログラミング スクリプトによるコンピュータ プログラムの検証に厳密に基づいたデジタル通貨所有権移転メカニズムを実装していることがわかります。コンピュータ プログラムのスケーラビリティにより、ビットコインの支払いは特定の公開鍵アドレスへの支払いに限定されません。スクリプトを使用すると、マルチ署名検証条件など、さまざまな支払い条件を構築できます。
このマルチ署名スクリプトは、複数の公開鍵アドレスを提供し、複数の署名検証を必要とするため、M 個の署名のうち少なくとも N 個の署名を付与できます。上記のスクリプトを使用すると、3 つの公開鍵アドレスから任意の 2 つの有効な署名を提供できます。 サードパーティのオンラインウォレットでビットコインをホストする場合、マルチ署名を使用して、出力が自分自身とサードパーティのウォレットの署名後にのみ使用されるようにすることができます。これにより、ハッカーがサードパーティのウォレットを攻撃した後でユーザーのビットコインを使うことができなくなります。 OP_CHECKLOCKTIMEVERIFY を使用すると、トランザクションのロック時間を指定できます。この時間より前には、トランザクション出力は使用できません。この指示は、実際に資金を 7 日間ロックしてから販売者に支払うという Alipay の機能を実装します。 公開鍵ハッシュを指定しないトランザクションもいくつかあります。たとえば、このトランザクションのスクリプトは次のようになります。
つまり、SHA256 が 6fe28c0a…0000 であるデータを提供できる人は誰でもトランザクションを使用できるということです。 ビットコインのスクリプトから、ブロックチェーン ベースのデジタル通貨支払いは、実際にはデジタル通貨の所有権の安全な移転であることがわかります。金融資産や物理的資産をデジタル形式でブロックチェーン上に登録すれば、スクリプトを通じてさまざまな条件下で安全に所有権を移転することができます。これはブロックチェーン上のスマートコントラクトの応用です。 |
<<: イエレンFRB議長:ブロックチェーンは「重要な技術」
>>: もう一つの小さな目標:ワンダグループ初のブロックチェーン注文がデビュー、金融と税務分野に重点を置く
前回の記事では、ブロックチェーンの誇大宣伝の理由、その結果、そしてこのテクノロジーを実際にうまく活用...
最近、ロシアの地元メディア「ザ・ベル」が発表したレポートによると、ロシア政府の暗号通貨による税収は1...
2017年5月23日私たちは、同時に展開され、元の SegWit 2Mb 提案に基づいて構築される以...
暗号通貨はデータベース技術のパラダイムシフトを先導している暗号通貨の基礎はデータベースです。すべての...
BBCの報道によると、スイス国鉄(SBB)は来月から駅でデジタル通貨ビットコインの販売を開始する予定...
Hexun.comによると、雄安科技(01647)は、子会社の雄安衛成と杭州カナン創意情報技術有限...
幸運をもたらすマイニングマシン - KoiコンピューティングパワーサーバーC16シリーズの最初の内部...
著者 |ハシピ分析チーム...
BlockBeatsによると、ロシア当局はダークウェブ上で大量の偽造紙幣を暗号通貨と交換に販売してい...
過去数か月は、ブロックチェーン技術の発展における新たな章となりました。 DAOハッキング事件はイーサ...
グラフィックカードマイナーが採掘できる新しい仮想通貨「KPL ケプラーコイン」の最新情報が公開されま...
最近、バイナンスが複数のミームコインを発売した後、あるKOLのチャットのスクリーンショットが上場前に...
2020年11月、ファーウェイはデジタル人民元ハードウェアウォレットをサポートする携帯電話Mate...
準備まず、公式ウェブサイトからマシンのドライバーをバックアップまたはダウンロードします。重要なデータ...
クレイジーな解説: 先週、イーサリアムがハードフォーク計画を実施した後、イーサリアムブロックチェーン...