ビットコインホワイトペーパー:ピアツーピアのキャッシュシステム

ビットコインのホワイトペーパー17周年を機に、この古典をもう一度振り返ってみましょう。

PANews編集者注:2008年10月31日、サトシ・ナカモトはビットコインのホワイトペーパーを公開しました。本日で17周年を迎えます。以下は、李小来氏によるホワイトペーパーの翻訳です。この名著を改めてお読みいただく機会として、ぜひご活用ください。

概要:純粋なピアツーピア型の電子現金であれば、金融機関を介さずにオンライン決済を一方から他方へ直接送信することが可能になります。デジタル署名は部分的な解決策となりますが、二重支払いを防止するために信頼できる第三者機関が必要となる場合、電子決済の主な利点が損なわれます。本稿では、ピアツーピアネットワークを用いて二重支払い問題に対処する方式を提案します。ピアツーピアネットワークは、ハッシュデータを継続的に拡張するハッシュベースのプルーフオブワークチェーンに記録することで、各トランザクションにタイムスタンプを付与します。このチェーンは、完全に書き換えない限り変更できない記録を形成します。最長チェーンには、2つの目的があります。1つは、目撃されたイベントとその順序を証明すること、もう1つは、最大のCPUパワープールから発生したことを証明することです。CPUパワーの大部分が無害なノード、つまりネットワーク攻撃を試みるノードと協力しないノードによって制御されている限り、無害なノードは最長のチェーンを生成し、攻撃者を凌駕します。ネットワーク自体は最小限の構造で済みます。情報はベストエフォート方式で伝播され、ノードは自由に参加したり退出したりできます。ただし、参加する際には、不在中に発生したすべてのことの証明として、常に最長の作業証明チェーンを受け入れる必要があります。

1. はじめに

インターネット商取引は、電子決済処理において、信頼できる第三者である金融機関にほぼ全面的に依存しています。このシステムはほとんどの取引において十分に機能していますが、信頼に基づくモデルに内在する欠陥によって依然として阻害されています。金融機関は紛争の仲裁を避けられないため、完全に不可逆的な取引は事実上不可能です。仲裁コストは取引コストを増大させ、結果として最小取引額を制限し、多くの小額決済を事実上阻止することになります。さらに、さらに大きなコストが存在します。システムは不可逆的なサービスに対して不可逆的な決済を提供することができません。可逆性の可能性は、常に信頼を必要とする状況を生み出します。販売業者は顧客を警戒し、(信頼されていれば)本来は必要のない追加情報の提供を求めなければなりません。一定の割合の詐欺は避けられないと考えられています。これらのコストと決済の不確実性は、人と人の間で直接物理的な通貨で決済する場合は回避できますが、一方の当事者が信頼されていない場合に通信チャネルを介して決済を行うメカニズムが欠如しています。

私たちが真に必要としているのは、信頼ではなく暗号的証明に基づく電子決済システムであり、第三者を信頼することなく、任意の二者間が直接取引できるシステムです。計算能力によって保証された不可逆的な取引は、売り手が詐欺を回避するのに役立ちます。同時に、買い手を保護するための日常的な保証メカニズムも容易に実装できます。本論文では、ピアツーピアの分散型タイムスタンプサーバーを用いて計算能力に基づく証明を生成し、各取引を時系列で記録することで、二重支払いに対する解決策を提案します。このシステムは、誠実なノードが共謀する攻撃者よりも多くのCPUパワーを保有している限り安全です。

2. 取引

電子コインはデジタル署名チェーンとして定義されます。所有者がコインを別の人に譲渡する際、このチェーンの末尾に、前のトランザクションのハッシュと新しい所有者の公開鍵を組み合わせたデジタル署名を追加します。受信者は署名を検証することで、デジタル署名チェーンの所有権を検証できます。

