ビットコイン・トランザクションをバイト単位で作る
ビットコイン・トランザクションがどう機能するかを、ゼロから一つ作ってみることで教えるハンズオン開発者コース。ここから始めよう。
0ステップ ·
何を学ぶか
この10部構成のコースは、生のバイトからビットコイン・トランザクションを構築する過程を案内します。終わるころには、ウォレットで「Send」をクリックしてからブロックチェーン上で確認を見るまでの間に正確に何が起こっているかを理解できるようになります - 抽象としてではなく、あなた自身が再現できる具体的なデータ操作の連続として。
作るもの
私たちは手でビットコインの生トランザクションを作ります。詳細を隠すライブラリを使うのではなく、フィールドごとに:インプットを選び、アウトプットを構築し、バイトをシリアライズし、秘密鍵で署名し、結果をネットワークにブロードキャストします。
最終的な成果物は、16進形式の有効でブロードキャスト可能なトランザクションになります - こんな感じで:
0200000001aabbccdd...ff00000000
その文字列の中のすべてのバイトが、終わるころにはあなたにとって意味を持つようになります。
前提条件
以下に慣れている必要があります:
- 基本的な暗号学の概念 - ハッシュ、公開鍵/秘密鍵ペア
- 16進表記 - 16進値の読み取りと変換
- コマンドライン・ツール - 全編を通じてBitcoin CLIの例を使います
- 任意のプログラミング言語 - 疑似コードやPythonスタイルのスニペットが例に登場しますが、概念は言語に依存しません
事前のビットコイン開発経験は必要ありません。ハッシュ関数が何をするかを理解していれば、十分な背景があります。
UTXOモデル:簡単な入門
ビットコインは口座残高を使いません。「Aliceは0.5 BTCを持っている」というデータベースの行はありません。代わりにビットコインは**未使用トランザクション・アウトプット(Unspent Transaction Outputs, UTXO)**を追跡します - 特定のアドレスに属する特定の額面の個別のコインです。
ビットコインを使うということは:
- 一つ以上の既存UTXOを消費する(インプット)
- 新しいUTXOを作成する(アウトプット) - 一つは受取人用、一つは自分のおつり用
- 差額をマイナー手数料として破壊する
このインプット/アウトプット・モデルが、私たちが構築するすべての基盤です。口座モデルがスプレッドシートだとすれば、UTXOモデルは物理的なコインの山です - コインを溶かして新しいコインを鋳造しない限り、コインを分割することはできません。
コースのロードマップ
| ステップ | トピック |
|---|---|
| 1 | 概要(現在ここ) |
| 2 | UTXOを理解する |
| 3 | トランザクション・インプットを構築する |
| 4 | トランザクション・アウトプットを構築する |
| 5 | トランザクション手数料を計算する |
| 6 | 生トランザクションのシリアライゼーション |
| 7 | トランザクションに署名する |
| 8 | SegWitとウィットネス・データ |
| 9 | トランザクションをブロードキャストする |
| 10 | 検証と探索 |
各ステップは前のステップの上に積み重なります。ステップ6までに、署名されていない生トランザクションが得られます。ステップ7で有効になります。ステップ9でネットワークに到達します。
次のステップ
UTXOを理解するに進み、ビットコインが口座残高なしにどのように所有権を追跡するかを学びましょう。