Devnet quickstart
This page is for running your own local devnet / validator infrastructure. To
build against the live Gora testnet you don’t need any of this — see
Connect to the testnet. URLs like
https://YOUR-NODE-URL below are placeholders for your own tunnel or reverse
proxy (ngrok, Caddy, or any HTTPS tunnel works).- A VM runs Gora Devnet, local chains, and a public tunnel (ngrok, Caddy, or any HTTPS tunnel).
- Your local computer runs the Gora CLI and app code.
- The local CLI points at the Gora public tunnel URL.
- Contract metadata comes from Gora Devnet, not from VM-only files.
Devnet Testing
Use this role split when testing the distributable validator binary with real DevNet operators, funded GORA, and developer-owned callback apps.Validator operators
Each validator receives one release or tester archive from the launch packet. They should verify the checksum, extract it on their VM, and run setup with their own wallet and public validator URL:config/devnet.validator-profile.json so it has the real DevNet RPC URL,
bootstrap peers, staking contract/program/app, and GORA token identifier for
the chain where this validator will stake.
validator/funding-request.json to the admin. That file
contains the staking owner address, required GORA amount, native fee token
requirement, chain target, and any preconditions. Solana validators may need an
associated token account for the GORA SPL mint. Algorand validators must opt
into the GORA ASA before the admin can fund the wallet.
After the wallet is funded and the registration transaction is signed, the
validator finalizes and starts:
Smart contract and off-chain app developers
Developers deploy their chain callback contract/program/app first, then deploy the Gora off-chain app that fetches or transforms data and emits the callback intent. For a starter callback app:--chain solana or --chain algorand for those callback targets. The
generated app returns chain_callback.operation.target and
chain_callback.operation.params objects, plus an operation_schema, so
submitters can route the callback without relying on positional arguments.
For the BTC/USD oracle callback path, follow
Serve smart contracts: oracle callbacks. In live DevNet
testing, fixtures must use command-mode submitters so Base, Solana, and
Algorand callbacks land as real transactions.
Admin and GORA funding
The admin owns the launch packet and funding checklist. Start from:- Confirm the archive checksum in
tester-send-manifest.csv. - Confirm the validator public URL is externally reachable.
- Confirm the staking owner and chain target in the funding CSV.
- Send the required GORA amount to that staking owner on the correct chain.
- Send enough native fee token for registration and staking.
- For Solana, create or fund the GORA SPL associated token account if needed.
- For Algorand, wait for the validator to opt into the GORA ASA before sending GORA.
ready_for_devnet: true,
manual_gates_cleared: true, and no remaining manual gates before moving from
DevNet testing to testnet.
A. Start Devnet on the VM
On the VM where the Gora repo, local chains, and your tunnel live:- Gora dev HTTP API
- Dev Bridge for mobile approval/signing
- Base/Ganache local RPC
- Solana local validator
- Algorand localnet
- public tunnels (ngrok by default; Caddy or any HTTPS tunnel works)
- contract metadata registry
tmux if you want to detach:
http://127.0.0.1:8787. Mobile apps on another machine read the same requests through https://YOUR-BRIDGE-URL.
Stop processes started by the helper:
B. Configure your local app
For the no-mobile price oracle, use the schedule commands in Serve smart contracts: oracle callbacks. On your local computer, create an app:C. Resolve chain contract metadata
For apps that target Base, Solana, or Algorand, link chain metadata before deploying the Gora app package. First run doctor:--node form calls GET /v1/contracts/{chain} and records the deployed address, program id, or Algorand app id in .gora/contracts/<chain>/latest.json.
For Algorand, this is the important distinction:
- local developers use
--node https://YOUR-NODE-URL - VM operators may use
--datadir /path/to/Node
--datadir from a local computer unless that computer is running the Algorand localnet.
D. Build, validate, package, deploy
gora deploy uploads:
- app artifact
- manifest
- policy
- package metadata
- linked contract metadata
E. Invoke
Use the generated fixture:request_id.
If your app result includes a chain field, Devnet may attach contract_metadata to the invoke or result response. Use that metadata for app ids, program ids, addresses, RPC URLs, and auth hints.
F. Inspect
What success means
A successful invoke means:- Devnet found your deployed app.
- Devnet ran the declared artifact.
- Your app returned valid JSON.
- Gora recorded the result and attestation data.