Skip to main content
Find the error you’re seeing, then read its cause and fix. We captured most messages from BOT Chain’s RPC or the named tool on 2026-10-01. The two nonce errors are standard Geth messages that we didn’t reproduce. Search the page for a few words of your error.

Transactions

Cause: The sending account doesn’t hold enough BOT (or tBOT) to pay for gas plus any value sent.Fix: Check the balance with cast balance --ether YOUR_ADDRESS --rpc-url https://rpc.bohr.life. On testnet, claim tBOT from the faucet. Make sure you’re sending from the account you funded.
Cause: You sent a transaction with a nonce that the account has already used. This often happens when two scripts send from the same account at once, or after you reset a local wallet.Fix: Let your library pick the nonce, or read it with cast nonce YOUR_ADDRESS --rpc-url https://rpc.bohr.life.
Cause: A pending transaction already uses this nonce, and the new one doesn’t pay enough more to replace it.Fix: Wait for the pending transaction to confirm. Blocks arrive every 0.75 seconds, so this rarely takes long. To replace it, raise the priority fee.
Cause: You set a gas price or priority fee below 20 gwei, the minimum the network accepts. The first message comes from legacy transactions, the second from EIP-1559 transactions.Fix: Remove the hard-coded fee and let your tool read it from the network, or set it to at least 20 gwei. See Gas and fees.
Cause: You sent a blob transaction in the EIP-7594 (PeerDAS) format. BOT Chain accepts only the original EIP-4844 format.Fix: With Foundry, add --eip4844 to cast send --blob. See Blob API.
Cause: Your contract was compiled for an EVM version newer than BOT Chain supports, such as Osaka.Fix: Set the EVM version to cancun and redeploy. See Supported EIPs.
Cause: Your app read state before the transaction was included, or it read from a cached value.Fix: Wait for the receipt before reading. For value transfers, wait for the finalized block. See Consensus and finality.

Contracts and reads

Cause: This viem error means there is no contract code at the address on the network you’re reading from. Usually the address is wrong, or the contract is on the other network.Fix: Open the address on BOTScan testnet and BOTScan mainnet to see where it lives. Check that your client’s RPC URL matches that network.
Cause: You called multicall in viem, and your chain definition has no Multicall3 address.Fix: Add contracts.multicall3.address set to 0x47FA21f684bBAD707A53a0f9BE59F1422F46C265 to your defineChain call. The standard 0xcA11...CA11 address is not deployed on testnet. See Build your first dApp.
Cause: USDT on BOT Chain has 6 decimals, and your code assumed 18.Fix: Read decimals() from the token contract instead of hard-coding it. Use the official address from Contract addresses, because other tokens named “USDT” exist on testnet.
Cause: The verifier settings don’t match BOTScan, or the compiler settings differ from the ones you deployed with.Fix: Use --verifier blockscout and --verifier-url https://scan.bohr.life/api/ (with the trailing slash), and the same compiler version, optimizer settings and EVM version you deployed with. See the quickstart.

RPC

Cause: BOT Chain documents eth_getLogs as disabled on the public RPCs. Bounded ranges answered in our tests, but large ranges time out.Fix: Query in chunks of a few thousand blocks, or read logs from the Explorer API. See Known limitations.
Cause: You called eth_subscribe, or your library tried to open a subscription. BOT Chain has no public WebSocket endpoint.Fix: Poll over HTTP. In viem, use an http transport and the watch actions, which poll automatically.
Cause: You created a filter with eth_newFilter or eth_newBlockFilter. The public RPC seems to spread requests across several nodes, so the next request often reaches a node that doesn’t know the filter.Fix: Don’t use filters. Track the last block you processed and poll for new blocks.
Cause: The public RPCs don’t expose the debug or trace namespaces (error code -32601).Fix: Use BOTScan to inspect a transaction, or run your own node with these APIs enabled. See BOT Chain’s node types page.
Cause: Chain ID 968 is registered to a network called Datagram on Chainlist and in the public chain registry. Wallets that look up chain details can show the wrong name or RPC.Fix: Add BOT Chain testnet by hand with the values in Networks.

Wallets and faucet

Cause: The claim is still processing, you’re looking at the wrong network, or you’ve already claimed in the last 24 hours.Fix: Check that your wallet is on BOT Chain testnet (chain 968). Look up your address on BOTScan testnet. See Get testnet tokens.
Cause: BOTScan and the faucet display the testnet token’s symbol as BOT.Fix: Nothing to fix. It’s tBOT, with no real-world value. These docs call it tBOT to keep the networks apart.

Templates

Each template’s errors are listed next to the steps that cause them:

Still stuck?

Check Known limitations and the FAQ. If you think the docs are wrong, open an issue.
Last modified on October 3, 2026