Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(protocol): fix BridgedERC20V2.sol initializer logic #17823

Merged
merged 9 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 36 additions & 27 deletions packages/protocol/contract_layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
|--------------------|----------------------------------------------|------|--------|-------|------------------------------------------------------|
Expand Down Expand Up @@ -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 |
|-------------------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------------------------------------------|
Expand Down
9 changes: 8 additions & 1 deletion packages/protocol/contracts/tokenvault/BridgedERC20V2.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea
error BTOKEN_INVALID_SIG();

/// @inheritdoc IBridgedERC20Initializable
/// @dev Calling this function will change the initialized version to 2.
function init(
address _owner,
address _sharedAddressManager,
Expand All @@ -41,7 +42,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea
external
virtual
override
initializer
reinitializer(2)
dantaik marked this conversation as resolved.
Show resolved Hide resolved
{
// Check if provided parameters are valid
LibBridgedToken.validateInputs(_srcToken, _srcChainId);
Expand All @@ -55,10 +56,16 @@ 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");
}
/**
* @inheritdoc IERC20PermitUpgradeable
*/
// solhint-disable-next-line func-name-mixedcase

function DOMAIN_SEPARATOR() external view override returns (bytes32) {
return _domainSeparatorV4();
}
Expand Down
3 changes: 1 addition & 2 deletions packages/protocol/deployments/gen-layouts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ contracts=(
"ERC721Vault"
"ERC1155Vault"
"BridgedERC20"
"BridgedERC20V2"
"BridgedERC721"
"BridgedERC1155"
"AssignmentHook"
"ERC20Airdrop"
"AutomataDcapV3Attestation"
"SgxVerifier"
"RiscZeroVerifier"
Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/test/TaikoTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/test/tokenvault/ERC20Vault.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ contract PrankDestBridge {
}
}

contract UpdatedBridgedERC20 is BridgedERC20 {
contract UpdatedBridgedERC20 is BridgedERC20V2 {
function helloWorld() public pure returns (string memory) {
return "helloworld";
}
Expand Down