この記事の著者は、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議長:ブロックチェーンは「重要な技術」
>>: もう一つの小さな目標:ワンダグループ初のブロックチェーン注文がデビュー、金融と税務分野に重点を置く
新たな参入機会が出現した弱気相場は終わり、新たな強気相場サイクルが始まっています。 なぜ弱気相場...
本日午後(3月31日)、Ant F3マイニングのビデオがWeChatグループと友人サークルで配布され...
まとめ情報筋によると、SECの取引・市場部門は月曜日、2週間前の立場から変更して、今週中に19b-4...
ビットコインの価格を予測するには、水晶玉だけでは不十分です。しかし、十分な知性があれば、ある程度の合...
Facebookが通貨を発行します!オールインしてもいいですか?正規軍がやって来ます、ビットコイン...
より多くの第 2 層ソリューションと Rollup テクノロジが採用、統合、構築されるにつれて、Et...
クレイジー解説:あらゆる新興技術の標準化プロセスには多くの複雑な手順が必要であり、特にブロックチェー...
11月17日、韓国最大の投資メディア「ザ・ベル」は、Huobiが韓国最大の仮想資産取引所Bithum...
世界的な業界貿易団体であるFix Trading Communityは、デジタル通貨とブロックチェー...
リスク回避、現金こそが王様1. 市場動向<br/>今日は2017年5月16日です。ビット...
BlockBeatsによると、6月2日、CCTVニュースチャンネルの「ニュースライブルーム」は「仮想...
ラスベガスのギャングアトラクションの創設者が、ギャングをテーマにした非代替性トークン(現実世界の組織...
2018年に入り、さまざまなメインチェーンが次々と登場しています。暗号通貨の投機と比較すると、ビット...
ビットコインの半減期から4か月が経過し、半減期後の価格パフォーマンスとしてはこれまでで最悪の状況が見...
マイアミ市長のフランシス・スアレス氏は火曜日、同市の公務員の中で給与の支払いにビットコインを受け入れ...