Re: スケーラビリティ

参加者: spaceshaker

Quote from: DataWraith on July 14, 2010, 04:42:16 PM

Quote from: TopSoil on July 14, 2010, 03:59:18 PM

引用:なぜ?メールやJabberも同じ仕組みだ。誰でも自分のサーバーを運用でき、多くの人がそうしているが、ほとんどのユーザーは他人のサーバーを使うことを好む。確かにそのように動作はするが、それが理想的なのか?それだとネットワークの堅牢性が低下し、攻撃や操作に対してより脆弱になるのではないか?

実際にはそうでもない。心配なら、自分自身のサーバーをいつでも運用できる。

何も問題ない。たまたまそのスーパーノードの一つを使っている場合を除けば。使う必要はない。自分でスーパーノードを運用すればいい。あるいは、人々がGoogleにメールを任せるように、信頼できるノードを使えばいい。

実装がより簡単だというわけではないだろう?ここは根拠を示してほしい。

反例:ライス大学で開発された完全分散型メールシステムは、半集中型のメールサーバー(群)を運用するよりもはるかに複雑だ。

それはまさにスーパーノードサーバーがやることだ。

うーん。確かに。一周回ったようだ。ギャビンが一番うまく言ったと思う:

Quote from: gavinandresen on July 14, 2010, 02:20:45 AM

Quote from: spaceshaker on July 14, 2010, 01:52:00 AM

Quote from: gavinandresen on July 14, 2010, 12:42:32 AM

そしてほとんどの人は、ウォレットの保持、トランザクションの署名、そしてすべてのトランザクションを監視している超高速ノードへのトランザクションの送受信だけを行う軽量クライアントを使うことになるだろう。

それは可能なのか?どのようなものになるのか?技術的な観点から「軽量クライアント」はどういうものをイメージしているのか?私の理解では、Bitcoinクライアントは信頼を確立するためにブロックチェーン全体が必要だ。

ちょっと思いつきを述べてみる…

P2Pモデルは確かに斬新だが、多少ユートピア的に思える。少し付き合ってほしい(荒らしたいわけではない)。銀行を考えてみよう。銀行には効率的に協力し合うシステムがある。銀行Yの口座を持っていても、銀行XのATMからお金を引き出せる。銀行同士は融資し合う。基本的に協力的だ。すべての人がPC(やスマートフォン)にBitcoinクライアントを入れてオープンなP2Pネットワークに参加する代わりに、Bitcoinの「銀行」の集まりがブロックチェーンのホスティングと「ピアリング」のサービスを提供するのはどうだろう。これらは十分に大きな組織で、1日100万件(以上)のトランザクションを持つ無限に長いブロックチェーンを維持するための帯域幅とハードウェアを賄える。これらの銀行はP2Pのままであり、完全にオープンであることが望ましい。理想的には誰でもP2Pネットワークに参加できるが、参入障壁があるため一般の人はそうしないだろう。これらの銀行は今日あるのと同じ基本技術で運営される。Bitcoinの美しい側面はすべて保たれるが、アクティブな参加者の数がいくらか減少する。参加したい人は引き続き参加できる。

残る問題は典型的な「ラストマイル」問題だ。一般ユーザーはどうやってトランザクションを行うのか?この時点では問題はかなり単純になる。信頼は2者間(「銀行」とユーザー)だけで済む。これは本質的にプロキシの問題になる。ユーザーは「銀行」を通じてトランザクション要求を送信する。プロキシトランザクション用のプロトコルをBitcoinに組み込むことさえ可能かもしれない。

とにかく…これは私の個人的な意見に過ぎない。この問題に対する具体的な回答がほしい。なぜなら、この取り組みの成功にとって根本的に重要だと思うからだ。 Quote from: gavinandresen on July 14, 2010, 12:42:32 AM Quote from: Insti on July 13, 2010, 11:34:03 PM

66663ブロック内の77428トランザクションは約46,752,464バイトだ。 トランザクションあたり約600バイト(ブロックヘッダ+データベースのオーバーヘッドを含む)になる。

それくらいだろう。

つまり1日100万トランザクションなら6億バイトだ。1日600メガバイト、月18GB。

それほど悪くない。実際のネットワーク帯域幅はもっと大きくなる(ネットワークの接続方法により、ピアから同じトランザクションを複数回受信する)。iPhoneで常時接続ネットワークノードを動かすことにはならないが、安価なサーバーならその20倍の月間帯域幅を提供できる。そして18GBはテラバイトのハードドライブの時代にはたいしたディスク容量ではない。

1日100万トランザクションは非常に多い! 比較のために言えば、2006年にはアメリカで1日あたり約6000万件のクレジットカード取引があった。

最終的に、Bitcoinが生き残ってクレジットカードと同じくらい普及すれば、誰かがより効率的なネットワーク構造を持つ互換バージョンを作るだろう(その頃には何か洗練されたIPV6マルチキャストプロトコルなどがあるかもしれない)。そして彼らはいくつかのゲートウェイノード(非常に高速な回線で動作する)を実装して、現在のBitcoinネットワークからトランザクションとブロックのトラフィックを超効率的なネットワークに中継するだろう。そしてほとんどの人は、ウォレットの保持、トランザクションの署名、そしてすべてのトランザクションを監視している超高速ノードへのトランザクションの送受信だけを行う軽量クライアントを使うことになるだろう。

つまり、インターネットのバックボーントラフィックを処理する巨大なルーターや、超高速のDNSルートサーバーのようなものだ。インターネットも最初から驚異的に高速なルーターがパケットを飛ばし合っていたわけではない。

私のイメージはこうだ:

軽量クライアントはコインの入ったウォレット(公開鍵+秘密鍵のペア)を持つ。

そして、常時接続の超高速ヘビー級ノードとの間で安全にメッセージを送受信する方法を持つ。

軽量クライアントは送金時に: トランザクションを作成する(秘密鍵でコインに署名する) 署名済みトランザクションを超高速サーバーに安全に送信し、サーバーがネットワークに流す トランザクションが有効で送信されたことの確認を受け取り、ウォレットを更新する(コインを使用済みにする) (またはサーバーから「そのコインはすでに使用済みだ」というエラーを受け取る)

軽量クライアントは受け取り時に: 定期的にサーバーにポーリングして「ウォレット内のこれらのBCアドレスへの支払いはあるか?」と尋ねる …またはBCアドレスのリストへのトランザクションを検知した時(あるいはN回の確認が得られた関連トランザクションを検知した時)に通知するようサーバーに依頼する トランザクションが発生したら、軽量クライアントはウォレットを更新する(コインを追加する)

サーバーを信頼する必要はない。サーバーは秘密鍵を持つことはない。

まあ、サーバーがトランザクションの有効性について嘘をつかないことは信頼する必要があるが、サーバーがなぜそんな嘘をつくのか?

このシナリオでは、Bitcoinクライアントは現在とほぼ同じままだが、「スーパーノード」や「トランザクションサーバー」や「プロキシサーバー」(これらのシステムはおそらく3つの役割すべてを果たす)で使われるか、そのゲームに参加したい人が使うことに焦点が当てられるだろう。BitcoinクライアントがDHTを使うよう拡張されれば改善になるかもしれないが、ギャビンが上記で説明した「軽量クライアント」の必要性は依然としてある。ギャビンの「軽量クライアント」コンセプトは、私のスケーラビリティの懸念をある程度解消してくれるようだ。