network="mainnet" to create_broker() (it’s also the SDK’s default if you don’t specify a network).
Network parameters
| Parameter | Value |
|---|---|
| Network name | 0G Mainnet |
| Chain ID | 16661 |
| Token symbol | 0G |
| Block explorer | chainscan.0g.ai |
| Ecosystem explorer | explorer.0g.ai |
| RPC endpoint | https://evmrpc.0g.ai |
Use a third-party RPC provider for production workloads (QuickNode, ThirdWeb, Ankr). The public endpoint is rate-limited.
Compute contract addresses
The SDK resolves these automatically from the chain ID — only needed if you call contracts directly.| Contract | Address |
|---|---|
| Ledger | 0x2dE54c845Cd948B72D2e32e39586fe89607074E3 |
| Inference Serving | 0x47340d900bdFec2BD393c626E12ea0656F938d84 |
| Fine-tuning Serving | 0x4e3474095518883744ddf135b7E0A23301c7F9c0 |
Connect from Python
Add to MetaMask
| Field | Value |
|---|---|
| Network name | 0G Mainnet |
| New RPC URL | https://evmrpc.0g.ai |
| Chain ID | 16661 |
| Currency symbol | 0G |
| Block explorer URL | https://chainscan.0g.ai |
Production checklist
Before sending real workloads to mainnet:- ✅ Run the same code paths on testnet successfully
- ✅ Switch to a paid RPC provider for higher throughput and reliability
- ✅ Set up monitoring on
broker.ledger.get_ledger()so you don’t run out of funds mid-flight - ✅ Consider auto-funding for unattended services
- ✅ Verify provider attestations with
verify_servicebefore sending sensitive prompts - ✅ Use persistent API keys instead of ephemeral session tokens for long-lived servers
Next steps
Testnet
Develop and test against the Galileo testnet first.
Account Management
Fund and manage your mainnet ledger.