Precompiles

Pod uses precompiles for enshrined applications and internal protocol operations. Precompiles are built into the protocol rather than deployed as user contracts, so they can access internal state (validator signatures, timestamps, merkle proofs) and execute without contract call overhead.

Precompile Addresses

Signature
Address
Description

0x000000000000000000000000000000000000C10B

Central limit order book for spot markets

0x0000000000000000000000000000000000B41D9E

ERC-20 token bridging between Pod and Ethereum

0xeDD0670497E00ded712a398563Ea938A29dD28c7

Censorship-resistant auction for intents (settlement happens off-Pod)

recover(bytes32 txHash, uint64 nonce)

0x0000000000000000000000000000000004EC0EE4

Recover a locked account by finalizing the target transaction chain

requireQuorum(boolean)

0x4CF3F1637bfEf1534e56352B6ebAae243aF464c3

Like require but passes if supermajority agrees

external_call([uint256, [Transaction,bytes]])

0x8712E00C337971f876621faB9326908fdF330d77

Call a smart contract on another EVM-compatible chain

call_with_state([uint256, Header, EVMCall, EVMState])

0xb4bbff8874b41f97535bc8dafbaaff0dc5c72e5a

Simulate an EVM transaction execution given a particular initial state

Interacting with Precompiles

You interact with Pod's precompiles the same way you would interact with any smart contract on Ethereum - by encoding function calls against a Solidity ABI and sending them via eth_call (reads) or eth_sendRawTransaction (writes).

Reading State

Query the deposited balance of a token in the orderbook contract using eth_call.

import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider("https://rpc.v1.dev.pod.network");

const ORDERBOOK = "0x000000000000000000000000000000000000C10B";
const abi = ["function getBalance(address token) view returns (uint256)"];
const orderbook = new ethers.Contract(ORDERBOOK, abi, provider);

const USDT = "0x0000000000000000000000000000000000000001";
const balance = await orderbook.getBalance(USDT);
console.log("Balance:", balance.toString());

Submitting Transactions

Send a signed transaction to place a buy order on the orderbook via eth_sendRawTransaction.

Last updated