このアプローチの問題点は、受取人が以前の所有者が通貨を二重に使用していないことを確認できないことです。一般的な解決策は、信頼できる中央集権機関、つまり「造幣局」を導入し、すべての取引で二重使用がないかチェックすることです。取引ごとにコインは造幣局に戻り、造幣局は新しいコインを発行します。したがって、造幣局が直接発行したコインだけが信頼でき、二重使用がないとみなされます。この解決策の問題点は、通貨システム全体の運命が造幣局を運営する企業(銀行と同様)に左右され、すべての取引が造幣局を経由しなければならないことです。

受信者が、前の所有者が以前のトランザクションに署名していないことを確認する方法が必要です。ここでは最も古いトランザクションのみをカウントするため、それ以降の二重支払いの試みは考慮しません。トランザクションが存在しないことを確認する唯一の方法は、すべてのトランザクションを知ることです。ミントモデルでは、ミントは既にすべてのトランザクションを把握しており、その順序を確認できます。「信頼できる当事者」の関与なしにこれを実現するには、トランザクション記録を公開する必要があり、参加者が受信した同じ一意のトランザクション履歴に同意できるシステムが必要です。受信者は、各トランザクションが発生した時点で、過半数のノードがそれが最初に受信したトランザクションであることに同意していることを証明する必要があります。

3. タイムスタンプサーバー

このソリューションは、タイムスタンプサーバーから始まります。タイムスタンプサーバーは、新聞やUsenetニュースグループ[2-5]の投稿のように、アイテムのブロックにタイムスタンプを付け、そのハッシュをブロードキャストすることで動作します。タイムスタンプは、データがその時点より前に存在していたことを証明します。そうでなければ、ハッシュを生成することはできません。各タイムスタンプのハッシュには以前のタイムスタンプが含まれており、チェーンを形成します。つまり、新しいタイムスタンプは前のタイムスタンプの後に追加されます。

4. プルーフ・オブ・ワーク

ピアツーピアの分散型タイムスタンプサーバーを実装するには、新聞やニュースグループの投稿のようなものではなく、アダム・バークのHashCashに似たプルーフ・オブ・ワーク(Proof-of-Work)システムが必要です。プルーフ・オブ・ワークとは、以下の条件を満たす値を見つけることです。ハッシュ値(例えばSHA-256)をハッシュ化した後、ハッシュ値は一定数のゼロで始まっていなければなりません。ゼロが1つ増えるごとに作業負荷は指数関数的に増加しますが、この作業負荷を検証するにはハッシュを1つ計算するだけで済みます。

私たちのタイムスタンプネットワークでは、プルーフ・オブ・ワークを次のように実装しています。ブロックのハッシュが指定された数のゼロで始まるという条件を満たす値が見つかるまで、各ブロックに乱数が継続的に追加されます。CPUの計算能力によってプルーフ・オブ・ワークを満たす結果が得られると、以前のすべての作業をやり直さない限り、ブロックは変更できなくなります。新しいブロックが継続的に追加されるため、現在のブロックを変更すると、後続のすべてのブロックの作業をやり直すことになります。

プルーフ・オブ・ワーク(PoL)は、意思決定において誰が多数派を代表するかという問題も解決します。いわゆる「多数派」が「1つのIPアドレスに1票」というシステムによって決定される場合、多数のIPアドレスを制御できる人は誰でも「多数派」の一部とみなされる可能性があります。PoLは本質的に「1つのCPUに1票」です。いわゆる「多数派決定」は、最も多くの作業が投入されたチェーンであるため、最長のチェーンによって表されます。CPUパワーの大部分が正直なノードによって制御されている場合、正直なチェーンは最も速く成長し、他の競合するチェーンをはるかに上回ります。既に生成されたブロックを変更するには、攻撃者はそのブロックとそれ以降のすべてのブロックのプルーフ・オブ・ワークを再度完了させ、正直なノードの作業に追いつき、それを上回る必要があります。次のセクションでは、遅れた攻撃者が追いつく確率がブロック数とともに指数関数的に減少する理由を説明します。

ハードウェア全体の計算能力の継続的な向上と、参加ノード数の時間的変化に対応するため、プルーフ・オブ・ワークの難易度は、1時間あたりに生成されるブロックの平均数に基づく移動平均によって決定されます。ブロックの生成が速すぎる場合、難易度は上昇します。

