この記事では、ビットコインテストネットワーク(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は、企業のブロックチェーンプロジェクトにデータセキュリティ保護を提供するための新しいクラウドベースのブロックチェーンセキュリティサービスを研究しています。
聯合ニュースによると、韓国警察は最近、安価な電気を違法に使用したとして13社の鉱山労働者14人を逮捕...
何も予想外のことが起こらなければ、来月、このサークルで歴史的な瞬間を目にすることになるでしょう。 E...
中国のマイニングマシンメーカーであるカナンクリエイティブは、2019年11月21日にCEOの張南馨氏...
記者:リディア大手ハイテク企業であるアップルは、携帯電話の売れ行きが好調であろうと、その革新技術が批...
現代社会のあらゆるところで、お金は政治問題と絡み合っています。ビットコインは、誰の助けもなく、実際世...
記者:鉛筆の芯皆様ありがとうございました!今日はここに来られてとても嬉しいです。今日、何か非常に重要...
暗号通貨市場は今年5月以来、平穏ではない。わずか1か月の間に、私たちはLunaの400億ドルの金融帝...
今月の米国株の連続上昇は驚きだが、インターネット上で流通する電子通貨ビットコインの方が明らかに勢いが...
今日のデジタル時代において、仮想携帯電話番号サービスは、多くのユーザーにとってプライバシーの保護、ア...
9月23日、「新規範?新技術?新開発 2016年中国?北京インターネット金融イノベーションフォーラム...
蒸気機関、電気、情報、インターネット技術に続く第 5 の破壊的革命の波を引き起こす可能性が最も高い中...
司会者:皆さんこんにちは。今夜の司会者のオレンジです。今日は、七おじさんを「説教江湖」の生放送室のゲ...
ゴールデンファイナンスニュース -暗号通貨の売買を行う最大規模の取引所の一つであるBTC-e取引所は...
ロシア財務省は、デジタル通貨を含むいわゆる通貨代替物に対する罰則を強化することを提案した。ロシア政府...
著者について: 本名は陳昊です。彼はC++/Python/ブロックチェーンエンジニアです。彼は201...