メインコンテンツにスキップ

ブロックチェーンの仕組み:ステップごとの解説

ブロックチェーンの仕組みを理解するには、トランザクションが発生してから最終承認に至るまでを追う必要があります。基盤技術には高度な暗号技術や分散システム工学が使われていますが、中核となる流れはシンプルです。トランザクションが作成され、ブロードキャストされ、検証され、ブロックにまとめられ、共有台帳に永続的に記録されます。

このガイドでは、主にBitcoinを例にブロックチェーン処理の各ステップを説明し、Ethereumのような他のブロックチェーンで異なる点も示します。最後には、「送信」をクリックしてからトランザクションがブロックチェーンの不可逆な一部になるまでに何が起きるのかを正確に理解できます。

ステップ1:トランザクション作成

すべてのブロックチェーン操作はトランザクション作成から始まります。暗号資産を送るとき、ウォレットソフトウェアは複数の情報を含むトランザクションメッセージを構築します。

トランザクションの入力と出力

Bitcoinは**Unspent Transaction Output (UTXO)**モデルを採用しています。UTXOはウォレット内のデジタル紙幣のようなものです。別々の2件のトランザクションで0.5 BTCと0.3 BTCを受け取っていれば、合計0.8 BTCの2つのUTXOを持っていることになります。0.6 BTCを送るとき、ウォレットは次を行います。

  1. 金額を満たすUTXOを選択します(0.5 + 0.3 = 0.8 BTC)。
  2. 受取人アドレスを1つの出力(0.6 BTC)として含むトランザクションを作成します。
  3. おつり出力を自分のアドレス宛てに作成します(0.2 BTC からトランザクション手数料を差し引いた額)。
  4. 選択されたUTXOは「使用済み」になり、新しい出力が新たなUTXOになります。

Ethereumは異なるアカウントベースモデルを使っており、従来の銀行口座に近い仕組みです。各アドレスは残高を持ち、トランザクションは送信者を減額し受信者を増額します。

デジタル署名

トランザクションはブロードキャスト前に、送信者のprivate keyで署名する必要があります。ここでseed phraseの安全性が重要になります。private keyはseed phraseから導出されるため、これを持つ人は誰でもあなたになりすまして署名できます。

署名プロセスは次のとおりです。

  1. トランザクションデータをSHA-256(Bitcoin)またはKeccak-256(Ethereum)でハッシュ化します。
  2. そのハッシュをECDSAアルゴリズムで送信者のprivate keyにより署名します。
  3. 生成されたデジタル署名をトランザクションに追加します。
  4. 誰でも送信者の公開鍵で署名を検証でき、private key自体を見ずに、鍵保有者が承認したことを確認できます。

これは基本原則です。署名は所有権を証明する。この過程でprivate keyがデバイス外に出ることはありません。ネットワークに共有されるのは署名のみで、そこからprivate keyを逆算することはできません。

ステップ2:トランザクションのブロードキャスト

署名後、トランザクションはブロックチェーンネットワークへブロードキャストされます。ウォレットは1つ以上のノード(ブロックチェーンソフトウェアを実行するコンピュータ)に接続し、トランザクションデータを送信します。

ピアツーピア伝播

ブロックチェーンネットワークは**peer-to-peer (P2P)**トポロジーで動作します。中央サーバーはありません。ノードがあなたのトランザクションを受け取ると、初期検証を行い、有効なら接続先ピアに中継します。受け取ったピアも検証してさらに中継します。通常は数秒でネットワーク全体に広がり、2〜15秒ほどで大半のノードに到達します。

メンプール

伝播後、トランザクションはmempool(メモリプール)に入ります。これは各ノードが管理する未承認トランザクションの待機領域です。mempoolは単一の共有プールではなく、各ノードが独自バージョンを持つため、ネットワーク遅延やポリシー差でわずかに内容が異なる場合があります。

