Dara Docs
ReferenceDeployment

Testnet deployment and end-to-end test

Stages 28–29. Runs the platform on the public Testnet in the launch layout (owner decisions of 2026-10-31, ../decisions/OWNER_DECISIONS_20261031.md): one human signer for the issuer and the cold Treasury, online keys in Vault Transit, our own two RPC nodes, GOLD only, 8 AUTO and 3 GOV channels.

Separation from everything else

ItemTestnet
Issuer, Treasury and channel accountsCreated on Testnet only by dara bootstrap-local with Friendbot funding (refused on Mainnet)
Human signerA Testnet-only key in a key file (TESTNET_HUMAN_KEYS_FILE, lines H1=S… and T1=S…); never a Mainnet key. signer.KeyfileHumans refuses Mainnet
Online keysVault/OpenBao Transit with PREFIX=dara-testnet- (deploy/vault/setup-transit.sh), exactly as production
DatabaseIts own PostgreSQL database, never shared
Asset identityA throwaway Testnet GOLD issuer per run
stellar.tomlNo public domain exists yet (Q-13). STELLAR_TOML_TEST_RESOLVE=<domain>=<host:port> makes activation fetch the issuer's stellar.toml over HTTP from our own scan API; config refuses it unless STELLAR_NETWORK=testnet and APP_ENV=test. The real HTTPS fetch is checked on the Mainnet canary
ConfigurationSTELLAR_NETWORK=testnet, APP_ENV=test, ISSUER_SIGNERS = TREASURY_SIGNERS = the Testnet signer's public key, STELLAR_RPC_NODES = our two nodes

Our RPC nodes

Each node is stellar-rpc with captive core (the binary and core ship in the Quickstart image). On this host rootless container networking stalled the large history-archive downloads, so the nodes run on the host network with their own ports:

stellar-rpc --network testnet --endpoint 127.0.0.1:8100 --admin-endpoint 127.0.0.1:8110 \
  --captive-core-config-path captive-core.cfg   # PEER_PORT=11735
  --captive-core-storage-path core --stellar-captive-core-http-port 11736 \
  --stellar-captive-core-http-query-port 11738 --db-path rpc.sqlite

The second node uses different ports (8101, 8111, peer 11745, 11746, 11748). The first sync downloads Testnet's bucket list from the SDF history archives (a few GB, about 1 MB/s here); a second node can start from a copy of the first node's core/ directory.

Procedure

  1. Start the two nodes; wait for getHealth = healthy on both.
  2. Vault: VAULT_ADDR=… VAULT_TOKEN=<admin> PREFIX=dara-testnet- deploy/vault/setup-transit.sh → signer token file.
  3. dara migrate, dara keys (online public keys from Vault), dara bootstrap-local with BOOTSTRAP_ASSETS=GOLD, BOOTSTRAP_CHANNELS=8, BOOTSTRAP_GOV_CHANNELS=3, BOOTSTRAP_HOME_DOMAIN=<test domain>: issuer, COLD, HOT, sponsor, funder and 11 channels in the launch layouts; the manifest is written.
  4. dara all and dara scan-api: startup verification of every account against the manifest must pass.
  5. dara demo with DEMO_HOME_DOMAIN=<test domain>: the scripted end-to-end below, with the Testnet signer signing each proposal after decoding and checking it, and uploading the signed envelope as the CLI would.

End-to-end test

#StepExpected
1Create GOLD, register the ceremony's issuer, unit definition, activateACTIVE; activation re-verified the issuer layout and fetched stellar.toml
2Backing snapshot, four-eyesEFFECTIVE
3ISSUE to COLD (one signature)Supply on Dara Scan = issued; COLD = issued
4REFILL to HOT (one signature)HOT = refill
5Customers register, KYCSponsored accounts with authorized trustlines
6BUY, SELL, TRANSFERExact amounts; orders COMPLETED
7Freeze, two-officer unfreezeTrustline revoked then re-authorized on-chain
8BURN from COLD (one signature)Supply falls by the burn
9Clawback (one signature)Supply falls
10Reconciliation, Dara ScanPASS for every check; Scan shows issuer master weight 0, clawback enabled

Status 2026-10-31: tooling, configuration and runbook ready; the run has not completed yet (our first Testnet node was still downloading the bucket list). Record results in ../testing/evidence/TESTNET_E2E_<date>.md.

On this page