Skip to content

Connect to Frost

Network name Frost
RPC URL {NETWORK.rpcUrl}
Chain ID 8141 ({NETWORK.chainIdHex})
Currency symbol ETH
Decimals 18
Block explorer {NETWORK.explorerUrl}
Block time 1 second
Block gas limit 60,000,000

Verify you are talking to the right chain:

Terminal window
curl -s https://rpc.frostfi.net -H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# → {"jsonrpc":"2.0","id":1,"result":"0x1fcd"}

0x1fcd is 8141.

Any EVM wallet can add Frost as a custom network using the parameters above, and it will work for reading balances, viewing tokens, and watching addresses.

It will not work for sending from a post-quantum account. A wallet that only speaks ECDSA cannot sign for an account whose authorisation is an ML-DSA signature — this is a property of the cryptography, not a missing feature. A secp256k1 EOA added to MetaMask can transact normally on Frost; it simply is not quantum-safe, which is the thing the chain exists to fix.

To spend from a post-quantum account, use an SDK.

{NETWORK.rpcUrl} is not a bare execution client. It is a Frost ingress: a service that handles submissions itself and proxies reads to an execution layer behind it. Two consequences matter.

Submission acknowledgement means ordered, not executed. When eth_sendRawTransaction returns a hash, your transaction has been accepted into consensus and will appear in a proposed block. It has not run yet. To find out what it did, wait for the receipt, exactly as you would anywhere else.

Submissions are validated at the gate. Before forwarding, the ingress simulates your transaction’s VERIFY frame under a bounded gas budget. A bad post-quantum signature is refused at submission with a reason, rather than being ordered and then silently skipped. This is a courtesy; the chain’s actual safety property is that every node skips invalid transactions identically.

Reads — the standard eth_, net_, and web3_ surface is proxied through and behaves as you expect: eth_getBalance, eth_call, eth_estimateGas, eth_getLogs, eth_getTransactionReceipt, eth_getBlockByNumber, and the rest.

Writeseth_sendRawTransaction only.

Refused by policyeth_sendTransaction, eth_sign, eth_signTransaction, eth_signTypedData. A public endpoint holds no keys, so there is nothing for these to sign with. Anything else outside the allowlist returns -32601.

Batched JSON-RPC is rejected. Send one request per call.

Frost extensions — a small frost_ namespace is available: frost_getSignatureSidecar, frost_getStrippedTransaction, and frost_historyStatus. See the JSON-RPC reference.

Frost is fee-blind. Ordering is decided by consensus and executed FIFO, so a priority fee buys nothing:

Terminal window
curl -s https://rpc.frostfi.net -H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_maxPriorityFeePerGas","params":[]}'
# → {"jsonrpc":"2.0","id":1,"result":"0x0"}

eth_gasPrice returns the base fee. Set maxFeePerGas high enough to cover the base fee for as long as you want the transaction to stay valid, and leave maxPriorityFeePerGas at zero.

Nodes retain different amounts of history by design — post-quantum signatures make storage a first-order cost, so no node holds everything. Ask before you assume:

Terminal window
curl -s https://rpc.frostfi.net -H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"frost_historyStatus","params":[]}'
{
"tier": "tx-history",
"headBlock": "0xdb703",
"earliestFullBody": "0xd8ff3",
"historyCutoff": "0x0",
"persistedState": "0xd8b18"
}

If you need older bodies than earliestFullBody, query a node serving a deeper tier. See History and storage.

  • Explorerhttps://explorer.frostfi.net
  • Faucethttps://faucet.frostfi.net
  • Swaphttps://swap.frostfi.net

See Ecosystem for what is deployed on chain, including the Multicall3 and CREATE2 factory predeploy addresses.