mempool内のトランザクションは主にfee rate(Bitcoinではバイトあたりサトシ、Ethereumではgas price)で優先順位が決まります。マイナーやバリデーターは収益最大化のため高手数料から選びます。需要が高い時期はmempoolが大きくなり、低手数料トランザクションは承認まで数時間〜数日待つことがあります。

トランザクション手数料

トランザクション手数料には2つの役割があります。

  1. マイナー/バリデーターにインセンティブを与え、あなたのトランザクションをブロックに含めてもらう。
  2. 無意味なトランザクションでネットワークを埋め尽くす行為を高コスト化し、スパムを防ぐ

Bitcoinでは手数料は送金額ではなく、トランザクションのバイトサイズで計算されます。10 BTC送る場合でも0.001 BTC送る場合でも、バイトサイズが同じなら同じ手数料になることがあります。

EthereumではEIP-1559モデルに従い、base fee(バーンされる)とpriority tip(バリデーターに支払われる)で構成されます。base feeはネットワーク混雑に応じて動的に調整されます。

ステップ3:トランザクション検証

トランザクションをブロックに入れる前に、ノードはプロトコルルールに基づき独立して検証します。この検証はブロックチェーンの整合性維持に不可欠です。

検証チェック

各ノードは受信したトランザクションごとに複数のチェックを行います。

  • 構文の妥当性: トランザクション形式はプロトコル仕様に沿っているか。
  • 署名検証: デジタル署名は送信者公開鍵と一致するか。これによりprivate key保有者による承認が確認できます。
  • 二重支払いチェック: 参照UTXO(Bitcoin)は未使用か、またはアカウント(Ethereum)残高は十分か。
  • スクリプト検証: ロック/アンロックスクリプトは正しく実行されるか。(BitcoinはScriptというスクリプト言語で支払い条件を定義します。)
  • 手数料の十分性: ノードの最小中継閾値を満たす手数料が含まれているか。
  • サイズ制限: トランザクションはプロトコルのサイズ制約内か。

これらのいずれかに失敗すると、そのトランザクションは拒否され、他ノードへ中継されません。この分散検証こそがブロックチェーンを不正トランザクションに強くしている理由です。すべてのノードが同一ルールセットで独立に全トランザクションを検証します。

ステップ4:ブロック構築

マイナー(proof-of-work系)またはバリデーター(proof-of-stake系)は、mempoolから検証済みトランザクションを集めて候補ブロックを作成します。

ブロック構造

典型的なブロックには次が含まれます。

Block Header:

  • Version: プロトコルバージョン。
  • Previous block hash: 直前ブロックヘッダーのSHA-256ハッシュ。これがブロックチェーンの「chain」を作ります。
  • Merkle root: ブロック内全トランザクションを要約する単一ハッシュ。
  • Timestamp: ブロック作成のおおよその時刻。
  • Difficulty target (PoW): ブロック有効と判定されるために、ブロックハッシュが下回るべき閾値。
  • Nonce (PoW): 有効ハッシュ探索中にマイナーが増分するカウンタ。

Block Body:

  • Transaction count: 含まれるトランザクション数。
  • Transaction list: 実際のトランザクションデータ。
  • Coinbase transaction: ブロック報酬として新規コインを生成し、全手数料を回収する特別な先頭トランザクション。これは入力を持たない唯一のトランザクションで、プロトコルの発行スケジュールに従って無から通貨を生み出します。

トランザクション選択

マイナーは通常、収益最大化のため手数料率が高いトランザクションを優先します。ただしblock size limit(Bitcoinでは4 MB block weight)やblock gas limit(Ethereumでは約3,000万gas)を守る必要があります。これによりブロックスペースの自然な市場が生まれ、需要が高い時にはユーザーが高手数料で競争します。

一部のマイナーは、手数料に関係なく特定種別のトランザクションを含める、制裁対象アドレスとの相互作用を除外する、といった追加ポリシーを持つ場合もあります。

Merkle Tree構築

