Introduction
@arbitrum/sdk v4 introduces significant changes to improve support Orbit chains from Offchain Labs. This guide outlines the breaking changes to know before migrating your existing v3 code to v4.
Major Changes Overview
- Terminology change from L1/L2 to parent/child
- Network types and functions updated
- Updates to
AssetBridger and Erc20Bridger classes
- Changes to Message classes
Detailed Changes
1. Terminology change from L1/L2 to parent/child
Most instances of "L1" and "L2" have been replaced with "parent" and "child" respectively. This change reflects the more general parent-child relationship between chains in the Arbitrum ecosystem.
- In most circumstances, when referring to a parent-child relationship between chains, the terms "parent" and "child" are used.
- Though, when referring explicitly to "L1", "L2", or "L3", those specific terms are still used.
2. Network types and functions updated
- The
L1Network is no longer required to be registered before bridging.
- Only Arbitrum networks need to be registered.
- Arbitrum networks are defined as Arbitrum One, Arbitrum testnets, and any Orbit chain.
- If you need a full list of Arbitrum networks, you can use the new
getArbitrumNetworks function.
- To list all of the children of a network, use the new
getChildrenForNetwork function.
ArbitrumNetwork type
Network type has been replaced with the ArbitrumNetwork type and some properties have been removed or renamed.
| v3 Name | v4 Name |
|---|
chainID | chainId |
partnerChainID | parentChainId |
explorerUrl | removed |
isArbitrum | removed |
partnerChainIDs | removed |
nitroGenesisBlock | removed |
nitroGenesisL1Block | removed |
depositTimeout | removed |
blockTime | removed |
TokenBridge type
The TokenBridge type within theArbitrumNetwork object has been updated.
| v3 Name | v4 Name |
|---|
l1CustomGateway | parentCustomGateway |
l1ERC20Gateway | parentErc20Gateway |
l1GatewayRouter | parentGatewayRouter |
l1MultiCall | parentMultiCall |
l1ProxyAdmin | parentProxyAdmin |
l1Weth | parentWeth |
l1WethGateway | parentWethGateway |
l2CustomGateway | childCustomGateway |
l2ERC20Gateway | childErc20Gateway |
l2GatewayRouter | childGatewayRouter |
l2Multicall | childMultiCall |
l2ProxyAdmin | childProxyAdmin |
l2Weth | childWeth |
l2WethGateway | childWethGateway |
3. Updates to AssetBridger and Erc20Bridger classes
The AssetBridger class methods and properties have been renamed to reflect the new parent-child terminology.
| v3 Name | v4 Name |
|---|
l2Network | childNetwork |
checkL1Network | checkParentNetwork |
checkL2Network | checkChildNetwork |
The objects passed to the class methods of classes that inherit from AssetBridger (EthBridger and Erc20Bridger) have been renamed.
| v3 Name | v4 Name |
|---|
erc20L1Address | erc20ParentAddress |
l1Provider | parentProvider |
l2Provider | childProvider |
l1Signer | parentSigner |
l2Signer | childSigner |
| v3 Name | v4 Name |
|---|
getL1GatewayAddress | getParentGatewayAddress |
getL2GatewayAddress | getChildGatewayAddress |
getL2WithdrawalEvents | getWithdrawalEvents |
getL1TokenContract | getParentTokenContract |
getL1ERC20Address | getParentErc20Address |
getL2TokenContract | getChildTokenContract |
getL2ERC20Address | getChildErc20Address |
l1TokenIsDisabled | isDepositDisabled |
l1Provider | parentProvider |
getL1GatewaySetEvents | getParentGatewaySetEvents |
getL2GatewaySetEvents | getChildGatewaySetEvents |
| v3 Name | v4 Name |
|---|
getL2ERC20Address | getL2Erc20Address |
getL3ERC20Address | getL3Erc20Address |
4. Changes to Message classes
Message classes have been renamed and their methods updated:
| v3 Name | v4 Name |
|---|
L1TransactionReceipt | ParentTransactionReceipt |
L1ContractTransaction | ParentContractTransaction |
L1ToL2Message | ParentToChildMessage |
L1ToL2MessageWriter | ParentToChildMessageWriter |
L1ToL2MessageReader | ParentToChildMessageReader |
L1ToL2MessageReaderClassic | ParentToChildMessageReaderClassic |
L1ToL2MessageStatus | ParentToChildMessageStatus |
L1ToL2MessageGasEstimator | ParentToChildMessageGasEstimator |
L2TransactionReceipt | ChildTransactionReceipt |
L2ContractTransaction | ChildContractTransaction |
L2ToL1Message | ChildToParentMessage |
L2ToL1MessageWriter | ChildToParentMessageWriter |
L2ToL1MessageReader | ChildToParentMessageReader |
L2ToL1MessageStatus | ChildToParentMessageStatus |
EthDepositStatus | EthDepositMessageStatus |
EthDepositMessageWaitResult | EthDepositMessageWaitForStatusResult |
L1ToL2MessageWaitResult | ParentToChildMessageWaitForStatusResult |
ChildToParentMessageClassic
| v3 Name | v4 Name |
|---|
getL2ToL1Events | getChildToParentEvents |
ChildToParentChainMessageNitro
| v3 Name | v4 Name |
|---|
getL2ToL1Events | getChildToParentEvents |
ChildTransactionReceipt
| v3 Name | v4 Name |
|---|
getL2ToL1Events | getChildToParentEvents |
getL2ToL1Messages | getChildToParentMessages |
ParentToChildMessage
| v3 Name | v4 Name |
|---|
EthDepositStatus | EthDepositMessageStatus |
ParentToChildMessageStatus
| v3 Name | v4 Name |
|---|
FUNDS_DEPOSITED_ON_L2 | FUNDS_DEPOSITED_ON_CHILD |
ParentTransactionReceipt
| v3 Name | v4 Name |
|---|
getL1ToL2MessagesClassic | getParentToChildMessagesClassic |
getL1ToL2Messages | getParentToChildMessages |
ParentEthDepositTransactionReceipt
| v3 Name | v4 Name |
|---|
waitForL2 | waitForChildTransactionReceipt |
ParentContractCallTransactionReceipt
| v3 Name | v4 Name |
|---|
waitForL2 | waitForChildTransactionReceipt |