Skip to main content

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

PrecompileAddressSolidity interfaceGo implementationPurpose
ArbAggregator0x6dInterfaceImplementationConfiguring transaction aggregation
ArbGasInfo0x6cInterfaceImplementationInfo about gas pricing
ArbRetryableTx0x6eInterfaceImplementationManaging retryables
ArbSys0x64InterfaceImplementationSystem-level functionality
ArbWasm0x71InterfaceImplementationManages Stylus contracts
ArbWasmCache0x72InterfaceImplementationManages Stylus cache

Other precompiles

PrecompileAddressSolidity interfaceGo implementationPurpose
ArbAddressTable0x66InterfaceImplementationSupporting compression of addresses
ArbBLS---Disabled (Former registry of BLS public keys)
ArbDebug0xffInterfaceImplementationTesting tools
ArbFunctionTable0x68InterfaceImplementationNo longer used
ArbInfo0x65InterfaceImplementationInfo about accounts
ArbOwner0x70InterfaceImplementationChain administration, callable only by chain owner
ArbOwnerPublic0x6bInterfaceImplementationInfo about chain owners
ArbosTest0x69InterfaceImplementationNo longer used
ArbStatistics0x6fInterfaceImplementationInfo about the pre-Nitro state

Precompiles reference

ArbAddressTable

ArbAddressTable (Interface | Implementation) provides the ability to create short-hands for commonly used accounts.

For a working example of using ArbAddressTable to register addresses and retrieve their indices, see the address-table tutorial.

Precompile address: 0x0000000000000000000000000000000000000066

MethodSourceDescription
addressExists(address addr)

Interface

·

Implementation

AddressExists checks if an address exists in the table
compress(address addr)

Interface

·

Implementation

Compress and returns the bytes that represent the address
decompress(bytes calldata buf, uint256 offset)

Interface

·

Implementation

Decompress the compressed bytes at the given offset with those of the corresponding account
lookup(address addr)

Interface

·

Implementation

Lookup the index of an address in the table
lookupIndex(uint256 index)

Interface

·

Implementation

LookupIndex for an address in the table by index
register(address addr)

Interface

·

Implementation

Register adds an account to the table, shrinking its compressed representation
size()

Interface

·

Implementation

Size gets the number of addresses in the table

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

MethodSourceDescription

⚠️getPreferredAggregator(address addr)

Interface

·

Implementation

GetPreferredAggregator returns the preferred aggregator address. Deprecated: Do not use this method.

⚠️getDefaultAggregator()

Interface

·

Implementation

GetDefaultAggregator returns the default aggregator address. Deprecated: Do not use this method.
getBatchPosters()

Interface

·

Implementation

GetBatchPosters gets the addresses of all current batch posters
addBatchPoster(address newBatchPoster)

Interface

·

Implementation

Adds additional batch poster address
getFeeCollector(address batchPoster)

Interface

·

Implementation

GetFeeCollector gets a batch poster's fee collector
setFeeCollector(address batchPoster, address newFeeCollector)

Interface

·

Implementation

SetFeeCollector sets a batch poster's fee collector (caller must be the batch poster, its fee collector, or an owner)

⚠️getTxBaseFee(address aggregator)

Interface

·

Implementation

GetTxBaseFee gets an aggregator's current fixed fee to submit a tx Deprecated: always returns zero

⚠️setTxBaseFee(address aggregator, uint256 feeInL1Gas)

Interface

·

Implementation

SetTxBaseFee sets an aggregator's fixed fee (caller must be the aggregator, its fee collector, or an owner) Deprecated: no-op

Note: methods marked with ⚠️ are deprecated and their use is not supported.

ArbBLS

Disabled

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

MethodSourceDescription
becomeChainOwner()

Interface

·

Implementation

Caller becomes a chain owner
overwriteContractCode(address target, bytes calldata newCode)

Interface

·

Implementation

Overwrite an existing contract's code
events(bool flag, bytes32 value)

Interface

·

Implementation

Emits events with values based on the args provided
eventsView()

Interface

·

Implementation

Tries (and fails) to emit logs in a view context
customRevert(uint64 number)

Interface

·

Implementation

Throws a custom error
panic()

Interface

·

Implementation

Halts the chain by panicking in the STF
legacyError()

Interface

·

Implementation

Throws a hardcoded error
EventSourceDescription
Basic

Interface

·

Implementation

Emitted in Events for testing