Merkle treeは、トランザクションハッシュのペアを繰り返しハッシュ化して構築されます。

  1. 各トランザクションを個別にハッシュ化します。
  2. 隣接ハッシュをペアにして再度ハッシュ化します。
  3. 最後に単一ハッシュ、つまりMerkle rootになるまで繰り返します。

Merkle rootは全トランザクションのコンパクトな要約です。どれか1件でも改ざんされるとMerkle rootが変わり、改ざんが即座に検知されます。この構造により**Simplified Payment Verification (SPV)**も可能になります。軽量クライアントはフルブロックをダウンロードせずにトランザクション包含を検証できます。

ステップ5:コンセンサスとブロック生成

候補ブロックがネットワークに受け入れられるには、ネットワークのconsensus mechanismを通過する必要があります。ここで各ブロックチェーンの差異が大きく現れます。

Proof of Work (Bitcoin)

proof-of-workでは、マイナーがnonceを探して競争します。ブロックヘッダーデータと組み合わせてハッシュ化した結果がネットワークのdifficulty targetを下回れば有効です。これは実質的に総当たり探索です。

  1. マイナーは必要フィールドを含むブロックヘッダーを構築します。
  2. ヘッダーをSHA-256でハッシュ化します(Bitcoinでは2回適用)。
  3. 結果のハッシュがdifficulty target未満ならブロックは有効です。
  4. そうでなければnonceを増やして再試行します。
  5. これを全マイナー合計で毎秒数十億回繰り返します。

difficulty targetは2,016ブロックごと(約2週間)に調整され、ネットワーク全体の採掘能力に関係なく平均10分のブロック時間を維持します。

有効ハッシュを見つけたマイナーは「パズル」を解いたことになり、ブロックをネットワークへブロードキャストできます。最初に有効解を見つけたマイナーがblock reward(2024年4月の半減後は現在3.125 BTC)とブロック内全手数料を獲得します。

Proof of Stake (Ethereum)

Ethereumはproof of stakeを採用し、ステーク(担保としてロック)したETH量に基づいてバリデーターが擬似ランダムに選ばれてブロック提案を行います。流れは根本的に異なります。

  1. 12秒ごとの各スロットで、擬似ランダムに1人のバリデーターが提案者に選ばれます。
  2. 提案者がブロックを作成しブロードキャストします。
  3. バリデーター委員会がそのブロックの有効性をattest(投票)します。
  4. 十分なattestationが集まると、ブロックは正当化され、最終的にファイナライズされます。

proof of stakeは、proof of workのような高エネルギーなハッシュ計算を不要にしつつ、経済的インセンティブで安全性を維持します。悪意ある行動をするとステークETHを失う(slashing)リスクがあります。

より深い比較はConsensus Mechanismsガイドを参照してください。

ステップ6:ブロック伝播

有効ブロックが生成されたら、ネットワーク全体に配布される必要があります。

ネットワーク伝播

成功したマイナーまたはバリデーターは新しいブロックをピアへブロードキャストし、受信側はブロック検証後にさらに中継します。伝播には通常1〜10秒ほどかかり、ブロックサイズやネットワーク状況で変動します。

Compact Block Relay (BIP 152)

Bitcoinは伝播高速化のためCompact Block Relayを使います。大半のノードはすでにmempoolにトランザクションを保持しているため、新規ブロックでは完全データではなくコンパクトな要約(短いトランザクションID)だけを送れば済みます。ノードはmempoolからフルブロックを再構築でき、帯域要件を約90%削減できます。

オーファンブロック

まれに、2人のマイナーがほぼ同時に有効ブロックを見つけ、一時的フォークが発生します。ネットワークは自然に解決します。次のブロックを先に受け取ったチェーンが最長となり、もう一方はorphan(またはstale block)になります。オーファン内のトランザクションはmempoolに戻され、通常は勝ったチェーン側の次ブロックに含まれます。

ステップ7:ブロック検証とチェーン拡張

