PANews編集部注:2008年10月31日、サトシナカモトは『ビットコインホワイトペーパー』を投稿しました。本日はその17周年記念日です。以下は李笑来によるホワイトペーパーの翻訳内容であり、皆様に名作を再度味わっていただくためのものです。
概要:純粋なピアツーピア型電子現金システムは、金融機関を介さずにオンラインで直接一方から他方へ支払いを送信できるようにします。デジタル署名は部分的な解決策を提供しますが、二重支払いを防ぐために信頼できる第三者が必要であるなら、電子決済の主な利点は相殺されてしまいます。私たちは、ピアツーピアネットワークを使用して二重支払い問題を解決する方法を提案します。ピアツーピアネットワークは各取引にタイムスタンプを付与します。方法は、取引のハッシュデータを継続的に拡張されるハッシュベースのプルーフ・オブ・ワークチェーンに記録し、完全に再実行しない限り変更できない記録を形成します。最長チェーンは、一方で証明されたイベントとその順序を示し、同時に最大のCPUハッシュパワープールから来ていることも証明します。大多数のCPUハッシュパワーが善良なノードによって制御されている限り(つまり、ネットワークを攻撃しようとするノードと協力しない限り)、善良なノードは最長チェーンを生成し、攻撃者よりも速く進みます。このネットワーク自体は最小限の構造を必要とします。情報は最大限の努力で伝播され、ノードは自由に参加・離脱できます。ただし、参加時には必ず最長のプルーフ・オブ・ワークチェーンを、それまでのすべての出来事の証拠として受け入れる必要があります。
インターネット商取引はほぼ完全に金融機関を信頼できる第三者として電子決済を処理することに依存しています。ほとんどの取引においてこのシステムは十分機能していますが、信頼に基づくモデルに固有の欠陥に悩まされています。完全に不可逆な取引は実際には不可能であり、金融機関は紛争の仲裁を避けられません。仲裁コストは取引コストを増加させ、最小取引規模を制限し、多くの小額決済を阻止します。さらに大きなコストとして、システムは不可逆なサービスに対して不可逆な支払いを提供できません。逆転の可能性は、信頼の必要性を至る所に生じさせます。商者・売主は顧客を警戒し、信頼がなければ不要な追加情報の提供を顧客に求めます。一定割合の詐欺は不可避と考えられています。これらのコストと支払いの不確実性は、現金による直接支払いでは回避できますが、信頼できない相手との通信チャネルを介した支払いには適用できる仕組みがありません。
私たちが本当に必要としているのは、信頼ではなく暗号化証明に基づく電子決済システムです。これにより、任意の二者が第三者を信頼せずに直接取引できます。ハッシュパワーによって保証された不可逆な取引は売主を詐欺から守り、買主のための日常的な担保メカニズムも容易に実現できます。本論文では、二重支払い問題に対する解決策を提案します。ピアツーピア型分散タイムスタンプサーバーを使用してハッシュパワーに基づく証明を生成し、各取引を時系列で記録します。このシステムは、誠実なノードが協力する攻撃者よりも多くのCPUハッシュパワーを持っている限り安全です。
電子コインはデジタル署名チェーンとして定義します。所有者がコインを他者に渡す際、デジタル署名チェーンの末尾に以下のデジタル署名を追加します:前回の取引のハッシュ、および新しい所有者の公開鍵。受取人は署名を検証することでデジタル署名チェーンの所有権を確認できます。
この方法の問題は、受取人が過去の所有者の中に二重支払いをした者がいないかを検証できないことです。一般的な解決策は、信頼できる中央権威、いわゆる「造幣局」を導入し、各取引が二重支払いでないかをチェックさせることです。取引が発生するたびにコインは造幣局に戻され、造幣局が新しいコインを発行します。したがって、造幣局が直接発行したコインのみが二重支払いされていないと信頼されます。この解決策の問題は、通貨システム全体の運命が造幣局を運営する企業(銀行のようなもの)に依存し、すべての取引がそれを通過しなければならないことです。
受取人が過去の所有者がいかなる過去の取引にも署名していないことを確認できる方法が必要です。私たちの目的では、最初の取引のみが有効なので、その後の二重支払いの試みは気にしません。取引が存在しないことを確認する唯一の方法は、すべての取引を知ることです。造幣局モデルでは、造幣局がすべての取引を把握し、その順序を確認できます。信頼できる第三者なしでこれを実現するためには、取引記録を公開し、参加者が同じ唯一の取引履歴を認めるシステムが必要です。受取人は、各取引が発生した時点で大多数のノードがそれを最初に受け入れたことを証明する必要があります。
本解決策はタイムスタンプサーバーから始まります。タイムスタンプサーバーは、アイテム(ブロック)のハッシュにタイムスタンプを付与し、そのハッシュを新聞のように、またはニュースグループ(Usenet)の投稿のようにブロードキャストします[2-5]。タイムスタンプは、そのデータがその時点より前に存在していたことを証明します。そうでなければ、そのハッシュは生成できません。各タイムスタンプは前のタイムスタンプのハッシュを含み、チェーンを形成します。新しいタイムスタンプは前のタイムスタンプの後に追加されます。
ピアツーピア型分散タイムスタンプサーバーを実現するために、新聞やニュースグループの投稿ではなく、Adam Backのハッシュキャッシュのようなプルーフ・オブ・ワークシステムを使用する必要があります。プルーフ・オブ・ワークとは、ある数値を探すことです。その数値のハッシュ(例えばSHA-256)を計算した結果、一定数の0で始まる必要があります。0の数を増やすほど、作業量は指数的に増加しますが、検証はハッシュ計算一回で済みます。
タイムスタンプネットワークでは、ブロックにノンス(nonce)を繰り返し追加し、条件を満たす数値が見つかるまで繰り返します。条件は、ブロックのハッシュが指定された数の0で始まることです。CPUハッシュパワーを消費して得られた結果がプルーフ・オブ・ワークを満たすと、そのブロックは変更できなくなり、過去のすべての作業を再実行しない限り変更できません。新しいブロックが追加されるたびに、現在のブロックを変更するには、その後のすべてのブロックの作業も再実行する必要があります。
プルーフ・オブ・ワークは、誰が多数決を代表するかを決定する問題も解決します。もし「1IPアドレス1票」で多数決を決めるなら、多数のIPアドレスを取得できる者が「多数」と見なされます。プルーフ・オブ・ワークは本質的に「1CPU1票」です。多数決は最長チェーンによって表され、最も多くの作業が投入されたチェーンがそれです。大多数のCPUハッシュパワーが誠実なノードに制御されていれば、誠実なチェーンが最も速く成長し、他の競合チェーンを圧倒します。既存のブロックを変更するには、攻撃者はそのブロックとその後のすべてのブロックのプルーフ・オブ・ワークを再実行し、さらに誠実なノードの作業に追いつき、追い越す必要があります。後述で、遅れた攻撃者が追いつく可能性がブロック数の増加とともに指数的に低下する理由を示します。
ハードウェアハッシュパワーの総合的な増加やノード数の変化に対応するため、プルーフ・オブ・ワークの難易度は、平均1時間あたりのブロック生成数の移動平均値に基づいて決定されます。ブロック生成が速すぎる場合、難易度は上昇します。
ネットワークの運用手順は以下の通りです:
ノードは常に最長チェーンが正しいと考え、新しいデータを追加し続けます。もし2つのノードが同時に異なる「次のブロック」をネットワークにブロードキャストした場合、あるノードは一方を先に受信し、他のノードはもう一方を先に受信します。この場合、ノードは先に受信したブロック上で作業を続けますが、もう一方の分岐も保存しておき、後者が最長チェーンになった場合に備えます。次のプルーフ・オブ・ワークが見つかり、いずれかの分岐がより長いチェーンになった時点で、一時的な分岐は解消され、他方の分岐で作業していたノードはより長いチェーンに切り替えます。
新しい取引は必ずしもすべてのノードにブロードキャストされる必要はありません。十分な数のノードに届けば、すぐにその取引はブロックにまとめられます。ブロックのブロードキャストも一部のメッセージが失われることを許容します。あるノードが特定のブロックを受信しなかった場合、次のブロックを受信した際に前のブロックを逃したことに気付き、失われたブロックの補完要求を出します。
慣例として、各ブロックの最初の取引は特別な取引であり、新しいコインを生成し、その所有権はそのブロックの生成者に与えられます。これにより、ノードがネットワークをサポートする報酬が与えられ、コインを流通に発行する方法も提供されます。このシステムにはコインを発行する中央権威が存在しません。安定的に一定数の新しいコインが流通に加わることは、金鉱採掘者が資源を消費して金を流通に加えるのと似ています。本システムでは、消費される資源はCPU作業時間と電力です。
報酬は取引手数料からも得られます。取引の出力値が入力値より小さい場合、その差額が取引手数料となり、その手数料は取引をブロックにまとめたノードへの報酬となります。既定数のコインが流通に入った後は、報酬は完全に取引手数料によって賄われ、インフレーションは絶対に発生しません。
報酬メカニズムはノードの誠実性維持も促します。もし貪欲な攻撃者がすべての誠実なノードより多くのCPUハッシュパワーを集めた場合、彼は選択を迫られます:そのハッシュパワーで自分が使ったコインを盗み返して他人を騙すか、それとも新しいコインを生成するか。彼はルール通りに行動した方が得策であることに気付くはずです。現行ルールでは、彼は他の全員を合わせた以上のコインを得られます。システムを密かに破壊して自分の資産を無価値にするよりも、ルールに従う方が明らかに得です。
あるコインの最新取引が十分多くのブロック前に発生していれば、そのコインの過去の消費取引記録はディスクスペース節約のために破棄できます。この機能をブロックのハッシュを壊さずに実現するため、取引記録のハッシュはMerkleツリー[7、2、5]にまとめられ、ツリーのルートのみがブロックのハッシュに含まれます。枝を切ることで古いブロックは圧縮できます。内部のハッシュは保存する必要はありません。
取引記録のないブロックヘッダーは約80バイトです。10分ごとに1ブロック生成されると仮定すると、80バイト×6×24×365=年間4.2Mバイトです。2008年時点で市販のPCは2GBメモリを搭載しており、ムーアの法則によれば毎年1.2GB増加します。仮にブロックヘッダーをメモリに保存する必要があっても問題ありません。
完全なネットワークノードを運用しなくても支払い確認は可能です。ユーザーはプルーフ・オブ・ワーク付き最長チェーンのブロックヘッダーのコピーを持つだけでよく、オンラインノードに問い合わせて自分の持つチェーンが最長であることを確認できます。その後、Merkleツリーの枝ノードを取得し、取引がタイムスタンプされたブロックに接続します。ユーザー自身は取引を検証できませんが、チェーン上のどこかに接続することで、ネットワークノードがその取引を受け入れたことを確認でき、以降追加されたブロックがネットワークによる取引承認をさらに確証します。
誠実なノードがネットワークを制御している限り、この検証は信頼できます。しかし、ネットワークが攻撃者に制御されている場合、検証は信頼できません。ネットワークノードは取引記録を自分で検証できますが、攻撃者がネットワークを制御し続ける限り、簡易検証方式は攻撃者が偽造した取引記録に騙される可能性があります。対策の一つは、クライアントソフトウェアがネットワークノードからの警告を受け入れることです。ネットワークノードが無効なブロックを発見した場合、警告を発し、ユーザーのソフトウェアに通知を表示し、完全なブロックのダウンロードを促し、取引の一貫性確認を警告します。高い頻度で支払いを受ける商者・売主は、独自の完全ノードを運用し、より独立した安全性と迅速な取引確認を確保すべきです。
コインを一つずつ処理することは可能ですが、1セントごとに個別の記録を設けるのは非効率です。価値の分割と統合を可能にするため、取引記録は複数の入力と出力を含みます。一般的には、1つの大きな過去取引からの入力か、複数の小額の組み合わせ入力です。同時に、最大2つの出力があります:1つは支払い(受取人宛)、必要ならもう1つはお釣り(送金者宛)です。
「扇出し」はここでは問題になりません。扇出しとは、1つの取引が複数の取引に依存し、それらがさらに多くの取引に依存することです。どの取引も完全な独立履歴コピーを取得する必要はありません。
従来の銀行モデルは、取引者と信頼できる第三者の情報取得を制限することで一定のプライバシー保護を実現しています。すべての取引記録を公開する必要があるため、この方法は否定されます。しかし、プライバシーは別の情報流の遮断によって維持できます——公開鍵の匿名性です。一般には、誰が誰にいくら送金したかは見えますが、特定の個人を指す情報はありません。このレベルの情報公開は株式市場の取引に似ており、時間と各取引の金額のみが公開され、取引当事者が誰かは誰も知りません。
攻撃者が誠実なチェーンより速く代替チェーンを生成しようとする状況を仮定します。仮に成功しても、現行システムが曖昧な状態になることはありません。つまり、攻撃者は無から価値を生み出すことも、彼に属さない資金を得ることもできません。ネットワークノードは無効な取引を支払いとして認めず、誠実なノードはそのような支払いを含むブロックを決して受け入れません。攻撃者ができるのは自分の取引を修正し、既に使った資金を取り戻そうとすることだけです。
誠実なチェーンと攻撃者の競争は二項ランダムウォークで表現できます。成功イベントは誠実なチェーンに新しいブロックが追加され、優位性が1増すこと。失敗イベントは攻撃者のチェーンに新しいブロックが追加され、誠実なチェーンの優位性が1減ることです。
攻撃者が遅れから追いつく確率はギャンブラーの破産問題に似ています。無限のチップを持つギャンブラーが赤字からスタートし、無限回賭けて赤字を埋めることを目指す状況です。最終的に赤字を埋める確率、つまり攻撃者が誠実なチェーンに追いつく確率[8]は以下の通りです:
既に仮定した通り、攻撃者が追い越すべきブロック数が増えるほど、その成功確率は指数的に低下します。勝率が低い場合、攻撃者が最初に幸運な前進をできなければ、さらに遅れるにつれて勝率は消滅します。
新しい取引の受取人が、送金者が取引を変更できないことを十分に確信するまでどれくらい待つべきかを考えます。送金者が攻撃者で、受取人に支払いが完了したと信じさせた後、資金を自分に戻そうとする場合です。この場合、受取人は警告を受けますが、送金者はその時点で既成事実化を狙います。
受取人は新しい公開鍵・秘密鍵ペアを生成し、署名直前に公開鍵を送金者に知らせます。これにより、送金者が事前に連続計算でチェーン上のブロックを準備し、十分な運で先行し、取引を実行する事態を防げます。送金が完了すると、不誠実な送金者は秘密裏に並行チェーン上で作業を開始し、リバース取引を含めようとします。
受取人は取引がブロックにまとめられ、さらに1ブロック追加されるまで待ちます。攻撃者の作業進捗は分かりませんが、誠実なブロック生成の平均時間を仮定できます。攻撃者の進捗はポアソン分布に従い、期待値は:
攻撃者が追いつく確率を計算するには、攻撃者の進捗ごとのポアソン密度に、その時点から追いつく確率を掛けます:
密度分布の無限級数和を避けるために再整理…
C言語プログラムに変換……
一部の結果を得ると、確率はZの増加とともに指数的に低下します:
Pが0.1%未満の場合……
私たちは信頼に依存しない電子取引システムを提案しました。出発点はデジタル署名を使用する通常のコインフレームワークですが、これは所有権管理には堅牢でも二重支払いは防げません。この問題を解決するため、プルーフ・オブ・ワークメカニズムを用いたピアツーピアネットワークで公開取引履歴を記録します。誠実なノードが大多数のCPUハッシュパワーを制御できれば、攻撃者はハッシュパワーだけではシステムを改ざんできません。このネットワークの堅牢性は、その非構造的なシンプルさにあります。ノードはほとんど協調せずに同時に作業できます。特定のノードを識別する必要もなく、メッセージの経路は特定の終点に依存しません。メッセージは最大限の努力で伝播されれば十分です。ノードは自由に参加・離脱でき、再参加時はプルーフ・オブ・ワークチェーンを、それまでのすべての出来事の証拠として受け入れます。ノードはCPUハッシュパワーによって投票し、新しい有効なブロックをチェーンに追加し、無効なブロックを拒否することで有効な取引の受け入れを示します。必要なルールや報酬はこのコンセンサスメカニズムによって強制できます。
15.2K 人気度
3.26K 人気度
14.23K 人気度
4.19K 人気度
85.08K 人気度
ビットコインホワイトペーパー:一种点对点的现金系统
PANews編集部注:2008年10月31日、サトシナカモトは『ビットコインホワイトペーパー』を投稿しました。本日はその17周年記念日です。以下は李笑来によるホワイトペーパーの翻訳内容であり、皆様に名作を再度味わっていただくためのものです。
概要:純粋なピアツーピア型電子現金システムは、金融機関を介さずにオンラインで直接一方から他方へ支払いを送信できるようにします。デジタル署名は部分的な解決策を提供しますが、二重支払いを防ぐために信頼できる第三者が必要であるなら、電子決済の主な利点は相殺されてしまいます。私たちは、ピアツーピアネットワークを使用して二重支払い問題を解決する方法を提案します。ピアツーピアネットワークは各取引にタイムスタンプを付与します。方法は、取引のハッシュデータを継続的に拡張されるハッシュベースのプルーフ・オブ・ワークチェーンに記録し、完全に再実行しない限り変更できない記録を形成します。最長チェーンは、一方で証明されたイベントとその順序を示し、同時に最大のCPUハッシュパワープールから来ていることも証明します。大多数のCPUハッシュパワーが善良なノードによって制御されている限り(つまり、ネットワークを攻撃しようとするノードと協力しない限り)、善良なノードは最長チェーンを生成し、攻撃者よりも速く進みます。このネットワーク自体は最小限の構造を必要とします。情報は最大限の努力で伝播され、ノードは自由に参加・離脱できます。ただし、参加時には必ず最長のプルーフ・オブ・ワークチェーンを、それまでのすべての出来事の証拠として受け入れる必要があります。
1. はじめに (Introduction)
インターネット商取引はほぼ完全に金融機関を信頼できる第三者として電子決済を処理することに依存しています。ほとんどの取引においてこのシステムは十分機能していますが、信頼に基づくモデルに固有の欠陥に悩まされています。完全に不可逆な取引は実際には不可能であり、金融機関は紛争の仲裁を避けられません。仲裁コストは取引コストを増加させ、最小取引規模を制限し、多くの小額決済を阻止します。さらに大きなコストとして、システムは不可逆なサービスに対して不可逆な支払いを提供できません。逆転の可能性は、信頼の必要性を至る所に生じさせます。商者・売主は顧客を警戒し、信頼がなければ不要な追加情報の提供を顧客に求めます。一定割合の詐欺は不可避と考えられています。これらのコストと支払いの不確実性は、現金による直接支払いでは回避できますが、信頼できない相手との通信チャネルを介した支払いには適用できる仕組みがありません。
私たちが本当に必要としているのは、信頼ではなく暗号化証明に基づく電子決済システムです。これにより、任意の二者が第三者を信頼せずに直接取引できます。ハッシュパワーによって保証された不可逆な取引は売主を詐欺から守り、買主のための日常的な担保メカニズムも容易に実現できます。本論文では、二重支払い問題に対する解決策を提案します。ピアツーピア型分散タイムスタンプサーバーを使用してハッシュパワーに基づく証明を生成し、各取引を時系列で記録します。このシステムは、誠実なノードが協力する攻撃者よりも多くのCPUハッシュパワーを持っている限り安全です。
2. 取引 (Transactions)
電子コインはデジタル署名チェーンとして定義します。所有者がコインを他者に渡す際、デジタル署名チェーンの末尾に以下のデジタル署名を追加します:前回の取引のハッシュ、および新しい所有者の公開鍵。受取人は署名を検証することでデジタル署名チェーンの所有権を確認できます。
この方法の問題は、受取人が過去の所有者の中に二重支払いをした者がいないかを検証できないことです。一般的な解決策は、信頼できる中央権威、いわゆる「造幣局」を導入し、各取引が二重支払いでないかをチェックさせることです。取引が発生するたびにコインは造幣局に戻され、造幣局が新しいコインを発行します。したがって、造幣局が直接発行したコインのみが二重支払いされていないと信頼されます。この解決策の問題は、通貨システム全体の運命が造幣局を運営する企業(銀行のようなもの)に依存し、すべての取引がそれを通過しなければならないことです。
受取人が過去の所有者がいかなる過去の取引にも署名していないことを確認できる方法が必要です。私たちの目的では、最初の取引のみが有効なので、その後の二重支払いの試みは気にしません。取引が存在しないことを確認する唯一の方法は、すべての取引を知ることです。造幣局モデルでは、造幣局がすべての取引を把握し、その順序を確認できます。信頼できる第三者なしでこれを実現するためには、取引記録を公開し、参加者が同じ唯一の取引履歴を認めるシステムが必要です。受取人は、各取引が発生した時点で大多数のノードがそれを最初に受け入れたことを証明する必要があります。
3. タイムスタンプサーバー (Timestamp Server)
本解決策はタイムスタンプサーバーから始まります。タイムスタンプサーバーは、アイテム(ブロック)のハッシュにタイムスタンプを付与し、そのハッシュを新聞のように、またはニュースグループ(Usenet)の投稿のようにブロードキャストします[2-5]。タイムスタンプは、そのデータがその時点より前に存在していたことを証明します。そうでなければ、そのハッシュは生成できません。各タイムスタンプは前のタイムスタンプのハッシュを含み、チェーンを形成します。新しいタイムスタンプは前のタイムスタンプの後に追加されます。
4. プルーフ・オブ・ワーク (Proof-of-Work)
ピアツーピア型分散タイムスタンプサーバーを実現するために、新聞やニュースグループの投稿ではなく、Adam Backのハッシュキャッシュのようなプルーフ・オブ・ワークシステムを使用する必要があります。プルーフ・オブ・ワークとは、ある数値を探すことです。その数値のハッシュ(例えばSHA-256)を計算した結果、一定数の0で始まる必要があります。0の数を増やすほど、作業量は指数的に増加しますが、検証はハッシュ計算一回で済みます。
タイムスタンプネットワークでは、ブロックにノンス(nonce)を繰り返し追加し、条件を満たす数値が見つかるまで繰り返します。条件は、ブロックのハッシュが指定された数の0で始まることです。CPUハッシュパワーを消費して得られた結果がプルーフ・オブ・ワークを満たすと、そのブロックは変更できなくなり、過去のすべての作業を再実行しない限り変更できません。新しいブロックが追加されるたびに、現在のブロックを変更するには、その後のすべてのブロックの作業も再実行する必要があります。
プルーフ・オブ・ワークは、誰が多数決を代表するかを決定する問題も解決します。もし「1IPアドレス1票」で多数決を決めるなら、多数のIPアドレスを取得できる者が「多数」と見なされます。プルーフ・オブ・ワークは本質的に「1CPU1票」です。多数決は最長チェーンによって表され、最も多くの作業が投入されたチェーンがそれです。大多数のCPUハッシュパワーが誠実なノードに制御されていれば、誠実なチェーンが最も速く成長し、他の競合チェーンを圧倒します。既存のブロックを変更するには、攻撃者はそのブロックとその後のすべてのブロックのプルーフ・オブ・ワークを再実行し、さらに誠実なノードの作業に追いつき、追い越す必要があります。後述で、遅れた攻撃者が追いつく可能性がブロック数の増加とともに指数的に低下する理由を示します。
ハードウェアハッシュパワーの総合的な増加やノード数の変化に対応するため、プルーフ・オブ・ワークの難易度は、平均1時間あたりのブロック生成数の移動平均値に基づいて決定されます。ブロック生成が速すぎる場合、難易度は上昇します。
5. ネットワーク (Network)
ネットワークの運用手順は以下の通りです:
ノードは常に最長チェーンが正しいと考え、新しいデータを追加し続けます。もし2つのノードが同時に異なる「次のブロック」をネットワークにブロードキャストした場合、あるノードは一方を先に受信し、他のノードはもう一方を先に受信します。この場合、ノードは先に受信したブロック上で作業を続けますが、もう一方の分岐も保存しておき、後者が最長チェーンになった場合に備えます。次のプルーフ・オブ・ワークが見つかり、いずれかの分岐がより長いチェーンになった時点で、一時的な分岐は解消され、他方の分岐で作業していたノードはより長いチェーンに切り替えます。
新しい取引は必ずしもすべてのノードにブロードキャストされる必要はありません。十分な数のノードに届けば、すぐにその取引はブロックにまとめられます。ブロックのブロードキャストも一部のメッセージが失われることを許容します。あるノードが特定のブロックを受信しなかった場合、次のブロックを受信した際に前のブロックを逃したことに気付き、失われたブロックの補完要求を出します。
6. 報酬 (Incentive)
慣例として、各ブロックの最初の取引は特別な取引であり、新しいコインを生成し、その所有権はそのブロックの生成者に与えられます。これにより、ノードがネットワークをサポートする報酬が与えられ、コインを流通に発行する方法も提供されます。このシステムにはコインを発行する中央権威が存在しません。安定的に一定数の新しいコインが流通に加わることは、金鉱採掘者が資源を消費して金を流通に加えるのと似ています。本システムでは、消費される資源はCPU作業時間と電力です。
報酬は取引手数料からも得られます。取引の出力値が入力値より小さい場合、その差額が取引手数料となり、その手数料は取引をブロックにまとめたノードへの報酬となります。既定数のコインが流通に入った後は、報酬は完全に取引手数料によって賄われ、インフレーションは絶対に発生しません。
報酬メカニズムはノードの誠実性維持も促します。もし貪欲な攻撃者がすべての誠実なノードより多くのCPUハッシュパワーを集めた場合、彼は選択を迫られます:そのハッシュパワーで自分が使ったコインを盗み返して他人を騙すか、それとも新しいコインを生成するか。彼はルール通りに行動した方が得策であることに気付くはずです。現行ルールでは、彼は他の全員を合わせた以上のコインを得られます。システムを密かに破壊して自分の資産を無価値にするよりも、ルールに従う方が明らかに得です。
7. ディスクスペースの回収 (Reclaiming Disk Space)
あるコインの最新取引が十分多くのブロック前に発生していれば、そのコインの過去の消費取引記録はディスクスペース節約のために破棄できます。この機能をブロックのハッシュを壊さずに実現するため、取引記録のハッシュはMerkleツリー[7、2、5]にまとめられ、ツリーのルートのみがブロックのハッシュに含まれます。枝を切ることで古いブロックは圧縮できます。内部のハッシュは保存する必要はありません。
取引記録のないブロックヘッダーは約80バイトです。10分ごとに1ブロック生成されると仮定すると、80バイト×6×24×365=年間4.2Mバイトです。2008年時点で市販のPCは2GBメモリを搭載しており、ムーアの法則によれば毎年1.2GB増加します。仮にブロックヘッダーをメモリに保存する必要があっても問題ありません。
8. 簡易支払い確認 (Simplified Payment Verification)
完全なネットワークノードを運用しなくても支払い確認は可能です。ユーザーはプルーフ・オブ・ワーク付き最長チェーンのブロックヘッダーのコピーを持つだけでよく、オンラインノードに問い合わせて自分の持つチェーンが最長であることを確認できます。その後、Merkleツリーの枝ノードを取得し、取引がタイムスタンプされたブロックに接続します。ユーザー自身は取引を検証できませんが、チェーン上のどこかに接続することで、ネットワークノードがその取引を受け入れたことを確認でき、以降追加されたブロックがネットワークによる取引承認をさらに確証します。
誠実なノードがネットワークを制御している限り、この検証は信頼できます。しかし、ネットワークが攻撃者に制御されている場合、検証は信頼できません。ネットワークノードは取引記録を自分で検証できますが、攻撃者がネットワークを制御し続ける限り、簡易検証方式は攻撃者が偽造した取引記録に騙される可能性があります。対策の一つは、クライアントソフトウェアがネットワークノードからの警告を受け入れることです。ネットワークノードが無効なブロックを発見した場合、警告を発し、ユーザーのソフトウェアに通知を表示し、完全なブロックのダウンロードを促し、取引の一貫性確認を警告します。高い頻度で支払いを受ける商者・売主は、独自の完全ノードを運用し、より独立した安全性と迅速な取引確認を確保すべきです。
9. 価値の統合と分割 (Combining and Splitting Value)
コインを一つずつ処理することは可能ですが、1セントごとに個別の記録を設けるのは非効率です。価値の分割と統合を可能にするため、取引記録は複数の入力と出力を含みます。一般的には、1つの大きな過去取引からの入力か、複数の小額の組み合わせ入力です。同時に、最大2つの出力があります:1つは支払い(受取人宛)、必要ならもう1つはお釣り(送金者宛)です。
「扇出し」はここでは問題になりません。扇出しとは、1つの取引が複数の取引に依存し、それらがさらに多くの取引に依存することです。どの取引も完全な独立履歴コピーを取得する必要はありません。
10. プライバシー (Privacy)
従来の銀行モデルは、取引者と信頼できる第三者の情報取得を制限することで一定のプライバシー保護を実現しています。すべての取引記録を公開する必要があるため、この方法は否定されます。しかし、プライバシーは別の情報流の遮断によって維持できます——公開鍵の匿名性です。一般には、誰が誰にいくら送金したかは見えますが、特定の個人を指す情報はありません。このレベルの情報公開は株式市場の取引に似ており、時間と各取引の金額のみが公開され、取引当事者が誰かは誰も知りません。
11. 計算 (Calculations)
攻撃者が誠実なチェーンより速く代替チェーンを生成しようとする状況を仮定します。仮に成功しても、現行システムが曖昧な状態になることはありません。つまり、攻撃者は無から価値を生み出すことも、彼に属さない資金を得ることもできません。ネットワークノードは無効な取引を支払いとして認めず、誠実なノードはそのような支払いを含むブロックを決して受け入れません。攻撃者ができるのは自分の取引を修正し、既に使った資金を取り戻そうとすることだけです。
誠実なチェーンと攻撃者の競争は二項ランダムウォークで表現できます。成功イベントは誠実なチェーンに新しいブロックが追加され、優位性が1増すこと。失敗イベントは攻撃者のチェーンに新しいブロックが追加され、誠実なチェーンの優位性が1減ることです。
攻撃者が遅れから追いつく確率はギャンブラーの破産問題に似ています。無限のチップを持つギャンブラーが赤字からスタートし、無限回賭けて赤字を埋めることを目指す状況です。最終的に赤字を埋める確率、つまり攻撃者が誠実なチェーンに追いつく確率[8]は以下の通りです:
既に仮定した通り、攻撃者が追い越すべきブロック数が増えるほど、その成功確率は指数的に低下します。勝率が低い場合、攻撃者が最初に幸運な前進をできなければ、さらに遅れるにつれて勝率は消滅します。
新しい取引の受取人が、送金者が取引を変更できないことを十分に確信するまでどれくらい待つべきかを考えます。送金者が攻撃者で、受取人に支払いが完了したと信じさせた後、資金を自分に戻そうとする場合です。この場合、受取人は警告を受けますが、送金者はその時点で既成事実化を狙います。
受取人は新しい公開鍵・秘密鍵ペアを生成し、署名直前に公開鍵を送金者に知らせます。これにより、送金者が事前に連続計算でチェーン上のブロックを準備し、十分な運で先行し、取引を実行する事態を防げます。送金が完了すると、不誠実な送金者は秘密裏に並行チェーン上で作業を開始し、リバース取引を含めようとします。
受取人は取引がブロックにまとめられ、さらに1ブロック追加されるまで待ちます。攻撃者の作業進捗は分かりませんが、誠実なブロック生成の平均時間を仮定できます。攻撃者の進捗はポアソン分布に従い、期待値は:
攻撃者が追いつく確率を計算するには、攻撃者の進捗ごとのポアソン密度に、その時点から追いつく確率を掛けます:
密度分布の無限級数和を避けるために再整理…
C言語プログラムに変換……
一部の結果を得ると、確率はZの増加とともに指数的に低下します:
Pが0.1%未満の場合……
12. 結論 (Conclusion)
私たちは信頼に依存しない電子取引システムを提案しました。出発点はデジタル署名を使用する通常のコインフレームワークですが、これは所有権管理には堅牢でも二重支払いは防げません。この問題を解決するため、プルーフ・オブ・ワークメカニズムを用いたピアツーピアネットワークで公開取引履歴を記録します。誠実なノードが大多数のCPUハッシュパワーを制御できれば、攻撃者はハッシュパワーだけではシステムを改ざんできません。このネットワークの堅牢性は、その非構造的なシンプルさにあります。ノードはほとんど協調せずに同時に作業できます。特定のノードを識別する必要もなく、メッセージの経路は特定の終点に依存しません。メッセージは最大限の努力で伝播されれば十分です。ノードは自由に参加・離脱でき、再参加時はプルーフ・オブ・ワークチェーンを、それまでのすべての出来事の証拠として受け入れます。ノードはCPUハッシュパワーによって投票し、新しい有効なブロックをチェーンに追加し、無効なブロックを拒否することで有効な取引の受け入れを示します。必要なルールや報酬はこのコンセンサスメカニズムによって強制できます。