Precompiles reference
ArbOS provides child chain-specific precompiles with methods smart contracts can call the same way they can solidity functions. This reference page exhaustively documents the specific calls ArbOS makes available through precompiles. For a more conceptual description of what precompiles are and how they work, please refer to the precompiles conceptual page.
This reference page is divided into two sections. The first one lists all precompiles in a summary table with links to the reference of the specific precompile, along with the address where they live, their purpose and links to the go implementation and solidity interface. The second one details the methods available in each precompile with links to the specific implementation.
General information of precompiles
This section is divided into two tables. We first list precompiles we expect users to most often use, and then the rest of precompiles. However, both tables display the same information: name and purpose of the precompile, address, and links to the solidity interface and the go implementation.
Common precompiles
Precompile | Address | Solidity interface | Go implementation | Purpose |
---|---|---|---|---|
ArbAggregator | 0x6d | Interface | Implementation | Configuring transaction aggregation |
ArbGasInfo | 0x6c | Interface | Implementation | Info about gas pricing |
ArbRetryableTx | 0x6e | Interface | Implementation | Managing retryables |
ArbSys | 0x64 | Interface | Implementation | System-level functionality |
ArbWasm | 0x71 | Interface | Implementation | Manages Stylus contracts |
ArbWasmCache | 0x72 | Interface | Implementation | Manages Stylus cache |
Other precompiles
Precompile | Address | Solidity interface | Go implementation | Purpose |
---|---|---|---|---|
ArbAddressTable | 0x66 | Interface | Implementation | Supporting compression of addresses |
ArbBLS | - | - | - | Disabled (Former registry of BLS public keys) |
ArbDebug | 0xff | Interface | Implementation | Testing tools |
ArbFunctionTable | 0x68 | Interface | Implementation | No longer used |
ArbInfo | 0x65 | Interface | Implementation | Info about accounts |
ArbOwner | 0x70 | Interface | Implementation | Chain administration, callable only by chain owner |
ArbOwnerPublic | 0x6b | Interface | Implementation | Info about chain owners |
ArbosTest | 0x69 | Interface | Implementation | No longer used |
ArbStatistics | 0x6f | Interface | Implementation | Info about the pre-Nitro state |
Precompiles reference
ArbAddressTable
ArbAddressTable (Interface | Implementation) provides the ability to create short-hands for commonly used accounts.
Precompile address: 0x0000000000000000000000000000000000000066
Method | Solidity interface | Go implementation | Description |
---|
ArbAggregator
ArbAggregator (Interface | Implementation) provides aggregators and their users methods for configuring how they participate in parent chain aggregation. Arbitrum One's default aggregator is the Sequencer, which a user will prefer unless SetPreferredAggregator
is invoked to change it.
Compression ratios are measured in basis points. Methods that are checkmarked are access-controlled and will revert if not called by the aggregator, its fee collector, or a chain owner.
Precompile address: 0x000000000000000000000000000000000000006D
Method | Solidity interface | Go implementation | Description |
---|---|---|---|
⚠️ | Interface | Implementation | undefined |
⚠️ | Interface | Implementation | undefined |
⚠️ | Interface | Implementation | undefined |
⚠️ | Interface | Implementation | undefined |
Note: methods marked with ⚠️ are deprecated and their use is not supported.
ArbBLS
This precompile has been disabled. It previously provided a registry of BLS public keys for accounts.
ArbDebug
ArbDebug (Interface | Implementation) provides mechanisms useful for testing. The methods of ArbDebug
are only available for chains with the AllowDebugPrecompiles
chain parameter set. Otherwise, calls to this precompile will revert.
Precompile address: 0x00000000000000000000000000000000000000ff
Method | Solidity interface | Go implementation | Description |
---|
Event | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Emitted in |
undefined | Interface | Implementation | Emitted in |
undefined | Interface | Implementation | Never emitted (used for testing log sizes) |
ArbFunctionTable
ArbFunctionTable (Interface | Implementation) provides aggregators the ability to manage function tables, to enable one form of transaction compression. The Nitro aggregator implementation does not use these, so these methods have been stubbed and their effects disabled. They are kept for backwards compatibility.
Precompile address: 0x0000000000000000000000000000000000000068
Method | Solidity interface | Go implementation | Description |
---|
ArbGasInfo
ArbGasInfo (Interface | Implementation) provides insight into the cost of using the chain. These methods have been adjusted to account for Nitro's heavy use of calldata compression. Of note to end-users, we no longer make a distinction between non-zero and zero-valued calldata bytes.
Precompile address: 0x000000000000000000000000000000000000006C
Method | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | GetCurrentTxL1GasFees gets the fee in wei paid to the batch poster for posting this tx |
undefined | Interface | Implementation | undefined (Available since ArbOS 20) |
undefined | Interface | Implementation | undefined (Available since ArbOS 20) |
undefined | Interface | Implementation | undefined (Available since ArbOS 20) |
undefined | Interface | Implementation | undefined (Available since ArbOS 20) |
undefined | Interface | Implementation | undefined (Available since ArbOS 20) |
ArbInfo
ArbInfo (Interface | Implementation) provides the ability to lookup basic info about accounts and contracts.
Precompile address: 0x0000000000000000000000000000000000000065
Method | Solidity interface | Go implementation | Description |
---|
ArbosTest
ArbosTest (Interface | Implementation) provides a method of burning arbitrary amounts of gas, which exists for historical reasons. In Classic, ArbosTest
had additional methods only the zero address could call. These have been removed since users don't use them and calls to missing methods revert.
Precompile address: 0x0000000000000000000000000000000000000069
Method | Solidity interface | Go implementation | Description |
---|
ArbOwner
ArbOwner (Interface | Implementation) provides owners with tools for managing the rollup. Calls by non-owners will always revert.
Most of Arbitrum Classic's owner methods have been removed since they no longer make sense in Nitro:
- What were once chain parameters are now parts of ArbOS's state, and those that remain are set at genesis.
- ArbOS upgrades happen with the rest of the system rather than being independent
- Exemptions to address aliasing are no longer offered. Exemptions were intended to support backward compatibility for contracts deployed before aliasing was introduced, but no exemptions were ever requested.
Precompile address: 0x0000000000000000000000000000000000000070
Method | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Sets the Brotli compression level used for fast compression (default level is 1) |
ArbOwnerPublic
ArbOwnerPublic (Interface | Implementation) provides non-owners with info about the current chain owners.
Precompile address: 0x000000000000000000000000000000000000006b
Method | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | undefined (Available since ArbOS 11) |
Event | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Emitted when verifying a chain owner |
ArbRetryableTx
ArbRetryableTx (Interface | Implementation) provides methods for managing retryables. The model has been adjusted for Nitro, most notably in terms of how retry transactions are scheduled. For more information on retryables, please see the retryable documentation.
Precompile address: 0x000000000000000000000000000000000000006E
Method | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Gets the redeemer of the current retryable redeem attempt |
Event | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Emitted when creating a retryable |
undefined | Interface | Implementation | Emitted when extending a retryable's expiry date |
undefined | Interface | Implementation | Emitted when scheduling a retryable |
undefined | Interface | Implementation | Emitted when cancelling a retryable |
undefined | Interface | Implementation | DEPRECATED in favour of new |
ArbStatistics
ArbStatistics (Interface | Implementation) provides statistics about the chain as of just before the Nitro upgrade. In Arbitrum Classic, this was how a user would get info such as the total number of accounts, but there are better ways to get that info in Nitro.
Precompile address: 0x000000000000000000000000000000000000006F
Method | Solidity interface | Go implementation | Description |
---|
ArbSys
ArbSys (Interface | Implementation) provides system-level functionality for interacting with the parent chain and understanding the call stack.
Precompile address: 0x0000000000000000000000000000000000000064
Method | Solidity interface | Go implementation | Description |
---|
Event | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Logs a send transaction from L2 to L1, including data for outbox proving |
undefined | Interface | Implementation | DEPRECATED in favour of the new |
undefined | Interface | Implementation | Logs a new merkle branch needed for constructing outbox proofs |
ArbWasm
ArbWasm (Interface | Implementation) provides helper methods for managing Stylus contracts
Precompile address: 0x0000000000000000000000000000000000000071
Method | Solidity interface | Go implementation | Description |
---|
Event | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Emitted when activating a WASM program |
undefined | Interface | Implementation | Emitted when extending the expiration date of a WASM program |
ArbWasmCache
ArbWasmCache (Interface | Implementation) provides helper methods for managing Stylus cache
Precompile address: 0x0000000000000000000000000000000000000072
Method | Solidity interface | Go implementation | Description |
---|
Event | Solidity interface | Go implementation | Description |
---|---|---|---|
undefined | Interface | Implementation | Emitted when caching a WASM program |