chainConfig reference
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. |