Event queries
The limitation. BOT Chain’s JSON-RPC page sayseth_getLogs is disabled on the public endpoints and recommends third-party endpoints. In our tests on 2026-10-01, eth_getLogs did answer on both public RPCs for bounded block ranges, such as 50,000 blocks. Queries from block 0 to the latest block timed out or returned a gateway error. Because BOT Chain documents the method as disabled, don’t build on it working in production.
Workarounds:
- Query in small block ranges, and keep your own record of the last block you processed.
- Use the BOTScan explorer API, which serves logs over HTTP. See Explorer API.
- Read the events without getLogs guide for frontend patterns.
- Uzo Index is planned to provide indexed events.
Transfer events from testnet USDT.
No WebSocket endpoint
The limitation. BOT Chain doesn’t publish a WebSocket URL, andwss:// versions of both RPC URLs failed to connect on 2026-10-01. You can’t use eth_subscribe for new blocks or events.
Workaround. Poll over HTTP. Viem’s watch actions poll automatically when the transport is http. Blocks arrive every 0.75 seconds, so a 1-second interval keeps you close to the head of the chain.
watch.js
Not in viem’s chain list
The limitation. You can’timport { botChain } from "viem/chains". Neither network is built in.
Workaround. Define the chain yourself with defineChain. A tested definition is in Build your first dApp. Or import botChain and botChainTestnet from the Uzo SDK.
Chain 968 is registered to another network
The limitation. In the public chain registry and on Chainlist, chain ID 968 belongs to a network called Datagram, not BOT Chain testnet. Wallets that look up chain details may warn you or offer the wrong values. Workaround. Add BOT Chain testnet to your wallet by hand. See Connect a wallet. Mainnet (677) is listed correctly.Standard Multicall3 address missing on testnet
The limitation. Many tools assume Multicall3 is at0xcA11bde05977b3631167028862bE2a173976CA11. That contract exists on BOT Chain mainnet but not on testnet.
Workaround. Use BOT Chain’s own Multicall3 at 0x47FA21f684bBAD707A53a0f9BE59F1422F46C265, which is deployed on both networks. Set it in your viem chain definition under contracts.multicall3.
No confirmed paymaster for BOT Chain
The limitation. BOT Chain’s EOA paymaster page describes a paymaster API and names NodeReal’s MegaFuel as an implementation. MegaFuel is documented as a BNB Chain service. We found no public paymaster endpoint confirmed for chain 677. Workaround. Use meta-transactions: the user signs a message and your relayer pays the gas. See Meta-transactions and Run a relayer.Osaka opcodes aren’t supported
The limitation. BOT Chain supports EVM features up to Prague. Contracts compiled for Osaka can fail with “invalid opcode”. Workaround. Setevm_version = "cancun" in Foundry or evmVersion: "cancun" in Hardhat. See Supported EIPs.
Errors in BOT Chain’s docs
BOT Chain’s docs are the source for anything they own, but a few details were wrong or out of date on 2026-10-01:Other things to watch for
- USDT has 6 decimals on BOT Chain, not 18. Use the official address from Contract addresses; other tokens named “USDT” exist on testnet.
block.prevrandaois not random. See Supported EIPs.
Related pages
Troubleshooting
Error messages and fixes.
Differences from Geth
How the RPC differs from standard Geth.
Uzo RPC
Planned: logs and WebSockets.
Explorer API
The main workaround for event queries.