Sign inSign up

reddev2020/zavax-oracle-node

By reddev2020

•Updated 3 months ago

An oracle that bridges Zcash block data onto an Avalanche L1.

Image
Integration & delivery
0

127

reddev2020/zavax-oracle-node repository overview

⁠ZavaX Oracle Node

AvalancheGo v1.14.0 + the redbridge-oracle custom Snowman VM plugin (bridges Zcash block data onto an Avalanche subnet via Warp messaging), pre-baked into the official avaplatform/avalanchego image.

  • VM name: zavaxbridge
  • VM ID: v3m4wPxaHpvGr8qfMeyK6PRW3idZrPHmYcMTt7oXdK47yurVH
  • Plugin binary is already installed at the correct path — no manual plugin setup needed.

⁠Prerequisites

MinimumRecommended
CPU8 vCPU16 vCPU
RAM16 GB32 GB
Storage1 TB NVMe SSD2 TB NVMe SSD
Network200 Mbps, static/reserved public IP1 Gbps

⁠Quick start

docker pull reddev2020/redbridge-oracle-node:v1.0.0
docker run -d --name avago4 \
  -e AVAGO_NETWORK_ID=fuji \
  -e AVAGO_HTTP_HOST=0.0.0.0 \
  -e AVAGO_HTTP_PORT=9650 \
  -e AVAGO_STAKING_PORT=9651 \
  -e AVAGO_TRACK_SUBNETS=2d6dKcxZuLbP4uHa3KY64DuZNk2q7GpX2FqnGdtQyu4tqXgjft \
  -e ZAVAX_CHAIN_ID=2TrCrta1d2vgipS4okDzybWk42qTDFmACQ2Jyx3pgKdxqhDJSJ \
  -e ZCASH_RPC_ENDPOINT=http://127.0.0.1:8232 \
  -e ZCASH_RPC_USER= \
  -e ZCASH_RPC_PASSWORD= \
  -e ZCASH_CONFIRMATION_DEPTH=24 \
  -p 9657:9657 \
  -p 127.0.0.1:9650:9650 \
  -v /mnt/blockstorage/.avalanchego-node1:/data \
  reddev2020/redbridge-oracle-node:v1.0.0

If you change AVAGO_HTTP_PORT/AVAGO_STAKING_PORT from their defaults, update both the -e value and the matching -p mapping — the two are independent flags and Docker won't reconcile them for you.

⁠Ports

PortPurposePublish policy
9650/9650*AvalancheGo HTTP RPC (VM served under /ext/bc/<chainID>/rpc)Do not expose publicly. Bind to 127.0.0.1 and put a reverse proxy in front for production.
9651/9651*AvalancheGo P2P / stakingMust be reachable from the internet for validators.

* Defaults are 9650/9651; the example above remaps them to 9656/9657.

⁠Environment variables

AvalancheGo reads any CLI flag as --flag-name -> AVAGO_FLAG_NAME (dashes -> underscores, uppercased) — any flag from the AvalancheGo config reference (https://docs.avax.network/nodes/configure/configs-flags⁠) works this way, not just the ones below.

VariablePurposeDefault
AVAGO_NETWORK_IDNetwork to join: fuji, mainnet, or a numeric local IDfuji
AVAGO_HTTP_HOSTRPC bind address0.0.0.0 (rebind to 127.0.0.1 on the host via -p 127.0.0.1:PORT:PORT)
AVAGO_HTTP_PORTAvalancheGo RPC port9650
AVAGO_STAKING_PORTAvalancheGo P2P/staking port9651
AVAGO_TRACK_SUBNETSSubnet ID(s) this node tracks/validatesFuji redbridge-oracle subnet
ZAVAX_CHAIN_IDBlockchain ID whose VM config.json to generate(unset = skip config generation)
ZCASH_RPC_ENDPOINTZcash JSON-RPC URLhttp://127.0.0.1:8232
ZCASH_RPC_USERZcash RPC username(empty)
ZCASH_RPC_PASSWORDZcash RPC password(empty)
ZCASH_CONFIRMATION_DEPTHConfirmations required before a height can be bridged24

The entrypoint writes these Zcash-related values into $AVAGO_DATA_DIR/configs/chains/$ZAVAX_CHAIN_ID/config.json before starting AvalancheGo. If you'd rather manage that file yourself, leave ZAVAX_CHAIN_ID unset and mount your own config.json into the volume.

Switching networks: AVAGO_TRACK_SUBNETS and ZAVAX_CHAIN_ID above are the Fuji subnet/chain IDs — they won't resolve on mainnet. If deploying to mainnet, override both together (don't just flip AVAGO_NETWORK_ID), and start from a fresh volume — a data dir bootstrapped against Fuji genesis can't be reused for mainnet.

⁠Persistence

/data is the AvalancheGo data directory — staking keys, DB, chain/subnet configs all live there. Always mount a volume:

-v /mnt/blockstorage/.avalanchego-node1:/data

Back up /data/staking (staker.key + signer.key) — losing it means losing the validator's NodeID and having to re-onboard as a validator.

To reuse an existing (non-Docker) AvalancheGo data directory, stop that process first (a DB can't be held open by two processes at once), then bind-mount it in directly — the container will pick up the same NodeID and state.

⁠Verify it's running

# Primary Network bootstrapped
curl -s -X POST --data '{"jsonrpc":"2.0","id":1,"method":"info.isBootstrapped","params":{"chain":"P"}}' \
  -H 'content-type:application/json' http://127.0.0.1:9650/ext/info

# redbridge-oracle chain serving RPC
curl -s -X POST --data '{"jsonrpc":"2.0","id":1,"method":"info.isBootstrapped","params":{"chain":"2TrCrta1d2vgipS4okDzybWk42qTDFmACQ2Jyx3pgKdxqhDJSJ"}}' \
  -H 'content-type:application/json' http://127.0.0.1:9650/ext/info

⁠Post-install checklist

  • info.isBootstrapped returns true for chain P
  • info.isBootstrapped returns true for the redbridge-oracle blockchain ID
  • NodeID and staking cert backed up
  • HTTP RPC port is not reachable from the public internet
  • Staking port is reachable from the public internet
  • --track-subnets includes the redbridge-oracle subnet ID

Tag summary

Content type

Image

Digest

sha256:19ee9d886…

Size

86 MB

Last updated

3 months ago

docker pull reddev2020/zavax-oracle-node:v1.0.0