Deployment
Capped futures run on Solana mainnet and settle in real USDC. This page lists the deployment’s identities, so you can confirm that a transaction, a tool or an explorer link refers to it. The programs have not been audited.
Read these values from the futures API’s GET /v1/config when your code runs, and compare them with this page, instead of copying them into code. petri status checks them against the chain.
Chain and programs
Section titled “Chain and programs”| Field | Value |
|---|---|
| Cluster | Solana mainnet |
| Genesis hash | 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d |
| Futures program | Bvp9kiRtJ7dT8unxP4Da39gv2eXDLEHLpcDfzcEuRKMu |
| Oracle program | 45YCerssGjg2M29RFc9D4fAJh7dfFpMJ3ZcZtaTnRXRS |
| Governance controller | 8fhNi6QHU5TYNhoPDM4vs89ZBztnpxp3LnBXRgkBVKtx |
| USDC mint | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, 6 decimals |
| Futures API | https://api.amoeba.farm |
| Browser RPC gateway | https://api.amoeba.farm/rpc |
| Web app | https://amoeba.farm |
The treasury maker’s key, the Earn vault and the sponsor (the fee payer of sponsored transactions) are in /v1/config (treasury, sponsor) and /v1/earn (vault.address).
Markets
Section titled “Markets”Each index has one market per monthly expiry. GET /v1/markets lists the current markets, with each one’s address, oracle period, vault, grid and lot size; GET /v1/markets?all=1 adds the markets that have expired and left the list. A market takes trades only once its oracle period is Live.
Amoeba’s markets are created with a grid of 0 to 200 index points, one point per step, and k = 10,000 atoms: a lot pays $0.01 per index point. Each market’s own values are in its market account and in GET /v1/markets/:market (grid, k, stepValue, lotUsdPerPoint); read them from there.
Governance
Section titled “Governance”The oracle program and the futures program are both upgraded through the governance controller 8fhNi6QHU5TYNhoPDM4vs89ZBztnpxp3LnBXRgkBVKtx: it holds the upgrade authority of every Amoeba program on mainnet (each program’s upgrade authority is a target address of the controller). A council of five seats runs the controller, and three approvals pass a proposal, which then waits out a review period and a delay before it executes. There is no other upgrade key.
Every futures instruction passes the program’s governance gate as a read-only account, with the gate’s epoch. The program rejects the instruction if the gate is frozen or the epoch is stale. The futures API and Petri bind the current epoch before you sign, so a transaction prepared before a governance action may fail afterwards; prepare it again.
The same council creates markets and can settle a market whose oracle period has not settled, any time after its expiry. See Market lifecycle.
What the API reports
Section titled “What the API reports”GET /v1/config returns, among other fields:
| Field | Meaning |
|---|---|
cluster, genesisHash |
The chain the API serves. |
rpcUrl, wsUrl |
The deployment’s public RPC endpoints, or null. |
programs.futures, programs.oracle |
The futures and oracle programs. |
treasury |
The treasury maker’s trader key. |
usdcMint, usdcDecimals |
The USDC the markets settle in. |
sponsor |
The fee payer of sponsored transactions. |
governanceController |
The controller program and the programs it gates. |
oracleReleaseTag |
The oracle’s release profile. |
The oracle documents (/v1/oracle/*) carry a protocol object with the oracle’s programId, cluster, releaseTag and releaseCommit.
Petri’s default production profile uses this deployment: the futures API above and Solana’s public mainnet RPC, https://api.mainnet-beta.solana.com. It takes the program addresses from /v1/config and refuses an API that names another cluster, other programs or another controller than the ones on this page; a deployment manifest you pass with --deployment is used as given. Before it signs, it checks the RPC’s genesis hash and the programs. Petri needs a full RPC node, not the browser RPC gateway: see Use your own RPC. Its release for Solana mainnet is coming. See Petri CLI.
Testing on a local chain
Section titled “Testing on a local chain”This section is for developers. Nothing in it applies to trading on mainnet.
- Without spending anything on mainnet. Reads,
POST /v1/quote,POST /v1/tx/quote-prepareandPOST /v1/tx/preparesign nothing and move nothing: you can prepare a transaction, decode it and run your checks without submitting it.petri quoteprices an order the same way, and Petri’s oracle writes take--simulate. - Petri’s
devprofile.--profile dev(alsolocalnet),PETRI_PROFILE=devorpetri config set profile devpoints Petri at a local chain: the futures API athttp://127.0.0.1:4500and the validator’s RPC athttp://127.0.0.1:8899. It trusts the program addresses that API’s/v1/confignames, or a deployment manifest you pass with--deployment.--apiand--rpc(PETRI_API_URL,PETRI_RPC_URL) override those addresses as in production. A savedrpcorapisetting applies in every profile, so reset it when you switch.petri config reset profilereturns toproduction, andpetri config showandpetri statusshow which profile is in use. A development build of Petri starts in thedevprofile. - Development builds. Amoeba tests its programs, the futures API and Petri on its own local validator, with test USDC from its own mint. Only development builds have a test-USDC faucet: the API’s
POST /v1/faucetandpetri faucet. Release builds, the ones that run on mainnet, have neither: the route answers 404 and the command does not exist. A development build’s/v1/configreportscluster"localnet"and afaucetobject. - Legacy Earn pools. Before the Earn vault, the development chain had per-market Earn pools. The
poolandlpfields, thepoolWithdrawaction and thepool,poolDeposit,poolWithdrawandearnMigrateevents serve their exit there. Mainnet has no pools: those fields arenull, and the mainnet futures program refuses every pool instruction. - Keep the identities apart. A local chain has its own genesis hash and program addresses. Petri and the API check the genesis hash, so a tool set up for a local chain refuses mainnet and the other way round. Never reuse a local chain’s key files or settings for mainnet.

