From 10694922df9f380984aa70ff8f76a9d83a4470e4 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Mon, 13 Jan 2025 19:35:56 -0500 Subject: [PATCH 1/7] set decimals in postUpgradeInit --- src/bridge/ERC20Bridge.sol | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/bridge/ERC20Bridge.sol b/src/bridge/ERC20Bridge.sol index d2d3bffc2..bc37c92eb 100644 --- a/src/bridge/ERC20Bridge.sol +++ b/src/bridge/ERC20Bridge.sol @@ -62,6 +62,14 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge { } } + /// @notice When upgrading from v1.x.x to v2.1.1, nativeTokenDecimals must be set to 18. + /// This is because v1.x.x contracts assume 18 decimals, but do not have the decimals set in storage. + function postUpgradeInit() external onlyDelegated onlyProxyOwner { + // todo: consider require(nativeToken.decimals() == 18) + // or maybe renaming the postUpgradeInit function to make it harder to accidentally call + nativeTokenDecimals = 18; + } + /// @inheritdoc IERC20Bridge function enqueueDelayedMessage( uint8 kind, From cc0ae8fa1a8e1c330881ba89b651bb90558c8b14 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 14 Jan 2025 10:22:03 -0500 Subject: [PATCH 2/7] more intentional function name --- src/bridge/ERC20Bridge.sol | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/bridge/ERC20Bridge.sol b/src/bridge/ERC20Bridge.sol index bc37c92eb..0cde00a9d 100644 --- a/src/bridge/ERC20Bridge.sol +++ b/src/bridge/ERC20Bridge.sol @@ -62,11 +62,9 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge { } } - /// @notice When upgrading from v1.x.x to v2.1.1, nativeTokenDecimals must be set to 18. + /// @notice When upgrading a custom fee chain from v1.x.x to v2.1.2, nativeTokenDecimals must be set to 18. /// This is because v1.x.x contracts assume 18 decimals, but do not have the decimals set in storage. - function postUpgradeInit() external onlyDelegated onlyProxyOwner { - // todo: consider require(nativeToken.decimals() == 18) - // or maybe renaming the postUpgradeInit function to make it harder to accidentally call + function forceEighteenDecimalsPatch() external onlyDelegated onlyProxyOwner { nativeTokenDecimals = 18; } From 090d2042e85074fef78027a6916799b3ecc2abe4 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 14 Jan 2025 10:24:42 -0500 Subject: [PATCH 3/7] comment --- src/bridge/ERC20Bridge.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bridge/ERC20Bridge.sol b/src/bridge/ERC20Bridge.sol index 0cde00a9d..73407928f 100644 --- a/src/bridge/ERC20Bridge.sol +++ b/src/bridge/ERC20Bridge.sol @@ -63,7 +63,7 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge { } /// @notice When upgrading a custom fee chain from v1.x.x to v2.1.2, nativeTokenDecimals must be set to 18. - /// This is because v1.x.x contracts assume 18 decimals, but do not have the decimals set in storage. + /// This is because v1.x.x contracts assume 18 decimals, but the ERC20Bridge does not have the decimals set in storage. function forceEighteenDecimalsPatch() external onlyDelegated onlyProxyOwner { nativeTokenDecimals = 18; } From 523a2a413959a59a903764f77a3edaad727bb6ef Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 15 Jan 2025 15:45:06 -0500 Subject: [PATCH 4/7] call it postUpgradeInit --- src/bridge/ERC20Bridge.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bridge/ERC20Bridge.sol b/src/bridge/ERC20Bridge.sol index 73407928f..68befb657 100644 --- a/src/bridge/ERC20Bridge.sol +++ b/src/bridge/ERC20Bridge.sol @@ -64,7 +64,7 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge { /// @notice When upgrading a custom fee chain from v1.x.x to v2.1.2, nativeTokenDecimals must be set to 18. /// This is because v1.x.x contracts assume 18 decimals, but the ERC20Bridge does not have the decimals set in storage. - function forceEighteenDecimalsPatch() external onlyDelegated onlyProxyOwner { + function postUpgradeInit() external onlyDelegated onlyProxyOwner { nativeTokenDecimals = 18; } From 275ba6cc4af028e67beea29b77df32807f5aefa2 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 15 Jan 2025 15:49:07 -0500 Subject: [PATCH 5/7] add zero check --- src/bridge/ERC20Bridge.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bridge/ERC20Bridge.sol b/src/bridge/ERC20Bridge.sol index 68befb657..727c3a7fd 100644 --- a/src/bridge/ERC20Bridge.sol +++ b/src/bridge/ERC20Bridge.sol @@ -65,6 +65,9 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge { /// @notice When upgrading a custom fee chain from v1.x.x to v2.1.2, nativeTokenDecimals must be set to 18. /// This is because v1.x.x contracts assume 18 decimals, but the ERC20Bridge does not have the decimals set in storage. function postUpgradeInit() external onlyDelegated onlyProxyOwner { + // this zero check might save you from accidentally upgrading from v2.x.x to v2.1.2 + // it will not save you if your native token is supposed to have 0 decimals + require(nativeTokenDecimals == 0, "NONZERO_NATIVE_TOKEN_DECIMALS"); nativeTokenDecimals = 18; } From 576533705779047ef395a82661f8ea337c25799e Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Sat, 25 Jan 2025 16:40:40 +0000 Subject: [PATCH 6/7] Added post upgrade init sig --- test/signatures/ERC20Bridge | 1 + 1 file changed, 1 insertion(+) diff --git a/test/signatures/ERC20Bridge b/test/signatures/ERC20Bridge index f7839312f..b47e657b7 100644 --- a/test/signatures/ERC20Bridge +++ b/test/signatures/ERC20Bridge @@ -13,6 +13,7 @@ "initialize(address,address)": "485cc955", "nativeToken()": "e1758bd8", "nativeTokenDecimals()": "ad48cb5e", + "postUpgradeInit()": "95fcea78", "rollup()": "cb23bcb5", "sequencerInbox()": "ee35f327", "sequencerInboxAccs(uint256)": "16bf5579", From 31cac4c82aa0e3bf3639c2c550a2dd0da594a0ec Mon Sep 17 00:00:00 2001 From: gzeon Date: Wed, 5 Feb 2025 23:50:58 +0900 Subject: [PATCH 7/7] chore: v2.1.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 76354ea70..43ce82fb7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@arbitrum/nitro-contracts", - "version": "2.1.1", + "version": "2.1.2", "description": "Layer 2 precompiles and rollup for Arbitrum Nitro", "author": "Offchain Labs, Inc.", "license": "BUSL-1.1",