For developers / Start here

Network parameters

The constants, in one table each.

Identity

ParameterValue
Chain namePickle Chainthe brand, the chain, the token and the name service all say Pickle
NetworkPickle Chain Testnetthe network this reference documents. Its state may be reset without notice, and test ETH and test PKL have no monetary value
Chain ID782700x131be - a compile-time constant, enforced on every transaction: an envelope signed for another chain is rejected at admission. The whitepaper's 78271 is the mainnet figure
JSON-RPC over HTTPShttps://rpc.picklechain.xyzno key, no account, no header beyond a content type
JSON-RPC over WebSocketwss://rpc.picklechain.xyz/ws/the /ws path is required; an upgrade at the bare origin answers 405. Both /ws and /ws/ work. eth_subscribe, pickle_subscribe and ordinary calls; see Subscriptions
Explorerhttps://explorer.picklechain.xyzthe archive the node is not: every block, receipt, log and account, kept past the node's own window
Faucethttps://faucet.picklechain.xyztest ETH and test PKL against a pasted address, one claim per address every 24 hours
MCP serverhttps://mcp.picklechain.xyz/mcpfor AI agents: streamable HTTP, read-only, no key; see AI agents (MCP)
Gas tokenETHpermanently. PKL is never required to transact
Currency decimals18

The chain ID is a compile-time constant and is checked on every transaction: an envelope signed for another chain is rejected at admission with chain id, not accepted and then dropped.

Cadence

These are scheduling targets, not guarantees

Both figures below are intervals the block producer aims for. Neither is a latency guarantee, and neither is a throughput figure - the sealer skips a late tick rather than catching up, so a target describes a cadence and not a promise. This documentation publishes no throughput figure.

StageTarget
Mini-block~10 ms scheduling targeta signed batch of transactions and receipts, constituting a preconfirmation. Sealed by a dedicated OS thread that skips a late tick rather than catching up. MINIBLOCK_MS
EVM block~250 ms scheduling targetan Ethereum-shaped block wrapping the mini-blocks of the interval, constituting a confirmation for wallets and explorers. EVM_BLOCK_MS, which refuses any value below 50
Executionimmediateeth_sendRawTransaction blocks until the transaction has executed; it does not merely enqueue. The seals above are when the result becomes visible as a preconfirmation and then as a confirmation
Finalityafter L1 settlementa block is final when the data needed to re-derive it has been committed to Ethereum and that commitment is itself final. One commitment per 60 s scheduling target

Execution and gas

ParameterValue
Execution hardforkCancunpinned as revm SpecId::CANCUN, not operator-tunable - a revm upgrade cannot silently re-price gas under an already-settled chain
Block gas limit30,000,000also the per-transaction ceiling: a transaction that cannot fit a block is rejected at admission
Base fee0the EVM runs with basefee 0 and blocks report baseFeePerGas 0x0; fees are still charged through gasPrice
eth_gasPrice1 wei0x1
Minimum accepted gas price1 weiMIN_GAS_PRICE, a consensus constant. Deliberately not an environment variable: an operator-tunable minimum would let a replica re-price a transaction the leader accepted, and derivation would halt
Fee beneficiary in revmaddress(0)then re-split by the sequencer in the same transaction; blocks report the fee treasury as miner

Two of these are compile-time constants rather than environment variables, and that is a correctness requirement: a tunable minimum gas price or a tunable hardfork would let a replica reject or re-price a transaction the leader had already accepted, and derivation would halt on the divergence. Pinning Cancun also means a revm upgrade cannot silently change gas accounting under a chain that has already settled.

Gas is paid in ETH, permanently. PKL is never required to transact - see the glossary for what PKL is and is not.

What the node keeps

DataRetained
EVM block history~2 minuteskeep_evm_blocks() = 120,000 / EVM_BLOCK_MS - 480 blocks at the default. Older blocks return null and their logs become unqueryable
Mini-block history20,000KEEP_MINI_BLOCKS, roughly 200 seconds at the 10 ms scheduling target
Receipts and bodies200,000MAX_RECEIPTS, evicted first-in-first-out
Full historynot on the nodeit lives in Postgres behind the explorer, fed by the sequencer's spool. This RPC is an index, not an archive

This is the single most consequential table on the site for anyone writing an indexer, and it has its own page with the failure modes spelled out. The short version: the node is an RPC index, not an archive, and a query pattern that assumes otherwise will silently lose data rather than error.

Contract addresses

Resolve an address, never guess one

This page publishes no contract address. Be careful with any address you find elsewhere: an EVM CALL to an account with no code succeeds, so a swap routed at an address where nothing is deployed does not revert, it takes your ETH and reports success. This is the one mistake on this chain that costs money rather than time.

The first-party front ends resolve the addresses they need from the chain at runtime rather than compiling one in. The explorer shows what is deployed at an address, but it verifies no source and publishes no ABI; the repository opens gradually over the testnet.