この記事では、ビットコインテストネットワーク(bitcoin-testnet)を開発テスト環境として使用し、ビットコイントランザクション(Transaction)のデータ構造を分析し、Node.jsを例に、特定のトランザクションデータを自分で整理し、署名してブロードキャストし、最終的にマイナーノードによって確認され有効になる方法を説明します。
トランザクションは情報の伝達手段であり、ビットコイン システムの最小単位です。ブロックとは、箱に詰められ、密封されたこれらの基本的な「トランザクション」単位のグループです。これらのブロックは、特定のメカニズムとシーケンスに従ってリンクされ、ブロックチェーンを形成します。 ビットコインブロックチェーンに基づくアプリケーション開発では、「トランザクション」が最も直接的に使用され、最も重要なデータ構造です。 「トランザクション」に加えて、ウォレットの秘密鍵、公開鍵とアドレス、ブロック、ブロックチェーンなど、ビットコインのブロックボリュームに関連するいくつかの基本的な用語の意味も理解する必要があります。比較的明確に説明されている書籍やオンライン資料は数多くあります。ここでは、オンライン ブック「Mastering Bitcoin」(http://zhibimo.com/read/wang-miao/mastering-bitcoin/index.html) を読むことをお勧めします。 ここでは、「トランザクション」のデータ構造の詳細な分析と理解に焦点を当てます。 ビットコインのトランザクションは、入力値と出力値を含むデータ構造であり、初期ポイント(入力値)からターゲットアドレス(出力値)に資金を転送するためのコード情報が含まれています。ビットコインのトランザクションには、次の表に示すように、いくつかのフィールドが含まれています。 サイズ フィールド名 データ型 説明 注: ロック時間フィールドは、ブロックチェーンに追加できる最も早いトランザクション時間を定義します。ほとんどのトランザクションでは、デフォルトで 0 に設定され、即時実行を示します。ロック時間が 0 より大きく 5 億未満の場合、それはブロックの高さとみなされ、指定されたブロックの高さより前にトランザクションがブロックチェーンに含まれていなかったことを意味します。ロック時間が 5 億を超える場合、Unix エポック タイムスタンプ (1970 年 1 月 1 日からの秒数) として扱われ、この指定された時間より前のトランザクションはブロックチェーンに含まれません。ロック時間の使用は、紙の小切手の有効時間を遅らせることと同じです。 ブロックチェーン技術に基づくアプリケーション開発は、実際には主に、特定のビジネス ロジックを実行するためのトランザクションの出力データ構造に取り組むことです。たとえば、ODIN オープンソース プロジェクトは、特定の形式でビットコインの複数のトランザクション出力データ ブロックに識別属性データを埋め込みます。 2. 取引記録の分析例 以下は、ビットコイン取引の生データの例です (生のバイナリ データは、分析を容易にするために、バイトごとに 16 進 ASCII コードとして出力されます)。 0100000002eb2121e4e727bdb28525e79d39a90bd711b9e8413c054b29ffc4bb4775e69f82010000006b483045022100df82 上記のメッセージは、プロトコル規則に従って次のようにフィールドに分解できます。 01000000 // バージョン番号、UINT32 02 // Tx入力量、可変長INT。 0×02=2入力。 /*** 次は Input Tx の最初のグループです ***/ 3045022100df82cf6c95b4eb64e4e9cee3af88a94c65fa81650e824d515f089192b7e3c09c022011 21 // 対応する公開鍵データの長さ、0×21 = 33 バイト /*** 入力 Tx の 2 番目のグループ。上記と同様、分解は省略***/ c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab7010000008a473044 03 // Tx はトランザクション量を可変長 INT 型で出力します。 0×03=3入力。 /*** 出力の最初のグループ ***/ /*** 出力の 2 番目のグループ ***/ 00000000 // ロック時間、UINT32、固定4バイト 上記の分析を通じて、ビットコイン取引記録の一般的な構成形式を理解して習得した後、青いフォント部分に対応するデータ コンテンツ ブロックを最大限に活用してカスタマイズされたバイナリ データ コンテンツを埋め込み、独自の特定のビジネス ロジックを開発して実装できます。 3. サンプルプログラムを実行する 次のサンプル プログラムは、特定のコンテンツの文字列を特定の形式で Bitcoin トランザクションのコメント データ ブロックに埋め込み、Bitcoin ブロックチェーンに保存できるようにします。 以下のサンプルプログラムを実行する前に、Bitcoin テスト ネットワーク (bitcoin-testnet) 用の Docker ランタイム環境がインストールされていることを確認してください。まだインストールされていない場合は、前の記事「初心者から上級者まで学ぶビットコイン ブロックチェーン開発ガイド 2」の手順を参照してインストールしてください (http://www.8btc.com/ppkpub_blockchain_develope_lesson_2)。 次のサンプル コードをコピーして、ビットコイン テスト ネットワーク (bitcoin-testnet) のテスト環境に保存し (ファイル名を OpreturnTestnet.js として保存)、コマンド ラインに次のコマンドを入力して実行し、実行結果を確認します。 注: テスト コードを実行するたびに、Docker ランタイム環境のコマンド ラインに「make generate BLOCKS=10」と入力して、新しいブロック レコードの生成をシミュレートし、テスト コードによって生成されたトランザクション レコードを効果的に確認する必要があります。 サンプルプログラム OpreturnTestnet.js のソースコードは次のとおりです。 /************************ サンプルコードの開始点****************************/ |
<<: IBMは、企業のブロックチェーンプロジェクトにデータセキュリティ保護を提供するための新しいクラウドベースのブロックチェーンセキュリティサービスを研究しています。
過去 1 か月間、多くのビットコイン取引所、スタートアップ企業、専門家が、Segregated Wi...
Golden Finance News -調査によると、ライトコインネットワークでのSegregat...
ドイツの日刊紙「ディ・ヴェルト」の上級編集者ホルガー・ツェピッツ氏は、日本の低迷する経済と10年国債...
Bitcoin.comによると、カリフォルニアの投資会社3G Venture IIは、廃墟となったイ...
B9クラウド コンピューティング パワーは、BiWang が発売したクラウド コンピューティング パ...
クレイジーな解説:ウェンセス・カサレス氏を取締役会に迎え入れるというPayPalの真意はまだ分からな...
Tech Insiderによると、DataDirectという名のハッカーが、The Real Dea...
著者 |ハシピ分析チーム...
効率的なマイニング機器の使用とビットコインの需要の増加により、ビットコインマイニングの難易度は再び上...
イングランド銀行の金融政策担当副総裁ベン・ブロードベント氏は本日の演説で、ビットコインは広く普及しな...
クレイジーな解説:英国、オランダ、カナダ、オーストラリアなどの中央銀行はすべて、デジタル通貨を発行す...
今年のブロックチェーン業界では、オラクル、レンディング、分散型トランザクション、パブリックチェーンな...
ブロックチェーン技術の分野では、海外が特許を独占し続けており、国内の特許配置はまだ行われていない。ブ...
強い買いが安値を押し上げる1. 市場動向<br/>今朝のビットコインの価格は4160元で...
11月23日、Binanceは29番目のLaunchpadプロジェクトHooked Protoco...