Mixed

Interface

·

Implementation

Emitted in Events for testing

Store

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

MethodSourceDescription
upload(bytes calldata buf)

Interface

·

Implementation

Upload does nothing
size(address addr)

Interface

·

Implementation

Size returns the empty table's size, which is 0
get(address addr, uint256 index)

Interface

·

Implementation

Get reverts since the table is empty

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. For a practical guide on using these methods alongside NodeInterface to estimate transaction costs, see How to estimate gas.

Precompile address: 0x000000000000000000000000000000000000006C

MethodSourceDescription
getPricesInWeiWithAggregator(address aggregator)

Interface

·

Implementation

GetPricesInWeiWithAggregator gets prices in wei when using the provided aggregator
getPricesInWei()

Interface

·

Implementation

GetPricesInWei gets prices in wei when using the caller's preferred aggregator
getPricesInArbGasWithAggregator(address aggregator)

Interface

·

Implementation

GetPricesInArbGasWithAggregator gets prices in ArbGas when using the provided aggregator
getPricesInArbGas()

Interface

·

Implementation

GetPricesInArbGas gets prices in ArbGas when using the caller's preferred aggregator
getGasAccountingParams()

Interface

·

Implementation

GetGasAccountingParams gets the rollup's speed limit, pool size, and block gas limit
getMaxTxGasLimit()

Interface

·

Implementation

GetMaxTxGasLimit gets the max tx gas limit
getMinimumGasPrice()

Interface

·

Implementation

GetMinimumGasPrice gets the minimum gas price needed for a transaction to succeed
getL1BaseFeeEstimate()

Interface

·

Implementation

GetL1BaseFeeEstimate gets the current estimate of the L1 basefee
getL1BaseFeeEstimateInertia()

Interface

·

Implementation

GetL1BaseFeeEstimateInertia gets how slowly ArbOS updates its estimate of the L1 basefee
getL1RewardRate()

Interface

·

Implementation

GetL1RewardRate gets the L1 pricer reward rate
getL1RewardRecipient()

Interface

·

Implementation

GetL1RewardRecipient gets the L1 pricer reward recipient
getL1GasPriceEstimate()

Interface

·

Implementation

GetL1GasPriceEstimate gets the current estimate of the L1 basefee
getCurrentTxL1GasFees()

Interface

·

Implementation

GetCurrentTxL1GasFees gets the fee in wei paid to the batch poster for posting this tx
getGasBacklog()

Interface

·

Implementation

GetGasBacklog gets the backlogged amount of gas burnt in excess of the speed limit
getPricingInertia()

Interface

·

Implementation

GetPricingInertia gets how slowly ArbOS updates the L2 basefee in response to backlogged gas
getGasBacklogTolerance()

Interface

·

Implementation

GetGasBacklogTolerance gets the forgivable amount of backlogged gas ArbOS will ignore when raising the basefee
getL1PricingSurplus()

Interface

·

Implementation

GetL1PricingSurplus gets the surplus of funds for L1 batch posting payments (may be negative)
getPerBatchGasCharge()

Interface

·

Implementation

GetPerBatchGasCharge gets the base charge (in L1 gas) attributed to each data batch in the calldata pricer
getAmortizedCostCapBips()

Interface

·

Implementation

GetAmortizedCostCapBips gets the cost amortization cap in basis points
getL1FeesAvailable()

Interface

·

Implementation

GetL1FeesAvailable gets the available funds from L1 fees
getL1PricingEquilibrationUnits()

Interface

·

Implementation

GetL1PricingEquilibrationUnits gets the equilibration units parameter for L1 price adjustment algorithm (Available since ArbOS 20)
getLastL1PricingUpdateTime()

Interface

·

Implementation

GetLastL1PricingUpdateTime gets the last time the L1 calldata pricer was updated (Available since ArbOS 20)
getL1PricingFundsDueForRewards()

Interface

·

Implementation

GetL1PricingFundsDueForRewards gets the amount of L1 calldata payments due for rewards (per the L1 reward rate) (Available since ArbOS 20)
getL1PricingUnitsSinceUpdate()

Interface

·

Implementation

GetL1PricingUnitsSinceUpdate gets the amount of L1 calldata posted since the last update (Available since ArbOS 20)
getLastL1PricingSurplus()

Interface

·

Implementation

