今回はDecredにおける、フルノード運用について解説していきます。
フルノードとは?
まず、Bitcoinなどにも共通するフルノードの役割について簡単な概要から
- ブロックチェーンの全履歴を持つノード(コンピュータ)の事です。
- トランザクション(取引)が不正なものではないか、二重支払いがないかなどを検証(チェック)します。
- 検証したブロックを更に他のノードへ伝播する事でネットワーク全体を安全に保ちます。
具体的に何をしている?
ブロックの検証: DecredではPoWによってブロック生成を行い、PoS(投票)によって承認する事で、トランザクションのファイナリティ(取引の確定)を行っています。
フルノードはそれらで確定したブロックに対して、両方のプロセスが正しく行われたかどうか、プロトコル(ルール)に沿った取引であるかの検証を行います。
検証によって正当なブロックであると認めると、自身の持っている履歴の最後にそのブロックを追加していきます。
ブロックの伝播: 中央集権サーバを持たない(P2P)ネットワークにおいて、自分自身だけがデータを持っているだけでは独りよがりとなり、ネットワークとして成立しません。
そこで、ノードは他のノードに対してデータを伝播させる事でネットワークを成立させています。
具体的にはゴシッププロトコルという仕組みを採用しており、ランダムに選んだ隣接ノードと情報を交換し、ゴシップ(噂話)のようにネットワーク全体へ伝播させていきます。
例えば、1つのノードから5つのノードへ伝播し、その5つがさらに他のノードに伝播…という事を繰り返す事で、素早く全ノードに最新のブロックやトランザクション情報が届ける事ができます。
検証を伴う伝播
先述の通り、フルノードは「不正なトランザクションが含まれていないか」「二重支払いではないか」など、受け取ったデータが正しいプロトコルに従っているかどうかを転送前に必ず検証します。
ブロック確定時に用いられた秘密鍵による署名を検証して、改ざんが行われていないかを確認した上で転送します。
また、UTXO(未使用トランザクション出力)を確認し、同じコインを二度使おうとしていないか、フルノードが持つ全履歴と照合します。
その他、DCP(Decredにおけるルール)に従っているか、正しいフォーマットを使用しているかなども合わせて検証します。
これらの仕組みにより、もし不正なデータが流れてきたとしても遮断を行い、データの横流しによってネットワーク全体がパンク(DoS攻撃)するのを防ぎます。
地理的な分散がネットワークの停止と不正な取引を防ぐ
Decredでは、正当な証明(PoWとPoSの合意)が積み重なったチェーンを信用するというルールが定められています。
そのため、ネットワーク全体に正しい取引が素早く行き渡れば行き渡るほど、悪意のある取引が拒否されやすくなります。
地理的に分散されたフルノードが増える事で、より早い伝播と止まらないネットワークを実現する事ができます。
PoWやPoSよりは目立たない存在ですが、フルノード運用者は縁の下の力持ちなのです。
実践編
後日追記予定。
