ビットコイン:ピアツーピア電子現金システム

中本哲史

2008年10月31日

概要

純粋なピアツーピアの電子キャッシュのバージョンは、オンライン支払いを金融機関を介さずに直接送金できるようにするでしょう。デジタル署名は解決策の一部を提供しますが、信頼できる第三者が二重支払いを防ぐために必要な場合、主な利点が失われます。私たちはピアツーピアネットワークを使用して二重支払いの問題に対する解決策を提案します。ネットワークはトランザクションをタイムスタンプによってハッシュし、ハッシュベースのプルーフオブワークの連鎖を形成して、再計算なしに変更できない記録を形成します。最長の連鎖は、目撃されたイベントの順序のプルーフと、CPUパワーの最大のプールから来たプルーフであることを証明します。CPUパワーの過半数が、ネットワークを攻撃するために協力していないノードによって制御されているかぎり、彼らは最長の連鎖を生成し、攻撃者を凌駕します。ネットワーク自体は最小限の構造が必要です。メッセージはベストエフォートでブロードキャストされ、ノードは自由にネットワークを離れたり再参加したりすることができ、彼らがいない間に何が起こったかのプルーフオブワークチェーンを受け入れます。

1. はじめに

インターネット上の取引は、ほぼ完全に金融機関が信頼第三者として電子支払いを処理することに依存するようになりました。システムはほとんどの取引にはうまく機能していますが、トラストを基にしたモデルの固有の弱点にはまだ悩まされ続けています。完全に不可逆な取引は実際には存在せず、金融機関は紛争を調停することを避けることができません。仲介のコストは取引コストを増加させ、最小限の実用的取引サイズを制限し、小さなカジュアル取引の可能性を遮断し、不可逆な支払いを行う能力を失うという広範なコストがあります。取引の逆転の可能性があるため、信頼の必要性が広がっています。商人は顧客に注意し、通常彼らが本来必要とするよりも多くの情報を要求しているため、煩わされます。不可避な詐欺の一定の割合が受け入れられています。これらのコストと支払いの不確実性は、物理的な通貨を使用することで回避することができますが、信頼できる第三者なしで通信チャネル上で支払いを行う機構は存在しません。

必要なのは、信頼ではなく暗号的なプルーフに基づく電子支払いシステムです。これにより、信頼できる第三者なしに、任意の2つの関係する当事者同士が直接取引を行うことができます。計算上不可逆な取引は売り手を詐欺から保護し、通常の手形メカニズムを容易に実装して買い手を保護することができます。この論文では、トランザクションの時系列の計算プルーフを生成するためにピアツーピア分散タイムスタンプサーバーを使用する解決策を提案します。システムは、正直なノードが協力して協力する攻撃ノードよりも多くのCPUパワーを制御している限り安全です。

2. トランザクション

電子コインをデジタル署名の連鎖と定義します。各所有者は、以前の取引のハッシュと次の所有者の公開キーのデジタル署名を作成し、これらをコインの末尾に追加することでコインを次の所有者に譲渡します。受取人はこれに署名を検証して所有権の連鎖を検証できます。

もちろんの問題は、受取人が所有権の連鎖を二重支出しないことを検証できないことです。一般的な解決策は、信頼できる中央機関、または造幣所を導入し、すべての取引を二重支出で確認します。各取引後、コインは新しいコインを発行するために造幣所に返還され、造幣所から直接発行されたコインだけが二重支出されないことを信用されます。この解決策の問題は、全般的に資金システムの運命が造幣所を運営する会社に依存しているということです。すべての取引は、銀行と同様に、それらを通過しなければならない、という点で、会社に通過する必要があります。

受取人が前の所有者が以前の取引を署名していないことを知るための方法が必要です。私たちの目的にとって、最初の取引が重要であるため、後での二重支出の試みについては気にしません。取引の不在を確認する唯一の方法は、すべての取引を知らなければならないことです。造幣所ベースのモデルでは、造幣所はすべての取引を認識し、どれが最初に到着したかを決定しました。これを信頼できる第三者なしで達成するためには、取引は公に発表され、参加者が受信された順序の一貫した履歴について合意するシステムが必要です。受取人は、各取引時にノードの大部分がその取引が最初に受信されたと合意したことのプルーフを必要とします。

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