GetLastL1PricingSurplus gets the L1 pricing surplus as of the last update (may be negative) (Available since ArbOS 20)
getMaxBlockGasLimit()

Interface

·

Implementation

GetMaxBlockGasLimit gets the maximum block gas limit
getGasPricingConstraints()

Interface

·

Implementation

GetGasPricingConstraints gets the current gas pricing constraints used by the Multi-Constraint Pricer.
getMultiGasPricingConstraints()

Interface

·

Implementation

GetMultiGasPricingConstraints returns the current configuration of multi-gas pricing constraints
getMultiGasBaseFee()

Interface

·

Implementation

GetMultiGasBaseFee gets the current base fee for each resource type used by the Multi-Constraint Pricer

ArbInfo

ArbInfo (Interface | Implementation) provides the ability to lookup basic info about accounts and contracts.

Precompile address: 0x0000000000000000000000000000000000000065

MethodSourceDescription
getBalance(address account)

Interface

·

Implementation

GetBalance retrieves an account's balance
getCode(address account)

Interface

·

Implementation

GetCode retrieves a contract's deployed code

ArbNativeTokenManager

ArbNativeTokenManager (Interface | Implementation) enables minting and burning of the chain's native gas token by callers authorized through the ArbOwner precompile. Available since ArbOS 41.

Precompile address: 0x0000000000000000000000000000000000000073

MethodSourceDescription
mintNativeToken(uint256 amount)

Interface

·

Implementation

Mints some amount of the native gas token for this chain to the given address (Available since ArbOS 41)
burnNativeToken(uint256 amount)

Interface

·

Implementation

Burns some amount of the native gas token for this chain from the given address (Available since ArbOS 41)
EventSourceDescription
NativeTokenMinted

Interface

·

Implementation

Emitted when native gas token is minted to a NativeTokenOwner
NativeTokenBurned

Interface

·

Implementation

Emitted when native gas token is burned from a NativeTokenOwner

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

MethodSourceDescription
burnArbGas(uint256 gasAmount)

Interface

·

Implementation

BurnArbGas unproductively burns the amount of L2 ArbGas

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

MethodSourceDescription
addChainOwner(address newOwner)

Interface

·

Implementation

AddChainOwner adds account as a chain owner
removeChainOwner(address ownerToRemove)

Interface

·

Implementation

RemoveChainOwner removes account from the list of chain owners
isChainOwner(address addr)

Interface

·

Implementation

IsChainOwner checks if the account is a chain owner
getAllChainOwners()

Interface

·

Implementation

GetAllChainOwners retrieves the list of chain owners
setNativeTokenManagementFrom(uint64 timestamp)

Interface

·

Implementation

SetNativeTokenManagementFrom sets native token management enabled-from time.
setTransactionFilteringFrom(uint64 timestamp)

Interface

·

Implementation

SetTransactionFilteringFrom sets transaction filtering enabled-from time.
addNativeTokenOwner(address newOwner)

Interface

·

Implementation

AddNativeTokenOwner adds account as a native token owner
removeNativeTokenOwner(address ownerToRemove)

Interface

·

Implementation

RemoveNativeTokenOwner removes account from the list of native token owners
isNativeTokenOwner(address addr)

Interface

·

Implementation

IsNativeTokenOwner checks if the account is a native token owner
getAllNativeTokenOwners()

Interface

·

Implementation

GetAllNativeTokenOwners retrieves the list of native token owners
addTransactionFilterer(address filterer)

Interface

·

Implementation

AddTransactionFilterer adds account as a transaction filterer (authorized to use ArbFilteredTransactionsManager)
removeTransactionFilterer(address filterer)

Interface

·

Implementation

RemoveTransactionFilterer removes account from the list of transaction filterers
isTransactionFilterer(address filterer)

Interface

·

Implementation

IsTransactionFilterer checks if the account is a transaction filterer
getAllTransactionFilterers()

Interface

·

Implementation

GetAllTransactionFilterers retrieves the list of transaction filterers
setFilteredFundsRecipient(address newRecipient)

Interface

·

Implementation

SetFilteredFundsRecipient sets the address that receives funds redirected from filtered transactions. Set to address(0) to use the networkFeeAccount as fallback.
getFilteredFundsRecipient()

Interface

·

Implementation

GetFilteredFundsRecipient gets the address that receives funds redirected from filtered transactions. Returns address(0) if not explicitly set (networkFeeAccount is used as fallback at runtime).
setL1BaseFeeEstimateInertia(uint64 inertia)

