10章ネットワーキング
ビットコインが動作するピアツーピアネットワークは、堅牢性を大いに高めてくれるものです。本書執筆時点で、65,000以上†1のノードがネットワーク上で実行され、常時通信しています。
[†1] [訳注]2020年9月時点で46,000程度です。
ビットコインネットワークは、ブロードキャストネットワークすなわちゴシップネットワークです。あらゆるノードが、それぞれの知っているさまざまなトランザクション、ブロック、ピアを取り次いでいます。プロトコルは豊富で、長年にわたり追加されてきた多数の機能を備えています。
ネットワーキングプロトコルについて注意すべき点の1つは、コンセンサスクリティカルではないということです。つまり他のプロトコルを使用して、あるノードから別のノードに同じデータを送信することができ、ブロックチェーン自体は影響を受けません。
このことを念頭に置いて、本章ではネットワークプロトコルを使用してブロックヘッダーを要求、受信、検証していきます。
10.1 ネットワークメッセージ
すべてのネットワークメッセージは図10-1のようになります。
最初の4バイトは常に同じで、ネットワークマジックと呼ばれます。通信は非同期で、断続的になることもあるため、マジックバイトはネットワークプログラミングでは一般的です。マジックバイトはメッセージの受信者に、通信が中断された場合(たとえば、携帯電話(端末)が切れた場合など)の再開すべき場所の目印となります。また、ネットワークの識別にも役立ちます。たとえば、ビットコインのノードをLitecoinノードに接続したくはありません。それゆえ、Litecoinノードはビットコインとは異なるマジックバイトです。ビットコインテストネットのマジック ...
Get プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.