この記事では、ビットコインテストネットワーク(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. 市場動向<br/>ビッ...
スマートコントラクトの概念は1990年代にまで遡ります[1]。今でも、何か驚くべきものが発明されない...
昨日、IBMのブロックチェーン技術責任者であるジェリー・クオモ氏は、米国国家サイバーセキュリティ専門...
昨年、連邦裁判所はリップル社によるXRPの機関投資家向け販売が連邦証券法に違反していると判断し、同社...
最近コスモスが元気に咲いています。エコシステムは日々成長しているだけでなく、そのパフォーマンスも B...
BlockBeatsによると、世界的な流行の発生に伴い、市場におけるグラフィックカードの価格が大幅...
ある日、VPS サーバーで CPU アラームを受信しました。サーバーにログオンすると、gpg-age...
マーティン・ハゲルストロムはビットコインの愛好家です。彼は IBM で IT プロジェクト マネージ...
ビットコインの将来は不確実です。現在、多くの専門家がブロックチェーンの将来について議論しています。ビ...
ビットコインの半減期まであと数日しかないので、これから何が起こるのかを考えるのはいいことです。ビット...
クレイジー解説:今回の欧州仮想通貨公聴会では、「監督はするが規制はしない」という提案が非常に価値があ...
新しいブロックチェーンとデジタル通貨センターがアイルランドにやって来ます(この国の緑化率はほぼ 90...
執筆者: パン・ジーシオン暗号通貨の送金を初めて体験したとき、特に受取人のアドレスを確認するときに、...
5月24日、米証券取引委員会(SEC)の文書によると、 SECはブラックロック、フィデリティ、グレ...
DEX には堀がなく、SUSHI は流動性戦争の新たな次元を開きます。 6月初旬に「DEX間の競争は...