ノードは新しいブロックを受け取ると、受理前にブロック全体を独立検証します。

完全検証

ノードは次を確認します。

  • ブロックヘッダー妥当性: 正しい形式、正しい前ブロックハッシュ、proof of workがdifficulty targetを満たす(またはPoSで有効なバリデーター署名)。
  • トランザクション妥当性: ブロック内の全トランザクションがステップ3の検証を通過する。
  • Merkle root整合性: 計算したMerkle rootがヘッダー値と一致する。
  • ブロックサイズ/weight: プロトコル制限を超えていない。
  • Coinbase妥当性: ブロック報酬と手数料回収が現行ルールに従って正しい。
  • Timestamp範囲: ブロック時刻が許容範囲内。

すべて通過すれば、ノードはローカルのブロックチェーンに追加し、UTXOセット(またはEthereumのstate trie)を更新します。その後ブロックをピアへ中継します。

ステップ8:トランザクション承認

あなたのトランザクションが有効ブロックに含まれると、最初の承認を得ます。そのブロックの上に新しいブロックが積み上がるたび、承認数が1つ増えます。

複数承認が重要な理由

1承認でもブロックチェーンに入っていますが、競合チェーンが追い越せばそのブロックがオーファンになる理論的可能性はあります。追加承認ごとに再編成の可能性は指数関数的に低下します。

ConfirmationsBitcoin Wait TimeSecurity Level
0 (unconfirmed)二重支払いに脆弱
1~10分少額には適する
3~30分妥当な安全性
6~60分高額送金の標準
12+~2時間非常に高い安全性

Bitcoinでよく言われる6 confirmationsという基準は、チェーン再編成成功(つまり二重支払い)確率が天文学的に低いことを意味します。実行には攻撃者がネットワークのハッシュパワー50%以上を支配し、それを1時間以上維持する必要があります。

Ethereumはより速いファイナリティを提供します。通常条件なら、トランザクションは約12〜15分でファイナリティ(全ステークETHの少なくとも3分の1を焼却しない限り巻き戻せない状態)に到達します。

ファイナリティの種類

  • Probabilistic finality (Bitcoin): 承認が増えるほど巻き戻しが難しくなるが、絶対的な不可逆点はない。実務上は6承認が広く受け入れられる閾値。
  • Economic finality (Ethereum PoS): ファイナライズ後に巻き戻すには数十億ドル相当のステークETH焼却が必要で、攻撃者にとって経済合理性がない。
  • Absolute finality(一部のBFT系チェーン): ブロック承認と同時に不可逆。Tendermint系ネットワークなどがこの性質を持つ。

全体像:トランザクションの旅路

ライフサイクル全体をまとめると次のとおりです。

  1. ウォレットから送金を開始する。
  2. ウォレットがトランザクションを構築し、入力/出力(UTXO)を選択または送金額(アカウントモデル)を指定する。
  3. private keyでトランザクションに署名し、承認を証明する。
  4. 署名済みトランザクションをP2Pネットワークにブロードキャストする。
  5. ノードがトランザクションを検証し、mempoolに追加する。
  6. マイナー/バリデーターがmempoolからあなたのトランザクションを選択し、候補ブロックに含める。
  7. proof of workまたはproof of stakeでブロック生成される。
  8. 新しいブロックがネットワークに伝播する。
  9. ノードがブロックを検証・受理し、チェーンを延長する。
  10. 新規ブロックの積み上げにより承認数が増加する。

この一連の処理は、作成から初回承認までBitcoinで約10分、Ethereumで12秒程度です。ただし選択されるまでmempoolで追加待機することがあります。

SafeSeed Tool

トランザクションの安全性は鍵の安全性から始まります。SafeSeed Seed Phrase Generatorを使って、暗号学的に安全なBIP-39 seed phraseを作成してください。トランザクション署名から所有権証明まで、ブロックチェーン処理のすべての段階は、seed phraseから導出されるprivate keysの安全性に依存します。

発展的な概念

