プレス:2008年10月31日、サトシ・ナカモトはP2P財団のウェブサイトでビットコインのホワイトペーパー「Bitcoin: A Peer-to-Peer Electronic Cash System」を発表した。ホワイトペーパーの発表から16周年を迎え、金融界を一変させたこの古典的なホワイトペーパーを読み直すため、Golden Financeはビットコイン・ホワイトペーパーの中国語版を再び発行します。
著者:サトシ・ナカモト
翻訳者:李小来
概要:純粋なピアツーピア版の電子キャッシュシステムで、金融機関を通さずに、ある当事者から別の当事者へ直接オンライン決済を行うことができる。電子署名は部分的な解決策を提供するが、二重支出を防ぐために信頼できる第三者が必要であれば、電子決済の主な利点は相殺されてしまう。我々は、ピアツーピアネットワークを利用して二重支出の問題を解決するソリューションを提案する。ピア・ツー・ピア・ネットワークは、各取引のハッシュ・データを常時拡張するハッシュ・ベースのプルーフ・オブ・ワークのチェーンに入力することで、各取引にタイムスタンプを付与し、完全にやり直さない限り変更できない記録を作成する。最長のチェーンは、一方ではイベントが目撃されたこととそのシーケンスを証明するために使用され、同時にCPUパワーの最大のプールから来たことを証明するために使用される。CPUパワーの大部分が良識あるノードによって制御されている限り、つまりネットワークを攻撃しようとするノードと協力しない限り、良識あるノードは最長チェーンを生成し、攻撃者を出し抜くことができる。ネットワーク自体は最小限の構造にする必要がある。情報はベストエフォート方式で伝わり、ノードは好きなように出入りする。しかし、参加するには常に、参加していない間に起こったすべてのことの証明として、最も長い作業証明の連鎖を受け入れる必要がある。
1.はじめに
インターネット商取引は、電子決済を処理する信頼できる第三者機関として、ほぼ独占的に金融機関に依存しています。このシステムはほとんどの取引でそれなりにうまく機能していますが、それでも信頼ベースのモデルに固有の欠陥によって重くのしかかっています。金融機関は仲裁紛争を避けることができないため、完全に不可逆的な取引は事実上不可能である。仲裁のコストは取引コストを増加させ、その結果、可能な限り小さな取引の規模が制限され、単純に多くのマイクロペイメント取引ができなくなる。その上、さらに大きなコストがある。システムは、可逆性のないサービスに対して不可逆的な支払いを提供できない。逆転の可能性があるため、信用がいたるところで必要とされる。加盟店は顧客に気を配り、必要以上の情報を提供しなければならない。一定の割合の詐欺は避けられないと考えられている。これらのコストと支払いの不確実性は、物理的な通貨を使って人と人との間で直接支払いをする場合には回避可能であるが、しかし、両当事者の一方が信頼されていない場合に、通信チャネルを通じて支払いを行うことができるメカニズムは存在しない。
私たちが本当に必要としているのは、信頼ベースではなく暗号証明ベースの電子決済システムであり、第三者を信頼する必要なく、任意の2つの当事者が直接取引できるようにすることです。算術保証された不可逆取引は、売り手が詐取されるのを防ぐことができ、買い手を保護する日常的な保証メカニズムは実装が容易である。本論文では、ピアツーピアの分散型タイムスタンプサーバを用いて、各取引を時系列に記録する算術ベースの証明を生成する二重支出の解決策を提案する。このシステムは、誠実なノードが相互協力的な攻撃者に比べて全体的に多くのCPU演算を保持している限り安全である。
2.取引
電子コインをデジタル署名の連鎖と定義する。ある所有者は、次のデジタル署名をチェーンの最後に加えることで、コインを別の人に渡します:前の取引のハッシュと、新しい所有者の公開鍵です。受け取った人は、署名を検証することで、デジタル署名チェーンの所有権を確認できる。
この方法の問題点は、受取人が元所有者の中に二重払いをした人がいないことを確認できないことです。一般的な解決策は、信頼できる中央管理機関(「造幣局」)を導入し、各取引で二重払いがないかチェックさせることです。各取引の後、コインは造幣局に返却されなければならず、造幣局は新しいコインを発行する。その結果、造幣局が直接発行したコインだけが信頼され、二重払いされることはない。この解決策の問題点は、通貨システム全体の運命が造幣局を運営する会社(まるで銀行のように)に縛られ、すべての取引が造幣局を経由しなければならないことだ。
以前の所有者が以前の取引にサインしていないことを、受取人に確認させる方法が必要です。
我々の目的では、一番最初の取引だけがカウントされるので、その後の二重支払いの試みは気にしない。取引が存在しないことを確認する唯一の方法は、すべての取引について知らされることである。造幣局のモデルでは、造幣局はすでにすべての取引を把握しており、その順序を確認することができる。これを「信頼できる当事者」の関与なしに行うには、取引記録を公示しなければならない1であり、参加者が自分が受け取った同じ固有の取引を識別できるシステムが必要である。参加者は同じユニークな取引履歴を受け取った。受信者は各取引の時点で、大多数のノードがそれが最初に受信されたものであることに同意できることを証明する必要がある。
3.タイムスタンプサーバー
このソリューションはタイムスタンプサーバーから始まります。タイムスタンプサーバーは、レコード(アイテム)のブロックのハッシュをタイムスタンプし、あたかも新聞のように、あるいはニュースグループ(Usenet)の投稿のように、そのハッシュをブロードキャストすることで動作します2&。nbsp;3 4 5.明らかに、タイムスタンプはそのデータがその時点より前に存在していたことを証明するものであり、そうでなければそのハッシュは生成されなかった。各タイムスタンプは前のタイムスタンプをハッシュに含み、連鎖を形成する。
4.プルーフ・オブ・ワーク
ピアツーピアベースの分散タイムスタンプサーバーを実装するには、アダム・バークのハッシュキャッシュ6のようなものをプルーフ・オブ・ワーク・システムとして使用する必要があります。新聞やニュースグループの投稿のようなものではない。プルーフ・オブ・ワークとは、例えばSHA-256を使ってハッシュを計算した後、そのハッシュがある数のゼロで始まっていなければならないという条件を満たす値を見つけることである。0が1つ増えるごとに作業量は指数関数的に増加しますが、これは1つのハッシュを計算することで検証できます。
私たちのタイムスタンプネットワークでは、この方法でプルーフ・オブ・ワークを実装します。ブロックのハッシュが指定された数のゼロで始まるという条件を満たす値が見つかるまで、ブロックに乱数(nonce)を追加し続けます。CPUの演算努力によって、仕事の証明を満たす結果が得られると、それまでの作業負荷をすべてやり直さない限り、ブロックはもはや変更できない。新しいブロックが追加されると、現在のブロックを変更することは、後続のすべてのブロックの作業をやり直すことを意味します。
雇用証明書は、誰が多数派に代わって意思決定できるかをどう決めるかという問題にも取り組んでいる。いわゆる「多数決」が「1IPアドレス、1票」に基づくものであれば、多くのIPアドレスを扱える人であれば誰でも「多数決」とみなすことができます。".プルーフ・オブ・ワークは基本的に「1CPU、1票」である。いわゆる "多数決 "は最も長いチェーンで表され、それが最も多くの仕事を得るチェーンだからだ。もしCPUパワーの大半が正直なノードによってコントロールされていれば、正直なチェーンは最も速く成長し、競合するチェーンを凌駕するだろう。すでに生成されたブロックを変更するには、攻撃者はそのブロックとそれに続くすべてのブロックのプルーフ・オブ・ワークをやり直し、正直なノードの作業に追いつき、追い越す必要がある。遅れた攻撃者が追いつくことができる可能性が、ブロックの数が増え続けるにつれて指数関数的に減少する理由は後で説明します。
増加するハードウェア演算の組み合わせと、時間が進むにつれて参加ノード数が変化する可能性に対処するため、プルーフ・オブ・ワークの難易度はこのように決定されます。ブロックの生成が早すぎる場合、難易度は上昇します。
5.ネットワーク
ネットワークの実行手順は以下の通りです:
すべての新しいトランザクションはすべてのノードにブロードキャストされます;
各ノードは新しいトランザクションをブロックにパッケージ化します。
各ノードはこのブロックのために難易度の高いプルーフ・オブ・ワークを探し始める。
ブロックがプルーフ・オブ・ワークを見つけたら、このブロックを全ノードにブロードキャストしなければならない。
他の多数のノードがこのブロックを受け入れる。
他の多数のノードはこのブロックを受け入れます: その中のすべてのトランザクションは有効で、二重支払いされていません;
多数のノードは、次のブロックを作成するときに、受け入れられたブロックのハッシュを新しいブロックの前のブロックのハッシュとして扱うことによって、ネットワークにこのブロックの受け入れを示します。
ノードは常に最長のチェーンを正しいものとみなし、そこに新しいデータを追加し続けます。2つのノードが2つの異なるバージョンの「次のブロック」を同時にネットワークにブロードキャストした場合、あるノードはどちらかを先に受信し、他のノードはもう一方を先に受信します。この場合、ノードは先に受信したブロックの作業を続けるが、後者が最長のチェーンになった場合に備えてもう一方のブランチも保存する。次のプルーフ・オブ・ワークが見つかり、一方のブランチがより長いチェーンになると、この一時的な分岐は解消され、もう一方のブランチで作業していたノードはより長いチェーンに切り替わります。
新しいトランザクションは、必ずしもすべてのノードにブロードキャストされる必要はありません。十分な数のノードに届きさえすれば、ブロックにパッケージされるのに時間はかからない。ブロックブロードキャストでは、一部のメッセージを破棄することもできる。あるノードがブロックを受信しなかった場合、次のブロックを受信したときに前のブロックを見逃していたことに気づくので、その足りないブロックを補充するリクエストを送信します。
6.インセンティブ
慣例では、各ブロックの最初の取引は、ブロックの生成者に属する新しいコインを生成する特別な取引です。これを行うことで、ノードはネットワークをサポートするための報酬のようなものを得ることができ、また、コインを発行するための方法を提供します。新しいコインを着実に流通させることは、金採掘者が資源を使い果たして金を流通させることに似ている。私たちのシステムでは、使用される資源はCPU時間とその電力である。
報酬は取引手数料からも得られる。トランザクションの出力値が入力値よりも小さい場合、その差額はトランザクション手数料となり、トランザクションをブロックに詰め込んだノードに報酬が支払われます。一定数のコインが流通すると、報酬は取引手数料に完全に引き渡され、インフレは全く起きなくなります。
報酬の仕組みはまた、ノードが正直であり続けることを促すかもしれません。貪欲な攻撃者がすべての正直なノードよりも多くのCPUパワーを得ることができた場合、彼は選択を迫られます。それとも新しいコインを生成するために使うのか?彼は、現在のところ、他のすべてのノードを合わせたよりも多くのコインを得ることができるルールに従って行動する方が、密かにシステムを破壊して自分の富を消し去るよりも、明らかに費用対効果が高いことを見つけることができるはずです。
7.ディスク容量の回復
コインの直近の取引が十分なブロック数の前に行われた場合、その取引以前のコインの支出取引の記録は破棄することができます。ディスクの容量を節約するためである。ブロックのハッシュを破壊することなくこれを行うために、取引記録のハッシュはメルクル木に組み込まれ、その木のルートだけがブロックのハッシュに組み込まれる。古いブロックは枝を切り落とすことで圧縮できる。内部ハッシュは保存する必要はない。
取引履歴のないブロックヘッダは約80バイトです。2008年現在、販売されているほとんどのコンピュータには2GBのRAMが搭載されており、ムーアの法則では1年に1.2GBの増加が予測されているため、ブロックヘッダをメモリに保存しなければならないとしても、問題にはなりません。
8.簡素化された支払い確認
完全なネットワークノードを実行しなくても、支払いを確認することが可能です。ユーザーが必要なのは、作業証明付きの最長チェーンのブロックヘッダのコピーだけで、オンラインノードに問い合わせることで、自分が持っているものが本当に最長チェーンのものであることを確認できます。ブロックがタイムスタンプされた時点のトランザクション。ユーザーは自分で取引を確認することはできないが、チェーンのどこかに接続することで、ネットワークノードが取引を受け入れたことを確認することができ、それ以降に追加されたブロックは、ネットワークが取引を受け入れたことをさらに確認することができる。
正直なノードがネットワークを制御し続ける限り、認証は信頼できます。しかし、ネットワークが攻撃者のコントロール下にある場合、認証はそれほど信頼できません。ネットワークノードは取引記録を自ら検証することができるが、攻撃者がネットワークを制御し続けることができる限り、認証の簡易版は攻撃者が偽造した取引記録によって騙される可能性がある。これに対抗する1つの戦略は、クライアントソフトウェアがネットワークノードからの警告を受け入れることである。ネットワークノードが無効なブロックを発見すると、アラートを送信し、ユーザーのソフトウェアに通知をポップアップ表示し、ユーザーに完全なブロックをダウンロードするよう指示し、トランザクションの整合性を確認するよう警告する。支払いや受け取りの頻度が高い加盟店は、より独立したセキュリティと迅速なトランザクション確認のために、独自のフルノードを実行したいと思うはずです。
9.値の結合と分割
コインを1枚単位で処理することは可能ですが、1セントごとに別々のレコードを設定するのは不便です。値の分割と結合を可能にするために、トランザクション レコードには複数の入力と出力が含まれます。一方、出力は多くても2つである。1つは支払い(受取人に向けられる)、もう1つは必要であれば釣り銭(送り主に向けられる)である。
ここで「ファンアウト」が問題ではないことは注目に値します。「ファンアウト」とは、1つのトランザクションが多くのトランザクションに依存し、そのトランザクションがさらに多くのトランザクションに依存することを意味します。一つのトランザクションを抽出する必要は決してない。1つのトランザクションの完全な独立した履歴コピーを抽出する必要は決してありません。
10.プライバシー
伝統的なバンキングモデルは、トレーダーや信頼できる第三者に関する情報へのアクセスを制限することで、ある程度のプライバシーを実現しています。すべての取引記録を公開する必要があるため、このアプローチは却下されます。しかし、プライバシーの維持は、別の場所で情報の流れを遮断することで達成することができる。一般大衆は、ある人物がある金額をある人物に送金したことを知ることができるが、その人物を特定する情報はない。このレベルの情報公開は、株式市場の取引に似ており、各取引の時間と金額だけが公表されるが、当事者が誰であるかは誰も知らない。
ファイアウォールのもう一つの層があります。トレーダーは、取引ごとに新しい公開鍵と秘密鍵のペアを有効にして、他の人が同じ所有者にさかのぼれないようにする必要があります。複数の入力がある取引は、同じ所有者からの入力であることが必然的に認識されるため、追跡可能であることは避けられない。危険なのは、公開鍵の所有者が公開されると、それに関連する他のトランザクションもすべて公開されてしまうことです。
11.計算
攻撃者が正直なチェーンよりも高速な代替チェーンを生成しようとしているシナリオを想定してください。たとえ成功したとしても、彼はシステムに任意の変更を加えることはできません。つまり、何もないところから価値を生み出すことも、自分のものではなかったお金にアクセスすることもできません。ネットワークノードは無効なトランザクションを支払いとして受け取らないし、正直なノードはそのような支払いを含むブロックを決して受け入れない。攻撃者ができることは、自分のものであるトランザクションを修正し、すでに使ったお金を取り戻そうとすることくらいである。
正直なチェーンと攻撃者の間の競争は、二項ランダムウォークで記述することができる。成功イベントとは、正直なチェーンに新しいブロックが追加され、有利になったというものです。assistive-mmml>; そして失敗イベントは、攻撃者のチェーンが新しいブロックで拡張され、正直なチェーンの利点が少なくなったことです となります。
攻撃者が赤字から復活できる確率は、ギャンブラーの破産問題に似ています。無限のチップを持つギャンブラーが、既存の赤字を埋める目的で、赤字から始めて無限に賭けることが許されるとします。彼が最終的に赤字を埋める確率、つまり攻撃者が正直の連鎖に追いつく確率は次のように計算できる:
,q攻撃者が追いつく必要のあるブロックの数は増加しているので、その成功確率は指数関数的に減少します。確率が不利な場合、攻撃者が最初に大きな一歩を踏み出す幸運に恵まれないと、その確率は、さらに遅れをとるにつれて消滅していきます。
ここで、新しい取引の受取人が、送信者が取引を変更できないと十分に確信するまでに、どれくらいの時間待たなければならないかを考えてみましょう。仮に送金者が攻撃者で、自分がその取引に対して支払ったかのようにしばらく受取人を欺き、後で自分自身に送金を戻すとしよう。このような事態が発生すると、もちろん受取人は警告を受けるが、差出人はその時までに資金が枯渇していることを望む。
受取人は新しい公開鍵と秘密鍵のペアを生成し、署名する直前にその公開鍵を送金人に知らせる。これにより、送金者が逐次演算によってチェーン上のブロックを前もって準備し、運が良ければそれまで取引を実行できないほど先に進んでしまうという事態を防ぐことができる。支払いが送信されると、不正な送信者は別の並列チェーンで密かに作業を開始し、トランザクションの逆バージョンを含めようとする。
受取人は、この取引がブロックにパッケージされ、その後z個のブロックが追加されるまで待つ。彼は攻撃者がどの程度進んでいるのか正確には知りませんが、誠実なブロックの各ブロック生成プロセスで費やされる平均時間は、攻撃者の潜在的な進捗は、以下の期待値を持つポアソン分布に当てはまると仮定しても安全です:
攻撃者がまだ追いつける確率を計算するには、攻撃者が追いつくのに必要なブロック数のポアソン分布の確率密度を取り、そのブロック数だけ遅れても追いつける確率を掛け合わせる必要があります。追いつく確率:
Cプログラムに変換......
いくつかの結果を得ると、zが増加するにつれて確率が指数関数的に減少することがわかります:
Pが0.1%未満の場合......
12.結論
私たちは、信頼に依存する必要のない電子取引システムを提示しました。出発点は、まずデジタル署名を使用するコモンコインフレームワークですが、これは強固な所有権管理を提供する一方で、二重支払いを回避することはできません。この問題に対処するため、我々は、取引記録の公開履歴を記録するプルーフ・オブ・ワーク機構を用いたピアツーピアネットワークを提案する。誠実なノードがCPUの計算能力の大部分を制御できる限り、攻撃者が計算能力の側面だけからシステムの改ざんに成功する可能性は低い。このネットワークの堅牢性は、構造化されていない単純さにある。ノードはほとんど協調することなく、瞬時に同時に働くことができる。メッセージの経路が特定のエンドポイントに依存しないため、ノードは認識される必要さえない。ノードは自由に出入りし、再参加するときは、オフラインの間に起こったことの証明として、一連の作業証明を受け入れるだけだ。ノードはCPUパワーで投票し、チェーンに新しい有効なブロックを追加し、無効なブロックを拒否し続けることで、有効なトランザクションを受け入れることを示す。必要なルールや報酬は、このコンセンサスメカニズムを通じて強制することができる。
参考文献
b-money Dai Wei (1998-11-01) http://www.weidai.com/bmoney.txt
Design of a secure timestamping service with minimal trust.
最小限の信頼性を持つ安全なタイムスタンプサービスの設計
Henri Massias, Xavier Serret-Avila, Jean-Jacques Quisquater 20th Symposium on Information Theory in the Benelux(1999-05) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.6228
(1991年) https://doi.org/cwwxd4 DOI: 10.1007/bf00196791
Improving the Efficiency and Reliability of Digital Time-Stamping Dave Bayer, Stuart Haber, W. Scott Stornetta
Improving the Efficiency and Reliability of Digital Time-Stamping.(1993) https://doi.org/bn4rpx DOI: 10.1007/978-1-4613-9323-8_24
Secure names for bit-strings Stuart Haber, W. Scott Stornetta Proceedings of the 4th ACM conference on Computer and Communications Security - CCS '97(1997) https://doi.org/dtnrf6 DOI: 10.1145/266420.266430
Hashcash - A Denial of Service Counter-Measure Adam Back (2002-08-01) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.15.8&
Protocols for Public Key Cryptosystems Ralph C. Merkle 1980 IEEE Symposium on Security and Privacy&?nbsp;(1980-04) https://doi.org/bmvbd6 DOI: 10.1109/sp.1980.10006
An Introduction to Probability Theory and its Applications WilliamFeller John Wiley & Sons (1957) https://archive.org/details/
。