私たちが提案する解決策は、タイムスタンプサーバーから始まります。タイムスタンプサーバーは、タイムスタンプを作成するアイテムのブロックのハッシュを取り、新聞やUsenetの投稿などでそのハッシュを広く公開します。タイムスタンプは、データがそのハッシュに入るためには、明らかに当時存在している必要があることを証明します。各タイムスタンプには、前のタイムスタンプが含まれますが、それによってチェーンが形成され、それ以前のものが強化されます。

4. プルーフオブワーク

ピアツーピアベースで分散タイムスタンプサーバーを実装するには、Adam BackのHashcashのようなプルーフオブワークシステムを使用する必要があります。プルーフオブワークには、SHA-256などでハッシュされた値をスキャンすることが含まれます。ハッシュの冒頭がいくつかのゼロビットで始まる値を見つけるまで。必要なゼロビット数が指数関数的に増加するため、必要な追加的な作業は、単一のハッシュを実行して検証できます。

当社のタイムスタンプネットワークでは、ブロック内のnonceを増分して、ブロックのハッシュが必要なゼロビットを持つ値になるまで証明作業を行います。証明作業を満たすためにCPUの努力が費やされると、ブロックは作業をやり直さなければ変更できません。後のブロックがそれに続いてチェーン化されると、ブロックを変更する作業にはそれを含む後のすべてのブロックをやり直す必要があります。

プルーフオブワークは、多数決意思決定での代表を決定する問題を解決します。多数決がIPアドレス1つ1票に基づいている場合、多くのIPを割り当てることができる人によってひねりやすくなります。プルーフオブワークは基本的に1CPU 1票となります。多数決は、最も多くの作業がそれに投資されている最長のチェーンによって表されます。完全にCPUパワーの多数派が正直なノードによって制御されている場合、正直なチェーンが最も速く成長し、競合するチェーンを凌駕します。過去のブロックを変更するには、攻撃者はブロックのプルーフオブワークをやり直し、それらの後のすべてのブロックをやり直し、正直なノードの努力を追い抜いて追いつかなければなりません。後述するように、遅れた攻撃者が追いつく確率が指数関数的に減少します。

ハードウェアの速度と時間と共にハードウェアの速度が向上した場合や、実行するノードの興味が時間と共に変化した場合に備えて、プルーフオブワークの難易度は、1時間あたりの平均ブロック数を目標とする移動平均によって決定されます。ブロックが速すぎる場合、難易度が上がります。

5. ネットワーク

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

  1. 新しい取引はすべてのノードにブロードキャストされます。
  2. 各ノードは新しい取引をブロックにまとめます。
  3. 各ノードは、そのブロックに対する難しいプルーフオブワークを見つける作業を行います。
  4. ノードがプルーフオブワークを見つけると、そのブロックをすべてのノードにブロードキャストします。
  5. ノードは、それに含まれるすべての取引が有効でかつまだ使われていない場合にのみブロックを受け入れます。
  6. ノードは、受け入れたブロックのハッシュを前のハッシュとして使用して次のチェーンを作成するために作業を行います。

ノードは常に最長のチェーンを正しいものと見なし、それを延長し続けるために作業を続けます。2つのノードが同時に異なるバージョンの次のブロックをブロードキャストする場合、一部のノードはそのどちらかを最初に受信します。その場合、彼らは最初に受信した方に作業を行いますが、他のブランチは長くなる可能性があるため、それを保存します。次のプルーフオブワークが見つかると、タイは決定され、1つの支店が長くなると、別の支店で作業していたノードは長い方に切り替えます。

新しい取引のブロードキャストは、すべてのノードに到達する必要はありません。多くのノードに到達すれば、まもなくブロックに入るでしょう。ブロックのブロードキャストは、メッセージの落とされた状態にも対応しています。ノードがブロックを受信しない場合、次のブロックを受信したときにそれを要求し、自分が1つ逃していたことに気づいたときにそれを要求します。

6. インセンティブ

慣習として、ブロック内の最初の取引は、ブロックの作成者が所有する新しいコインを開始する特別な取引です。これは、ネットワークをサポートするノードにインセンティブを提供し、コインを流

中本哲史