5. ネットワーク

ネットワークを実行する手順は次のとおりです。

  1. すべての新しいトランザクションはすべてのノードにブロードキャストされます。
  2. 各ノードは新しいトランザクションをブロックにパッケージ化します。
  3. 各ノードは、このブロックの挑戦的な作業証明を見つけることから始めます。
  4. ブロックが作業証明を見つけると、そのブロックをすべてのノードにブロードキャストする必要があります。
  5. 他の多くのノードは、次の条件がすべて満たされた場合にのみブロックを受け入れます: ブロック内のすべてのトランザクションが有効であり、二重使用されていないこと。
  6. 多数のノードがネットワークに対してブロックを受け入れたことを示す方法は、次のブロックを作成するときに、受け入れられたブロックのハッシュを前のブロックのハッシュとして使用することです。

ノードは常に最長のチェーンを正しいと認識し、そこに新しいデータを継続的に追加します。2つのノードが同時に「次のブロック」の異なる2つのバージョンをブロードキャストした場合、一部のノードは一方を先に受信し、他のノードはもう一方を受信します。この場合、ノードは最初に受信したブロックの処理を継続しますが、もう一方のブランチが最長チェーンになった場合に備えて、もう一方のブランチも保存します。次のプルーフ・オブ・ワークが見つかり、一方のブランチの方が長いチェーンになると、この一時的な分岐は解消され、もう一方のブランチで処理していたノードは長いチェーンに切り替えます。

新しいトランザクションは必ずしもすべてのノードにブロードキャストする必要はありません。十分な数のノードに到達すると、すぐにブロックにパッケージ化されます。ブロックブロードキャストでは、一部のメッセージが欠落することもあります。ノードがブロックを受信しなかった場合、次のブロックを受信した時点で前のブロックを見逃したことを認識し、欠落したブロックの再送信要求を発行します。

6. インセンティブ

合意通り、各ブロックの最初のトランザクションは、ブロック作成者が所有する新しいコインを生成する特別なトランザクションです。これは、ネットワークをサポートするノードに報酬を与え、コインを流通させる手段を提供します。このシステムでは、コインを発行する中央集権的な機関は存在しません。流通する新しいコインの数が着実に増加していく様子は、金鉱夫がシステムに金を投入するためにリソースを継続的に消費し続ける様子に似ています。私たちのシステムでは、消費されるリソースはCPU時間と電力です。

報酬は取引手数料からも得られます。取引の出力値が入力値よりも少ない場合、その差額が取引手数料となります。この手数料は、取引をブロックに組み込んだノードへの報酬として使用されます。一定数のコインが流通すると、報酬はすべて取引手数料を通じて分配され、インフレは一切発生しません。

報酬メカニズムは、ノードが誠実さを維持するインセンティブにもなり得ます。貪欲な攻撃者が、誠実なノード全員を合わせたよりも多くのCPUパワーを獲得した場合、彼は選択を迫られます。そのパワーを使って、自分が費やしたお金を盗み取り、他のノードを騙すのか、それとも新しいコインを生成するのか? 攻撃者は、ルールに従う方が有利だと理解できるはずです。現在のルールでは、攻撃者は他のノード全員を合わせたよりも多くのコインを取得できます。これは、密かにシステムを破壊して富を失うよりも明らかに利益が大きいからです。

7. ディスク領域の再利用

コインの最新のトランザクションが十分な数のブロック前に発生した場合、そのコインに関連する以前のすべてのトランザクションを破棄することができます。これはディスク容量を節約するためです。ブロックのハッシュを破損させることなくこれを実現するため、トランザクションハッシュはマークル木[7, 2, 5]に組み込まれ、ブロックのハッシュには木の根のみが含められます。枝を刈り込むことで、古いブロックを圧縮できます。内部ハッシュは保存する必要はありません。

トランザクションのないブロックヘッダーは約80バイトです。ブロックが10分ごとに生成されると仮定すると、80バイト×6、24、365は年間4.2MBになります。2008年時点では、市販のコンピュータのほとんどが2GBのRAMを搭載しており、ムーアの法則によれば、これは年間1.2GB増加するため、ブロックヘッダーをメモリに保存する必要があったとしても問題にはなりません。

