From b6c7b709276709a0b3fdd69a052175294d17421d Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 21 Jul 2024 14:20:09 +0800 Subject: [PATCH 1/7] fix BridgedERC20V2 --- packages/protocol/contracts/tokenvault/BridgedERC20V2.sol | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol b/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol index 3ac25713fd..5d259d559f 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol @@ -41,7 +41,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea external virtual override - initializer + reinitializer(2) { // Check if provided parameters are valid LibBridgedToken.validateInputs(_srcToken, _srcChainId); @@ -55,10 +55,14 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea __srcDecimals = _decimals; } + function init2() external reinitializer(2) { + __EIP712_init_unchained(name(), "1"); + } /** * @inheritdoc IERC20PermitUpgradeable */ // solhint-disable-next-line func-name-mixedcase + function DOMAIN_SEPARATOR() external view override returns (bytes32) { return _domainSeparatorV4(); } From 205fee4414b2b685f37b401b6fab1217c518e3a0 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 21 Jul 2024 14:21:58 +0800 Subject: [PATCH 2/7] Update BridgedERC20V2.sol --- packages/protocol/contracts/tokenvault/BridgedERC20V2.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol b/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol index 5d259d559f..9d24710ca2 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol @@ -29,6 +29,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea error BTOKEN_INVALID_SIG(); /// @inheritdoc IBridgedERC20Initializable + /// @dev Calling this funciton will change the initliazed version to 2. function init( address _owner, address _sharedAddressManager, @@ -55,6 +56,8 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea __srcDecimals = _decimals; } + /// @dev This function shall be called when upgrading a deployed contract from {BridgedERC20} to + /// {BridgedERC20V2}. function init2() external reinitializer(2) { __EIP712_init_unchained(name(), "1"); } From d7481e82c189b1f91ffb1ab545740b084aa2ae8d Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 21 Jul 2024 14:27:51 +0800 Subject: [PATCH 3/7] more --- packages/protocol/test/TaikoTest.sol | 2 +- .../tokenvault/{BridgedERC20.t.sol => BridgedERC20V2.t.sol} | 2 +- packages/protocol/test/tokenvault/ERC20Vault.t.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename packages/protocol/test/tokenvault/{BridgedERC20.t.sol => BridgedERC20V2.t.sol} (98%) diff --git a/packages/protocol/test/TaikoTest.sol b/packages/protocol/test/TaikoTest.sol index adcbeb1c1b..d9d1a103dd 100644 --- a/packages/protocol/test/TaikoTest.sol +++ b/packages/protocol/test/TaikoTest.sol @@ -6,7 +6,7 @@ import "forge-std/src/Test.sol"; import "@openzeppelin/contracts/utils/math/SafeCast.sol"; import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; -import "../contracts/tokenvault/BridgedERC20.sol"; +import "../contracts/tokenvault/BridgedERC20V2.sol"; import "../contracts/tokenvault/BridgedERC721.sol"; import "../contracts/tokenvault/BridgedERC1155.sol"; import "../contracts/tokenvault/ERC20Vault.sol"; diff --git a/packages/protocol/test/tokenvault/BridgedERC20.t.sol b/packages/protocol/test/tokenvault/BridgedERC20V2.t.sol similarity index 98% rename from packages/protocol/test/tokenvault/BridgedERC20.t.sol rename to packages/protocol/test/tokenvault/BridgedERC20V2.t.sol index 80470c7064..7b662e8841 100644 --- a/packages/protocol/test/tokenvault/BridgedERC20.t.sol +++ b/packages/protocol/test/tokenvault/BridgedERC20V2.t.sol @@ -127,7 +127,7 @@ contract TestBridgedERC20 is TaikoTest { return BridgedERC20( deployProxy({ name: "bridged_token1", - impl: address(new BridgedERC20()), + impl: address(new BridgedERC20V2()), data: abi.encodeCall( BridgedERC20.init, (owner, address(manager), srcToken, srcChainId, srcDecimals, name, name) diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index 98f1c9ddc1..e2079cfc5d 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -61,7 +61,7 @@ contract PrankDestBridge { } } -contract UpdatedBridgedERC20 is BridgedERC20 { +contract UpdatedBridgedERC20 is BridgedERC20V2 { function helloWorld() public pure returns (string memory) { return "helloworld"; } From e0682eaf5bd24a6bdd122fccb3d7abbf7b2c6320 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 21 Jul 2024 14:28:35 +0800 Subject: [PATCH 4/7] Update BridgedERC20V2.sol --- packages/protocol/contracts/tokenvault/BridgedERC20V2.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol b/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol index 9d24710ca2..ded2c64168 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20V2.sol @@ -29,7 +29,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea error BTOKEN_INVALID_SIG(); /// @inheritdoc IBridgedERC20Initializable - /// @dev Calling this funciton will change the initliazed version to 2. + /// @dev Calling this function will change the initialized version to 2. function init( address _owner, address _sharedAddressManager, From b9cf6c3da9214175131b7b49fd8acb3812f6bb11 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 21 Jul 2024 14:28:57 +0800 Subject: [PATCH 5/7] Update gen-layouts.sh --- packages/protocol/deployments/gen-layouts.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/protocol/deployments/gen-layouts.sh b/packages/protocol/deployments/gen-layouts.sh index f6bdb51341..8c4d5b106a 100755 --- a/packages/protocol/deployments/gen-layouts.sh +++ b/packages/protocol/deployments/gen-layouts.sh @@ -15,6 +15,7 @@ contracts=( "ERC721Vault" "ERC1155Vault" "BridgedERC20" + "BridgedERC20V2" "BridgedERC721" "BridgedERC1155" "AssignmentHook" From 0c7cdb7cedd8961e23077fca9562c45bbc4ede20 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 21 Jul 2024 14:29:22 +0800 Subject: [PATCH 6/7] Update gen-layouts.sh --- packages/protocol/deployments/gen-layouts.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/protocol/deployments/gen-layouts.sh b/packages/protocol/deployments/gen-layouts.sh index 8c4d5b106a..54551126c1 100755 --- a/packages/protocol/deployments/gen-layouts.sh +++ b/packages/protocol/deployments/gen-layouts.sh @@ -18,8 +18,6 @@ contracts=( "BridgedERC20V2" "BridgedERC721" "BridgedERC1155" - "AssignmentHook" - "ERC20Airdrop" "AutomataDcapV3Attestation" "SgxVerifier" "RiscZeroVerifier" From 4f0fbdd96f6947b78eb8b34ce7dbcecb36fdc95c Mon Sep 17 00:00:00 2001 From: dantaik Date: Sun, 21 Jul 2024 06:33:44 +0000 Subject: [PATCH 7/7] forge fmt & update contract layout table --- packages/protocol/contract_layout.md | 63 ++++++++++++++++------------ 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/packages/protocol/contract_layout.md b/packages/protocol/contract_layout.md index 618596f2d2..f48f3e8b10 100644 --- a/packages/protocol/contract_layout.md +++ b/packages/protocol/contract_layout.md @@ -305,6 +305,42 @@ | migratingInbound | bool | 303 | 20 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | | __gap | uint256[47] | 304 | 0 | 1504 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +## BridgedERC20V2 +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|--------------------------------------------------------|------|--------|-------|--------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _balances | mapping(address => uint256) | 251 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _totalSupply | uint256 | 253 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _name | string | 254 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _symbol | string | 255 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[45] | 256 | 0 | 1440 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| srcToken | address | 301 | 0 | 20 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __srcDecimals | uint8 | 301 | 20 | 1 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| srcChainId | uint256 | 302 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| migratingAddress | address | 303 | 0 | 20 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| migratingInbound | bool | 303 | 20 | 1 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[47] | 304 | 0 | 1504 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _hashedName | bytes32 | 351 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _hashedVersion | bytes32 | 352 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _name | string | 353 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _version | string | 354 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[48] | 355 | 0 | 1536 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| _nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | +| __gap | uint256[49] | 404 | 0 | 1568 | contracts/tokenvault/BridgedERC20V2.sol:BridgedERC20V2 | + ## BridgedERC721 | Name | Type | Slot | Offset | Bytes | Contract | |--------------------|----------------------------------------------|------|--------|-------|------------------------------------------------------| @@ -360,33 +396,6 @@ | name | string | 354 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | | __gap | uint256[46] | 355 | 0 | 1472 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | -## AssignmentHook - -## ERC20Airdrop -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|--------------------------|------|--------|-------|------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| _initializing | bool | 0 | 1 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[50] | 1 | 0 | 1600 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| _owner | address | 51 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[49] | 52 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| _pendingOwner | address | 101 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[49] | 102 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| addressManager | address | 151 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[49] | 152 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __reentry | uint8 | 201 | 0 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __paused | uint8 | 201 | 1 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[49] | 202 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| isClaimed | mapping(bytes32 => bool) | 251 | 0 | 32 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| merkleRoot | bytes32 | 252 | 0 | 32 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| claimStart | uint64 | 253 | 0 | 8 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| claimEnd | uint64 | 253 | 8 | 8 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[47] | 254 | 0 | 1504 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| token | address | 301 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| vault | address | 302 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | -| __gap | uint256[48] | 303 | 0 | 1536 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | - ## AutomataDcapV3Attestation | Name | Type | Slot | Offset | Bytes | Contract | |-------------------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------------------------------------------|