Interface

·

Implementation

SetL1BaseFeeEstimateInertia sets how slowly ArbOS updates its estimate of the L1 basefee
setL2BaseFee(uint256 priceInWei)

Interface

·

Implementation

SetL2BaseFee sets the L2 gas price directly, bypassing the pool calculus
setMinimumL2BaseFee(uint256 priceInWei)

Interface

·

Implementation

SetMinimumL2BaseFee sets the minimum base fee needed for a transaction to succeed
setSpeedLimit(uint64 limit)

Interface

·

Implementation

SetSpeedLimit sets the computational speed limit for the chain
setMaxTxGasLimit(uint64 limit)

Interface

·

Implementation

SetMaxTxGasLimit sets the maximum size a tx can be
setMaxBlockGasLimit(uint64 limit)

Interface

·

Implementation

SetMaxBlockGasLimit sets the maximum size a block can be
setL2GasPricingInertia(uint64 sec)

Interface

·

Implementation

SetL2GasPricingInertia sets the L2 gas pricing inertia
setL2GasBacklogTolerance(uint64 sec)

Interface

·

Implementation

SetL2GasBacklogTolerance sets the L2 gas backlog tolerance
getNetworkFeeAccount()

Interface

·

Implementation

GetNetworkFeeAccount gets the network fee collector
getInfraFeeAccount()

Interface

·

Implementation

GetInfraFeeAccount gets the infrastructure fee collector
setNetworkFeeAccount(address newNetworkFeeAccount)

Interface

·

Implementation

SetNetworkFeeAccount sets the network fee collector to the new network fee account
setInfraFeeAccount(address newInfraFeeAccount)

Interface

·

Implementation

SetInfraFeeAccount sets the infrastructure fee collector address
scheduleArbOSUpgrade(uint64 newVersion, uint64 timestamp)

Interface

·

Implementation

ScheduleArbOSUpgrade to the requested version at the requested timestamp
setL1PricingEquilibrationUnits(uint256 equilibrationUnits)

Interface

·

Implementation

Sets equilibration units parameter for L1 price adjustment algorithm
setL1PricingInertia(uint64 inertia)

Interface

·

Implementation

Sets inertia parameter for L1 price adjustment algorithm
setL1PricingRewardRecipient(address recipient)

Interface

·

Implementation

Sets reward recipient address for L1 price adjustment algorithm
setL1PricingRewardRate(uint64 weiPerUnit)

Interface

·

Implementation

Sets reward amount for L1 price adjustment algorithm, in wei per unit
setL1PricePerUnit(uint256 pricePerUnit)

Interface

·

Implementation

Set how much ArbOS charges per L1 gas spent on transaction data.
setParentGasFloorPerToken(uint64 floorPerToken)

Interface

·

Implementation

Set how much L1 charges per non-zero byte of calldata
setPerBatchGasCharge(int64 cost)

Interface

·

Implementation

Sets the base charge (in L1 gas) attributed to each data batch in the calldata pricer
setBrotliCompressionLevel(uint64 level)

Interface

·

Implementation

Sets the Brotli compression level used for fast compression (default level is 1)
setAmortizedCostCapBips(uint64 cap)

Interface

·

Implementation

Sets the cost amortization cap in basis points
releaseL1PricerSurplusFunds(uint256 maxWeiToRelease)

Interface

·

Implementation

Releases surplus funds from L1PricerFundsPoolAddress for use
setInkPrice(uint32 price)

Interface

·

Implementation

Sets the amount of ink 1 gas buys
setWasmMaxStackDepth(uint32 depth)

Interface

·

Implementation

Sets the maximum depth (in wasm words) a wasm stack may grow
setWasmFreePages(uint16 pages)

Interface

·

Implementation

Sets the number of free wasm pages a tx receives
setWasmPageGas(uint16 gas)

Interface

·

Implementation

Sets the base cost of each additional wasm page
setWasmPageLimit(uint16 limit)

Interface

·

Implementation

Sets the initial number of pages a wasm may allocate
setWasmMaxSize(uint32 size)

Interface

·

Implementation

SetMaxWasmSize sets the maximum size the wasm code can be in bytes after decompression.
setWasmMinInitGas(uint8 gas, uint16 cached)

Interface

·

Implementation

Sets the minimum costs to invoke a program
setWasmInitCostScalar(uint64 percent)

Interface