2008年10月31日

概要

純粋なピアツーピアの電子キャッシュのバージョンは、オンライン支払いを金融機関を介さずに直接送金できるようにするでしょう。デジタル署名は解決策の一部を提供しますが、信頼できる第三者が二重支払いを防ぐために必要な場合、主な利点が失われます。私たちはピアツーピアネットワークを使用して二重支払いの問題に対する解決策を提案します。ネットワークはトランザクションをタイムスタンプによってハッシュし、ハッシュベースのプルーフオブワークの連鎖を形成して、再計算なしに変更できない記録を形成します。最長の連鎖は、目撃されたイベントの順序のプルーフと、CPUパワーの最大のプールから来たプルーフであることを証明します。CPUパワーの過半数が、ネットワークを攻撃するために協力していないノードによって制御されているかぎり、彼らは最長の連鎖を生成し、攻撃者を凌駕します。ネットワーク自体は最小限の構造が必要です。メッセージはベストエフォートでブロードキャストされ、ノードは自由にネットワークを離れたり再参加したりすることができ、彼らがいない間に何が起こったかのプルーフオブワークチェーンを受け入れます。

1. はじめに

インターネット上の取引は、ほぼ完全に金融機関が信頼第三者として電子支払いを処理することに依存するようになりました。システムはほとんどの取引にはうまく機能していますが、トラストを基にしたモデルの固有の弱点にはまだ悩まされ続けています。完全に不可逆な取引は実際には存在せず、金融機関は紛争を調停することを避けることができません。仲介のコストは取引コストを増加させ、最小限の実用的取引サイズを制限し、小さなカジュアル取引の可能性を遮断し、不可逆な支払いを行う能力を失うという広範なコストがあります。取引の逆転の可能性があるため、信頼の必要性が広がっています。商人は顧客に注意し、通常彼らが本来必要とするよりも多くの情報を要求しているため、煩わされます。不可避な詐欺の一定の割合が受け入れられています。これらのコストと支払いの不確実性は、物理的な通貨を使用することで回避することができますが、信頼できる第三者なしで通信チャネル上で支払いを行う機構は存在しません。

必要なのは、信頼ではなく暗号的なプルーフに基づく電子支払いシステムです。これにより、信頼できる第三者なしに、任意の2つの関係する当事者同士が直接取引を行うことができます。計算上不可逆な取引は売り手を詐欺から保護し、通常の手形メカニズムを容易に実装して買い手を保護することができます。この論文では、トランザクションの時系列の計算プルーフを生成するためにピアツーピア分散タイムスタンプサーバーを使用する解決策を提案します。システムは、正直なノードが協力して協力する攻撃ノードよりも多くのCPUパワーを制御している限り安全です。

2. トランザクション

電子コインをデジタル署名の連鎖と定義します。各所有者は、以前の取引のハッシュと次の所有者の公開キーのデジタル署名を作成し、これらをコインの末尾に追加することでコインを次の所有者に譲渡します。受取人はこれに署名を検証して所有権の連鎖を検証できます。

もちろんの問題は、受取人が所有権の連鎖を二重支出しないことを検証できないことです。一般的な解決策は、信頼できる中央機関、または造幣所を導入し、すべての取引を二重支出で確認します。各取引後、コインは新しいコインを発行するために造幣所に返還され、造幣所から直接発行されたコインだけが二重支出されないことを信用されます。この解決策の問題は、全般的に資金システムの運命が造幣所を運営する会社に依存しているということです。すべての取引は、銀行と同様に、それらを通過しなければならない、という点で、会社に通過する必要があります。

受取人が前の所有者が以前の取引を署名していないことを知るための方法が必要です。私たちの目的にとって、最初の取引が重要であるため、後での二重支出の試みについては気にしません。取引の不在を確認する唯一の方法は、すべての取引を知らなければならないことです。造幣所ベースのモデルでは、造幣所はすべての取引を認識し、どれが最初に到着したかを決定しました。これを信頼できる第三者なしで達成するためには、取引は公に発表され、参加者が受信された順序の一貫した履歴について合意するシステムが必要です。受取人は、各取引時にノードの大部分がその取引が最初に受信されたと合意したことのプルーフを必要とします。

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

