Build
Connect, deploy, bridge
RPC endpoints, chain ID, the canonical bridge, and SDKs. Build government-grade and cross-border apps on the network.
Network params
Network params.
The connection details, in mono with copy buttons. Everything here is testnet pre-mainnet. The chain ID reads // confirm until it is set.
- Network
- OpenStateStack Testnet
- Chain ID
- // confirm — QUESTIONS_FOR_HUMAN.md
- RPC URL
- Currency
- OSS
- Explorer
- /explorer
Copy-pasteable, and clearly testnet.
The network is EVM-equivalent, so your existing tooling connects unchanged. Point an RPC client at the testnet endpoint and read the chain.
The bridge
The bridge.
A canonical bridge moves assets between Ethereum L1 and the network. Deposits and withdrawals follow the documented flow — the site never connects a wallet or signs on your behalf.
The canonical bridge.
How deposit and withdraw work between Ethereum and the network, the bridge contract address, and why nothing on this site initiates a transaction for you.
Read the bridge →
Deploy
Deploy.
The network is EVM-equivalent: Solidity contracts, bytecode, and tooling work unchanged. Deploy against the testnet RPC, then follow the full guide in the docs.
EVM-equivalent
Contracts that compile and run on Ethereum compile and run here. No rewrites, no custom compiler, no opcode surprises. The example below targets testnet.# Deploy a contract to the OpenStateStack testnet (testnet)
forge create \
--rpc-url $OSS_RPC_URL \
--private-key $DEPLOYER_KEY \
src/Registry.sol:RegistrySDKs
SDKs.
Standard Ethereum SDKs connect with no special client. Set OSS_RPC_URL to a testnet endpoint and read the chain.
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider(process.env.OSS_RPC_URL); // testnet
const height = await provider.getBlockNumber();
console.log(height);Connected. Now build.
Open the explorer to debug against live data, or read the full developer docs.