ビットコイン、ノードにどうやって最新のデータが行き渡る?
ビットコインを発明し、現在その正確さがわかっていないサトシ・ナカモト。 そんなサトシが残った2年間の文章を、小宮自由氏の解説とともに紹介する連載「サトシ・ナカモトが残した言葉〜ビットコインの歴史をたどる旅」の15回目。
まずサトシのメールの前に、本連載の元になっている書籍『ビットコインバイブル:サトシナカモトとは何者か?』の著者フィル・シャンパーニュ氏の解説も掲載する。
フィル・シャンパーニュ氏の解説
この章の最初で、サトシは話をトランザクション プールに広げます。 18ヶ月間続いていることを打ち明けている。
サトシ・ナカモト 2008年11月17日 火曜日 13時33分04秒
それでは2008年11月17日 13時33分04秒のサトシのメールをみていこう。
-
Re:ビットコインピア・ツー・ピア
サトシ・ナカモト 2008年11月17日 月曜日 13時33分04秒 -0800
(注:斜体部分は、サトシ以外の人の質問を指す)
ジェームス・A・ドナルドは書きました:
サトシは書きました:
幸い、必要なのは、待機中の取引プールを現在の最良のブランチのために維持することだけです。
この時に必要なのは、良いふるまいをする誠実なピアがあって、その通信とデータが良好で、そのピアが、どれが現在の最良のブランチかを知っていることです。
つまり、ノードの方で必要となるのは、今持っている最善のブランチに対する待機中の取引プールだけです。そのブランチが、そのノードがブロック作成に取り組むブランチです。プールを必要とするのはこのブランチのためだけです。
プロードキャストはたぶん、ほぼ完全に信頼できるの置けるものになるでしょう 。
以上のメッセージが最低一度は届くと仮定するのではなく、メッセージの未着信が頻繁に起きても情報が必ず届くようにメカニズムを作る必要があります。
ピアネットワークのプロードキャストの仕組みは説明したと思います。
それぞれのノードは、新規ブロックのハッシュとブロックに含まれる取引のハッシュを集めた目録リストを、近隣のノードに送ります。近隣のノードは未受信の項目をリクエストします。最終的には、ほぼ全てのノードが全ての項目を保持しているので、一ヶ所からの受信に失敗しても、一度に一ヶ所ずつ試せば、他のノードから取得できます。
目録リクエストデータの構造によりちょっと待機時間が発生しますが、最終的には、通信キューから本来のデータブロックを外し、帯域幅を節約することにより、速度を上げます。
あなたにはそういう設計に関する基本構想があり、それは大きく前進しますが、しかし、悪魔が潜んでいるのは若干末な装飾です。
関数の詳細は論文*1ではカバーできていませんが、ソースコード主要なファイルをお送りしました(ご要望に応じてまとめて配布します。完成版のリリースはもうすぐです)。
サトシ・ナカモト
暗号学メーリングリスト
-
【訳注】
*1 ビットコイン論文のこと。
ま
ネットワークの混雑などが原因で、ノードにすべてのデータが速く渡らない場合があるのでは?もしあるノードに接続できなくても、他のノードに接続すればほぼ同じデータが手に入ります。 そのため、世界中にほとんどのノードのネットワークが脆弱である、というような特殊な場合(これまで一度も起こっていた)を除いて、ほとんどのノードに最新のデータはすぐに行きません。
小宮
ヘッダー画像/iStock:Dilok Klaisataporn
出典:https://www.neweconomy.jp/features/sato/286089