banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

ビットコイン: ⼀つのピアツーピア電子現金システム(翻訳+注解)

著者:中本聪(Satoshi Nakamoto) 翻訳者:金晓 概要:純粋な P2P バージョンの電子現金(cash)通貨は、オンラインでの支払いを可能にし、一方が直接もう一方に送信できるようにします。金融機関を介さずに。デジタル署名はこのシナリオの部分的な解決策を提供しますが、二重支払い(ダブルスピンドル)を防ぐシナリオにおいて、信頼できる第三者が依然として必要であるならば、既存の解決策は主要な利益(十分ではない)を欠いています。このネットワークは、これらの取引にタイムスタンプを付与し、これらの取引をハッシュ化して、持続的に増加するランダムな計算に基づく(hash-based)プルーフ・オブ・ワーク(PoW)のチェーンに変えます。最長のチェーンは、観察されたイベントの順序に対する証明を提供し、またこのチェーンが最大の CPU 計算力のプールから来ていることを証明します。主要な CPU 計算力が攻撃ネットワークの性質を持つノードによって制御されていない限り、彼らは最長のチェーンに成長し、攻撃者を超えるでしょう。

このネットワーク自体は非常に小さな構造を必要とします。情報は最も効率的な方法でブロードキャストされ、ノードはいつでもネットワークから離れたり参加したりできます。これらのノードは、最長の PoW チェーンを、ネットワークを離れた後に発生した事象の証明として受け入れます。要約は、既存の技術が P2P での取引送信を信頼できるものにしていることを指摘し、その方法はデジタル署名の方法によるものであり、ここでビットコインがこの面でデジタル署名の方法を使用して取引の伝達を保証していることを暗示しています。しかし、その後、デジタル署名は二重支払いを解決できないと指摘されます。なぜなら、デジタル署名はこの物が送信者に属することを保証することはできても、この物が一人に送られた後に他の人に送られないことを保証することはできないからです。データはコピー可能だからです。既存の解決策は、送信者と受信者が信頼できる第三者を仲介者として信頼することです。この第三者は、A が何かを持っていることを記録し、その何かを B に渡して取引を完了させます。つまり、この第三者は絶対的な権限を持ち、A と B はこの第三者を「信頼している」ために取引が成立します。その後、ブロックチェーンシステムの大まかな紹介が行われ、ブロックチェーンのいくつかの重要なポイントが指摘されます:タイムスタンプ、識別としてのハッシュ、ハッシュを使用したプルーフ・オブ・ワーク、チェーンが一緒に存在すること。イベントの順序を提供することは、ブロックが「歴史を記録する」ことを示し、最大の CPU 計算力からのチェーンは、CPU 計算力の証明のルールの下で唯一であり、覆すことができないことを示しています。最後に、ブロックチェーンの構造が簡素であり、ノードが柔軟であることを説明し、これは多ノードのインテリジェントな共同協力システムであることを暗示しています。(つまり、各ノードの知性は限られていますが、すべてのノードが一組の単純なルールに従うと、全体のシステムは巨大な力を発揮します)

  1. イントロダクション 現在、インターネット上の貿易の大多数は、金融機関が提供する第三者の信頼に依存して電子支払いを処理しています。このシステムは大多数の取引に対してはうまく機能しますが、依然として信頼モデルに基づく内在的な欠陥に直面しています。完全に不可逆な取引は実際には可能ではなく、金融機関は紛争の調整を避けることができません。調整のコストは取引コストを増加させ、最小の実際の取引規模を制限し、小規模な一時的取引の可能性を断ち切ります。また、不可逆なサービスに対して不可逆な支払いを行う際の弱点には、より大きなコストが存在します。撤回の可能性があるため、信頼の必要性は分散されます。

商人は顧客に対して警戒を強める必要があるため、必要以上の情報を収集します。一定の割合の詐欺が可能性として見なされます。このコストと不確実な取引は、現実の現金取引を通じて回避可能ですが、信頼できる第三者の通信チャネルを介して取引が行われることを保証するメカニズムは存在しません。

この段落は、ブロックチェーンが信頼の問題を解決するために存在することを示しています。なぜなら、第三者機関の存在により、信頼の問題は天然に存在する問題だからです。既存のメカニズムは、この信頼を維持するために大きなコストを支払うことになります。もう一方で、ブロックチェーンは不可逆性と改ざん不可能性を示し、これらの 2 つの特性がブロックチェーンに天然に備わっていることを指摘します。正確に言えば、これはブロックチェーンが出現する破壊的な理由を示しています。現在の技術の進展を振り返ると、コンピュータが第三次情報革命をリードし、情報がネットワーク内で迅速に流動できるようになりました。しかし、インターネットは情報を迅速に流動させることができる一方で、現実世界における物質の移転を実現することはできません。情報は仮想的ですが、現実の物質は実際の実体です。インターネットが仮想的であるため、仮想の世界で物体をシミュレートすると、その物体を無制限にコピーできますが、現実の物質の移転をシミュレートすることはできません。例えば、A が B に物品を渡すと仮定すると、現実の世界では実際の物品の移転が行われますが、仮想の世界ではメッセージの記録が行われます。このメッセージの記録は、A が記録したのか、B が記録したのか、または第三者が記録したのかは明らかではありません。明らかに、A が記録した場合でも B が記録した場合でも、A と B が同時に認めることは不可能です。なぜなら、彼らはこの記録を私的に変更して契約違反をすることができるからです。したがって、彼らは第三者に保証を求めることになります(公証人や仲介者など)。A と B はこの第三者機関に自分の信頼を委ねることで、全体のシステムが共に機能することができます。

