From d752a8b91a68b71f8623b83fa4db1defe2ce09d7 Mon Sep 17 00:00:00 2001 From: Viraz Malhotra Date: Fri, 25 Oct 2024 16:01:15 +0530 Subject: [PATCH 1/2] chore: update natspec doc for portal reset rate limit method (#357) Co-authored-by: Mad <46090742+DefiCake@users.noreply.github.com> --- .changeset/odd-seahorses-thank.md | 5 +++++ .../fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/odd-seahorses-thank.md diff --git a/.changeset/odd-seahorses-thank.md b/.changeset/odd-seahorses-thank.md new file mode 100644 index 00000000..59aefc1f --- /dev/null +++ b/.changeset/odd-seahorses-thank.md @@ -0,0 +1,5 @@ +--- +'@fuel-bridge/solidity-contracts': patch +--- + +update natspec doc for reset rate limit method diff --git a/packages/solidity-contracts/contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol b/packages/solidity-contracts/contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol index edea39b7..25354547 100644 --- a/packages/solidity-contracts/contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol +++ b/packages/solidity-contracts/contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol @@ -86,8 +86,8 @@ contract FuelMessagePortalV3 is FuelMessagePortalV2 { /** * @notice Resets the rate limit amount. * @param _amount The amount to reset the limit to. - * Fuel's implementation is inspired by the Linea Bridge dessign (https://github.com/Consensys/linea-contracts/blob/main/contracts/messageService/lib/RateLimiter.sol) - * Only point of difference from the linea implementation is that when currentPeriodEnd >= block.timestamp then if the new rate limit amount is less than the currentPeriodAmount, then currentPeriodAmount is not updated this makes sure that if rate limit is first reduced & then increased within the rate limit duration then any extra amount can't be withdrawn + * Fuel's implementation is inspired by the Linea Bridge design (https://github.com/Consensys/linea-contracts/blob/main/contracts/messageService/lib/RateLimiter.sol) + * Only point of difference from the linea implementation is that when currentPeriodEnd >= block.timestamp, then currentPeriodAmount is not updated. This makes sure that if rate limit is first reduced & then increased within the rate limit duration then any extra amount can't be withdrawn. */ function resetRateLimitAmount(uint256 _amount) external onlyRole(SET_RATE_LIMITER_ROLE) { // if period has expired then currentPeriodAmount is zero From dea44104b9b01825a8d3b560381dd99ac6f05b8f Mon Sep 17 00:00:00 2001 From: Viraz Malhotra Date: Fri, 25 Oct 2024 16:22:28 +0530 Subject: [PATCH 2/2] fix: manual verify upgrade ci (#356) - update manual verify upgrade payload file path in ci --------- Co-authored-by: Mad <46090742+DefiCake@users.noreply.github.com> --- .changeset/violet-rice-explain.md | 5 + .github/workflows/manual-verify-upgrade.yml | 2 +- .../.openzeppelin/sepolia.json | 774 ++++++++++++++++++ .../upgradeTest/FuelChainState.json | 6 +- .../upgradeTest/FuelERC20GatewayV4.json | 116 ++- .../upgradeTest/FuelMessagePortalV3.json | 11 +- 6 files changed, 904 insertions(+), 10 deletions(-) create mode 100644 .changeset/violet-rice-explain.md diff --git a/.changeset/violet-rice-explain.md b/.changeset/violet-rice-explain.md new file mode 100644 index 00000000..e4306d60 --- /dev/null +++ b/.changeset/violet-rice-explain.md @@ -0,0 +1,5 @@ +--- +'@fuel-bridge/solidity-contracts': patch +--- + +update manual verify upgrade payload file path in ci diff --git a/.github/workflows/manual-verify-upgrade.yml b/.github/workflows/manual-verify-upgrade.yml index 186d89eb..3a97cbc7 100644 --- a/.github/workflows/manual-verify-upgrade.yml +++ b/.github/workflows/manual-verify-upgrade.yml @@ -33,5 +33,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: deployment-bytecode - path: verification.json + path: ./packages/solidity-contracts/verification.json retention-days: 90 diff --git a/packages/solidity-contracts/.openzeppelin/sepolia.json b/packages/solidity-contracts/.openzeppelin/sepolia.json index 69e02ee0..54ef34da 100644 --- a/packages/solidity-contracts/.openzeppelin/sepolia.json +++ b/packages/solidity-contracts/.openzeppelin/sepolia.json @@ -20,6 +20,21 @@ "address": "0x840e5a0dF831aCB8e90fD5f92E09b9a7731758d6", "txHash": "0x5a57f6fe558573dba4c3e79659366326eee92ee56bda9e722011aa29bfe2b16b", "kind": "uups" + }, + { + "address": "0x2F9bC59d0b1C54235e294F21A8195Bcc93b6CEd3", + "txHash": "0xe28b5557742230b79aa517784c8ec45aefe5974a82fee469ee875156b9cb7e4f", + "kind": "uups" + }, + { + "address": "0x6DF09348cfe521a471198aa5eFFA76FDA43fC558", + "txHash": "0x8070a9aa26bc79ed9174f7e1cb4433562d17fdbabaa8943874c78541d5a00a3b", + "kind": "uups" + }, + { + "address": "0x9B7722f30f6e3D4516C783a3a1Eaeb42c199c891", + "txHash": "0x7ac5315c69679915d49cf9f07cd6c46ba5034e1a88d5ad868aa880a83e5fa066", + "kind": "uups" } ], "impls": { @@ -783,6 +798,765 @@ "0x757F667dd94626677a01829b86675FD53988eFA3", "0x1D81f89e994fed1b00cE765771535B31B67e3AB9" ] + }, + "eb2bcb2321764e1a718f55713c724053046b790ff72e2d88c342c9cebb9a35e2": { + "address": "0xbaE9B10ccEb75825bcF01c4a4aecB219b282223E", + "txHash": "0xb9c53c368c39af8111f9a373b12f088cb1d7d9ec8c35645afa441c7c1ed2ea78", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_paused", + "offset": 0, + "slot": "51", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_roles", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_bytes32,t_struct(RoleData)23_storage)", + "contract": "AccessControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:57" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "AccessControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:260" + }, + { + "label": "__gap", + "offset": 0, + "slot": "201", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "251", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "_commitSlots", + "offset": 0, + "slot": "301", + "type": "t_array(t_struct(Commit)8187_storage)240_storage", + "contract": "FuelChainState", + "src": "contracts/fuelchain/FuelChainState.sol:67" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_struct(Commit)8187_storage)240_storage": { + "label": "struct Commit[240]", + "numberOfBytes": "15360" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)23_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(Commit)8187_storage": { + "label": "struct Commit", + "members": [ + { + "label": "blockHash", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "timestamp", + "type": "t_uint32", + "offset": 0, + "slot": "1" + }, + { + "label": "reserved1", + "type": "t_address", + "offset": 4, + "slot": "1" + }, + { + "label": "reserved2", + "type": "t_uint16", + "offset": 24, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)23_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + }, + "allAddresses": [ + "0xbaE9B10ccEb75825bcF01c4a4aecB219b282223E", + "0x22da85A045586B4b5b3620E8b47A9060D4325cc5" + ] + }, + "13685e0abb15104bf2ba2e66a106e0ce94aa6ad997592dd16284652712c16645": { + "address": "0x6a665E3271cB1D95CEFB41851350522518bEDD41", + "txHash": "0xba5f938e2237f5c42068179cff206f53d023377185711c524d4656afa83c650d", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_paused", + "offset": 0, + "slot": "51", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_roles", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_bytes32,t_struct(RoleData)23_storage)", + "contract": "AccessControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:57" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "AccessControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:260" + }, + { + "label": "_status", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "ReentrancyGuardTransientUpgradable", + "src": "contracts/security/ReentrancyGuardTransientUpgradable.sol:23" + }, + { + "label": "__gap", + "offset": 0, + "slot": "202", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardTransientUpgradable", + "src": "contracts/security/ReentrancyGuardTransientUpgradable.sol:81" + }, + { + "label": "__gap", + "offset": 0, + "slot": "251", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "301", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "_incomingMessageSender", + "offset": 0, + "slot": "351", + "type": "t_bytes32", + "contract": "FuelMessagePortal", + "src": "contracts/fuelchain/FuelMessagePortal.sol:96" + }, + { + "label": "_fuelChainState", + "offset": 0, + "slot": "352", + "type": "t_contract(FuelChainState)8509", + "contract": "FuelMessagePortal", + "src": "contracts/fuelchain/FuelMessagePortal.sol:99" + }, + { + "label": "_outgoingMessageNonce", + "offset": 0, + "slot": "353", + "type": "t_uint256", + "contract": "FuelMessagePortal", + "src": "contracts/fuelchain/FuelMessagePortal.sol:102" + }, + { + "label": "_incomingMessageSuccessful", + "offset": 0, + "slot": "354", + "type": "t_mapping(t_bytes32,t_bool)", + "contract": "FuelMessagePortal", + "src": "contracts/fuelchain/FuelMessagePortal.sol:105" + }, + { + "label": "__gap", + "offset": 0, + "slot": "355", + "type": "t_array(t_uint256)49_storage", + "contract": "FuelMessagePortal", + "src": "contracts/fuelchain/FuelMessagePortal.sol:337" + }, + { + "label": "totalDeposited", + "offset": 0, + "slot": "404", + "type": "t_uint256", + "contract": "FuelMessagePortalV2", + "src": "contracts/fuelchain/FuelMessagePortal/v2/FuelMessagePortalV2.sol:14" + }, + { + "label": "__gap", + "offset": 0, + "slot": "405", + "type": "t_array(t_uint256)49_storage", + "contract": "FuelMessagePortalV2", + "src": "contracts/fuelchain/FuelMessagePortal/v2/FuelMessagePortalV2.sol:108" + }, + { + "label": "withdrawalsPaused", + "offset": 0, + "slot": "454", + "type": "t_bool", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:31" + }, + { + "label": "messageIsBlacklisted", + "offset": 0, + "slot": "455", + "type": "t_mapping(t_bytes32,t_bool)", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:33" + }, + { + "label": "currentPeriodAmount", + "offset": 0, + "slot": "456", + "type": "t_uint256", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:36" + }, + { + "label": "currentPeriodEnd", + "offset": 0, + "slot": "457", + "type": "t_uint256", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:39" + }, + { + "label": "limitAmount", + "offset": 0, + "slot": "458", + "type": "t_uint256", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:42" + }, + { + "label": "rateLimitEnabled", + "offset": 0, + "slot": "459", + "type": "t_bool", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:45" + }, + { + "label": "__gap", + "offset": 0, + "slot": "460", + "type": "t_array(t_uint256)48_storage", + "contract": "FuelMessagePortalV3", + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:266" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(FuelChainState)8509": { + "label": "contract FuelChainState", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_bool)": { + "label": "mapping(bytes32 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)23_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)23_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + }, + "allAddresses": [ + "0x6a665E3271cB1D95CEFB41851350522518bEDD41", + "0x92430AA9235452c01142aC1eFc4fc6346a521Bd4" + ] + }, + "4d966d7ed27b42389e221204c69a55a344941d27640195920980e7c5f1bc3a38": { + "address": "0x0E69663dab6D1ad8903Dd4b61ca764126Db9F05E", + "txHash": "0xf50f6efd564f5b136c51d670f5194d199142947afd950208b264ee06df8b8599", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "_fuelMessagePortal", + "offset": 2, + "slot": "0", + "type": "t_contract(FuelMessagePortal)9145", + "contract": "FuelMessagesEnabled", + "src": "contracts/messaging/FuelMessagesEnabled.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)49_storage", + "contract": "FuelMessagesEnabledUpgradeable", + "src": "contracts/messaging/FuelMessagesEnabledUpgradeable.sol:31" + }, + { + "label": "__gap", + "offset": 0, + "slot": "50", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_paused", + "offset": 0, + "slot": "100", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "150", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_roles", + "offset": 0, + "slot": "200", + "type": "t_mapping(t_bytes32,t_struct(RoleData)23_storage)", + "contract": "AccessControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:57" + }, + { + "label": "__gap", + "offset": 0, + "slot": "201", + "type": "t_array(t_uint256)49_storage", + "contract": "AccessControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:260" + }, + { + "label": "__gap", + "offset": 0, + "slot": "250", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "300", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "whitelistRequired", + "offset": 0, + "slot": "350", + "type": "t_bool", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:79" + }, + { + "label": "assetIssuerId", + "offset": 0, + "slot": "351", + "type": "t_bytes32", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:80" + }, + { + "label": "_deposits", + "offset": 0, + "slot": "352", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:82" + }, + { + "label": "_depositLimits", + "offset": 0, + "slot": "353", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:83" + }, + { + "label": "_decimalsCache", + "offset": 0, + "slot": "354", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:84" + }, + { + "label": "rateLimitDuration", + "offset": 0, + "slot": "355", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:87" + }, + { + "label": "currentPeriodAmount", + "offset": 0, + "slot": "356", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:90" + }, + { + "label": "currentPeriodEnd", + "offset": 0, + "slot": "357", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:93" + }, + { + "label": "limitAmount", + "offset": 0, + "slot": "358", + "type": "t_mapping(t_address,t_uint256)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:96" + }, + { + "label": "rateLimitStatus", + "offset": 0, + "slot": "359", + "type": "t_mapping(t_address,t_bool)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:101" + }, + { + "label": "__gap", + "offset": 0, + "slot": "360", + "type": "t_array(t_uint256)48_storage", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:527" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(FuelMessagePortal)9145": { + "label": "contract FuelMessagePortal", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)23_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)23_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + }, + "allAddresses": [ + "0x0E69663dab6D1ad8903Dd4b61ca764126Db9F05E", + "0x619859BfD233372B517846E4B66217b76851e9c6" + ] } } } diff --git a/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json b/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json index 1af23c87..3b580502 100644 --- a/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json +++ b/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json @@ -1,5 +1,5 @@ { - "address": "0x3328a69eA205EC830672c74D3e550eb92f229416", + "address": "0x2F9bC59d0b1C54235e294F21A8195Bcc93b6CEd3", "abi": [ { "inputs": [ @@ -577,7 +577,7 @@ "type": "function" } ], - "transactionHash": "0x29c9742880d13044c6b181d8b2814e9071f15c3fd99f7cae780f00f9646b8e60", + "transactionHash": "0x2209bc9bb48205152b3e56b95920e31abcddf8e494d93367523640451d6e1d6a", "numDeployments": 2, "linkedData": { "constructorArgs": [ @@ -587,5 +587,5 @@ ], "factory": "FuelChainState" }, - "implementation": "0x1f317F96D700246cF291DfA44a7718267720cDF0" + "implementation": "0x22da85A045586B4b5b3620E8b47A9060D4325cc5" } \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json b/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json index 5e008633..079a06d8 100644 --- a/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json +++ b/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json @@ -1,5 +1,5 @@ { - "address": "0x840e5a0dF831aCB8e90fD5f92E09b9a7731758d6", + "address": "0x9B7722f30f6e3D4516C783a3a1Eaeb42c199c891", "abi": [ { "inputs": [], @@ -51,6 +51,11 @@ "name": "InvalidSender", "type": "error" }, + { + "inputs": [], + "name": "PermitNotAllowed", + "type": "error" + }, { "inputs": [], "name": "RateLimitExceeded", @@ -476,6 +481,111 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "to", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct PermitSignature", + "name": "permitSignature", + "type": "tuple" + } + ], + "name": "depositWithDataAndPermit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "to", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct PermitSignature", + "name": "permitSignature", + "type": "tuple" + } + ], + "name": "depositWithPermit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, { "inputs": [ { @@ -912,11 +1022,11 @@ "type": "function" } ], - "transactionHash": "0x5b2eb393512ae396615f2d57a74a5291b10e874bca57412a9e6c66145be6c183", + "transactionHash": "0xd8f22449167581468fca36cdde153de3157551ba60ad1c410a65d082ff546496", "numDeployments": 2, "linkedData": { "factory": "FuelERC20GatewayV4", "constructorArgs": [] }, - "implementation": "0x757F667dd94626677a01829b86675FD53988eFA3" + "implementation": "0x619859BfD233372B517846E4B66217b76851e9c6" } \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json b/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json index a3da1fd7..fbdb31db 100644 --- a/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json +++ b/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json @@ -1,5 +1,5 @@ { - "address": "0x61725EBCc5a6db36184D55DBbc275a08aD63B0Ad", + "address": "0x6DF09348cfe521a471198aa5eFFA76FDA43fC558", "abi": [ { "inputs": [ @@ -77,6 +77,11 @@ "name": "RateLimitExceeded", "type": "error" }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, { "inputs": [], "name": "UnfinalizedBlock", @@ -1155,7 +1160,7 @@ "type": "function" } ], - "transactionHash": "0x9314a0f4d36da6c46f2860c5aaa3430b26b92c61e0f3e14cd5efc9b24c976257", + "transactionHash": "0x8abcc66151b5f31e66775ba28c9d8b550f4474794eb256b7ec8e4e77abd2c964", "numDeployments": 2, "linkedData": { "factory": "FuelMessagePortalV3", @@ -1164,5 +1169,5 @@ 604800 ] }, - "implementation": "0xbc05BF1F0d82391e38e3AF54B2A578709AeF11c5" + "implementation": "0x92430AA9235452c01142aC1eFc4fc6346a521Bd4" } \ No newline at end of file