Skip to content

Networks

The fifteen built-in networks, what a network fixes about an address, and why the service never contacts a chain.

Updated View as Markdown

Examples on this page use $API_URL. Set it once, with the /v1 prefix included — every route lives under it:

export API_URL=https://<your-api-host>/v1

The networks a workspace starts with

Every workspace’s registry is seeded from the same fifteen built-in networks:

Slug Network VM Chain ID
ethereum Ethereum evm 1
base Base evm 8453
bnbchain BNB Chain evm 56
arbitrum Arbitrum evm 42161
arbitrum-sepolia Arbitrum Sepolia evm 421614
optimism OP Mainnet evm 10
sepolia Sepolia evm 11155111
solana Solana svm 7565164
solana-testnet Solana Testnet svm 7565166
solana-devnet Solana Devnet svm 7565165
hyperevm HyperEVM evm 999
hyperevm-testnet HyperEVM Testnet evm 998
robinhood Robinhood Chain evm 4663
robinhood-testnet Robinhood Chain Testnet evm 46630
ink Ink evm 57073

These slugs are what every network selector and defaultNetwork accepts, and the set is fixed — there is no route that removes a network, so every one of them stays available for the life of the workspace.

A well-formed slug that is not one of them answers differently depending on where you sent it, and there is no single rule — check the route you are calling:

Where Unknown but well-formed slug
GET /v1/workspace/assets?network= 400 unsupported_network — passed to the signing engine, which refuses it
defaultNetwork on account creation 400 unsupported_network — same reason

A malformed value is rejected before it reaches the registry: the ?network= query selector answers 400 invalid_parameter, while a malformed defaultNetwork fails body validation with 400 invalid_body.

Use a testnet while you are integrating. sepolia and solana-devnet carry no real value, and every example in these docs uses ethereum only because it is the obvious name. A signature you build for ethereum binds to real mainnet.

The service signs, it never contacts a chain

TEE Docker custodies keys and signs. It does not call a chain RPC — there is no sending, no simulating, no balance read, and no per-workspace RPC endpoint to register. A network here fixes two things about an address:

  • Which chain a signature binds to — its chainId, and
  • Which signing scheme the address uses — evm secp256k1 or svm ed25519.

You take the signed payload — a message signature, a signed digest, or signed bytes — and broadcast it against your own RPC. The gas, nonce, and blockhash a transaction needs are yours to fill in before you ask the service to sign.

Because a network is chosen once, at account creation, through defaultNetwork, and never changed afterwards: the chain an address signs for is the address’s own. To sign for a different chain, hold an address on it — in practice, an account created with that defaultNetwork.

Reading the registry

GET /v1/workspace/networks lists the networks a workspace can sign for, each as { slug, name, chainId, vm }. It is read-only — there is no route that adds, removes, or repoints a network. Scope: read.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close