私たちが提案する解決策は、タイムスタンプサーバーから始まります。タイムスタンプサーバーは、タイムスタンプを作成するアイテムのブロックのハッシュを取り、新聞やUsenetの投稿などでそのハッシュを広く公開します。タイムスタンプは、データがそのハッシュに入るためには、明らかに当時存在している必要があることを証明します。各タイムスタンプには、前のタイムスタンプが含まれますが、それによってチェーンが形成され、それ以前のものが強化されます。

4. プルーフオブワーク

ピアツーピアベースで分散タイムスタンプサーバーを実装するには、Adam BackのHashcashのようなプルーフオブワークシステムを使用する必要があります。プルーフオブワークには、SHA-256などでハッシュされた値をスキャンすることが含まれます。ハッシュの冒頭がいくつかのゼロビットで始まる値を見つけるまで。必要なゼロビット数が指数関数的に増加するため、必要な追加的な作業は、単一のハッシュを実行して検証できます。

当社のタイムスタンプネットワークでは、ブロック内のnonceを増分して、ブロックのハッシュが必要なゼロビットを持つ値になるまで証明作業を行います。証明作業を満たすためにCPUの努力が費やされると、ブロックは作業をやり直さなければ変更できません。後のブロックがそれに続いてチェーン化されると、ブロックを変更する作業にはそれを含む後のすべてのブロックをやり直す必要があります。

プルーフオブワークは、多数決意思決定での代表を決定する問題を解決します。多数決がIPアドレス1つ1票に基づいている場合、多くのIPを割り当てることができる人によってひねりやすくなります。プルーフオブワークは基本的に1CPU 1票となります。多数決は、最も多くの作業がそれに投資されている最長のチェーンによって表されます。完全にCPUパワーの多数派が正直なノードによって制御されている場合、正直なチェーンが最も速く成長し、競合するチェーンを凌駕します。過去のブロックを変更するには、攻撃者はブロックのプルーフオブワークをやり直し、それらの後のすべてのブロックをやり直し、正直なノードの努力を追い抜いて追いつかなければなりません。後述するように、遅れた攻撃者が追いつく確率が指数関数的に減少します。

ハードウェアの速度と時間と共にハードウェアの速度が向上した場合や、実行するノードの興味が時間と共に変化した場合に備えて、プルーフオブワークの難易度は、1時間あたりの平均ブロック数を目標とする移動平均によって決定されます。ブロックが速すぎる場合、難易度が上がります。

5. ネットワーク

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

  1. 新しい取引はすべてのノードにブロードキャストされます。
  2. 各ノードは新しい取引をブロックにまとめます。
  3. 各ノードは、そのブロックに対する難しいプルーフオブワークを見つける作業を行います。
  4. ノードがプルーフオブワークを見つけると、そのブロックをすべてのノードにブロードキャストします。
  5. ノードは、それに含まれるすべての取引が有効でかつまだ使われていない場合にのみブロックを受け入れます。
  6. ノードは、受け入れたブロックのハッシュを前のハッシュとして使用して次のチェーンを作成するために作業を行います。

ノードは常に最長のチェーンを正しいものと見なし、それを延長し続けるために作業を続けます。2つのノードが同時に異なるバージョンの次のブロックをブロードキャストする場合、一部のノードはそのどちらかを最初に受信します。その場合、彼らは最初に受信した方に作業を行いますが、他のブランチは長くなる可能性があるため、それを保存します。次のプルーフオブワークが見つかると、タイは決定され、1つの支店が長くなると、別の支店で作業していたノードは長い方に切り替えます。

新しい取引のブロードキャストは、すべてのノードに到達する必要はありません。多くのノードに到達すれば、まもなくブロックに入るでしょう。ブロックのブロードキャストは、メッセージの落とされた状態にも対応しています。ノードがブロックを受信しない場合、次のブロックを受信したときにそれを要求し、自分が1つ逃していたことに気づいたときにそれを要求します。

6. インセンティブ

慣習として、ブロック内の最初の取引は、ブロックの作成者が所有する新しいコインを開始する特別な取引です。これは、ネットワークをサポートするノードにインセンティブを提供し、コインを流

https://nakamotoinstitute.or...
Show original content

2 users upvote it!

0 answers