Skip to content

Deployment

Environments

Local, Fuel testnet, and Fuel mainnet use separate contract IDs, native asset IDs, D1 databases, R2 buckets, oracle keys, and Cloudflare Worker environments. Mainnet transaction controls remain disabled in both API configuration and UI until release approval.

Current testnet deployment

config/deployments.json is canonical. The currently referenced fresh deployment supports valueless test transactions. Its configuration flag remains disabled so deployment tooling cannot treat it as a release-ready network. It uses:

  • TestAssets: 0x56e00d1b27528cbaf0050ebd8e7fe85280eeb3562fa1a9a88e2e3cd9799e3db5
  • Vault: 0x24bdab8bfd9c99a90c71e07da9b0ba2f706914d5b3d84b05fd01872725dc64c5
  • BondMarket: 0xe1ecc493140246212a41a307001ad0e32470e322770dbad6f194fc2b7e27d009
  • tFUEL: 0x375178f2c1ef7f63524e6693c5ef44a0738a787ca6a392e08ccd021d9ce5bcd2
  • tstFUEL: 0x3a48ed1a9fcbff66ea96c87491922e183332cbfe8ec6ffb42c6b2427ba6f92d7
  • tUSDC: 0xac438b82334cc5649d48816fc33908df51d3e274204d051948a8df5bfd8069f5
  • Deployment block: 0x45dc13b
  • Verified reserve: exactly 1_000_000_000_000 raw tUSDC
  • Configuration status: enabled: false

The app, Oracle Worker, API Worker, and indexer reference these IDs. Older immutable testnet contracts remain on-chain but are no longer referenced. See testing status for completed and pending smoke tests.

Testnet order

  1. Run bun run contracts:test and bun run test:integration with the Fuel SDK-compatible toolchain (forc 0.68.1, fuel-core 0.43.1).
  2. Generate isolated deployment wallets with bun run wallets:generate. Secrets remain in ignored .secrets/ files and testnet keys are never reused on mainnet.
  3. Fund only the testnet deployer with base ETH from the official Fuel faucet.
  4. Run bun run contracts:deploy:testnet. It deploys valueless tFUEL, tstFUEL, and tUSDC, then Vault and BondMarket, initializes both, and deposits exactly 1,000,000 tUSDC into the Vault reserve.
  5. Verify the reserve balance and generated contract/asset IDs before enabling the app.
  6. Configure the Oracle Worker with the O2 testnet feed 0x7ab771b983bec88a0f7296f55d67e033cdfd40d114fe0f26f3bf1534cfbabf35 and its live fFUEL source asset 0x43eebd58e837c2e8fa94f1b2db1268175c551b5b1bf41a59fafc4f2c69ab7dc2. Keep the destination FUEL_ASSET_ID set to Fuel Earn tFUEL; these IDs are intentionally different. Configure the API Worker, then enable the direct wallet-to-contract test-asset faucet.
  7. Run deposit, transfer, list, cancel, buy, early-unbond, maturity, pause, and reconciliation smoke tests.

Local oracle verification

bun run test:oracle:live validates current testnet and mainnet O2 events. Run bun run worker:oracle for the signed testnet Worker, or bun run worker:oracle:mainnet for unsigned local mainnet price reads. The mainnet profile uses feed 0x2f809dbbcf785b897fbdb2f68bd405574e89deac9edbd2104e7e32cc6a5d75f7 and native FUEL 0x27821a5432b60fb3e70c64d0a612c2c86218c1088dd0f0f1b0dd6ae5ae17bd5b. It intentionally omits a Vault ID, domain, and signer, so /oracle/quote returns unavailable.

Mainnet gate

Do not deploy or enable valuable deposits without:

  • independent Sway audit
  • full Fuel-node integration suite
  • official FUEL/stFUEL/USDC IDs
  • approved stFUEL exchange-rate source
  • funded USDC obligations
  • strategy allowlist and coverage policy
  • manager multisig and signer rotation drill
  • legal approval
  • monitoring and incident runbook

Never reuse testnet private keys or database contents on mainnet. The test-assets contract and its valueless assets must never be deployed or accepted on mainnet.

Managed custody · Testnet preview · Audit pending