トランザクション可鍛性(Transaction Malleability)

初期のBitcoinでは、無効化せずにトランザクションID(txid)を変更できる性質、すなわちtransaction malleabilityがありました。これは2017年のSegregated Witness(SegWit)アップグレードでほぼ解消されました。署名データをトランザクションデータから分離することで、署名後にtxidを変更できないようにします。

Replace-By-Fee (RBF)

BitcoinはReplace-By-Feeをサポートしており、送信者はより高い手数料でトランザクションを再送して承認を早められます。新しいトランザクションはmempool内で元のものを置き換えます。ネットワーク混雑時に元の手数料が低すぎた場合に有用です。RBF対応ウォレットはトランザクションを置換可能としてマークし、高手数料版が優先されます。

トランザクションバッチング

取引所や大口送信者はしばしば複数支払いを1件の複数出力トランザクションにbatchします。個別送信より空間効率が高く、総手数料とブロックスペース使用量を削減できます。

FAQ

ブロックチェーントランザクションにはどれくらい時間がかかりますか?

時間はブロックチェーンごとに異なります。Bitcoinは平均10分ごとに1ブロックですが、あなたのトランザクションは含まれる前にmempoolで待つことがあります。Ethereumは12秒ごとにブロックを生成します。Lightning NetworkのようなLayer 2はミリ秒単位で決済できます。送信から初回承認までの総時間は、ネットワーク混雑と支払う手数料で決まります。

間違ったアドレスに送ったらどうなりますか?

ブロックチェーントランザクションは不可逆です。誤ったアドレスに暗号資産を送ると、中央管理者が取り消すことはできません。相手が実在するなら直接連絡して返金を願うしかありません。無効アドレスや誰にも属さないアドレスなら、資金は事実上永久に失われます。送信前に必ずアドレスを再確認してください。

ブロックチェーントランザクションは失敗しますか?

Bitcoinでは、正しく構築・署名されたトランザクションは最終的に承認されます(非常に低手数料だと長時間かかる場合あり)。Ethereumでは、スマートコントラクト実行エラーやgas不足で失敗(revert)することがあります。どちらの場合も手数料は消費されます。送信前に成功可否を予測するトランザクションシミュレーションを提供するウォレットもあります。

トランザクションハッシュ(txid)とは何ですか?

トランザクションハッシュ(txidまたはtransaction ID)は各トランザクションに付与される一意識別子です。トランザクションデータのハッシュ化で生成されます。txidを使ってブロックエクスプローラー(Bitcoinならmempool.space、Ethereumならetherscan.io)で追跡できます。txidは作成時に割り当てられ、承認後は変わりません。

なぜ手数料は変動するのですか?

手数料はブロックスペースの需給で決まります。多くのユーザーが同時に取引すると、限られたブロックスペースを高手数料で競い合います。閑散時は手数料が下がります。Bitcoinのブロックスペースは固定(10分ごとに1ブロック、4 MB weight)なので、高需要時に手数料が急騰し得ます。EthereumのEIP-1559は、ネットワーク利用率に応じてアルゴリズム調整される予測しやすいbase feeを提供します。

承認済みと未承認の違いは何ですか?

未承認トランザクションはmempoolに存在しますが、まだブロックに含まれていません。保留状態で、理論上は置換や破棄があり得ます。承認済みトランザクションはブロックに含まれ、ブロックチェーンへ追加されています。上に積み上がるブロックが増えるほど承認数が増え、巻き戻しがより困難になります。

マイナーは私のトランザクションを含めないことを選べますか?

はい。マイナーやバリデーターは、どのトランザクションをブロックに含めるか選べます。特定トランザクションを含める義務はありません。ただし経済的インセンティブにより、できるだけ多くの手数料付きトランザクションを含める強い動機があります。実際には、十分な手数料を持つ有効トランザクションは、いくつかの参加者が無視しても最終的にどこかのマイナーに取り込まれます。

関連ガイド