chainConfig reference
Reference list of chainConfig JSON parameters available when deploying or managing your Arbitrum chain.
The full chainConfig contains the standard Ethereum genesis/fork fields, but the Chain SDK's prepareChainConfig() only exposes a small subset for customization. Everything else is filled from hardcoded defaults and should not be changed.
When you call prepareChainConfig, you pass a chainId (top-level) and an arbitrum object where InitialChainOwner is required and the fields below are optional overrides.
Example:
import { prepareChainConfig } from '@arbitrum/chain-sdk';
const chainConfig = prepareChainConfig({
chainId: 123_456,
arbitrum: {
InitialChainOwner: '0xYourChainOwnerAddress', // required
// Optional overrides (defaults shown):
InitialArbOSVersion: 51,
DataAvailabilityCommittee: false,
MaxCodeSize: 24576,
MaxInitCodeSize: 49152,
},
});Customizable fields (via prepareChainConfig)
| Field | Type | Description |
|---|---|---|
chainId | number | Required. The unique chain ID for your chain. |
InitialChainOwner | string | Required. Address that owns the chain and holds upgrade/admin privileges. |
InitialArbOSVersion | 51 | The ArbOS version the chain launches with. |
DataAvailabilityCommittee | false | false = Rollup (L1 data posting); true = AnyTrust (DAC) |
MaxCodeSize | 24576 | Max deployed contract bytecode size in bytes (default matches Ethereum's EIP-170 limit). |
MaxInitCodeSize | 49152 | Max init/constructor code size in bytes (default matches EIP-3860). |
Intentionally not customizable
prepareChainConfig deliberately excludes Arbitrum-specific fields so they keep their defaults:
| Field | Type | Description |
|---|---|---|
EnableArbOS | true | Must stay enabled. |
GenesisBlockNum | 0 | Genesis block number. |
AllowDebugPrecompiles | false | Debug precompiles; must stay disabled. |
Standard fields
The following fields are populated automatically from the SDK's hardcoded defaults. They are standard Ethereum genesis/fork-activation parameters and are not exposed for customization by prepareChainConfig.
Changing these fields can produce an invalid or non-functional chain configuration.
Leave them at their default values.
| Field | Default | Description |
|---|---|---|
homesteadBlock | 0 | Block at which the Homestead fork activates. |
daoForkBlock | null | DAO fork block (disabled). |
daoForkSupport | true | Whether the chain supports the DAO fork rules. |
eip150Block | 0 | Activation block for EIP-150 (gas cost changes). |
eip150Hash | 0x0000…0000 | Hash associated with the EIP-150 fork. |
eip155Block | 0 | Activation block for EIP-155 (replay protection). |
eip158Block | 0 | Activation block for EIP-158 (state-clearing changes). |
byzantiumBlock | 0 | Activation block for the Byzantium fork. |
constantinopleBlock | 0 | Activation block for the Constantinople fork. |
petersburgBlock | 0 | Activation block for the Petersburg fork. |
istanbulBlock | 0 | Activation block for the Istanbul fork. |
muirGlacierBlock | 0 | Activation block for the Muir Glacier fork. |
berlinBlock | 0 | Activation block for the Berlin fork. |
londonBlock | 0 | Activation block for the London fork. |
clique.period | 0 | Clique PoA block period (seconds). |
clique.epoch | 0 | Clique PoA epoch length. |
How is this guide?
Additional configuration parameters
Reference list of additional CLI configuration parameters available when deploying or managing your Arbitrum chain.
Deploy an arbitrum chain
Guides to deploying an Arbitrum chain and its token bridge with the Chain SDK, the canonical factory contracts, and the L3 quickstarts.