·

Implementation

Sets the linear adjustment made to program init costs
setWasmExpiryDays(uint16 _days)

Interface

·

Implementation

Sets the number of days after which programs deactivate
setWasmKeepaliveDays(uint16 _days)

Interface

·

Implementation

Sets the age a program must be to perform a keepalive
setWasmBlockCacheSize(uint16 count)

Interface

·

Implementation

Sets the number of extra programs ArbOS caches during a given block
addWasmCacheManager(address manager)

Interface

·

Implementation

Adds account as a wasm cache manager
removeWasmCacheManager(address manager)

Interface

·

Implementation

Removes account from the list of wasm cache managers
setChainConfig(string calldata chainConfig)

Interface

·

Implementation

Sets serialized chain config in ArbOS state
setCalldataPriceIncrease(bool enable)

Interface

·

Implementation

SetCalldataPriceIncrease sets the increased calldata price feature on or off (EIP-7623)
setGasBacklog(uint64 backlog)

Interface

·

Implementation

SetGasBacklog sets the L2 gas backlog directly (used by single-constraint pricing model only)
setGasPricingConstraints(uint64[3][] calldata constraints)

Interface

·

Implementation

SetGasPricingConstraints sets the gas pricing constraints used by the multi-constraint pricing model
setMultiGasPricingConstraints(ArbMultiGasConstraintsTypes.ResourceConstraint[] calldata constraints)

Interface

·

Implementation

SetMultiGasPricingConstraints configures the multi-dimensional gas pricing model
setCollectTips(bool collectTips)

Interface

·

Implementation

SetCollectTips enables or disables tip collection. When enabled, transaction tips are collected by the network fee account. When disabled (default), tips are dropped.
setMaxStylusContractFragments(uint8 maxFragments)

Interface

·

Implementation

setWasmActivationGas(uint64 gas)

Interface

·

Implementation

Sets the constant gas charge applied before each stylus contract activation. Defaults to zero. Can be raised to deter DOS via activations, or set to a value exceeding the block gas limit to block all activations entirely.
EventSourceDescription
TransactionFiltererAdded

Interface

·

Implementation

@notice Emitted when an address is added as a transaction filterer.
TransactionFiltererRemoved

Interface

·

Implementation

@notice Emitted when an address is removed as a transaction filterer.
FilteredFundsRecipientSet

Interface

·

Implementation

@notice Emitted when the filtered funds recipient address is changed. @notice Available in ArbOS version 60 and above
ChainOwnerAdded

Interface

·

Implementation

@notice Emitted when an address is added as a chain owner. @notice Available in ArbOS version 60 and above
ChainOwnerRemoved

Interface

·

Implementation

@notice Emitted when an address is removed as a chain owner. @notice Available in ArbOS version 60 and above
NativeTokenOwnerAdded

Interface

·

Implementation

@notice Emitted when an address is added as a native token owner. @notice Available in ArbOS version 60 and above
NativeTokenOwnerRemoved

Interface

·

Implementation

@notice Emitted when an address is removed as a native token owner. @notice Available in ArbOS version 60 and above
OwnerActs

Interface

·

Implementation

Emitted when a successful call is made to this precompile

ArbOwnerPublic

ArbOwnerPublic (Interface | Implementation) provides non-owners with info about the current chain owners.

Precompile address: 0x000000000000000000000000000000000000006b

MethodSourceDescription
isChainOwner(address addr)

Interface

·

Implementation

IsChainOwner checks if the user is a chain owner
rectifyChainOwner(address ownerToRectify)

Interface

·

Implementation

RectifyChainOwner checks if the account is a chain owner (Available since ArbOS 11)
getAllChainOwners()

Interface

·

Implementation

GetAllChainOwners retrieves the list of chain owners
getNativeTokenManagementFrom()

Interface

·

Implementation

GetNativeTokenMangementFrom returns the time in epoch seconds when the native token management becomes enabled
isNativeTokenOwner(address addr)

Interface

·

Implementation

IsNativeTokenOwner checks if the account is a native token owner
getAllNativeTokenOwners()

Interface

·

Implementation

GetAllNativeTokenOwners retrieves the list of native token owners
getTransactionFilteringFrom()

Interface

·

Implementation

TransactionFilteringFrom returns the time in epoch seconds when the transaction filtering feature becomes enabled
isTransactionFilterer(address filterer)

Interface

·

Implementation

