FDC Suite Setup
FDC verifies external data and supplies the FDC Client with attestation voting data. This guide uses fdc-suite-deployment for blockchain nodes, indexers, EVM verifier, and Web2 verifier.
Scope
FDC supports multiple attestation families:
| Source | Attestation examples | Deployment model |
|---|---|---|
| BTC / DOGE | Payment, AddressValidity, BalanceDecreasingTransaction, ConfirmedBlockHeightExists, ReferencedPaymentNonexistence | Chain node + UTXO indexer + verifier API |
| XRP | XRP payment/nonexistence and related payment checks | Ripple node + XRP indexer + verifier API |
| ETH / FLR / SGB | EVMTransaction | EVM verifier querying RPC nodes |
| Web2 | JsonApi style Web2 verification | Web2 verifier; currently network availability depends on Flare support |
FDC proofs are based on current states no older than 14 days, and proof data remains available after construction. Indexers should start from a block finalized about 14 days before initial startup.
Hardware
Full mainnet FDC suite on one host:
| Resource | Minimum |
|---|---|
| CPU | 16-32 cores/threads @ 2.2GHz |
| RAM | 64 GB |
| Disk | 4 TB NVMe |
| Docker | Docker 24+ |
| Compose | Docker Compose 2.18+ |
For production, consider splitting BTC, DOGE, XRP, ETH, Web2 verifier, and EVM verifier across multiple hosts. Web2 verifier is best isolated because heavy load can impact other components.
Step 1: Clone Repository
sudo mkdir -p /data/flare
sudo chown -R $USER:$USER /data/flare
cd /data/flare
git clone https://github.com/flare-foundation/fdc-suite-deployment.git
cd /data/flare/fdc-suite-deployment
git checkout 5cb3644
Step 2: Configure Chain Nodes
BTC
cd /data/flare/fdc-suite-deployment/nodes-mainnet/btc
./generate-password.sh
Save the generated RPC password and append the generated rpcauth line to bitcoin.conf if the script does not do it automatically in your workflow.
DOGE
cd /data/flare/fdc-suite-deployment/nodes-mainnet/doge
./generate-password.sh
XRP
The default XRP config normally needs no authentication changes, but review nodes-mainnet/xrp/rippled.conf before exposing ports.
ETH
cd /data/flare/fdc-suite-deployment
openssl rand -hex 32 > nodes-mainnet/eth/jwt.hex
chmod 600 nodes-mainnet/eth/jwt.hex
The repository node compose files may expose standard RPC ports by default. Review every ports: block and restrict access with firewall rules before starting services.
Step 3: Configure Verifiers
cd /data/flare/fdc-suite-deployment
cp .env.example .env
chmod 600 .env
Key variables:
BTC_NODE_URL=http://172.17.0.1:8332
BTC_NODE_USERNAME=admin
BTC_NODE_PASSWORD=generated_btc_password
DOGE_NODE_URL=http://172.17.0.1:22555
DOGE_NODE_USERNAME=admin
DOGE_NODE_PASSWORD=generated_doge_password
XRP_NODE_URL=http://172.17.0.1:51234
FLR_NODE_URL=http://YOUR_FLARE_NODE:9650/ext/bc/C/rpc
SGB_NODE_URL=http://YOUR_SONGBIRD_NODE:9650/ext/bc/C/rpc
ETH_NODE_URL=http://YOUR_ETH_NODE:8545
BTC_START_BLOCK_NUMBER=block_finalized_about_14_days_ago
DOGE_START_BLOCK_NUMBER=block_finalized_about_14_days_ago
XRP_START_BLOCK_NUMBER=ledger_finalized_about_14_days_ago
TESTNET=false
VERIFIER_API_KEYS=strong_key_for_fdc_client,second_key_if_needed
BTC_DB_PASSWORD=random_password
DOGE_DB_PASSWORD=random_password
XRP_DB_PASSWORD=random_password
WEB2_IGNITE_API_KEY=your_ignite_api_key_if_used
WEB2_SOURCE_IDS=Ignite
If FDC chain nodes and verifiers run on the same Docker host, Flare's deployment README suggests 172.17.0.1 as a practical way for verifier containers to reach host-exposed node RPC ports.
Generate concrete configs:
./generate-config.sh
Re-run ./generate-config.sh after every .env change.
Step 4: Start Blockchain Nodes
Start only the nodes you need on the current server. Example:
cd /data/flare/fdc-suite-deployment/nodes-mainnet/btc
docker compose up -d
cd /data/flare/fdc-suite-deployment/nodes-mainnet/doge
docker compose up -d
cd /data/flare/fdc-suite-deployment/nodes-mainnet/xrp
docker compose up -d
cd /data/flare/fdc-suite-deployment/nodes-mainnet/eth
docker compose up -d
Wait until each node is synced before starting dependent indexers and verifiers.
Step 5: Start Verifiers
cd /data/flare/fdc-suite-deployment/verifiers/btc
docker compose up -d
cd /data/flare/fdc-suite-deployment/verifiers/doge
docker compose up -d
cd /data/flare/fdc-suite-deployment/verifiers/xrp
docker compose up -d
cd /data/flare/fdc-suite-deployment/evm-verifier
docker compose up -d
cd /data/flare/fdc-suite-deployment/web2-verifier
docker compose up -d
You do not need to deploy every component on the same host. For example, if you already operate a trusted Bitcoin RPC node, configure BTC_NODE_URL and start only the BTC indexer/verifier stack.
Step 6: Health Checks
Check containers:
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
Follow logs:
cd /data/flare/fdc-suite-deployment/verifiers/btc
docker compose logs -f
cd /data/flare/fdc-suite-deployment/evm-verifier
docker compose logs -f
FDC verifier health endpoints follow this pattern:
curl -H "X-API-KEY: $VERIFIER_API_KEY" \
http://VERIFIER_HOST:VERIFIER_PORT/verifier/btc/health
Replace btc with the relevant verifier chain such as doge, xrp, or eth, depending on the service route exposed by your verifier.
Step 7: Connect FDC Client
After verifier APIs are reachable, put their URLs and API keys into /data/flare/flare-systems-deployment/.env:
PROTOCOL_X_API_KEY_200=strong_fdc_client_api_key
BTC_PAYMENT_URL=http://fdc-btc-verifier.internal:PORT/verifyFDC
BTC_PAYMENT_API_KEY=strong_key_for_fdc_client
ETH_EVMTRANSACTION_URL=http://fdc-evm-verifier.internal:9800/verifyFDC
ETH_EVMTRANSACTION_API_KEY=strong_key_for_fdc_client
Then regenerate and restart the FSP stack:
cd /data/flare/flare-systems-deployment
./populate_config.sh
docker compose up -d fdc-client system-client
Updates and Reindexing
cd /data/flare/fdc-suite-deployment
git fetch --tags origin
git log --oneline -5 origin/main
./generate-config.sh
Read RELEASES.md before updating. Some FDC suite releases require database migration or full reindexing. For major verifier/indexer changes, prepare a parallel deployment and switch the FDC Client URLs after the new stack catches up.