したがって、現在のこのようなシミュレーションは、信頼できる第三者機関を導入することによって行われています。人々はこの第三者に信頼を寄せ、この第三者がシミュレートされた物体の唯一性と移転(コピー不可能性)を保証することを信じています。この第三者が本当に信頼できるかどうかは、現在このシステムが運営されるために支払われるコストです。これは現在のこのシステムの「天然の欠陥」です。したがって、インターネットを使用して現実の物質の移転をシミュレートし、現実の物品と仮想世界の物品を結びつけるためには、第三者を必要とせずにこの移転を保証するために、ブロックチェーンメカニズムを導入する必要があります。ブロックチェーンは、物質の移転を情報の流動のように迅速かつ便利に行うことができ、同時に全ネットワークの人々が一緒に保証することができます(すべての参加者が一緒に保証することは、天然に存在する証明不可能性を持ち、51%の人々が一つの口径で契約違反しない限り)。これが「ブロックチェーン」技術が「第四次技術革命」をリードする核心的な理由であると私は考えています。

現在必要なのは、信頼を置き換えるために暗号学的な証明に基づいた電子支払いシステムであり、任意の 2 者が信頼できる第三者を必要とせずに直接取引できるようにします。計算上保証された不可逆取引は、売り手を詐欺から保護し、通常の保管メカニズムは買い手を保護するために容易に実現できます。この論文では、P2P 分散型のタイムスタンプサービスを使用して、取引の時間順序の計算証明を生成することで二重支払い問題を解決する提案をします。システム全体は、誠実なノードが協力攻撃のノードよりも多くの CPU 計算力を制御している限り、安全です。ここで指摘されているのは、実際には信頼の問題が元々の国家の強制力(銀行)、企業の大小(WeChat、Alipay)などの感覚や他の信頼が「暗号学的な数学体系」に移行したことにより、数学が信頼できるかどうかの問題に変わったということです。

しかし、最後の文の表現は、実際にはブロックチェーンのこのシステムが支払い側に対して受け取り側よりも若干の優位性を持っていることを暗示しており、絶対的に平等な地位ではないため、受け取り側は支払い側の攻撃(再支払い)を心配する必要があります。最後に、ブロックチェーンは二重支払いを解決し、基本的なトポロジー構造は P2P であり、タイムスタンプは取引順序を確認する方法です。

  1. 取引(Transaction) 我々は電子コイン(electronic coin)をデジタル署名のチェーン(as a chain of digital signatures)として定義します。各所有者(owner)は、通貨(coin)を次の人にデジタル署名(秘密鍵署名)を用いて取引を行い、次の人の公開鍵のハッシュを付加し、この署名の結果をこの通貨の末尾に追加します。受取人はこの署名を検証して、このチェーンの所有権(chain of ownership)を確認できます。この文章は、原文の表現の過程で直感的に少し逆説的です。なぜなら、最初の文は「我々は電子コインをデジタル署名のチェーンとして定義します」と言っており、つまり「コインをチェーンとして定義する」ということです。これは非常に奇妙なことであり、直感的にはコインは一つ一つのものであるべきですが、チェーンは一つの鎖であり、コインとチェーンを結びつけるのは難しいです。

しかし、ビットコインは本質的に確かに一つの鎖であり、この鎖は発生した順序に従って一つ一つの取引から構成されています。そしてコインは逆に存在しないものであり、コインは鎖上の取引(transaction)から推測されるものであり、本質的に直接的なコインは存在しません。同時に、前文の説明に基づいて、次の人にコインを渡すことはデジタル署名の方法を通じて行われることがわかります。つまり、公開鍵と秘密鍵の方法を通じてコインの出所と行き先を証明することです。仮に A が B にコインを渡すとすると、このプロセスは取引(transaction)になります(以下の図の中間の Tx のように)。この取引は B にいくらのコインを渡したか、B の公開鍵(目的地を示す)を記録し、同時に A が前の取引を操作できることを提供します(図の最初の Tx のように。例えば、この Tx は X が A にお金を渡したことを記録しているので、A は X から A へのこの取引の出力を操作できることになります)。これら二つを共同でハッシュ化し、支払い者 A は自分の秘密鍵を使ってこのハッシュに署名し、その後取引の上に追加します。その後、この取引は広く他の場所にブロードキャストされます。この時、観察者(マイナー)は、自分のローカルに最初の取引以前のすべての取引を持っているため、この取引(中間の Tx)を見たときに、支払い者 A の公開鍵(図の最初の取引から得た A の公開鍵)を使ってこの取引(中間の取引)の署名を検証し、この取引が支払い者 A 本人によって発信されたものであるかどうかを確認できます(なぜなら、秘密鍵は A だけが持っており、A の秘密鍵で署名された署名だけが前の取引(最初の取引)と検証を通じて一致し、A が最初の取引を操作できることを証明し、X から A へのこのお金を持っていることを示します)。これにより、この取引が支払い者 A によって発起されたことが証明されます。

image