IsTransactionFilterer checks if the account is a transaction filterer
getAllTransactionFilterers()

Interface

·

Implementation

GetAllTransactionFilterers retrieves the list of transaction filterers
getFilteredFundsRecipient()

Interface

·

Implementation

GetFilteredFundsRecipient gets the address that receives funds redirected from filtered transactions. Returns address(0) if not explicitly set (networkFeeAccount is used as fallback at runtime).
getNetworkFeeAccount()

Interface

·

Implementation

GetNetworkFeeAccount gets the network fee collector
getInfraFeeAccount()

Interface

·

Implementation

GetInfraFeeAccount gets the infrastructure fee collector
getBrotliCompressionLevel()

Interface

·

Implementation

GetBrotliCompressionLevel gets the current brotli compression level used for fast compression
getParentGasFloorPerToken()

Interface

·

Implementation

Get how much L1 charges per non-zero byte of calldata
getScheduledUpgrade()

Interface

·

Implementation

GetScheduledUpgrade gets the next scheduled ArbOS version upgrade and its activation timestamp. Returns (0, 0, nil) if no ArbOS upgrade is scheduled.
isCalldataPriceIncreaseEnabled()

Interface

·

Implementation

IsCalldataPriceIncreaseEnabled checks if the increased calldata price feature (EIP-7623) is enabled
getCollectTips()

Interface

·

Implementation

GetCollectTips returns whether tip collection is enabled.
getMaxStylusContractFragments()

Interface

·

Implementation

EventSourceDescription
ChainOwnerRectified

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. For a worked example of creating and redeeming retryables from application code, see How to bridge from the parent chain.

Precompile address: 0x000000000000000000000000000000000000006E

MethodSourceDescription
redeem(bytes32 ticketId)

Interface

·

Implementation

Redeem schedules an attempt to redeem the retryable, donating all of the call's gas to the redeem attempt
getLifetime()

Interface

·

Implementation

GetLifetime gets the default lifetime period a retryable has at creation
getTimeout(bytes32 ticketId)

Interface

·

Implementation

GetTimeout gets the timestamp for when ticket will expire
keepalive(bytes32 ticketId)

Interface

·

Implementation

Keepalive adds one lifetime period to the ticket's expiry
getBeneficiary(bytes32 ticketId)

Interface

·

Implementation

GetBeneficiary gets the beneficiary of the ticket
cancel(bytes32 ticketId)

Interface

·

Implementation

Cancel the ticket and refund its callvalue to its beneficiary
getCurrentRedeemer()

Interface

·

Implementation

Gets the redeemer of the current retryable redeem attempt
submitRetryable(bytes32 requestId, uint256 l1BaseFee, uint256 deposit, uint256 callvalue, uint256 gasFeeCap, uint64 gasLimit, uint256 maxSubmissionFee, address feeRefundAddress, address beneficiary, address retryTo, bytes calldata retryData)

Interface

·

Implementation

Do not call. This method represents a retryable submission to aid explorers. Calling it will always revert.
EventSourceDescription
TicketCreated

Interface

·

Implementation

Emitted when creating a retryable
LifetimeExtended

Interface

·

Implementation

Emitted when extending a retryable's expiry date
RedeemScheduled

Interface

·

Implementation

Emitted when scheduling a retryable
Canceled

Interface

·

Implementation

Emitted when cancelling a retryable
Redeemed

Interface

·

Implementation

DEPRECATED in favour of new RedeemScheduled event after the nitro upgrade.

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

MethodSourceDescription
getStats()

Interface

·

Implementation

GetStats returns the current block number and some statistics about the rollup's pre-Nitro state

ArbSys

ArbSys (Interface | Implementation) provides system-level functionality for interacting with the parent chain and understanding the call stack.

Precompile address: 0x0000000000000000000000000000000000000064

MethodSourceDescription
arbBlockNumber()

Interface

·

Implementation

ArbBlockNumber gets the current L2 block number
arbBlockHash(uint256 arbBlockNum)

Interface

·

Implementation

ArbBlockHash gets the L2 block hash, if sufficiently recent
arbChainID()

Interface

·

Implementation

ArbChainID gets the rollup's unique chain identifier
arbOSVersion()

Interface

·

Implementation

ArbOSVersion gets the current ArbOS version
getStorageGasAvailable()

Interface

·

Implementation

GetStorageGasAvailable returns 0 since Nitro has no concept of storage gas
isTopLevelCall()

