diff --git a/.changeset/real-pots-clean.md b/.changeset/real-pots-clean.md new file mode 100644 index 00000000..cdd49cb7 --- /dev/null +++ b/.changeset/real-pots-clean.md @@ -0,0 +1,5 @@ +--- +'@fuel-bridge/solidity-contracts': minor +--- + +ci proxy upgrade verification flow diff --git a/.github/workflows/manual-verify-upgrade.yml b/.github/workflows/manual-verify-upgrade.yml new file mode 100644 index 00000000..2179d6cf --- /dev/null +++ b/.github/workflows/manual-verify-upgrade.yml @@ -0,0 +1,38 @@ +name: Manual Verify Upgrade + +on: + workflow_dispatch: + inputs: + network: + description: 'Enter the network you want to verify the upgrade on' + required: true + default: 'mainnet' + type: string + rpc: + description: 'Enter network rpc' + required: true + default: 'https://eth.llamarpc.com' + type: string + +jobs: + verify-upgrade: + runs-on: ubuntu-latest + env: + RPC_URL: ${{ github.event.inputs.rpc }} + steps: + - uses: actions/checkout@v3 + - uses: FuelLabs/github-actions/setups/node@master + with: + node-version: 20.16.0 + pnpm-version: 9.0.6 + - name: Verify deployment bytecode + run: | + npx hardhat compile && npx hardhat verify-deployment --network ${{ github.event.inputs.network }} + working-directory: ./packages/solidity-contracts + - name: Upload bytecode as artifact + uses: actions/upload-artifact@v4 + with: + name: deployment-bytecode + path: verification.json + retention-days: 90 + working-directory: ./packages/solidity-contracts diff --git a/.gitignore b/.gitignore index d408e576..e392f12c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,7 @@ target packages/fungible-token/exports/types # General dist folders -dist \ No newline at end of file +dist + +# verification ci artifacts +packages/solidity-contracts/verification.json \ No newline at end of file diff --git a/packages/solidity-contracts/.openzeppelin/sepolia.json b/packages/solidity-contracts/.openzeppelin/sepolia.json index 3c8b2f87..779ce1b1 100644 --- a/packages/solidity-contracts/.openzeppelin/sepolia.json +++ b/packages/solidity-contracts/.openzeppelin/sepolia.json @@ -2,3816 +2,30 @@ "manifestVersion": "3.2", "proxies": [ { - "address": "0x395B125343ADebCcB05dd70e117774E3AB08a8a7", - "txHash": "0x41333c55760badde28b8cce9edfeb2e30175f468d56e75fffb10a79295368cf8", + "address": "0x3328a69eA205EC830672c74D3e550eb92f229416", + "txHash": "0x02d1ca014cbd423fd0436f187829df7974848323b58112212f004dbf1887dfe0", "kind": "uups" }, { - "address": "0x557c5cE22F877d975C2cB13D0a961a182d740fD5", - "txHash": "0x7bfa66ef6498ff545596120df88d84e69cd0f52fc7b111c2ad4c0fd0230d570f", + "address": "0x61725EBCc5a6db36184D55DBbc275a08aD63B0Ad", + "txHash": "0x1588ac2995f3c2bd5f0135e82715ebf21ef4080091fea2f759bca846720d19e1", "kind": "uups" }, { - "address": "0x341F28a65Ab45D62421CE383883404339d562c6c", - "txHash": "0xb215d741854539f0316ef08a33bb56d489c1f0500e56de0986968abbc4dfe97b", + "address": "0x0176B13E0fE397D82E8dec9ce6AabcDE2248AA00", + "txHash": "0xc5562e402762f89353f1bd8fe758fb3766ccfbc0051622a9793021ece842d077", "kind": "uups" }, { - "address": "0x6AF2aE0606C8BAea345590259633f0F5b2686Ad3", - "txHash": "0x34f219281b86318f74d953846a214561033acf1219a5d995a736e702eb4c9e46", + "address": "0x840e5a0dF831aCB8e90fD5f92E09b9a7731758d6", + "txHash": "0x5a57f6fe558573dba4c3e79659366326eee92ee56bda9e722011aa29bfe2b16b", "kind": "uups" - }, - { - "address": "0x7E2F8d3cDe4dE62948DACE602A05EEf67C5351c2", - "txHash": "0x1d87dba957506b9e2e7b9c22c96bc909d47437d5ea3c27f6ad7b6e082b6e29c4", - "kind": "uups" - }, - { - "address": "0xb4dA7bdBaa8F1D76EEE2049a1159CD24915c4797", - "txHash": "0x4549c934a210f979d329e8bafd52dce86694947eee2c8fca40d81338afc25117", - "kind": "uups" - }, - { - "address": "0x3F356E0Cf09974a8a62Ba2AFeDf442d1cB5e389a", - "txHash": "0x04d9c1ae2cdedbfa258667060f9d28a61e9ae49500bbf67bfbb74be4eb434cfe", - "kind": "uups" - }, - { - "address": "0x975080C59bD5a7C302ef7E4f9F76258B14663A34", - "txHash": "0x8ff8e8f7b58b073c3172e45366366fef600513f997d9b6e5a7296405d56570d7", - "kind": "uups" - }, - { - "address": "0xE52af7c9A2F6b243CEE9F0C423E06BAb6E5c6E3b", - "txHash": "0xeb3702f779f81f1c971ac14d13bf60c1050ab25f5f3de38d4fdf0f1f37aa6225", - "kind": "uups" - }, - { - "address": "0xc094fC648101920B1C37C733AF022942eF4042D3", - "txHash": "0xba2581e6a466472d690aac28f7d5d1323333068007df5fee9372b571721cf391", - "kind": "uups" - }, - { - "address": "0xc8C287B485ece3FF9D5E52b638DAbfAD18602018", - "txHash": "0xb9df38108c952dab5a8283650cdbf16cca8294843e75db938d42019c0604368a", - "kind": "uups" - }, - { - "address": "0x7AE7F3837433b2Ea8B7C3B29b6382eC23A1CEfA2", - "txHash": "0x89deb822b626ded07f510dd617cf2aea8679ebdeb3643fc71a110bb8670966fb", - "kind": "uups" - }, - { - "address": "0x749E27d070E2F4a3D6CED522a0D4BDCB37fA95ba", - "txHash": "0x2647fc128c8236aa7f49b6e7fda5f26062c89b38e96bba870099898bb63cfa56", - "kind": "uups" - }, - { - "address": "0xc17a3694B01238308Fd1140E2F13928ff6564f84", - "txHash": "0xad60883ee72aaf657c5a386d0684758443dd87cd4998f0489ecb26ca16cd2fac", - "kind": "uups" - }, - { - "address": "0x66bD7C366234AAd46BCFcb9EE8dFCdE86c5882f2", - "txHash": "0x615cb66bb939def58278d8178991b5cc6e36e5d0b89332a747c530006f4baa3e", - "kind": "uups" - }, - { - "address": "0x180506B8828094862d94C121307a21ad4Ab8c6DE", - "txHash": "0x425bab23103fadbd7a40eeb6268cb1e26c13a31356f9a112885c27a85b5c41ab", - "kind": "uups" - }, - { - "address": "0xE4685bE2cF255dd5E9acEb37a86389e5EE7346a8", - "txHash": "0x84e2c085977eeeb4019d3a57a1066047603822c4a5e0eeb9bfdd5510cf65a386", - "kind": "uups" - }, - { - "address": "0x0880932521f0E3a90d56bC96fD49c0c98CFCf4A7", - "txHash": "0x542c3deaee466fce122de5eb44632e9228ca893c01e0b81996e9124b232e513b", - "kind": "uups" - }, - { - "address": "0x01eb5b6122E1f65eaF4566093C2431aa0c0eaCd5", - "txHash": "0xfab802a21606f268e7479cd0f0b58b3eb474436b522a55aa7ee0a0df87f8db8e", - "kind": "uups" - }, - { - "address": "0x83114982BDe057a8907F8a081225C7d301898aDd", - "txHash": "0x94d778dc8284824f38d3aacd8172ab9a1880d686365ae3e26e8425e16d858184", - "kind": "uups" - }, - { - "address": "0x8097500F4168240f4334589170d99fE8797b6fF8", - "txHash": "0xdce60bb12134eb3e916258b01d225c7372eef36a8dc8d1f8a0964124c5c5d940", - "kind": "uups" - }, - { - "address": "0x768f9459E3339A1F7d59CcF24C80Eb4A711a01FB", - "txHash": "0x6b50229f9e4f2f4f19a16fba5bed9f832a3220c99fbd391b01809c9fae432cb3", - "kind": "uups" - }, - { - "address": "0xbdf7256C718FCede6f0af19e86D4aBDdc4DC2Ff2", - "txHash": "0x5e93f7942b84271090b9a8e44a95e2f3532d517fc73591e78711a01fccd2eea2", - "kind": "uups" - }, - { - "address": "0x404F391F96798B14C5e99BBB4a9C858da9Cf63b5", - "txHash": "0xbc2cd5b2b5ef31e24e146c50dec2e11e3f075ea04c8f374420947c6a3ccab9b2", - "kind": "uups" - }, - { - "address": "0x01855B78C1f8868DE70e84507ec735983bf262dA", - "txHash": "0xfe7d426ed7e823f4ef65c2cc10cae603ded0dedfb458073e275488f640b87c0a", - "kind": "uups" - }, - { - "address": "0xa97200022c7aDb1b15f0f61f374E3A0c90e2Efa0", - "txHash": "0x78839dcc8bd48354a7f678f95ed1b4dc07439c2fa64f5e7dde48f80e5676c6ce", - "kind": "uups" - }, - { - "address": "0x2e87c41C9B3d932b6DA3C805baEfB7bbe863fCc6", - "txHash": "0x62366b1fb7f457c24a7096d2266abf97238e3271b0a0d41dd54dfdb37ac83018", - "kind": "uups" - }, - { - "address": "0xf38F1e65adc58fc74BaaA132f645Aa5307F2d304", - "txHash": "0xed885a7b39592bda396e87dee34915d227b02d3bea4cb82bb4c4815b80c47025", - "kind": "uups" - }, - { - "address": "0x84C9ef458e85bA74F4DBF3a0B14075bE5341747B", - "txHash": "0xa27b677f1028c5a3f9ea3614de771e9265e13e0bf31e072c62f9bb8c6f3b64de", - "kind": "uups" - }, - { - "address": "0x8B96Ed4aA36041B91a8510A1c644fC72177B5eA0", - "txHash": "0xb0a60d8cfd6fb250e76f35b0b8cf12ca628a2d4accf8a6c89dd69ffe37c85187", - "kind": "uups" - }, - { - "address": "0xd1d5a4379dccC46D5c8D1c6c2656ce705698e359", - "txHash": "0x73697b5e8b777713294ab4085e0b1a1d1d283b6e32ab5195ad3b2e79354ab31a", - "kind": "uups" - } - ], - "impls": { - "f00e439bf3bca3f28854886a4c86389ac0ff38419aedaa7c574512822bc6c041": { - "address": "0x1eF82F91979B8bdbaF700801E66A8fA260e7CA01", - "txHash": "0x29ad6c9265704c557d63adc126b588cdebf8c818bb3d091e4b678e8550812b29", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_commitSlots", - "offset": 0, - "slot": "301", - "type": "t_array(t_struct(Commit)5617_storage)240_storage", - "contract": "FuelChainState", - "src": "contracts/fuelchain/FuelChainState.sol:59" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Commit)5617_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)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(Commit)5617_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)2335_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": {} - } - }, - "633d0d6ac350c3e68663f815e4050607b160b56384884f71c8def313de329079": { - "address": "0x6CBa861680cD1d79201520AdDe863A205C69C150", - "txHash": "0xb8687dd8539b5e31ab39eeb22083026c8c244c70ab402b90be27d68f7093af56", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "_status", - "offset": 0, - "slot": "201", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:80" - }, - { - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "301", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "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)5738", - "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:333" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)5738": { - "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)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "8670193788ce74841242315683beb2e1934bdf8029c08d6e785d134fd871abb0": { - "address": "0xAE18dbA8fFaF4d9dCbb20f474847785D7e89deEb", - "txHash": "0x51bf2d0173b60163a8dd75f4fc90abd81e2f722d7d2b7a2237c29caca273149b", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "_fuelMessagePortal", - "offset": 2, - "slot": "0", - "type": "t_contract(FuelMessagePortal)6478", - "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:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "250", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "300", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "350", - "type": "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))", - "contract": "FuelERC20Gateway", - "src": "contracts/messaging/gateway/FuelERC20Gateway.sol:54" - }, - { - "label": "isBridge", - "offset": 0, - "slot": "351", - "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:9" - }, - { - "label": "__gap", - "offset": 0, - "slot": "352", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "401", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelERC20GatewayV2", - "src": "contracts/messaging/gateway/v2/FuelERC20GatewayV2.sol:48" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6478": { - "label": "contract FuelMessagePortal", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))": { - "label": "mapping(address => mapping(bytes32 => uint256))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { - "label": "mapping(bytes32 => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint256)": { - "label": "mapping(bytes32 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "03fea0e508046fa017aebdfa28b14130d95c484084f9bf4b7e94ab916d0f68bf": { - "address": "0xb52787f8f297cC3411986a00e4F288B09cA5c289", - "txHash": "0x66b8319ea953f41ea4487f196b639d7dd8ec478c9c0c98c20a75c4d2fc6bf6ae", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "_fuelMessagePortal", - "offset": 2, - "slot": "0", - "type": "t_contract(FuelMessagePortal)6478", - "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:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "250", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "300", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "350", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_bytes32))", - "contract": "FuelERC721Gateway", - "src": "contracts/messaging/gateway/FuelERC721Gateway.sol:61" - }, - { - "label": "isBridge", - "offset": 0, - "slot": "351", - "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:9" - }, - { - "label": "__gap", - "offset": 0, - "slot": "352", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "401", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelERC721GatewayV2", - "src": "contracts/messaging/gateway/v2/FuelERC721GatewayV2.sol:47" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6478": { - "label": "contract FuelMessagePortal", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_bytes32))": { - "label": "mapping(address => mapping(uint256 => bytes32))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { - "label": "mapping(bytes32 => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_bytes32)": { - "label": "mapping(uint256 => bytes32)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "171392162c9233e223ce2b77b5355cbf64da0d06c2e2ca72280667f327ac4c19": { - "address": "0x40F53F708650675Ff85255071cc07FcBaFd38CE1", - "txHash": "0x6b9d73ca88cd196101649e5843763995a2fc1ce6603ed5efec39ee0ee73917f3", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_commitSlots", - "offset": 0, - "slot": "301", - "type": "t_array(t_struct(Commit)5617_storage)240_storage", - "contract": "FuelChainState", - "src": "contracts/fuelchain/FuelChainState.sol:59" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Commit)5617_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)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(Commit)5617_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)2335_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": {} - } - }, - "1abd8fd3f76995ea497812dae5431664ae4c2a77d4a0506dc154eaf2abf595a7": { - "address": "0x04dAEee4C4253f861eAe84503d4a518b3475b696", - "txHash": "0x83219e8f0a40ae786521afff46b59a66129b6b9be21efaab6b2927f848bfa913", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "_fuelMessagePortal", - "offset": 2, - "slot": "0", - "type": "t_contract(FuelMessagePortal)6478", - "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:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "250", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "300", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "350", - "type": "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))", - "contract": "FuelERC20Gateway", - "src": "contracts/messaging/gateway/FuelERC20Gateway.sol:54" - }, - { - "label": "isBridge", - "offset": 0, - "slot": "351", - "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:9" - }, - { - "label": "__gap", - "offset": 0, - "slot": "352", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "401", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelERC20GatewayV2", - "src": "contracts/messaging/gateway/v2/FuelERC20GatewayV2.sol:48" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6478": { - "label": "contract FuelMessagePortal", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))": { - "label": "mapping(address => mapping(bytes32 => uint256))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { - "label": "mapping(bytes32 => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint256)": { - "label": "mapping(bytes32 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "a4ecb083a24a265183813eb458832362a60f29747105ef89b2d6e104c11b345d": { - "address": "0xc7955dea58f8b3C9cD7C373ae882ab87912791E9", - "txHash": "0x8be01d85cf9631b2d4fc55c04840b7a7663d550c07f80ee27f37dc9e6828336e", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "_fuelMessagePortal", - "offset": 2, - "slot": "0", - "type": "t_contract(FuelMessagePortal)6478", - "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:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "250", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "300", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "350", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_bytes32))", - "contract": "FuelERC721Gateway", - "src": "contracts/messaging/gateway/FuelERC721Gateway.sol:61" - }, - { - "label": "isBridge", - "offset": 0, - "slot": "351", - "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:9" - }, - { - "label": "__gap", - "offset": 0, - "slot": "352", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelBridgeBaseV2", - "src": "contracts/messaging/gateway/v2/FuelBridgeBaseV2.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "401", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelERC721GatewayV2", - "src": "contracts/messaging/gateway/v2/FuelERC721GatewayV2.sol:47" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6478": { - "label": "contract FuelMessagePortal", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_bytes32))": { - "label": "mapping(address => mapping(uint256 => bytes32))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { - "label": "mapping(bytes32 => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_bytes32)": { - "label": "mapping(uint256 => bytes32)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "996e7228f088a773bce811345abca7fa29b8a36d07d7aff1ec987ce75b38260a": { - "address": "0xCcEAcd8e88eFD6d0439d3e1051a635dbcEaC14ef", - "txHash": "0xd1d8c1de87a191725a154bd4d4cabe73defee701e6af681ffe8f483890847ffd", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "_status", - "offset": 0, - "slot": "201", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:80" - }, - { - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "301", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_incomingMessageSender", - "offset": 0, - "slot": "351", - "type": "t_bytes32", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:100" - }, - { - "label": "_fuelChainState", - "offset": 0, - "slot": "352", - "type": "t_contract(FuelChainState)5854", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:103" - }, - { - "label": "_outgoingMessageNonce", - "offset": 0, - "slot": "353", - "type": "t_uint256", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:106" - }, - { - "label": "_incomingMessageSuccessful", - "offset": 0, - "slot": "354", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:109" - }, - { - "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/v2/FuelMessagePortalV2.sol:13" - }, - { - "label": "__gap", - "offset": 0, - "slot": "405", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelMessagePortalV2", - "src": "contracts/fuelchain/v2/FuelMessagePortalV2.sol:106" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)5854": { - "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)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "fdc325ae76b1e46e4a6ff556d1943d5fff24a86a72a5378c5d0bd35d6406fda8": { - "address": "0xB26388cfB82C16126043dD8356d2714E77C852bF", - "txHash": "0xe63154f89c09a02fb9aa2aeb6270283b36a2c4b7dc2c0ec194aaed3b033c64e9", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "_fuelMessagePortal", - "offset": 2, - "slot": "0", - "type": "t_contract(FuelMessagePortal)6478", - "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:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "250", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "300", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "350", - "type": "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))", - "contract": "FuelERC20Gateway", - "src": "contracts/messaging/gateway/FuelERC20Gateway.sol:54" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6478": { - "label": "contract FuelMessagePortal", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))": { - "label": "mapping(address => mapping(bytes32 => uint256))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint256)": { - "label": "mapping(bytes32 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "2bec171602b3fde5aabeee64abd7a2e4e32c9ae4fe15af083b2d68805d70dc03": { - "address": "0xf40BAd2Bc80bA1Ba9B5b2F3325e645Bf9b8c807B", - "txHash": "0x7eb4315e3013c4943ae0330ba12082568aa42d7d3b576ad475506015901afac1", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "_fuelMessagePortal", - "offset": 2, - "slot": "0", - "type": "t_contract(FuelMessagePortal)6362", - "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:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "201", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "__gap", - "offset": 0, - "slot": "250", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "300", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "350", - "type": "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))", - "contract": "FuelERC20Gateway", - "src": "contracts/messaging/gateway/FuelERC20Gateway.sol:54" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6362": { - "label": "contract FuelMessagePortal", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_bytes32,t_uint256))": { - "label": "mapping(address => mapping(bytes32 => uint256))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint256)": { - "label": "mapping(bytes32 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "6b4cbd57e8cd02a8286ea702d39b021791bb3a3f146c6b49ae17fd41b98342f2": { - "address": "0x800567f454c125A9Dd54D53c3a5A0277a601bf9a", - "txHash": "0x572fedb10b9af1eea8880a3ea5aa4850755cb7d8b4e3af01885a536dc40df487", - "layout": { - "solcVersion": "0.8.9", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "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)2335_storage)", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "AccessControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:259" - }, - { - "label": "_status", - "offset": 0, - "slot": "201", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:80" - }, - { - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "301", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "_incomingMessageSender", - "offset": 0, - "slot": "351", - "type": "t_bytes32", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:100" - }, - { - "label": "_fuelChainState", - "offset": 0, - "slot": "352", - "type": "t_contract(FuelChainState)9078", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:103" - }, - { - "label": "_outgoingMessageNonce", - "offset": 0, - "slot": "353", - "type": "t_uint256", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:106" - }, - { - "label": "_incomingMessageSuccessful", - "offset": 0, - "slot": "354", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:109" - }, - { - "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:13" - }, - { - "label": "__gap", - "offset": 0, - "slot": "405", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelMessagePortalV2", - "src": "contracts/fuelchain/FuelMessagePortal/v2/FuelMessagePortalV2.sol:106" - }, - { - "label": "withdrawalsPaused", - "offset": 0, - "slot": "454", - "type": "t_bool", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:14" - }, - { - "label": "messageIsBlacklisted", - "offset": 0, - "slot": "455", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:15" - }, - { - "label": "__gap", - "offset": 0, - "slot": "456", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:97" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)9078": { - "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)2335_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2335_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": {} - } - }, - "b9dd224724fdadbc3e6f85275cf599f9a927d1c7796afe9b719fdd477d97c132": { - "address": "0xba98eDC9AC0B6191180562bF68CE001B1D71C11D", - "txHash": "0x12a9d396c2a057c03d859a04a2cc362d2c34e494c11537b6606e0f86ad57197e", - "layout": { - "solcVersion": "0.8.9", - "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)2324_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)5995_storage)240_storage", - "contract": "FuelChainState", - "src": "contracts/fuelchain/FuelChainState.sol:59" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Commit)5995_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)2324_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(Commit)5995_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)2324_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": {} - } - }, - "9f7f29d876a56513bbcabdcf5a014a04b46d76b4623ba104065748cac07a981d": { - "address": "0xC9C453fA30cd0c6A2f09Af5e1C32F839Ff7a3DD0", - "txHash": "0xbfdf6b815be5966e0f6679044533d307278e66ff35444c333bef4690d9708b62", - "layout": { - "solcVersion": "0.8.9", - "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)2324_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": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" - }, - { - "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)6232", - "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:333" - }, - { - "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:107" - }, - { - "label": "withdrawalsPaused", - "offset": 0, - "slot": "454", - "type": "t_bool", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:14" - }, - { - "label": "messageIsBlacklisted", - "offset": 0, - "slot": "455", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:15" - }, - { - "label": "__gap", - "offset": 0, - "slot": "456", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:101" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6232": { - "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)2324_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2324_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": {} - } - }, - "15314565a307c1731d15b7db60595091a0bc5515c75cc16f8b05b732010db281": { - "address": "0xdF018d3163FA9FC70FD6eD79D3E0E3770A034756", - "txHash": "0xdc3594bd692d249aa419041e54908a16af1a240ea96752cebeb5681a547b9a55", - "layout": { - "solcVersion": "0.8.9", - "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)6853", - "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)2324_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:63" - }, - { - "label": "assetIssuerId", - "offset": 0, - "slot": "351", - "type": "t_bytes32", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:64" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "352", - "type": "t_mapping(t_address,t_uint256)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:66" - }, - { - "label": "_depositLimits", - "offset": 0, - "slot": "353", - "type": "t_mapping(t_address,t_uint256)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:67" - }, - { - "label": "_decimalsCache", - "offset": 0, - "slot": "354", - "type": "t_mapping(t_address,t_uint256)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:68" - }, - { - "label": "_isBridge", - "offset": 0, - "slot": "355", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:69" - }, - { - "label": "__gap", - "offset": 0, - "slot": "356", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:333" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)6853": { - "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_bool)": { - "label": "mapping(bytes32 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2324_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2324_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": {} - } - }, - "8b16077ce2a68c7e3c6f38f1c61c607d3f53d55ac1c12268c2bee149e0ddc9bb": { - "address": "0xA517017C3d004F1C5fE1CeC4207787627BAd4011", - "txHash": "0x6ecab59ae9c496ed9e34d4e45a65760d56f863d90cd684d6a61d484ecd4c6020", - "layout": { - "solcVersion": "0.8.9", - "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)2324_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": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" - }, - { - "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)9632", - "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:333" - }, - { - "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:107" - }, - { - "label": "withdrawalsPaused", - "offset": 0, - "slot": "454", - "type": "t_bool", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:15" - }, - { - "label": "messageIsBlacklisted", - "offset": 0, - "slot": "455", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:16" - }, - { - "label": "__gap", - "offset": 0, - "slot": "456", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:148" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)9632": { - "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)2324_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2324_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": {} - } - }, - "b5feea167d06c3eb8552b94bb84496f46ae670c5449e5d110b92b8bb9d4a817b": { - "address": "0x99448d0C551a9B2A5c6280E586c36A8A33BAA968", - "txHash": "0x5fdd5d436bc4626e917a512278c40638d596f97e7998651e82c30d8620da0544", - "layout": { - "solcVersion": "0.8.9", - "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)2324_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)9369_storage)240_storage", - "contract": "FuelChainState", - "src": "contracts/fuelchain/FuelChainState.sol:61" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Commit)9369_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)2324_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(Commit)9369_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)2324_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": {} - } - }, - "76b7b3bdcf5f6a9c0ac69852a09075952b1c724cab925448f9c191812ed233b7": { - "address": "0xf6024CcbfbB2201C3d43C0C2bBD162d65D4a07c4", - "txHash": "0x45ad34b0af40959d4a5c8963a47d67fc85d393f1f9592dd12a282ef47edfaf8e", - "layout": { - "solcVersion": "0.8.9", - "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)10253", - "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)2324_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:66" - }, - { - "label": "assetIssuerId", - "offset": 0, - "slot": "351", - "type": "t_bytes32", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:67" - }, - { - "label": "_deposits", - "offset": 0, - "slot": "352", - "type": "t_mapping(t_address,t_uint256)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:69" - }, - { - "label": "_depositLimits", - "offset": 0, - "slot": "353", - "type": "t_mapping(t_address,t_uint256)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:70" - }, - { - "label": "_decimalsCache", - "offset": 0, - "slot": "354", - "type": "t_mapping(t_address,t_uint256)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:71" - }, - { - "label": "_isBridge", - "offset": 0, - "slot": "355", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:72" - }, - { - "label": "__gap", - "offset": 0, - "slot": "356", - "type": "t_array(t_uint256)49_storage", - "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:337" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "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)10253": { - "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_bool)": { - "label": "mapping(bytes32 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)2324_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_struct(RoleData)2324_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": {} - } - }, - "0431e3a9f730aa01bced9634653b48ff489b2ccf33eb2282d7c2e488d2d8b324": { - "address": "0xdCF1bdBF5341c15e9C1285202f6F6bEA70Db6172", - "txHash": "0x6307568ec92ab9e7d96e1d3665a3e84a2c45b2907fe8750168d8481e76e87ab0", + } + ], + "impls": { + "76b2f0c5a8e51535b97b3fe9b5e474acb056e0f96cbc130cb05a2cedf0ac2045": { + "address": "0xAEFa74279bB19D96f92ff4254EeDfA4B3F25d1Dd", + "txHash": "0x138a0da11fcf1717e26e6180b16b91e69493a7adbe17fcec0662651d936c6fd7", "layout": { "solcVersion": "0.8.9", "storage": [ @@ -4004,11 +218,15 @@ } }, "namespaces": {} - } - }, - "66c38ff471113730f17addac0d6eedde28211199f0a210ab5e42e9b9ed97434c": { - "address": "0x6A541330221BE3df4aD6D696Cd3513c0cBFB4752", - "txHash": "0xd4dcba5952cf955d783f5ad8d3015c54b93b820e0958edf6dbc6caeff27491f6", + }, + "allAddresses": [ + "0xAEFa74279bB19D96f92ff4254EeDfA4B3F25d1Dd", + "0x1f317F96D700246cF291DfA44a7718267720cDF0" + ] + }, + "4d889abe65ff220ebe9e241fbf36784759794c6eea3e7f46740f2babb705751b": { + "address": "0xF51C5Db7bcDe1A7B4375470b191eF15B6130AAB8", + "txHash": "0x2604ec5ddf26c5d695d530289ccb1a63c950889f79f05ca7514ac1d263da9bde", "layout": { "solcVersion": "0.8.9", "storage": [ @@ -4121,7 +339,7 @@ "label": "_fuelChainState", "offset": 0, "slot": "352", - "type": "t_contract(FuelChainState)3375", + "type": "t_contract(FuelChainState)7390", "contract": "FuelMessagePortal", "src": "contracts/fuelchain/FuelMessagePortal.sol:99" }, @@ -4147,7 +365,7 @@ "slot": "355", "type": "t_array(t_uint256)49_storage", "contract": "FuelMessagePortal", - "src": "contracts/fuelchain/FuelMessagePortal.sol:333" + "src": "contracts/fuelchain/FuelMessagePortal.sol:337" }, { "label": "totalDeposited", @@ -4163,7 +381,7 @@ "slot": "405", "type": "t_array(t_uint256)49_storage", "contract": "FuelMessagePortalV2", - "src": "contracts/fuelchain/FuelMessagePortal/v2/FuelMessagePortalV2.sol:107" + "src": "contracts/fuelchain/FuelMessagePortal/v2/FuelMessagePortalV2.sol:108" }, { "label": "withdrawalsPaused", @@ -4171,7 +389,7 @@ "slot": "454", "type": "t_bool", "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:17" + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:31" }, { "label": "messageIsBlacklisted", @@ -4179,15 +397,47 @@ "slot": "455", "type": "t_mapping(t_bytes32,t_bool)", "contract": "FuelMessagePortalV3", - "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:18" + "src": "contracts/fuelchain/FuelMessagePortal/v3/FuelMessagePortalV3.sol:33" }, { - "label": "__gap", + "label": "currentPeriodAmount", "offset": 0, "slot": "456", - "type": "t_array(t_uint256)49_storage", + "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:155" + "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": { @@ -4195,6 +445,10 @@ "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" @@ -4211,7 +465,7 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_contract(FuelChainState)3375": { + "t_contract(FuelChainState)7390": { "label": "contract FuelChainState", "numberOfBytes": "20" }, @@ -4255,11 +509,15 @@ } }, "namespaces": {} - } - }, - "087131caba1a13a535ddf1d37c869d822f4bf79ac129e9168f14a4ba616b5e63": { - "address": "0x5F9eAEB3b7ec396F01617e9BAd787D0A6f93B7a3", - "txHash": "0xa3712d0734197da3afb819f937aec4670ac741855adf669fc8fff2ace8bfd797", + }, + "allAddresses": [ + "0xF51C5Db7bcDe1A7B4375470b191eF15B6130AAB8", + "0xbc05BF1F0d82391e38e3AF54B2A578709AeF11c5" + ] + }, + "ef9b501dd199bf1c5b9ba00d88d9391ad616f16d1a284f988e71c7b2aa54474a": { + "address": "0xf96DD2dA09A67c37CE79671923af1999b3553414", + "txHash": "0xc3b9aad46ede95747d4528179377285206c4bafed638a4af15aff6e7884ce9c1", "layout": { "solcVersion": "0.8.9", "storage": [ @@ -4284,7 +542,7 @@ "label": "_fuelMessagePortal", "offset": 2, "slot": "0", - "type": "t_contract(FuelMessagePortal)8014", + "type": "t_contract(FuelMessagePortal)5254", "contract": "FuelMessagesEnabled", "src": "contracts/messaging/FuelMessagesEnabled.sol:21" }, @@ -4366,7 +624,7 @@ "slot": "350", "type": "t_bool", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:73" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:76" }, { "label": "assetIssuerId", @@ -4374,7 +632,7 @@ "slot": "351", "type": "t_bytes32", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:74" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:77" }, { "label": "_deposits", @@ -4382,7 +640,7 @@ "slot": "352", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:76" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:79" }, { "label": "_depositLimits", @@ -4390,7 +648,7 @@ "slot": "353", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:77" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:80" }, { "label": "_decimalsCache", @@ -4398,7 +656,7 @@ "slot": "354", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:78" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:81" }, { "label": "rateLimitDuration", @@ -4406,7 +664,7 @@ "slot": "355", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:81" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:84" }, { "label": "currentPeriodAmount", @@ -4414,7 +672,7 @@ "slot": "356", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:84" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:87" }, { "label": "currentPeriodEnd", @@ -4422,7 +680,7 @@ "slot": "357", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:87" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:90" }, { "label": "limitAmount", @@ -4430,15 +688,23 @@ "slot": "358", "type": "t_mapping(t_address,t_uint256)", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:90" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:93" }, { - "label": "__gap", + "label": "rateLimitStatus", "offset": 0, "slot": "359", - "type": "t_array(t_uint256)49_storage", + "type": "t_mapping(t_address,t_bool)", + "contract": "FuelERC20GatewayV4", + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:98" + }, + { + "label": "__gap", + "offset": 0, + "slot": "360", + "type": "t_array(t_uint256)48_storage", "contract": "FuelERC20GatewayV4", - "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:440" + "src": "contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:452" } ], "types": { @@ -4446,6 +712,10 @@ "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" @@ -4462,7 +732,7 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_contract(FuelMessagePortal)8014": { + "t_contract(FuelMessagePortal)5254": { "label": "contract FuelMessagePortal", "numberOfBytes": "20" }, @@ -4506,7 +776,12 @@ } }, "namespaces": {} - } + }, + "allAddresses": [ + "0xf96DD2dA09A67c37CE79671923af1999b3553414", + "0x757F667dd94626677a01829b86675FD53988eFA3", + "0x1D81f89e994fed1b00cE765771535B31B67e3AB9" + ] } } } diff --git a/packages/solidity-contracts/deploy/hardhat/002.fuel_message_portal_v3.ts b/packages/solidity-contracts/deploy/hardhat/002.fuel_message_portal_v3.ts index 5f77f143..225aaf25 100644 --- a/packages/solidity-contracts/deploy/hardhat/002.fuel_message_portal_v3.ts +++ b/packages/solidity-contracts/deploy/hardhat/002.fuel_message_portal_v3.ts @@ -34,7 +34,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { console.log('Deployed FuelMessagePortal at', address); await save('FuelMessagePortal', { address, - abi: [], + abi: [...FuelMessagePortal.abi], implementation, }); }; diff --git a/packages/solidity-contracts/deploy/hardhat/003.erc20_gateway_v4.ts b/packages/solidity-contracts/deploy/hardhat/003.erc20_gateway_v4.ts index 42bd6090..bef7f203 100644 --- a/packages/solidity-contracts/deploy/hardhat/003.erc20_gateway_v4.ts +++ b/packages/solidity-contracts/deploy/hardhat/003.erc20_gateway_v4.ts @@ -2,7 +2,6 @@ import type { HardhatRuntimeEnvironment } from 'hardhat/types'; import type { DeployFunction } from 'hardhat-deploy/dist/types'; import { FuelERC20GatewayV4__factory as FuelERC20Gateway } from '../../typechain'; -// import { FuelERC20Gateway__factory as FuelERC20Gateway } from '../../typechain'; const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { diff --git a/packages/solidity-contracts/deploy/upgradeTest/001.chain_state.ts b/packages/solidity-contracts/deploy/upgradeTest/001.chain_state.ts new file mode 100644 index 00000000..edf63f47 --- /dev/null +++ b/packages/solidity-contracts/deploy/upgradeTest/001.chain_state.ts @@ -0,0 +1,47 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelChainState__factory as FuelChainState } from '../../typechain'; + +const BLOCKS_PER_COMMIT_INTERVAL = 30; +const TIME_TO_FINALIZE = 5; +const COMMIT_COOLDOWN = TIME_TO_FINALIZE; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + ethers, + upgrades: { deployProxy, erc1967 }, + deployments: { save }, + } = hre; + + const constructorArgs = [ + TIME_TO_FINALIZE, + BLOCKS_PER_COMMIT_INTERVAL, + COMMIT_COOLDOWN, + ]; + + const factory = await ethers.getContractFactory('FuelChainState'); + + const contract = await deployProxy(factory, [], { + initializer: 'initialize', + constructorArgs, + }); + await contract.waitForDeployment(); + const address = await contract.getAddress(); + const implementation = await erc1967.getImplementationAddress(address); + + console.log('Deployed FuelChainState at', address); + await save('FuelChainState', { + address, + abi: [...FuelChainState.abi], + implementation, + linkedData: { + constructorArgs, + factory: 'FuelChainState', + }, + }); +}; + +func.tags = ['state', 'chain-state', 'chain_state', 'FuelChainState']; +func.id = 'chain_state'; +export default func; diff --git a/packages/solidity-contracts/deploy/upgradeTest/002.fuel_message_portal_v3.ts b/packages/solidity-contracts/deploy/upgradeTest/002.fuel_message_portal_v3.ts new file mode 100644 index 00000000..7ae72883 --- /dev/null +++ b/packages/solidity-contracts/deploy/upgradeTest/002.fuel_message_portal_v3.ts @@ -0,0 +1,52 @@ +import { MaxUint256 } from 'ethers'; +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { + RATE_LIMIT_AMOUNT, + RATE_LIMIT_DURATION, +} from '../../protocol/constants'; +import { FuelMessagePortalV3__factory as FuelMessagePortal } from '../../typechain'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + ethers, + upgrades: { deployProxy, erc1967 }, + deployments: { get, save }, + } = hre; + const [deployer] = await ethers.getSigners(); + + const { address: fuelChainState } = await get('FuelChainState'); + + const constructorArgs = [MaxUint256, RATE_LIMIT_DURATION]; + + const initArgs = [fuelChainState, RATE_LIMIT_AMOUNT.toString()]; + + const contract = await deployProxy( + new FuelMessagePortal(deployer), + initArgs, + { + initializer: 'initializerV3', + constructorArgs, + } + ); + await contract.waitForDeployment(); + + const address = await contract.getAddress(); + const implementation = await erc1967.getImplementationAddress(address); + + console.log('Deployed FuelMessagePortalV3 at', address); + await save('FuelMessagePortalV3', { + address, + abi: [...FuelMessagePortal.abi], + implementation, + linkedData: { + factory: 'FuelMessagePortalV3', + constructorArgs, + }, + }); +}; + +func.tags = ['portal', 'message_portal', 'FuelMessagePortal']; +func.id = 'fuel_message_portal'; +export default func; diff --git a/packages/solidity-contracts/deploy/upgradeTest/003.erc20_gateway_v4.ts b/packages/solidity-contracts/deploy/upgradeTest/003.erc20_gateway_v4.ts new file mode 100644 index 00000000..c7b230fc --- /dev/null +++ b/packages/solidity-contracts/deploy/upgradeTest/003.erc20_gateway_v4.ts @@ -0,0 +1,40 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelERC20GatewayV4__factory as FuelERC20Gateway } from '../../typechain'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + ethers, + upgrades: { deployProxy, erc1967 }, + deployments: { get, save }, + } = hre; + const [deployer] = await ethers.getSigners(); + + const fuelMessagePortal = await get('FuelMessagePortalV3'); + + const initArgs = [fuelMessagePortal.address]; + + const contract = await deployProxy(new FuelERC20Gateway(deployer), initArgs, { + initializer: 'initialize', + }); + await contract.waitForDeployment(); + + const address = await contract.getAddress(); + const implementation = await erc1967.getImplementationAddress(address); + + console.log('Deployed FuelERC20GatewayV4 at', address); + await save('FuelERC20GatewayV4', { + address, + abi: [...FuelERC20Gateway.abi], + implementation, + linkedData: { + factory: 'FuelERC20GatewayV4', + constructorArgs: [], + }, + }); +}; + +func.tags = ['erc20', 'erc20_gateway', 'FuelERC20GatewayV4']; +func.id = 'fuel_erc20_gateway_v4'; +export default func; diff --git a/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.chain_state.ts b/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.chain_state.ts new file mode 100644 index 00000000..cd337908 --- /dev/null +++ b/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.chain_state.ts @@ -0,0 +1,42 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelChainState__factory as FuelChainState } from '../../typechain'; +import { TransactionResponse } from 'ethers'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + upgrades: { prepareUpgrade }, + deployments: { save }, + } = hre; + + const contractDeployment = await hre.deployments.get('FuelChainState'); + + const factory = await hre.ethers.getContractFactory('FuelChainState'); + + const response = (await prepareUpgrade(contractDeployment.address, factory, { + kind: 'uups', + constructorArgs: contractDeployment.linkedData.constructorArgs, + getTxResponse: true, + redeployImplementation: 'always', // added this so we can mock legit upgrades by default + })) as TransactionResponse; + + const receipt = await hre.ethers.provider.getTransactionReceipt( + response.hash + ); + + await save('FuelChainState', { + address: contractDeployment.address, + abi: [...FuelChainState.abi], + implementation: receipt?.contractAddress!, + transactionHash: response.hash, + linkedData: { + constructorArgs: contractDeployment.linkedData.constructorArgs, + factory: 'FuelChainState', + }, + }); +}; + +func.tags = ['prepareUpgrade_chain_state']; +func.id = 'prepareUpgrade_chain_state'; +export default func; diff --git a/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.erc20_gateway_v4.ts b/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.erc20_gateway_v4.ts new file mode 100644 index 00000000..cbca06dc --- /dev/null +++ b/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.erc20_gateway_v4.ts @@ -0,0 +1,42 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelERC20GatewayV4__factory as FuelERC20Gateway } from '../../typechain'; +import { TransactionResponse } from 'ethers'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + upgrades: { prepareUpgrade }, + deployments: { save }, + } = hre; + + const contractDeployment = await hre.deployments.get('FuelERC20GatewayV4'); + + const factory = await hre.ethers.getContractFactory('FuelERC20GatewayV4'); + + const response = (await prepareUpgrade(contractDeployment.address, factory, { + kind: 'uups', + constructorArgs: contractDeployment.linkedData.constructorArgs, + getTxResponse: true, + redeployImplementation: 'always', // added this so we can mock legit upgrades by default + })) as TransactionResponse; + + const receipt = await hre.ethers.provider.getTransactionReceipt( + response.hash + ); + + await save('FuelERC20GatewayV4', { + address: contractDeployment.address, + abi: [...FuelERC20Gateway.abi], + implementation: receipt?.contractAddress!, + transactionHash: response.hash, + linkedData: { + factory: 'FuelERC20GatewayV4', + constructorArgs: contractDeployment.linkedData.constructorArgs, + }, + }); +}; + +func.tags = ['prepareUpgrade_erc20_gateway_v4']; +func.id = 'prepareUpgrade_erc20_gateway_v4'; +export default func; diff --git a/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.fuel_message_portal_v3.ts b/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.fuel_message_portal_v3.ts new file mode 100644 index 00000000..ab67e57e --- /dev/null +++ b/packages/solidity-contracts/deploy/upgradeTest/prepareUpgrade.fuel_message_portal_v3.ts @@ -0,0 +1,42 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelMessagePortalV3__factory as FuelMessagePortal } from '../../typechain'; +import { TransactionResponse } from 'ethers'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + upgrades: { prepareUpgrade }, + deployments: { save }, + } = hre; + + const contractDeployment = await hre.deployments.get('FuelMessagePortalV3'); + + const factory = await hre.ethers.getContractFactory('FuelMessagePortalV3'); + + const response = (await prepareUpgrade(contractDeployment.address, factory, { + kind: 'uups', + constructorArgs: contractDeployment.linkedData.constructorArgs, + getTxResponse: true, + redeployImplementation: 'always', // added this so we can mock legit upgrades by default + })) as TransactionResponse; + + const receipt = await hre.ethers.provider.getTransactionReceipt( + response.hash + ); + + await save('FuelMessagePortalV3', { + address: contractDeployment.address, + abi: [...FuelMessagePortal.abi], + implementation: receipt?.contractAddress!, + transactionHash: response.hash, + linkedData: { + factory: 'FuelMessagePortalV3', + constructorArgs: contractDeployment.linkedData.constructorArgs, + }, + }); +}; + +func.tags = ['prepareUpgrade_fuel_message_portal']; +func.id = 'prepareUpgrade_fuel_message_portal'; +export default func; diff --git a/packages/solidity-contracts/deployments/upgradeTest/.chainId b/packages/solidity-contracts/deployments/upgradeTest/.chainId new file mode 100644 index 00000000..bd8d1cd4 --- /dev/null +++ b/packages/solidity-contracts/deployments/upgradeTest/.chainId @@ -0,0 +1 @@ +11155111 \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json b/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json new file mode 100644 index 00000000..1af23c87 --- /dev/null +++ b/packages/solidity-contracts/deployments/upgradeTest/FuelChainState.json @@ -0,0 +1,591 @@ +{ + "address": "0x3328a69eA205EC830672c74D3e550eb92f229416", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "timeToFinalize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blocksPerCommitInterval", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "commitCooldown", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CannotRecommit", + "type": "error" + }, + { + "inputs": [], + "name": "CommitCooldownTooLarge", + "type": "error" + }, + { + "inputs": [], + "name": "FinalizationIsGtCooldown", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTimeToFinalize", + "type": "error" + }, + { + "inputs": [], + "name": "TimeToFinalizeTooLarge", + "type": "error" + }, + { + "inputs": [], + "name": "UnknownBlock", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "commitHeight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + } + ], + "name": "CommitSubmitted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "BLOCKS_PER_COMMIT_INTERVAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COMMITTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COMMIT_COOLDOWN", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NUM_COMMIT_SLOTS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TIME_TO_FINALIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "commitHeight", + "type": "uint256" + } + ], + "name": "blockHashAtCommit", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "commitHeight", + "type": "uint256" + } + ], + "name": "commit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "blockHeight", + "type": "uint256" + } + ], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "transactionHash": "0x29c9742880d13044c6b181d8b2814e9071f15c3fd99f7cae780f00f9646b8e60", + "numDeployments": 2, + "linkedData": { + "constructorArgs": [ + 5, + 30, + 5 + ], + "factory": "FuelChainState" + }, + "implementation": "0x1f317F96D700246cF291DfA44a7718267720cDF0" +} \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json b/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json new file mode 100644 index 00000000..5e008633 --- /dev/null +++ b/packages/solidity-contracts/deployments/upgradeTest/FuelERC20GatewayV4.json @@ -0,0 +1,922 @@ +{ + "address": "0x840e5a0dF831aCB8e90fD5f92E09b9a7731758d6", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BridgeFull", + "type": "error" + }, + { + "inputs": [], + "name": "CallerIsNotPortal", + "type": "error" + }, + { + "inputs": [], + "name": "CannotDepositZero", + "type": "error" + }, + { + "inputs": [], + "name": "CannotWithdrawZero", + "type": "error" + }, + { + "inputs": [], + "name": "GlobalDepositLimit", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAssetIssuerID", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMessageSender", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSender", + "type": "error" + }, + { + "inputs": [], + "name": "RateLimitExceeded", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "RateLimitStatusUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RateLimitUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FUEL_ASSET_DECIMALS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SET_RATE_LIMITER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetIssuerId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "currentPeriodAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "currentPeriodEnd", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "to", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "depositLimits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "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" + } + ], + "name": "depositWithData", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "l2BurntAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "finalizeWithdrawal", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "fuelMessagePortal", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract FuelMessagePortal", + "name": "fuelMessagePortal", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "limitAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "rateLimitDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "rateLimitStatus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "requireWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescueETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rateLimitDuration", + "type": "uint256" + } + ], + "name": "resetRateLimitAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "sendMetadata", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "setAssetIssuerId", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + } + ], + "name": "setGlobalDepositLimit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "tokensDeposited", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "bool", + "name": "_rateLimitStatus", + "type": "bool" + } + ], + "name": "updateRateLimitStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "whitelistRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x5b2eb393512ae396615f2d57a74a5291b10e874bca57412a9e6c66145be6c183", + "numDeployments": 2, + "linkedData": { + "factory": "FuelERC20GatewayV4", + "constructorArgs": [] + }, + "implementation": "0x757F667dd94626677a01829b86675FD53988eFA3" +} \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json b/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json new file mode 100644 index 00000000..a3da1fd7 --- /dev/null +++ b/packages/solidity-contracts/deployments/upgradeTest/FuelMessagePortalV3.json @@ -0,0 +1,1168 @@ +{ + "address": "0x61725EBCc5a6db36184D55DBbc275a08aD63B0Ad", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_depositLimitGlobal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rateLimitDuration", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyRelayed", + "type": "error" + }, + { + "inputs": [], + "name": "AmountPrecisionIncompatibility", + "type": "error" + }, + { + "inputs": [], + "name": "AmountTooBig", + "type": "error" + }, + { + "inputs": [], + "name": "CurrentMessageSenderNotSet", + "type": "error" + }, + { + "inputs": [], + "name": "GlobalDepositLimit", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBlockInHistoryProof", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMessageInBlockProof", + "type": "error" + }, + { + "inputs": [], + "name": "MessageBlacklisted", + "type": "error" + }, + { + "inputs": [], + "name": "MessageDataTooLarge", + "type": "error" + }, + { + "inputs": [], + "name": "MessageRelayFailed", + "type": "error" + }, + { + "inputs": [], + "name": "NotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "RateLimitExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "UnfinalizedBlock", + "type": "error" + }, + { + "inputs": [], + "name": "WithdrawalsPaused", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldValue", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newValue", + "type": "address" + } + ], + "name": "FuelChainStateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "amount", + "type": "uint64" + } + ], + "name": "MessageRelayed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "amount", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "MessageSent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "RateLimitStatusUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "ResetRateLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ETH_DECIMALS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FUEL_BASE_ASSET_DECIMALS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_MESSAGE_DATA_SIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_LIMIT_DURATION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SET_RATE_LIMITER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32" + } + ], + "name": "addMessageToBlacklist", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "currentPeriodAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentPeriodEnd", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + } + ], + "name": "depositETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "depositLimitGlobal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fuelBaseAssetDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "fuelChainStateContract", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNextOutgoingMessageNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32" + } + ], + "name": "incomingMessageSuccessful", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract FuelChainState", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract FuelChainState", + "name": "fuelChainState", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_limitAmount", + "type": "uint256" + } + ], + "name": "initializerV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "limitAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "messageIsBlacklisted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "messageSender", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pauseWithdrawals", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rateLimitEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_limitAmount", + "type": "uint256" + } + ], + "name": "reinitializeV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "nonce", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "amount", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Message", + "name": "message", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "prevRoot", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "height", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "applicationHash", + "type": "bytes32" + } + ], + "internalType": "struct FuelBlockHeaderLite", + "name": "rootBlockHeader", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "prevRoot", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "daHeight", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "outputMessagesCount", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "consensusParametersVersion", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "stateTransitionBytecodeVersion", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "height", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "outputMessagesRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "eventInboxRoot", + "type": "bytes32" + }, + { + "internalType": "uint16", + "name": "txCount", + "type": "uint16" + } + ], + "internalType": "struct FuelBlockHeader", + "name": "blockHeader", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "internalType": "struct MerkleProof", + "name": "blockInHistoryProof", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "internalType": "struct MerkleProof", + "name": "messageInBlockProof", + "type": "tuple" + } + ], + "name": "relayMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "messageId", + "type": "bytes32" + } + ], + "name": "removeMessageFromBlacklist", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "resetRateLimitAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "sendMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newFuelChainState", + "type": "address" + } + ], + "name": "setFuelChainState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalDeposited", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpauseWithdrawals", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "updateRateLimitStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawalsPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x9314a0f4d36da6c46f2860c5aaa3430b26b92c61e0f3e14cd5efc9b24c976257", + "numDeployments": 2, + "linkedData": { + "factory": "FuelMessagePortalV3", + "constructorArgs": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + 604800 + ] + }, + "implementation": "0xbc05BF1F0d82391e38e3AF54B2A578709AeF11c5" +} \ No newline at end of file diff --git a/packages/solidity-contracts/hardhat.config.ts b/packages/solidity-contracts/hardhat.config.ts index 291a777f..4c12bdc5 100644 --- a/packages/solidity-contracts/hardhat.config.ts +++ b/packages/solidity-contracts/hardhat.config.ts @@ -87,6 +87,17 @@ const config: HardhatUserConfig = { deploy: ['deploy/devnet'], chainId: 11155111, }, + upgradeTest: { + url: RPC_URL, + accounts: CONTRACTS_DEPLOYER_KEY + ? [CONTRACTS_DEPLOYER_KEY] + : { + mnemonic: + 'test test test test test test test test test test test junk', + }, + deploy: ['deploy/upgradeTest'], + chainId: 11155111, + }, testnet: { url: RPC_URL, accounts: CONTRACTS_DEPLOYER_KEY diff --git a/packages/solidity-contracts/scripts/hardhat/index.ts b/packages/solidity-contracts/scripts/hardhat/index.ts index b33c691a..30cc9483 100644 --- a/packages/solidity-contracts/scripts/hardhat/index.ts +++ b/packages/solidity-contracts/scripts/hardhat/index.ts @@ -1,6 +1,7 @@ export * from './pause'; export * from './unpause'; export * from './grantRole'; +export * from './verifyDeployment'; export * from './depositETH'; export * from './depositToken'; export * from './resetETHRateLimit'; diff --git a/packages/solidity-contracts/scripts/hardhat/verifyDeployment.ts b/packages/solidity-contracts/scripts/hardhat/verifyDeployment.ts new file mode 100644 index 00000000..ded15647 --- /dev/null +++ b/packages/solidity-contracts/scripts/hardhat/verifyDeployment.ts @@ -0,0 +1,121 @@ +import { task } from 'hardhat/config'; +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { config as dotEnvConfig } from 'dotenv'; +import { ContractFactory } from 'ethers'; +import { writeFileSync } from 'fs'; + +task('verify-deployment', 'Verifies proxy upgrades').setAction( + async (taskArgs: any, hre: HardhatRuntimeEnvironment): Promise => { + const network = hre.network.name; + + const { + ethers, + upgrades: { validateUpgrade, erc1967 }, + } = hre; + + console.log( + `Verifying proxy upgrade on ${network}:${hre.network.config.chainId}...` + ); + + const deployments = await hre.deployments.all(); + + const verificationPayload = []; + + for (const [contractName, deployment] of Object.entries(deployments)) { + console.log(`\nVerifying ${contractName} (${deployment.address}):`); + + const currentImplementation = await erc1967.getImplementationAddress( + deployment.address + ); + + // Only perform verification checks for a legitimate upgrade + if ( + currentImplementation.toLowerCase() === + deployment.implementation!.toLowerCase() + ) + continue; + + const factory = (await ethers.getContractFactory( + deployment.linkedData.factory + )) as ContractFactory; // Typing bug in `getContractFactory` + + console.log( + `--- Validating the upgrade to ${deployment.implementation} implementation...` + ); + + await validateUpgrade( + deployment.address as string, + factory, + { + kind: 'uups', + constructorArgs: deployment.linkedData.constructorArgs, + } as any // Typing bug in `validateUpgrade` + ); + + console.log('--- Upgrade Validated...'); + + console.log( + '--- Comparing expected init code with actual init code on-chain...' + ); + + const { data: expectedInitCode } = await factory.getDeployTransaction( + ...deployment.linkedData.constructorArgs + ); + + const fetchedDeploymentTx = await ethers.provider.getTransaction( + deployment.transactionHash! + )!; + + const receipt = await ethers.provider.getTransactionReceipt( + fetchedDeploymentTx?.hash! + ); + + // checking for null/undefined value too + if ( + fetchedDeploymentTx?.data && + expectedInitCode === fetchedDeploymentTx.data + ) { + console.log( + `✅ ${contractName} (${deployment.address}): Init Code verified successfully` + ); + } else { + console.log( + `❌ ${contractName} (${deployment.address}): Init Code mismatch` + ); + throw new Error('Init Code mismatch'); + } + + console.log( + '--- Check if the new implementation deployment resulted in deploying that implementation address...' + ); + + // checking for null/undefined value too + if ( + receipt?.contractAddress && + receipt.contractAddress === deployment.implementation + ) { + console.log( + `✅ ${contractName} (${deployment.address}): New implementation deployment verified` + ); + } else { + console.log( + `❌ ${contractName} (${deployment.address}): New implementation deployment verification failed` + ); + throw new Error('New implementation deployment verification failed'); + } + + console.log( + `✅ ${contractName} (${deployment.address}): Confirmed viability to upgrade to ${deployment.implementation}` + ); + + // update payload for each upgrade + verificationPayload.push({ + bytecode: expectedInitCode, + address: deployment.implementation, + txHash: fetchedDeploymentTx.hash, + }); + } + + writeFileSync('verification.json', JSON.stringify(verificationPayload)); + } +); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8c009cf..9d9cbbd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12003,4 +12003,4 @@ snapshots: zksync-ethers@5.9.2(ethers@5.7.2(bufferutil@4.0.5)(utf-8-validate@5.0.7)): dependencies: - ethers: 5.7.2(bufferutil@4.0.5)(utf-8-validate@5.0.7) + ethers: 5.7.2(bufferutil@4.0.5)(utf-8-validate@5.0.7) \ No newline at end of file