Precompile Addresses
The full list, transcribed from the runtime's registration table
(template/runtime/src/precompiles.rs). Addresses are H160::from_low_u64_be(n),
so the index maps directly to the hex.
Ethereum standard
| Address | Index | Precompile |
|---|---|---|
0x…0001 | 1 | ECRecover |
0x…0002 | 2 | Sha256 |
0x…0003 | 3 | Ripemd160 |
0x…0004 | 4 | Identity |
0x…0005 | 5 | Modexp |
0x06–0x09 are not registeredThe BN128 precompiles (0x06 add, 0x07 mul, 0x08 pairing) and BLAKE2F
(0x09) are not available. A call to an unregistered address does not
revert — it returns empty, so a contract reading the result sees zero rather
than a failure.
This matters for anything doing BN254 pairing in Solidity — a verifier generated by snarkjs, Semaphore, Tornado-style mixers. Test before relying on it. Orbinum's own ZK verification happens in the runtime, not in the EVM; see the ShieldedPool precompile.
Frontier / non-standard
| Address | Index | Precompile |
|---|---|---|
0x…0400 | 1024 | Sha3FIPS256 |
0x…0401 | 1025 | ECRecoverPublicKey |
0x…0402 | 1026 | Curve25519Add |
0x…0403 | 1027 | Curve25519ScalarMul |
These two have no function selector. Input is 32 bytes per point — up to 10
points for Curve25519Add — and the result is the CompressedRistretto
representation. Gas scales with the point count. There is no Solidity interface
to import.
Orbinum
| Address | Index | Precompile | Docs |
|---|---|---|---|
0x0000000000000000000000000000000000000801 | 2049 | ShieldedPool | reference |
0x0000000000000000000000000000000000000802 | 2050 | Balances | reference |
Security notes
- Origin derivation varies by precompile.
Balancesderives the caller'sAccountId32from the EVMH160sender.ShieldedPooldoes not:shielddispatches under the precompile's own address, andprivateTransfer/unshielddispatch unsigned, authenticated by their ZK proof. See ShieldedPool → Origin model. - No signature verification is repeated inside a precompile — the EVM transaction already authenticates whichever address is used as origin.
- Precompiles return no value beyond a success indicator. Use RPC or events to confirm state changes.
- Gas costs may be adjusted before mainnet.
.sol files to importThere is no published interface artifact. The interface blocks in these docs
are transcribed from the runtime's own documentation and verified against its
selectors — copy them into your project rather than importing a package.