Interface

·

Implementation

IsTopLevelCall checks if the call is top-level (deprecated)
mapL1SenderContractAddressToL2Alias(address sender, address unused)

Interface

·

Implementation

MapL1SenderContractAddressToL2Alias gets the contract's L2 alias
wasMyCallersAddressAliased()

Interface

·

Implementation

WasMyCallersAddressAliased checks if the caller's caller was aliased
myCallersAddressWithoutAliasing()

Interface

·

Implementation

MyCallersAddressWithoutAliasing gets the caller's caller without any potential aliasing
withdrawEth(address destination)

Interface

·

Implementation

WithdrawEth send paid eth to the destination on L1
sendTxToL1(address destination, bytes calldata data)

Interface

·

Implementation

SendTxToL1 sends a transaction to L1, adding it to the outbox
sendMerkleTreeState()

Interface

·

Implementation

SendMerkleTreeState gets the root, size, and partials of the outbox Merkle tree state (caller must be the 0 address)
EventSourceDescription
L2ToL1Tx

Interface

·

Implementation

Logs a send transaction from L2 to L1, including data for outbox proving
L2ToL1Transaction

Interface

·

Implementation

DEPRECATED in favour of the new L2ToL1Tx event above after the nitro upgrade

SendMerkleUpdate

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

MethodSourceDescription
activateProgram(address program)

Interface

·

Implementation

Compile a wasm program with the latest instrumentation
stylusVersion()

Interface

·

Implementation

Gets the latest stylus version
codehashVersion(bytes32 codehash)

Interface

·

Implementation

Gets the stylus version that program with codehash was most recently compiled with
codehashKeepalive(bytes32 codehash)

Interface

·

Implementation

Extends a program's expiration date (reverts if too soon)
codehashAsmSize(bytes32 codehash)

Interface

·

Implementation

Gets a program's asm size in bytes
programVersion(address program)

Interface

·

Implementation

Gets the stylus version that program at addr was most recently compiled with
programInitGas(address program)

Interface

·

Implementation

Gets the cost to invoke the program
programMemoryFootprint(address program)

Interface

·

Implementation

Gets the footprint of program at addr
programTimeLeft(address program)

Interface

·

Implementation

Gets returns the amount of time remaining until the program expires
inkPrice()

Interface

·

Implementation

Gets the amount of ink 1 gas buys
maxStackDepth()

Interface

·

Implementation

Gets the wasm stack size limit
freePages()

Interface

·

Implementation

Gets the number of free wasm pages a tx gets
pageGas()

Interface

·

Implementation

Gets the base cost of each additional wasm page
pageRamp()

Interface

·

Implementation

Gets the ramp that drives exponential memory costs
pageLimit()

Interface

·

Implementation

Gets the maximum initial number of pages a wasm may allocate
minInitGas()

Interface

·

Implementation

Gets the minimum costs to invoke a program
initCostScalar()

Interface

·

Implementation

Gets the linear adjustment made to program init costs
expiryDays()

Interface

·

Implementation

Gets the number of days after which programs deactivate
keepaliveDays()

Interface

·

Implementation

Gets the age a program must be to perform a keepalive
blockCacheSize()

Interface

·

Implementation

Gets the number of extra programs ArbOS caches during a given block.
activationGas()

Interface

·

Implementation

Gets the constant gas charge applied before each Stylus contract activation.
EventSourceDescription
ProgramActivated

Interface

·

Implementation

Emitted when activating a WASM program
ProgramLifetimeExtended

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

MethodSourceDescription
isCacheManager(address manager)

Interface

·

Implementation

See if the user is a cache manager owner.
allCacheManagers()

Interface

·

Implementation

Retrieve all authorized address managers.
cacheCodehash(bytes32 codehash)

Interface

·

Implementation

Deprecated: replaced with CacheProgram.
cacheProgram(address addr)

Interface

·

Implementation

Caches all programs with a codehash equal to the given address. Caller must be a cache manager or chain owner.
evictCodehash(bytes32 codehash)

Interface

·

Implementation

Evicts all programs with the given codehash. Caller must be a cache manager or chain owner.
codehashIsCached(bytes32 codehash)

Interface

·

Implementation

Gets whether a program is cached. Note that the program may be expired.
EventSourceDescription
UpdateProgramCache

Interface

·

Implementation

Emitted when caching a WASM program