私が提案しているものはまだ存在しない。ブロック生成の熱力学的な非合理性について、類似の問題に関する議論はあった。中央ノードが1つだけなら、システムは一瞬でトランザクションブロックを生成できる。望めば10分に1回だけ行うこともできる。だが、単一プロセッサ上の一瞬のCPU時間以上は必要ない。
その理由は純粋にコンセンサスに関係している。
つまり、2つのノードがあれば、両方にすべてのトランザクションを冗長に取得させ、それぞれが一瞬でブロックを生成できる。その後ブロックハッシュを交換し、一致すればコンセンサスが得られる。一致しなければ、2つの方法でコンセンサスに到達できる。1)各ブロックのトランザクションを1つずつ比較し、すべてのトランザクションの和集合からなるブロックを作成する。または2)ブロックの1つを選んでそのまま採用する。2番目がBitcoinが実際に現在行っていることだ。
世界で最も高価なコイン投げを使って選んでいるだけだ。もっと安いコイン投げでまったく同じことを達成でき、Bitcoinには何一つ変化がない。
これが「設計上の選択」と言っているものだ――システムの機能や動作の要件は何も変わらない。実装方法が異なるだけだ。
つまり、トランザクショングラフを分散ハッシュテーブル全体に分散させるという話は、Bitcoinの主要機能を実装する別の可能な(だが現時点ではコード化されていない)方法にすぎない。その機能とは、あるアドレスから別のアドレスへのBitcoinの送金を、二重支払いが不可能な形で検証することだ。
最適には、毎分x,000トランザクションがあり100ノードがある場合、各ノードはx,000トランザクションを処理する単一ノードの1/100の仕事だけで済む。各トランザクションは1回だけ記録されればよい。
しかし、現在のBitcoin実装では、100ノードがあると、x,000トランザクションに対してすべてが100%のCPU使用率で動作する。さらに100ノードを追加しても、すべてが100%のCPU使用率のままで、まったく同じ仕事をする。5人でできる仕事に50人を使うとき、我々はそれを「お役所仕事」と呼んでいた。人が多く働く方が経済に良いからだ!
そこで私が提案する新しい設計上の制約は、与えられたノード数(n)に対して、一定数のトランザクションを処理するのにCPUあたり(Order (1/n))、あるいはおそらく(Order log(n))の仕事量で済むべきだということだ。ここでの仕事とはCPU時間とネットワーク通信を意味する。私の設計変更は、既存システムのトランザクション保護のいずれかを放棄する場合には失敗となる。
実はブロックリスト自体はトランザクションの検証に必要ない。トランザクションだけが必要だ。したがって、私の提案を理解するには、システムの履歴のすべてのトランザクションを含む一枚岩のブロックリストがない同等のBitcoin実装を考える必要がある。
代わりに、トランザクションはすべてのノードに冗長に分散される。どのノードもすべてのトランザクションの完全なリストを保持する必要はないが、要求に応じて任意のトランザクションを迅速に取得できなければならない。最適にはOrder(1)時間で、だがOrder(log(n))時間でおそらく十分だろう。これにより、任意のノードのストレージ要件がOrder(1/n)に削減される。
トランザクションはトランザクションのout-pointによってノードにマッピングされる。トランザクション+out-point情報をハッシュすることで、2つの一意なout-point識別子を生成する。そして各out-point IDに最も「近い」5つのノードにトランザクションを冗長に保存する。つまり10,000ノードのシステムでは、各トランザクションは10,000倍の冗長性ではなく10倍の冗長性で保存される(10倍は任意の選択であり、冗長性はDHTアルゴリズムとノード集団の特性に基づく)。
これらの10ノードのそれぞれは、そのout-pointデータを完全にプライベートに保持する。ただし、別のノードが「知る必要性」を示せる場合を除く。この場合、知る必要性は、与えられたout-pointをin-pointとして含む署名されたトランザクションを提出することで示される。この場合、ストレージノードは新しいトランザクションを保存する。また、そのout-pointを参照する既知のトランザクションを返す。そのout-pointに関連する以前のトランザクションのin-pointがあれば、2番目のトランザクションは二重支払いである。
つまり、新しいトランザクションを検証するには、そのトランザクションの各in-pointに最も近い5つのノードに送信する。それらはトランザクションを記録し、二重支払いを検出したかどうかを即座に通知する。もし検出されていれば、それは不正なトランザクションであり、他の近くのノードにブロードキャストされる。
さて、私が提案しているものはプライバシーも向上させる。すべてのトランザクションを世界中にブロードキャストする必要がなくなるからだ。また、見知らぬ人があなたの取引を覗き見ることもできなくなる。
BitcoinトランザクションをDHTにマッピングする方法は多数ある。説明しやすい例を選んだだけだ。改善を提供する他の可能性もあるかもしれない。だが、要点を伝えるにはこれで十分だ。
「ダイニング暗号者ネットワーク」と呼ばれる面白い技術もあり、Bitcoinのプライバシー面をさらに改善できる可能性がある。