8. 簡素化された支払い確認

支払いの確認は、ネットワークノードをフル稼働させなくても可能です。ユーザーは、最長チェーンのプルーフ・オブ・ワーク(PoW)ブロックヘッダーのコピーのみが必要です。これは、オンラインノードをチェックすることで最長チェーンからのものであることを検証できます。そして、マークルツリーのブランチノードを取得し、ブロックのタイムスタンプが付与された時点のトランザクションに接続します。ユーザー自身はトランザクションを確認できませんが、チェーン上のどこかに接続することで、ネットワークノードがトランザクションを承認したことを確認できます。さらに、後続のブロックによって、ネットワークがトランザクションを承認したことが確認できます。

誠実なノードがネットワークの制御を維持している限り、検証の信頼性は維持されます。しかし、ネットワークが攻撃者によって制御されている場合、検証の信頼性は低下します。ネットワークノードはトランザクション記録を自ら検証できますが、攻撃者がネットワークの制御を維持している場合、簡略化された検証方法では偽造されたトランザクション記録に騙される可能性があります。対策の一つとして、クライアントソフトウェアがネットワークノードからのアラートを受信することが挙げられます。ネットワークノードが無効なブロックを発見すると、アラートを発し、ユーザーのソフトウェアに通知を表示し、ユーザーにブロック全体をダウンロードするよう指示し、トランザクションの整合性を確認するよう警告します。高頻度取引を行う事業者は、より高い独立したセキュリティとより迅速なトランザクション確認を確保するために、依然として独自のフルノードを運用することを優先すべきです。

9. 価値の結合と分割

硬貨を1枚ずつ処理することは可能ですが、1セント硬貨ごとに個別の記録を保持するのは煩雑です。価値の分割と統合を可能にするため、取引記録には複数の入力と出力が含まれます。通常、比較的大きな以前の取引からの単一の入力、またはより小さな金額からの多数の入力の組み合わせのいずれかです。一方、出力は最大で2つです。1つは受取人への支払い、もう1つは必要に応じて送金者へのお釣りです。

ここで注意すべき点は、「ファンアウト」が問題ではないということです。「ファンアウト」とは、あるトランザクションが複数のトランザクションに依存し、それらのトランザクションがさらに多くのトランザクションに依存することを意味します。単一のトランザクションについて、完全かつ独立した履歴コピーを抽出する必要はまったくありません。

10. プライバシー

従来の銀行モデルは、取引当事者や信頼できる第三者に関する情報へのアクセスを制限することで、ある程度のプライバシーを実現してきました。しかし、すべての取引記録を公開する必要があるため、このアプローチは却下されました。しかし、他の情報の流れを遮断することでプライバシーを維持することが可能です。これが公開鍵匿名性です。誰かが誰かに特定の金額を送金したことは分かりますが、特定の個人を特定する情報はありません。このレベルの情報開示は、株式市場の取引に似ています。株式市場では、各取引の時間と金額のみが公開され、取引当事者が誰であるかは誰にも分かりません。

11. 計算

攻撃者が、正当なチェーンよりも高速な代替チェーンを生成しようとすると想像してみてください。たとえ成功したとしても、現在のシステムが曖昧な状態になることはありません。攻撃者は何もないところから価値を生み出すことも、本来自分のものではないお金を手に入れることもできません。ネットワークノードは無効なトランザクションを支払いとして受け入れず、正当なノードはそのような支払いを含むブロックを決して受け入れません。攻撃者はせいぜい、自身のトランザクションを改変し、すでに支払ったお金を取り戻そうとすることしかできません。

正直なチェーンと攻撃者との間の競争は、二項ランダムウォークを用いて記述できます。成功イベントとは、正直なチェーンに新しいブロックが追加され、そのアドバンテージが1増加した場合です。一方、失敗イベントとは、攻撃者のチェーンに新しいブロックが追加され、正直なチェーンのアドバンテージが1減少した場合です。