我々は中間の Tx(取引)を参照物として見てみましょう。この Tx は Owner 1 によって発起されており、図からわかるように、ハッシュの入力は前の Tx(prev Tx)と次の受取人の公開鍵(next owner's pub key)です。このハッシュの結果は Owner 1 の秘密鍵で署名され、現在の取引に付加されます。今は次の Tx と結びつけて考えないでください。Owner 1 がこの Tx に署名を終えた後、彼はこの取引をブロードキャストします。すると、マイナーがこの取引をブロックにパッケージし、誠実なチェーン(最長のチェーン)にリンクすると、この Tx は成立したことを示します。したがって、Owner 2 は通常の取引のように即座に成功を知ることはできず、しばらく時間をかけて「確認する」必要があります(ここでは非常に素朴な表現ですが、何かがポーリングされ、取引がパッケージ化されれば Owner 2 に通知されます)。このプロセスの問題は、受取人が支払い者の中の一人(one of the owners)が二重支払いの通貨を持っていないことを確認できないことです。

通常の解決策は、信頼できる中央認証機関またはミント(mint)を導入して、各取引が二重支払いされていないかを確認することです。各取引の後、この通貨はミントに戻され、新しい通貨(coin)が発行されます。そして、通貨は信頼できるミントから直接発行される場合にのみ、二重支払いを防ぐことができます。この解決策の問題は、すべての通貨の運命がこの会社が運営するミントに依存していることです。各取引は彼らを通過しなければならず、銀行のように機能します。ここでのミントは最初は理解しにくいかもしれませんが、実際には非常に単純な現象であり、このプロセスはあまりにも素朴であるため、誰も現在のシステムがこのように機能していることに気づいていません。例えば、現在のオンラインバンキング(または Alipay)では、A が B に 100 元を送金する際、実際には銀行が一つの取引を開始し、A の口座から - 100 元を引き落とし、B の口座に + 100 元を加えます。この - 100 元と + 100 元は実際には銀行の「ミント」であり、A の 100 元を消滅させ、B に 100 元を生産したことになります(ただし、全体のプロセスは情報の流れにのみ現れます)。

そのため、この「通貨」は「ミント」(銀行)からのみ発行されることを保証し、この「ミント」は両者が共同で信頼し、各取引は「必ず」この「ミント」を通過し、他の経路はありません。既存のシステムもまた、銀行の「ミント」(唯一の信頼できる側)によって、A の口座が - 100 元になると同時に B の口座が + 100 元になることを保証し、C の口座も + 100 元になることはありません(二重支払い)。 (もちろん、銀行が内部で A と密かにコミュニケーションを取り、A が B に 100 元を送金する際に C にも + 100 元を加えた場合、二重支払いが発生します。もちろん、現在は発生しないように見えますが、これは銀行自身の「監視」体制によって保証されています。例えば、毎日の照合、銀行内部の監視など。この監視のコストは、このシステムの維持コストの一面です。銀行が一筆の金が二重に消費されたかどうかを知ることができるのは、銀行が現在の取引以前のすべての「歴史的取引」を持っているからです。彼らが取引が合法かどうかを検証する方法は、以前のすべての取引の結果が現在の取引の要件を満たしているかどうかを確認することです。受取人(payee)に、以前の所有者たち(owners)がより早い取引を署名していないことを知る方法が必要です。

この目的のために、最も早い(earliest)取引が重要です。したがって、後の取引が二重支払いを試みるかどうかを心配する必要はありません。取引の存在を保証する唯一の方法は、すべての取引を照会することです。ミントモデルに基づく場合、このミントはすべての取引を持ち、どの取引が最新に到達したかを決定します。

信頼できる側が存在しない場合にこれを達成するために、取引は公共に公告され、すべての参加者が単一のチェーンの順序履歴(which they were received)に対して合意するためのシステムが必要です。

受取人は、各取引の期間中に大多数のノードがこれが彼らが最初に受け取ったものであることに同意していることを証明する必要があります(was the first received)。ここで指摘されているのは、まず支払い者が二重支払いを行うことがあり、受取人は支払い者がこの行為を行うかどうかを心配する必要があるということです(当たり前ですが、利益は支払い者から受取人に移転されるためです)。「最も早い取引が重要である」という文は、二重支払いが発生する基礎は、まず一つの取引が発生し、次に支払い者がこの取引を無視し、既に使用された通貨を使って別の取引を行おうとすることを示しています。したがって、この最も早い取引は「既に発生した取引」を指します。ミントは、二重支払いを試みる人の二つ(またはそれ以上)の取引のどれが支払い者によって最初に発生したと考えられているかを気にしません。彼は、現在この支払い者が行おうとしている取引が「合法」であるかどうか(つまり、以前の人がこのお金を既に使用していないか)を気にします。したがって、ミントはどの取引が前にあるかを確認しますが、支払い者がどれが前にあるかを決定するわけではありません。したがって、この時点でこのミントはどの第三者にも属さない場合、この取引は「広く告知される」必要があり、すべての参加者がこの事象が発生したことを知り、以前に発生したすべての「歴史的イベント」を知って、この時点でブロードキャストされた取引が合法であるかどうかを検証する必要があります。しかし、すべての参加者が一致を保つことは非常に困難なことであり、これがブロックチェーンが解決する問題です。そして最後の文は、受取人が大多数の人(51%以上)がその取引が合法であると考える必要があることを示しています。

  1. タイムスタンプサーバー(Timestamp Server) 我々が提案する解決策は、タイムスタンプサーバーから始まります。タイムスタンプサーバーの仕事は、一組のデータ(items)から形成されたブロック(blocks)のハッシュ結果をタイムスタンプを付けて(to be timestamped)広くブロードキャストすることです(publishing)。これは新聞や世界的なニュースグループ(Usenet)への投稿のように行われます [2-5]。このタイムスタンプは、その時点でこのデータが存在したことを証明します。明らかに、このハッシュを得るためには(この時間にのみ)(in order to get into the hash)必要です。各タイムスタンプは、前のタイムスタンプをそのハッシュに含め(includes the previous timestamp in its hash)、チェーンを形成し、各新しいタイムスタンプが追加されることで、以前のすべてのタイムスタンプを強化します。この部分から説明されるのは、マイナー(miner)が行う仕事です。ここでの一組のデータは多くの取引を指し、この一組のデータをパッケージ化して一つのブロック(block)にし、このブロックにタイムスタンプを付けてハッシュ化することで、時間の前後関係を保証します。つまり、第二部で紹介された「歴史的順序を保証する」ことを達成するためです。そして、このハッシュを得るためには、その時のタイムスタンプと関連しているため、このハッシュは時間を示します。

これらのブロックはチェーンを形成し、ブロックの増加は CPU 計算力の証明です(後文で説明します)。したがって、ハッシュ→タイムスタンプを示す→ハッシュが一緒にリンクされる→チェーン上の新しいブロックを作成するには CPU を消費する必要がある→したがって以前のハッシュは必ず正しい(信頼性が強化され続ける)ことになります。

image

この図は、時間とブロックが結びつき、ブロックとハッシュが結びつき、これらのハッシュがブロックチェーンの性質によって結びついていることを示しています。したがって、以前に結びつけられたタイムスタンプは改ざん不可能です。

4. プルーフ・オブ・ワーク(Proof of Work)#

P2P ベースの分散型タイムスタンプサーバーを使用する場合、我々は Adam Back の Hashcash [6] のようなプルーフ・オブ・ワークシステムを使用する必要があります。新聞や世界のニュースグループを使用するのではなく。プルーフ・オブ・ワークメカニズムは、ハッシュ時に値をスキャン(scan)することを導入します。例えば、SHA-256 の下で、このハッシュは一連の 0 ビットから始まります。必要な平均作業は、必要な 0 ビット数の指数であり、単一のハッシュを実行することで検証できます。この部分はビットコインのブロックチェーンのもう一つの核心部分であり、広く知られている PoW です。前の章で、まず A と B の間に取引が発生し、その取引がブロードキャストされ、第三者がいないため、参加者は全ネットワークのすべてのノードです。これらのノードは、この取引と他の多くの取引を受け取った後、それをパッケージ化して一つのブロックにし、ハッシュを付けます。さて、問題が発生します。これらの観察者のマイナーがそれぞれ多くの取引メッセージを受け取り、自分のブロックをパッケージ化した場合、全ネットワークがどのように合意に達するのでしょうか?

つまり、C、D、E の 3 人のマイナーが取引メッセージを受け取ったと仮定します。彼らが受け取った取引メッセージは完全に一致せず、受け取った時間も完全に一致しないため、生成されたブロックのハッシュは確実に異なります。P2P の経験を持つ人々は、この時点で C、D、E の 3 人が最終的に合意に達する必要があることを知っています。そうでなければ、全体のネットワークが同じブロックチェーンの「歴史的イベントの順序」を認識することはできません。中本はここで POW を導入し、C、D、E の 3 人が「CPU 計算力」を支払うことで確率的に成功する方法でブロックの記録権を奪い合うことを可能にしました(俗に言う「記帳権」)。原文中のスキャンは、暴力的な列挙を指します。SHA-256 に関しては、現在の暗号学において、特定の条件を満たすためには、暴力的な列挙を行う必要があります。明らかに、「暴力」の速さは CPU の計算能力によって決まります。そして、暴力の規模はこの POW メカニズムの「難易度」です。

この値を列挙することは「確率的」なイベントです(知らないパスワードの圧縮ファイルを暴力的に解読することを想像してください)。しかし、かなりの回数の列挙を経て、最終的に得られる結果は確かに測定可能です(つまり、確率の期待値であり、一部のマイニングプールではこの近似値を「幸運値」と呼んでいますか?確信が持てません)。我々のタイムスタンプネットワークでは、この作業量証明を実現するために、ブロックに nonce を追加し、ブロックのハッシュに必要な 0 ビット値(ビット数)を見つけるまで続けます。

一旦 CPU 効率が作業量証明として費やされると、このブロックは変更されて再作業を行うことができなくなります。その後、ブロックはその後にリンクされ、このブロックを変更するには、必要な作業量がこのブロックの後のすべてのブロックに含まれます。このブロックの「推測」された満たすべき値を得る方法は、ここでの nonce を変更することです。(ハッシュ関数にとっては、少しの変更を加えるだけで結果が完全に異なるため、満たすべき値を得る方法は nonce を変えることで、全体のブロックのハッシュが難易度要件を満たすようにすることです)。したがって、この nonce は、現在のマイナーがこのラウンドのブロックの「記帳権」を奪取するために費やした労働(CPU 計算力、電気代)の「証明」と見なすことができます。したがって、nonce を「労働(作業量)の証明」と直接見なすことができます。後半部分では、ブロック内に変更があった場合、このハッシュも変更されるため、ブロックの nonce を再計算する必要があることを説明します。つまり、前のブロックを変更するには、変更する必要があるこのブロックを含むすべてのブロックを計算しなければなりません(必要なすべての労働を支払う必要があります)。

image

この図は実際には前の図と同じですが、ここでは各ブロックの内容を強調し、ブロックが前のハッシュ(Prev Hash)を含むことを示しています。また、Nonce はブロックの一部です。Nonce、Prev Hash、Tx のいずれかを変更すると、このブロックのハッシュも変更され、その後のブロックもすべて変更する必要があります。プルーフ・オブ・ワークは、また多数決の中で代表を決定する問題を解決します。もし大多数の人が一人の IP に基づいて投票を行うなら(one-IP-one-vote)、これは多くの IP を割り当てることができる人によって破壊されるでしょう。プルーフ・オブ・ワークは本質的に「1 CPU 1 票」(one-CPU-one-vote)です。主要な(大多数の)決定は最長のチェーンによって代表され、最長のチェーンはその中で最大の作業量を持っています。もし大多数の CPU 計算力が誠実なノードによって制御されているなら、最も誠実なチェーンは最も早く成長し、他の計算チェーンを超えるでしょう。

過去のブロックを変更しようとする攻撃者は、このブロックとその後のすべてのブロックの作業量証明をやり直す必要があり、その後、現在のすべての誠実なノードの作業を追いつき、超える必要があります。我々は後で、遅い攻撃者が追いつく可能性が指数関数的に減少することを示しますが、その後のブロックが追加されるときです。この段落は、PoW が実際には共同決定の選択代表の問題であり、記帳権を奪う問題に等しいことを補足しています。なぜなら、記帳権を奪った場合、代表が選ばれるからです。

ここで中本が IP を決定に使用しなかった理由が追加されます。なぜなら、彼は IP が投票権として CPU よりもはるかに簡単であると考えたからです(最良の選択かどうかはわかりませんが、現在のところは最良のように見えます。ただし、現在の CPU 投票権は「マイニングプール」によって制御されており、ある程度の不安定性を生じています(しかし、依然として IP を制御するよりは良いです)。もちろん、一部のマイニングプールは自分の計算力がある値を超えないことを公に宣言し、全体のシステムの安定性を維持しています(このニュースを見つけたら、リンクを追加します)。

その後、文書は再度強調します。ブロックを変更したい場合、攻撃者は非常に大きなコストを支払う必要があり、誠実なチェーンはルールによって促進され、ゲーム理論の中で自然に最長のチェーンに変わります(後文で説明します)。ハードウェアの速度の増加と時間の経過に伴う運営ノードの変化に対して、作業量の難易度は移動平均目標によって決定されます。つまり、毎時間の平均ブロック(この平均目標)です。もしこれらの計算力が急速に増加した場合、この難易度は上昇します。

ここで、PoW の難易度は全体のシステムの難易度と共に上昇することが指摘されます。なぜなら、コンピュータの計算能力は常に向上しているからです。現在の CPU マイニング→GPU マイニング→マイニングマシンマイニング、これが PoW の巧妙さです。しかし、これはビットコインに対する否定的な理由をもたらします。現在の計算能力は参加者が多すぎるため、難易度が非常に高くなり、全体の計算能力も水準が上がります。近年は指数的に増加しています。したがって、数年後にビットコインのインセンティブ(後文で言及される)がこの高い計算コストを耐えられない場合、計算能力が急激に低下する可能性があります。それに伴い、ビットコインの信用が崩壊し(計算能力を制御できる人による攻撃)、ビットコインが突然崩壊する可能性があります。

5. ネットワーク(Network)#

このネットワークを運営する手順は次のとおりです:#

  1. 新しい取引がすべてのノードにブロードキャストされます。

  2. 各ノードは新しい取引を収集して一つのブロックにします。

  3. 各ノードは自分のそのブロックのために作業を行い、その作業量証明を見つけます。

  4. あるノードがこのブロックの作業量証明を見つけると、そのブロックをすべてのノードにブロードキャストします。

  5. ノードはこのブロック内のすべての取引が合法であり、すでに消費されていない場合にのみこのブロックを受け入れます。

  6. ノードは次のブロックの作業量証明に向かい、このブロックのハッシュを(次のブロックの)前のハッシュとして使用してこのブロックを受け入れたことを示します。
    ノードは常に最長のチェーンが正しいと考え、それを拡張するために作業を続けます。もし 2 つのノードが同時に異なるバージョンの次のブロックをブロードキャストした場合、一部のノードは最初に受け取ったブロックのために作業を行いますが、もう一つのブロックはそれが長くなる可能性があるため保存されます。このバランス(tie)は、次の作業量証明が発見されたときに破られ、ある分岐が長くなります。他の分岐で作業しているノードはこの最長の分岐に切り替えます。
    この段落は、ビットコインの「最大のルール」を暗示しています。つまり、すべての人が最長のチェーンが正しいと仮定しています。この保証がなければ、全体のシステムは機能しないことは明らかです。そして、この最長のチェーンが正しいことは、後文の「インセンティブメカニズム」によって保証されています。したがって、ここにはゲームのシナリオが存在します。もし今、ブロックチェーンアプリケーションを作成する必要があるなら、すべての人があるルールを公然と認める必要があります(強制力)、または人々が自発的にあるルールを認める方法を使用する必要があります(インセンティブ)。しかし、いずれにせよ、ブロックを奪い合うことはコストを生じるため、このコストに対して「強制力 / インセンティブ」をどのようにゲームするかが、ブロックチェーンが健康に成長できるかどうかの鍵です。
    後半部では、ブロックが本当に認められるための鍵を説明します。マイナー(大部分)がこのブロックを前のブロックとして使用し、そのハッシュを新しいブロックに組み込んで新しいブロックのために作業を行う場合、このブロックは認められます。したがって、ここで指摘されているのは、次のブロックが生成されるまで、現在のこのブロックが「合法」であることです。この点は非常に重要です。なぜなら、すべての攻撃はこの問題に向けられるからです。また、受取人と支払い者の不均衡もここから生じます。同時に、ここはブロックチェーンがゲーム理論を応用する精髄を示しています。
    後半部では、特別な状況を説明します。つまり、分散型ネットワークの特性により、情報の通信がリアルタイムでないため、一部のノードがあるブロックを認め、他のノードが別のブロックを認めることがあり、ブロックチェーンの分岐問題が発生します。しかし、ここではすべてのノードが最長のチェーンのみを唯一のチェーンと見なすため、この状況は複数のチェーンの数ブロック後に破られ、ブロックの再構成が発生します。
    新しい取引のブロードキャストはすべてのノードに対して不要です。取引が多くのノードに到達すれば、それらは最長のブロックに入ります(before long)。ブロックのブロードキャストは情報の損失を許容する能力があります。もしあるノードがブロックを受け取らなかった場合、次のブロックを受け取ったときにそれを見つけ、失われたブロックを要求します。
    この段落は前の段落の補足であり、51%(大多数)の重要性を説明しています。この大多数は直感的な数字で表現されるわけではなく、すべての人が最長のチェーンを認めることによって、時間の経過とともに徐々に形成されます。
    同時に、ここで重要な点が指摘されています。「新しい取引のブロードキャストはすべてのノードに対して不要です」。ここでは、取引が洪水のように広がる必要がないことが明確に示されています。取引自体の情報を拡散したい場合、ブロックチェーンシステム内では取引を拡散するだけでなく、ブロックも拡散できます。そして、ブロックが拡散されることはシステム内の「ルール」(最長のチェーンに到達すること)です。私はこれが分散型システムにおける新しい思考をもたらす可能性があると考えています。

6. インセンティブメカニズム(Incentive)#

慣習に従って(合意に基づいて)、ブロック内の最初の取引は特別な取引であり、このブロックの作成者が新しい通貨を持つことから始まります。これにより、ノードがこのネットワークを支えるためのインセンティブメカニズムが提供され、通貨を全体のシステムに初期分配する方法が提供されます。中央の権限機関が彼ら(通貨)を発行することはありません。安定して一定量の新しい通貨を増加させることは、金鉱夫が資源を費やして金を採掘し、循環システムに導入することに似ています。我々の状況では、CPU 時間と電力が費やされます。この段落は、前の段落でずっと避けられていた問題をついに説明します:通貨はどこから来るのか?ビットコインのシステムでは、中本は総量を 2100 万ビットコインと規定しています。そして、これらのビットコインの生成は、21000 ブロックごとに半減します(現在の約 10 分ごとに 1 つのブロックが生成される速度で、2140 年頃には 0 になります)。ビットコインの生成方法は、記帳権を奪った人に無条件に一定量の通貨を与えることです。これにより、通貨の発行とマイナーの記帳の報酬が同時に解決されます(現実の金鉱夫のように)。

この無条件の報酬の方法は、各ブロックの最初の取引であり、特別な取引です。この取引は入力のみを持ち、入力の出力(前の取引の出力)は空です(後文で言及されます)。第 2 章の注釈で既に述べたように、コインは存在せず、コインは tx から推測されます。A が B に 100 元を渡すとき、この情報を記録する際に、A の「口座 - 100、B の口座 + 100」という事象を記録することもできますし、「A が B に 100 元を渡した」という取引情報を記録することもできます。

ブロックチェーンは後者を選択しました。この無条件に出現するお金は特別な取引情報であり、このインセンティブメカニズムは取引手数料の形で報酬を与えることもできます。もしある取引の出力値がその入力値よりも小さい場合、この差額が取引手数料となり、手数料はこの取引を含むブロックの報酬に追加されます。一旦決定された数の通貨(すべての通貨)がこの循環に入ると、このインセンティブメカニズムは完全に取引手数料に変わり、システムは完全にインフレを回避できます(通貨の総数は一定であり、通貨の発行はありません)。この部分は、インセンティブメカニズムのもう一つの部分を説明します。すなわち、無条件の報酬の他に、手数料もマイナーの収入源の一つです。インセンティブメカニズムは、ノードが誠実であることを助けるかもしれません。

もし貪欲な攻撃者がすべての誠実なノードよりも多くの CPU 計算力を集めることができれば、彼は選択を迫られます:この計算力を使って二重支払いを行い他人を欺くか、またはこの計算力を使ってより多くの通貨を生成するか。彼は、ルールに従うことでより多くの利益を得られることに気づくべきです。このようなルールは、彼が他の参加者よりも多くの通貨を持つことを支え、システムを破壊して自分の富を損なうことはありません。ここで前文で議論されたゲーム関係が示されています。

7. ディスクスペースの回収(Reclaiming Disk Space)#

一旦通貨の最新の取引が十分なブロックに埋め込まれる(buried)と、その取引の前に消費された取引はディスクリソースを節約するために捨てることができます。ブロックのハッシュを損なうことなく、取引は Merkle Tree7 [5] としてハッシュ化され、この Merkle Tree のルートノードのみがこのブロックのハッシュに含まれます。古いブロックは、この木の枝を切り取ることによって圧縮できます(stubbing off branches of the tree)。内部のハッシュは保存する必要はありません。

image

この段落は、ブロックチェーンシステムが継続的に生成されるブロックの問題に対する解決策の一つです。現在の時点(2017/1/28)で、ブロックチェーンの総数は 90G を超えています。ストレージはますます安価になっていますが、一般の人々が使用することは不可能です。なぜなら、情報が常に膨張し続けるからです。ここでブロックチェーンシステムの巧妙さが示されています。取引を保存するのではなく、Merkle Hash Tree の方法を使用して Root Hash を保存し、「ゼロ知識証明」を達成します。個人はこのブロックを必ずしも必要とせず、このブロックの「ハッシュ」(インデックス)があれば十分です。IPFS、公共ノード、高信頼度ノードがこれらのブロックを保存するのを助けます。「ゼロ知識証明」は、ブロックが絶対に正しいことを保証し、偽造されていないことを保証します。

取引を除外したブロックヘッダーはおおよそ 80 バイトの大きさになります。もしブロックが 10 分ごとに生成されると仮定すると、80 バイト * 6 * 25 * 365 = 年間 4.2MB になります。2008 年の PC システムの通常のメモリ容量は 2GB であり、モーアの法則に基づいて毎年 1.2GB の増加が予測されているため、すべてのブロックヘッダーをメモリに保存することは問題ありません。原文で既に相当明確に論じられています。

8. 簡略化された支払い認証(Simplified Payment Verification)#

支払い認証は、すべてのネットワークノードを運営する必要はありません。

ユーザーは、最長の作業量証明チェーンのブロックヘッダーのコピーを保存するだけで済みます。このチェーンは、彼が最長のチェーンを持っていることを確信するまでネットワークノードに照会し、彼の取引(transaction)がタイムスタンプを付けられたブロックに追加されていることを確認するために Merkle の分岐に接続することができます。彼はこの取引を自分で確認することはできません(なぜならハッシュしかないからです)が、チェーン内の位置に接続することで、ネットワークノードがかつてそれを受け入れたことを確認でき、その後に追加されたブロックもネットワークがそれを受け入れたことをさらに証明します。ディスクスペースの回収によって生じる問題は、簡略化された支払い認証の問題です。なぜなら、一部のノードはすでにすべてのブロック情報を保持していないため、これはある意味でゲームであり、スペースを使用して認証の便宜を交換することです。しかし、全体としては情報の安全性に問題が生じることはありません。なぜなら、ハッシュを持っている限り、どのノードでも他のノードから元の情報を要求できるからです。

image

この図は、ハッシュチェーンがあれば十分であることを示しています。

このような状況下で、誠実なノードがネットワークを制御している場合、この検証は信頼できますが、計算力が優位な攻撃者がネットワークを制御している場合、攻撃を受けやすくなります。なぜなら、ネットワーク内のノードが自分で検証できる場合、この簡略化された方法は攻撃者が偽造した取引に欺かれる可能性があります。攻撃者が全ネットワークの計算力を持続的に保証できる場合です。

保護戦略の一つは、ネットワークノードからの警告を受け入れることです。これらのネットワークノードが不正なブロックを監視した場合、ユーザーソフトウェアに問題のあるすべてのブロックをダウンロードするように警告し、取引の整合性を確認するように警告します。頻繁に支払い情報を受け取る商業機関は、より独立した安全性と迅速な検証を維持するために、依然としてすべてのノードを運営する可能性があります。このメカニズムは、パッチを適用する方法のように感じられます。しかし、確かにディスクストレージを削減するための解決策であり、ストレージと安全性の便宜の間のゲームの結果です。ここで記事を書く機会があるかもしれません。おそらく、ブロックチェーンの普及を妨げる障害の一つです。なぜなら、ブロックを保持するノードが少なすぎると問題が発生する可能性があるからです。ネットワークを盗んだり改ざんしたりすることはできませんが、崩壊を引き起こす可能性があります。(もちろん、ビットコインネットワークではなく、一部の小規模なブロックチェーンネットワークについてです)

9. 価値の結合と分割(Combining and Splitting Value)#

通貨を独立して処理することは可能ですが、一度の送金で各ペニーが別々の取引になることは賢明ではありません(つまり、コインは単位で結合されているわけではありません)。価値を分割および結合できるようにするために、取引には複数の入力と出力が含まれます。通常、前の大きな取引からの単一の入力または多くの小さな合計の複数の入力があり、最後に 2 つの出力があり、一つは支払い、もう一つはお釣りであり、いくらであってもすべて購入者に返されます。

この段落は、取引(Tx)の構成についてついに言及しています。前の説明で多くのことが述べられていますが、重要なポイントを押さえれば良いのです:取引は前の取引を検証し、移転する数と目的地を加えたものです。inputs は以前の取引の outputs です。すべての inputs を検証することで、その取引の支払い者の残高が移転する数よりも大きいかどうかを確認できます。

inputs に関連するすべての Tx は以前の「歴史情報」です。ノードは自分のブロックを検索して結果を得ることができます。各ブロックの最初の取引(インセンティブ取引)は、入力のみを持ち、出力はありません。この点で注意すべき追加のポイントは、各取引は必ず使い切らなければならず、すべての input の合計の一部が受取人に渡され、お釣りはすべて購入者に返されることです(前文で説明されたミントの作業プロセスを思い出してください)。

このメカニズムは数値の分割において天然の利点を持っています。既存の通貨は常に「元」単位としての最小単位を持っています(例えば人民元:1 分)ですが、ビットコインにはそのような制限はありません。ビットコインは差額にのみ関心を持ち、最小単位には関心を持ちません。したがって、これが価値の結合と分割です。

image

すべての分配(fan-out)が注目されるべきです。ここでは一つの取引がいくつかの取引に依存し、ここでの取引はさらに多くの取引に依存しています。これは問題ではありません。ここでは取引履歴の完全な独立したコピーを抽出する必要はありません。ここは少し難しい翻訳であり、fan-out が何を指しているのかはあまり明確ではありません。

10. プライバシー(Privacy)#

従来の銀行モデルは、関連する参加者や第三者に情報へのアクセスを制限することでプライバシーのレベルを実現しています。すべての取引を公開してブロードキャストする必要がある場合、この方法は使用できません。しかし、プライバシーは別の場所での情報の流れを破ることによって維持されることができます:公開鍵を匿名化する形式です。公衆は、ある人が別の人にいくらかの金額を送信したことを見ることができますが、取引と人を結びつける情報はありません。これは株式取引における情報の公開レベルに似ています。株式取引では、公開された時間と個人の取引が記録されますが、「テープ」に記録されますが、誰が参加しているかは通知されません。ここで指摘されているのは、公開鍵と秘密鍵のメカニズムが擬似匿名化であるということです。

image

追加の防火壁(防止メカニズム)として、各取引で新しい鍵ペアを使用することで、これらの鍵と一人を結びつけることが保証されます。いくつかの複数の入力の取引の関連は避けられないため、この点(複数の入力)はこれらの入力が同一人物に属することを明らかにします。リスクは、もしそのうちの一つの鍵の所有者が発見されれば、その人に関連する他の取引も明らかになることです。

ここで原文がこのように推奨するのは非常に理にかなっています。なぜなら、楕円暗号アルゴリズムは量子暴力によって破られる可能性があるため、システム全体で生成される転送公開鍵が公開されている場合です。

暗号学的には、公開鍵から秘密鍵を導出すべきではありませんが、例外があるかもしれません。したがって、中本は強く推奨します。各取引で新しい鍵ペアを使用することで(取引が inputs として使用される限り、inputs としての取引は無用です(注意:9 で言及されたお釣りメカニズム、各取引は使い切らなければなりません))、これにより、毎回新しい公開鍵と秘密鍵で取引を行うことが保証されます。後半部では、公開鍵と秘密鍵と現実の人との対応関係(匿名性の失効)の問題について説明します。鍵を交換することもこの問題を防ぐことができますが、すべての記録が全ネットワークで確認可能であるため、もし一つの公開鍵と秘密鍵が人と対応付けられた場合、その人に関連するすべての公開鍵と秘密鍵がその人に対応付けられることになります。

11 計算(計算)#

我々は次のようなシナリオを考えます:攻撃者が現在の最も誠実なチェーンよりも長い置き換えチェーンを生成しようとします。たとえそれが可能であっても、システムが任意に制御されることはありません。例えば、価値を無条件に創造したり、攻撃者に属さないお金を取ったりすることはできません。ノードは無効な取引を支払いとして受け入れず、最も誠実なチェーンは無効な情報を含むブロックを決して受け入れません。攻撃者は、自分の取引を変更して最近使ったお金を取り戻すことしかできません。最も誠実なチェーンと攻撃者のチェーンの競争は、二項ランダムウォーク(Binomial Random Walk)として見ることができます。成功したイベントは、最も誠実なチェーンが 1 つのブロックを拡張し、+1 のリードを得ることです。一方、失敗したイベントは、攻撃者のチェーンが 1 つのブロックを拡張し、-1 のギャップを生じさせることです。攻撃者が与えられた損失を追いつく可能性は、ギャンブラーの破産問題(Gambler's Ruin problem)として見ることができます。無限の信用を持つギャンブラーが損失から始まり、潜在的に無限回の試行を行って元に戻ろうとする場合です。我々は、攻撃者が最も誠実なチェーンに追いつく可能性(確率)を計算できます。以下のようになります:

P = 誠実なチェーンが次のブロックを発見する確率

q = 攻撃者が次のブロックを発見する確率

qz = 攻撃者が z 個のブロックを費やして追いついた

image

我々は p>q と仮定します。攻撃者が追いつく確率は、ブロックが増加するにつれて指数関数的に減少します。なぜなら、勝算は彼にとって逆であり、もし彼が早期に追いつくことができなければ、成功の可能性は彼がより遅れるにつれて小さくなるからです。我々は現在、新しい取引が十分に確認され、送信者が取引を変更できなくなるまでどれくらいの時間がかかるかを考えます。支払い者が攻撃者であり、受取人が彼がすでに支払ったと考え、その後このお金を受け取ることを望んでいる場合、受取人はこの事象が発生したときに警告を受けますが、支払い者はこの事象が長い間発生しないことを望んでいます。

受取人は新しい鍵ペアを生成し、この公開鍵を支払い者に渡します。支払い者の前の短い時間内に。これにより、支払い者が事前に時間の前にブロックチェーンを準備することを防ぎます。彼は継続的に作業を行い、十分に幸運な場合は前方に進み、その時にこの取引を実行します。この取引が送信されると、不誠実な送信者は彼の取引を置き換えるバージョンを含む並行チェーンを秘密裏に作業し始めます。受取人はこの取引がブロックに追加され、その後 z 個のブロックが追加されるまで待ちます。彼は攻撃者が正確にどのプロセスを行ったか(いくつのブロックを作成したか)を知らないが、誠実なチェーンがブロックを生成するのにかかる平均的な時間を費やすと仮定します。攻撃者の潜在的な進展はポアソン分布であり、分布の期待値は次のようになります。

image

C コードへの変換:#

#include<math.h>
double AttackerSuccessProbability(double q, int z){
 double p= 1.0 - q;
 double lambda = z * (q / p);
 double sum = 1.0;
 int i, k;
 for (k = 0; k <= z; k++)
 {
 double poisson = exp(-lambda);
 // 結果を得るために実行し、確率がzの指数的に減少することがわかります。
 }
 return sum;
}

P <0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 これは、6 個のブロックが絶対に安全な方法であることを示しています。 12. 結論 我々は信頼に依存しない電子取引システムを提案しました。

我々は、デジタル署名から構成される通常の通貨フレームワークから始めます。これは関係の強い制御を提供しますが、二重支払いの問題を解決する方法はありません。この問題を解決するために、我々は作業量証明メカニズムを使用した P2P ネットワークを提案し、公共の取引履歴を記録します。このメカニズムは、大多数のノードが主要な CPU 計算力を制御する場合、攻撃者が変更することが計算上不可能であることを示します。ネットワークはその非構造的な単純性の面で堅牢です。

ノードは非常に少ない協力で共同作業を行うことができます。彼らは認証を必要とせず、情報は特定の場所にルーティングされる必要はなく、できるだけ広く送信される必要があります。ノードは自由にネットワークから離れたり再参加したりでき、作業量証明チェーンを、ノードが離れた後に発生した事象の証明として受け入れることができます。

彼らは CPU 計算力に基づいて投票し、合法なブロックを受け入れることを示し、不正なブロックを拒否することによってこのブロックを拒否します。必要なルールやインセンティブは、この合意メカニズムを通じて実行できます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。