ジェド・マケーレブによる bitcointalk.org の「Bitcoin without mining」のスレッドの一部をChatGPTで和訳したものです。
ジェド・マケーレブ:
ちょっと考えていたのですが……
ビットコインのマイニングというのは、システムの不幸な副作用のように思えます。非常に無駄が多いのです。ネットワークが大規模になった場合、マイニングに使われる資源やコストが非常に大きなものとなり、やや不健全にすら感じられます。もしマイナーを必要としないビットコインのようなものを考案できたら、とても面白いと思いました。
いくつかの課題はありますが、ここではコインの分配方法はひとまず無視して、中央台帳(central ledger)を信頼できるものにする方法という中心的な問題に注目したいと思います。
現在のビットコインでは、この信頼性の問題をマイニングによって解決しています。ネットワークは「もっとも多くのマイニングが行われた台帳」を信頼する仕組みとなっています。つまり、ビットコインを信頼するには、現在のマイニングパワーの50%以上が“正しい(善良な)”ものであることを信じなければなりません。
しかし実際には、ネットワークはマイニングプールの形で発展してきているため、私たちは実質的に「大規模なプール運営者が正しい人物であること」を信頼している状態です。たとえ単一のプールが50%未満であったとしても、運営者がプール外でマイニングを行っていれば、全体で50%を超えることもありえますし、複数のプールが結託してネットワークを不正に操作する可能性もあります。
また、仮にある国の政府がネットワークを破壊しようと決意した場合、それほど高いコストをかけずに実行できる可能性もあります。
(これについては他のスレッドでも議論されていますので、ここでは詳細には触れません)
私が言いたいのは、現在のネットワークはマイニングによって信頼性の問題を解決しているように見えて、実際には大手プール運営者を信頼せざるを得ないという点で、本質的な意味での解決にはなっていないということです。
そこで私は、この「信頼」の問題をより明確に扱う方法を提案したいと考えました。
たとえば、各ノードに公開鍵を持たせ、その鍵はクライアントがノード用に生成するものとします。この鍵はウォレットの鍵とは無関係で、そのノードが本人であることを証明するためのものです。
そしてノードを運営する際、自分が信頼する他のノードを選ぶことができます。
たとえば、「友人3人のノード、Gavinさんのノード、特定の5つの企業のノードを信頼する」といった形です。この「信頼」とは、これらのノードの運営者が二重支払い(ダブルスペンド)攻撃を行ったり、台帳を操作したりしないと信じている、という意味です。
台帳は基本的には現在のビットコインのブロックチェーンと似ていますが、加えて「どのノードがその台帳を正当とみなしているか」のリストが含まれます。たとえば「<台帳のハッシュをノードの公開鍵で署名したもの>」といった形です。
このリストは完全なものである必要はなく、各ノードが必要に応じてリストを収集すればよいのです。あるいは、信頼しているノードに「この台帳は正当だと思うか?」と問い合わせるだけでも十分です。
トランザクションはこれまで通り、ネットワークに接続されているすべてのノードに送信されます。ネットワーク全体で統一されたタイムスタンプが存在し、トランザクションはその時刻からある一定の時間内であれば有効とされます。したがって、特定のトランザクションを完全に信頼するには、おそらく10分ほど待つ必要があります。その後であれば、そのコインが二重に使用されていないことを確認できるはずです。
ノードが矛盾する2つの台帳に出会った場合は、自分が信頼するノードのうち、より多くが承認している方を採用します。
これにより、信頼されたノード同士の間では常にコンセンサス(合意)が形成される状態となるはずです。
また、ネットワーク上の特定のノードを検索して問い合わせを行える仕組みも存在することになります(この全体の仕組みは、Kademliaという分散ハッシュテーブル(DHT)上で動作することを想定しています)。
もちろん、まだこのアイデアは漠然としており、詳細までは詰められていません。ですが、どなたかがこのアイデアに触発されて、何か新しい発展につなげてくだされば嬉しく思います。
ぜひ、自由にご意見・ご批判をお寄せください。
*(中央台帳そのものを無くす方法を考えることもできるとは思いますが、それは難しいかもしれません)
出典:https://bitcointalk.org/index.php?topic=10193.msg146250#msg146250
マイク・ハーン:
それはどこか、Rippleに似ているようにも聞こえます。
サトシの元々の設計目標は、「まったく信頼を必要としないシステム」でした。つまり、「正直なノードがハッシュパワーの大半を支配している」という点にさえ自信が持てれば、それ以外に特定の誰かを信頼したり、事前に設定を行ったりする必要がない、という仕組みです。
それに対して、あなたが提案しているシステムはかなり異なっており、「信頼ネットワーク」に大きく依存しています。
そのため、たとえばForbesの記事などをきっかけにこのシステムを知ったばかりの人が参加しようとする場合、誰を信頼すべきか分からず、ソフトウェアにどう設定すればよいのかも分からない可能性が高いです。
これは決して「悪い設計」だと言っているわけではありません。ただ、ビットコインとは非常に異なるトレードオフ(設計上の選択とその結果)がある、ということを言いたいのです。
出典:https://bitcointalk.org/index.php?topic=10193.msg146538#msg146538
ジェド・マケーレブ:
新しく参加する人でも、クライアントを問題なく動作させることができます。使用するために、信頼する相手を事前に設定する必要はありません。信頼が必要になるのは、「2つの競合する台帳が存在する場合」のみであり、それは非常に稀な出来事であるはずです。
>サトシの元々の設計目標は、「まったく信頼を必要としないシステム」でした。
それは分かっています。でも実際には、その通りにはなっていません。先ほども述べたように、現状では私たちは大手マイナーを信頼している状態ですし、さらに政府や企業が何百万ドル分のハッシュパワーを投入してネットワークを乗っ取らない、ということも信じているわけです。私は、むしろこちらの提案したシステムの方がより安全性が高いように感じています。
私はこの提案が「異なるトレードオフを持っている」とも思っていません。
現行のビットコインに、私が見落としているような別の利点があるのでしょうか?
出典:https://bitcointalk.org/index.php?topic=10193.msg146569#msg146569
マイク・ハーン:
もし私が「誰を信頼するか」を選ばなくてよいのであれば、画面上に表示されている情報が、他の人たちが見ている現実と同じであると、どうやって確認できるのでしょうか?
特に、私がマーチャントになりたい場合、誰かが私のノードに接続して、私が大金持ちであるかのような架空のトランザクションを送り込むのを、どうやって防げばよいのでしょうか?
現在のビットコインでは、私は特定のマイナーを信頼する必要はあまりありません。
たとえば bitcoinwatch のサイトによれば、いまのところどのマイニングプールも40%すら保有しておらず、長期的に見れば、超巨大なプールはさらに少なくなると予想しています。
仮に誰かがトランザクションを巻き戻すようなことをすれば、皆がそれを目にして、私はそこで改めてネットワークを評価し直すかもしれません。
しかし現時点では、どんなランダムなノードに接続しても、ブロックチェーンをダウンロードすれば、「自分が他の皆と同じ台帳を見ている」という確信を持つことができます。
出典:https://bitcointalk.org/index.php?topic=10193.msg146586#msg146586
kjj:
意味のあるビットコイン詐欺を実行しようとするのであれば、世界のハッシュパワーの50%では足りず、実際には95%以上が必要になるでしょう。
つまり、世界中の他のすべてのマイナーの合計よりも、20倍ものハッシュパワーを持たなければならないということです。
出典:https://bitcointalk.org/index.php?topic=10193.msg146633#msg146633
ジェド・マケーレブ:
>もし私が「誰を信頼するか」を選ばなくてよいのであれば、画面上に表示されている情報が、他の人たちが見ている現実と同じであると、どうやって確認できるのでしょうか?
特に、私がマーチャントになりたい場合、誰かが私のノードに接続して、私が大金持ちであるかのような架空のトランザクションを送り込むのを、どうやって防げばよいのでしょうか?
マーチャントになりたいのであれば、はい、信頼するノードをいくつか登録するべきです。もし単なる一般ユーザーとしてソフトウェアを試してみたいだけであれば、ビットコインと同様にブートストラップ(初期接続)プロセスがありますので、それによってネットワークに接続できます。その時点で、接続したすべてのノードが現在の台帳のハッシュを教えてくれます。もしその情報に不一致が見られた場合は、いくつかの手順を踏む必要が出てきます。たとえば、フォーラムに来て「信頼できるノードのリストを教えてください」と尋ねるようなことです。ただし、それでもこの「信頼」のレベルは非常に低いものです。たとえば、フォーラムのランダムな100人のユーザーを選んで信頼しても、特に問題はないはずです。
>現在のビットコインでは、私は特定のマイナーを信頼する必要はあまりありません。
たとえば bitcoinwatch のサイトによれば、いまのところどのマイニングプールも40%すら保有しておらず、長期的に見れば、超巨大なプールはさらに少なくなると予想しています。
確かに特定のマイナーを信頼する必要はありませんが、それでも「artforz(アートフォーズ)」や「deepbit(ディープビット)」が共謀していないことを信じる必要はあります。それは、先ほどの例で言えば「あなたが選んだフォーラムユーザー100人のうち、過半数以上が裏でつながっていないと信じること」と似たようなことです。
>意味のあるビットコイン詐欺を実行しようとするのであれば、世界のハッシュパワーの50%では足りず、実際には95%以上が必要になるでしょう。
私はそうは思いません。ブロックを自分で生成して貯めておき、他の誰かがブロックを解いたタイミングでそれらを一気に公開することで、今後のブロックの大半を奪うことができます。これが「意味のある詐欺」と見なされるかどうかは分かりませんが(以前この件について議論された古いスレッドがあったのですが、今は見つけられません)、
一例としては、「正しいネットワーク」より1ブロック先行する形でダブルスペンド(二重支払い)を行い、その後も常に1ブロック差を維持した状態で、好きなタイミングで「自分の方が1ブロック長いチェーン」を公開するという手法が考えられます。
出典:https://bitcointalk.org/index.php?topic=10193.msg146731#msg146731
kjj:
ブロックが見つかるまでの時間は、ハッシュパワー(ハッシュ速度)に対して線形の関係ではなく、確率的なプロセスです。
他のマイナーより10%多くのハッシュパワーを持っていたとしても、それによってブロックを10%早く見つけられるわけではありません。それは「相手より先にブロックを見つけられる確率が約5%ある」という意味にすぎません。
ここで、あなたのハッシュパワーがネットワーク全体の中で占める割合を X としましょう(Xは0以上1以下の値です)。
1つのブロックで先行できる確率は X
2つ連続して先行できる確率は X²
3つ連続して先行できる確率は X³
4つ連続して先行できる確率は X⁴
…というふうになります。
実際には、これらは楽観的な見積もりです。
現実には、ネットワークのうち「攻撃チェーンを信じるノードの割合」を表すYという補正係数が必要になります。時間が経つにつれて、Yの値はどんどん小さくなっていきます。
この話題は何度も繰り返し出てくるので、私から1つの提案をしたいと思います:
ノードがチェーンを切り替える(リシャッフルする)たびに、「そのチェーンを受け取った相手ノード」を記録するようにする。
同じ相手から24時間以内に3回以上リシャッフルが発生した場合、そのノードは接続から除外する。
出典:https://bitcointalk.org/index.php?topic=10193.msg147073#msg147073
ジェド・マケーレブ:
では、攻撃者がネットワークの60%のハッシュパワーを支配していると仮定しましょう。
攻撃者は、大きなトランザクションをネットワーク全体に送信します。
そして、正規のネットワークでのブロック生成を停止します。
その代わりに、自分自身の新しいチェーンを生成し始めます。このチェーンには、先ほどの大きなトランザクションは含まれていません。ただし、この偽のチェーンは他のネットワーク参加者には送信しません。
偽のチェーンは、やがて正規のチェーンよりも長くなります。
攻撃者は、好きなタイミングでこの「より長い偽のチェーン」をネットワークに公開します。
チェーンの長さが正規のものより長いため、ネットワークはこの偽のチェーンを「正しいもの」として受け入れてしまいます。
>この話題は何度も繰り返し出てくるので、私から1つの提案をしたいと思います:ノードがチェーンを切り替える(リシャッフルする)たびに、「そのチェーンを受け取った相手ノード」を記録するようにする。同じ相手から24時間以内に3回以上リシャッフルが発生した場合、そのノードは接続から除外する。
これは効果がありません。なぜなら、新しいピアを装って送信することは非常に簡単だからです。
出典:https://bitcointalk.org/index.php?topic=10193.msg147209#msg147209
ジェド・マケーレブ:
たとえ、オンライン化されるのを待っている隠れたマイニングプールがあるというあなたの意見が正しいとしても、ビットコインが現在のように少数のランダムな人々を皆が信頼しているという私の当初の主張は変わりません。私たちは暗黙のうちに、数人の大規模なマイナーと数人のプール、そして秘密のハッシャーを信頼しています。
私の主張は、この信頼を明示的にしたほうがよいということです。その方がはるかに効率的で、はるかに安全になります。
出典:https://bitcointalk.org/index.php?topic=10193.msg152581#msg152581
ジェド・マケーレブ:
このスレッドを読み進めていけば分かることですが、ビットコインにおいては「ビットコインユーザー全体の50%を不正にする」必要はありません。
実際には、たった3人ほどが共謀すればビットコインを破壊できる可能性がありますし、もっと現実的には、たった1つの政府がそれを実行できるかもしれません。
それに対して、私が提案している仕組みでは、フォーラムのユーザーをランダムに100人や1,000人選ぶだけで、ビットコインよりも遥かに安全になります。
さらに、もしあなたがもっと慎重に選んで、実際に知っている人たちを選べば、なおさら安全性は高くなります。
また、「あなたが誰を信頼することにしたか」を他人が知る方法はありません。
(ここで言う「信頼」という言葉は、正確には適切ではないかもしれません。これは単に「共謀していないと思われる人たちを選ぶ」という意味です。理論的には、その人が腐敗していると分かっていても、他の人と共謀していないのであれば、選んでも構わないのです。)
出典:https://bitcointalk.org/index.php?topic=10193.msg153114#msg153114
>>XRPの価格をチェック