攻撃者が不利な状況から追いつく確率は、ギャンブラーの破産問題に似ています。無制限のチップを持つギャンブラーが赤字からスタートし、既存の赤字を埋め合わせることを目標に無制限の回数ギャンブルを行えるとします。攻撃者が最終的に赤字を埋め合わせる確率、つまり攻撃者が誠実さの連鎖[8]に追いつく確率は、以下のように計算できます。

攻撃者が追いつく必要のあるブロックの数は増加していると既に仮定しているため、攻撃者の成功確率は指数関数的に減少します。攻撃者が不利な状況で、序盤に幸運な前進を果たせなければ、後れを取るにつれて勝利の可能性は消滅します。

さて、新しい取引の受取人が、送信者が取引を改ざんできないことを完全に確信できるまで、どれくらいの時間を待たなければならないかを考えてみましょう。送信者が攻撃者で、受取人を騙して支払い済みだと信じ込ませ、その後、送金を自分に送金しようとしていると仮定しましょう。このシナリオでは、受取人は当然警告を受けますが、送信者はそれまでに被害が及んでいないことを望んでいます。

受信者は新しい公開鍵と秘密鍵のペアを生成し、署名の直前に送信者に公開鍵を伝えます。これにより、送信者が継続的な計算によってチェーン上にブロックを事前に準備し、運が良ければトランザクションの実行時まで先手を打つというシナリオを回避できます。資金が送金されると、不正な送信者は密かに別のパラチェーンを作成し、トランザクションの逆バージョンを挿入しようとします。

受信者は、トランザクションがブロックにパッケージ化され、その後別のブロックが追加されるまで待機します。受信者は攻撃者の進捗状況を把握していませんが、各ブロック生成プロセスで正当なブロックが生成される平均時間を想定できます。攻撃者の潜在的な進捗状況は、期待値として以下のポアソン分布に従います。

攻撃者がまだ追いつくことができる確率を計算するには、各攻撃者の現在の進捗状況のパッソン密度に、その時点から攻撃者が追いつくことができる確率を掛けます。

密度分布の無限級数の合計を復元することを避けるために…

C言語プログラムに変換します...

部分的な結果から、Zが増加するにつれて確率は指数関数的に減少することがわかります。

Pが0.1%未満の場合...

12. 結論

我々は、信頼に依存しない電子取引システムを提案する。デジタル署名を用いたシンプルなコインフレームワークを基盤とし、堅牢な所有権管理を提供するものの、二重支払いを防ぐことはできない。この問題に対処するため、我々はプルーフ・オブ・ワーク機構を用いて公開取引履歴を記録するピアツーピアネットワークを提案する。誠実なノードがCPUパワーの大部分を掌握している限り、攻撃者は計算パワーの観点からのみシステムを改ざんすることはできない。このネットワークの堅牢性は、その非構造化シンプルさにある。ノードは最小限の調整で瞬時に同時に動作することができる。メッセージパスは特定の宛先に依存しないため、ノードを識別する必要すらなく、メッセージはベストエフォートの意図で伝播するだけでよい。ノードは自由に参加・離脱することができ、再参加時には、オフライン中に発生したすべての事象の証明としてプルーフ・オブ・ワークチェーンを受け入れる。ノードはCPUパワーを用いて投票を行い、有効なブロックをチェーンに継続的に追加し、無効なブロックを拒否することで、有効な取引を受け入れたことを示す。必要なルールや報酬はすべて、このコンセンサスメカニズムを通じて適用できます。

共有先:

著者:小湃的朋友圈

本記事はPANews入駐コラムニストの見解であり、PANewsの立場を代表するものではなく、法的責任を負いません。

記事及び見解は投資助言を構成しません

画像出典:小湃的朋友圈侵害がある場合は、著者に削除を連絡してください。

PANews公式アカウントをフォローして、一緒に強気相場と弱気相場を乗り越えましょう
おすすめ記事
15分前
1時間前
1時間前
4時間前
5時間前
5時間前

人気記事

業界ニュース
市場ホットスポット
厳選読み物

厳選特集

App内阅读