今回はDecredにおける、フルノード運用について解説していきます。
フルノードとは?
まず、Bitcoinなどにも共通するフルノードの役割について簡単な概要から
- ブロックチェーンの全履歴を持つノード(コンピュータ)の事です。
- トランザクション(取引)が不正なものではないか、二重支払いがないかなどを検証(チェック)します。
- 検証したブロックを更に他のノードへ伝播する事でネットワーク全体を安全に保ちます。
具体的に何をしている?
ブロックの検証: DecredではPoWによってブロック生成を行い、PoS(投票)によって承認する事で、トランザクションのファイナリティ(取引の確定)を行っています。
フルノードはそれらで確定したブロックに対して、両方のプロセスが正しく行われたかどうか、プロトコル(ルール)に沿った取引であるかの検証を行います。
検証によって正当なブロックであると認めると、自身の持っている履歴の最後にそのブロックを追加していきます。
ブロックの伝播: 中央集権サーバを持たない(P2P)ネットワークにおいて、自分自身だけがデータを持っているだけでは独りよがりとなり、ネットワークとして成立しません。
そこで、ノードは他のノードに対してデータを伝播させる事でネットワークを成立させています。
具体的にはゴシッププロトコルという仕組みを採用しており、ランダムに選んだ隣接ノードと情報を交換し、ゴシップ(噂話)のようにネットワーク全体へ伝播させていきます。
例えば、1つのノードから5つのノードへ伝播し、その5つがさらに他のノードに伝播…という事を繰り返す事で、素早く全ノードに最新のブロックやトランザクション情報が届ける事ができます。
検証を伴う伝播
先述の通り、フルノードは「不正なトランザクションが含まれていないか」「二重支払いではないか」など、受け取ったデータが正しいプロトコルに従っているかどうかを転送前に必ず検証します。
ブロック確定時に用いられた秘密鍵による署名を検証して、改ざんが行われていないかを確認した上で転送します。
また、UTXO(未使用トランザクション出力)を確認し、同じコインを二度使おうとしていないか、フルノードが持つ全履歴と照合します。
その他、DCP(Decredにおけるルール)に従っているか、正しいフォーマットを使用しているかなども合わせて検証します。
これらの仕組みにより、もし不正なデータが流れてきたとしても遮断を行い、データの横流しによってネットワーク全体がパンク(DoS攻撃)するのを防ぎます。
地理的な分散がネットワークの停止と不正な取引を防ぐ
Decredでは、正当な証明(PoWとPoSの合意)が積み重なったチェーンを信用するというルールが定められています。
そのため、ネットワーク全体に正しい取引が素早く行き渡れば行き渡るほど、悪意のある取引が拒否されやすくなります。
地理的に分散されたフルノードが増える事で、より早い伝播と止まらないネットワークを実現する事ができます。
PoWやPoSよりは目立たない存在ですが、フルノード運用者は縁の下の力持ちなのです。
実践編
フルノードの重要性が分かったところで、実際にDecredでフルノードを運用する為の手順を紹介していきます。
Umbrelアプリ『Decred Pulse』の登場で簡単に参入する事ができるようになりましたので、そちらも合わせて紹介します。
BitcoinやEthereumでのフルノード運営は要求されるハードウェア要件面(主に容量)で少し参入障壁が高いですが、DecredはPoW&PoSと優れたガバナンス構造のお陰(高効率なBlake3へのアップグレード等)で、データを効率的に管理しているため、一般的なPCや超小型のコンピュータ(Raspberry Pi等)でも参加が可能です。
システム要件
- Windows、Mac、Linux
- 最低2GB以上のRAM
- 50GB~のストレージ(2026年3月現在)
※ブロックチェーンサイズは今後も増加するため、余裕がある方が好ましいです。
VPSやクラウドではなく、自宅で運用する場合、追加で以下の要件を満たす必要があります。
- ルータにポート開放機能がある事(or UPnP)
- 安全に稼動させたままにできる場所
- (静音運用したい場合は)SSDまたはUSBドライブ
Debian(Linux)を利用したセットアップ
今回はDebianを使用して、セットアップをしていきます。
※CUI環境での紹介ですが、GUI環境の場合でも端末(ターミナル)を用いて同様の手順でセットアップ可能です。
本来であれば、wgetでdcrdをダウンロード、展開、初期設定などの手順を踏まないといけないのですが、以下のサイトにbashシェルスクリプトが配布されているため、とても簡単に参入ができます。
標準状態だと、curlコマンドがインストールされていないため、まずは下記コマンドでインストールします。
sudo apt install curl

上記サイトを参考に、Debianがインストールされた環境で以下のコマンドを実行します。
『Installaion complete!』と表示されればインストール完了です。
curl -fsSL https://node.dcr.pw | sudo bash

systemctlでdcrd(バックグラウンドプロセス)の稼働状況の確認、停止、再起動などができるようになります。
systemctl status dcrd

モニタリング
『decred.sh』でリアルタイムモニタ、『journalctl -u dcrd -f』で全ログの確認が可能です。
インストール直後の状態だと見れないので、ヒントに従って『adm』及び『systemd-journal』グループにユーザ(今回の場合はdecred-japan)を追加してあげる必要があります。

今回はusermodを使います。
sudo usermod -aG adm,systemd-journal decred-japan

そのままでは設定が反映されないので、一度exitでログアウトを行い、再度ログインする事で実行できるようになります。
以下のようにログが表示されるようになれば、後は同期が完了するまで放置するだけです(初回同期には数時間掛かります)
これであなたもDecredネットワークを支える、立派なフルノード運用者の一員です!
decred.sh

journalctl -u dcrd -f

ブロックチェーンデータの保管先を変更したい場合
自宅でRaspberry Piなどを用いて運用する場合、SDカードをOSが入るストレージとして使用するため、ブロックチェーンデータを保管するには容量が足りない場合があります。
OSが入ったドライブ以外(外付けHDDやSSD)に保存したい場合などは、VimやViといったテキストエディタを用いて『dcrd.conf』という設定ファイルで保存先のディレクトリを指定してください。
設定ファイルの場所は『/var/lib/decred』です。
『; datadir=~/.dcrd/data』の行をコメントアウトして、保存したいディレクトリに変更し、保存すれば完了です。
※設定変更時はsystemctlで一時的にdcrdを停止させる事をお忘れなく。
sudo vi /var/lib/decred/dcrd.conf

実はDecreditonを使えば、誰でも簡単に参加できる
Linuxやコマンドに慣れない方は、上記の手順はちんぷんかんぷんだと思います。
実はDecreditonを使えば、誰でも簡単にフルノードに参加する事が可能です。
それはインストール時にSVPウォレットを無効にするだけ。

既にSPVが有効の状態であっても、設定からSPVを『無効』にする事もできます。

ただ、フルノード運用者に求められるのは24時間365日、可能な限りコンピュータを稼働させ続ける事でブロックを検証し、周りのノードに伝え続ける事です。
なので、無理に行う必要はありませんが、興味がある方は参加してみてください。
