diff --git a/README.md b/README.md index b7fb1c3a..e6577895 100644 --- a/README.md +++ b/README.md @@ -1,779 +1,51 @@ -# b2-message-sharing +# Message Sharing -Message-sharing is a blockchain cross-chain messaging mechanism. +Message-sharing is a mechanism for cross-chain messaging on blockchain networks. -## 1. Contracts +## Deployment -### 1.1 Contracts interface +### Smart Contract -#### 1.1.1 Message Sharing Interface +See the contents of [docs/message-sharing/smart-contract.md](./docs/message-sharing/smart-contract.md) -``` -interface IB2MessageSharing { +### Dapp Deployment - /** - * Get the validator role for a specific chain - * @param chain_id The ID of the chain for which to retrieve the validator role. - * @return bytes32 The hash associated with the validator role for the specified chain ID. - */ - function validatorRole(uint256 chain_id) external pure returns (bytes32); +See the contents of [docs/message-sharing/dapp-deployment.md](./docs/message-sharing/dapp-deployment.md) - /** - * Generate a message hash - * @param from_chain_id The ID of the originating chain, used to identify the source of the message. - * @param from_id The ID of the cross-chain message, used to uniquely identify the message. - * @param from_sender The address of the sender on the originating chain. - * @param to_chain_id The ID of the target chain, where the message will be sent. - * @param to_business_contract The address of the target contract that will receive the cross-chain message. - * @param to_message The input data for the target contract's cross-chain call. - * @return bytes32 The generated message hash, used for subsequent verification and processing. - */ - function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external view returns (bytes32); +## Examples - /** - * Verify the legitimacy of a message - * @param from_chain_id The ID of the originating chain, used to validate the source of the message. - * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. - * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy. - * @param to_chain_id The ID of the target chain, indicating where the message will be sent. - * @param to_business_contract The address of the target contract that will receive the cross-chain message. - * @param to_message The input data for the target contract's cross-chain call. - * @param signature The signature of the message, used to verify its legitimacy and integrity. - * @return bool Returns true if the verification succeeds, and false if it fails. - */ - function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message, bytes calldata signature) external view returns (bool); +What you need to know before looking at the examples, See the contents +of [docs/examples/attention.md](./docs/examples/attention.md) - /** - * Set the weight for message processing - * @param chain_id The ID of the chain. - * @param _weight The weight value that influences the logic or priority of message processing. - */ - function setWeight(uint256 chain_id, uint256 _weight) external; +### message-channel - /** - * Request cross-chain message data - * @param to_chain_id The ID of the target chain, specifying where the message will be sent. - * @param to_business_contract The address of the target contract that will receive the cross-chain message. - * @param to_message The input data for the target contract's cross-chain call. - * @return from_id The ID of the cross-chain message, returning a unique identifier to track the request. - */ - function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +This is a simple example of message encoding and transmission. It demonstrates how to transmit messages between +different blockchains, helping developers understand the basic concepts and implementation methods of cross-chain +message transmission. - /** - * Confirm cross-chain message data - * @param from_chain_id The ID of the originating chain, used to validate the source of the message. - * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. - * @param from_sender The address of the sender on the originating chain (msg.sender), used to determine the sender's security based on business needs. - * @param to_business_contract The address of the target contract, indicating where the message will be sent (can be a contract on the target chain or the current chain). - * @param to_message The input data for the target contract's cross-chain call. - * @param signatures An array of signatures used to verify the legitimacy of the message, ensuring only authorized senders can send the message. - */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, address to_business_contract, bytes calldata to_message, bytes[] calldata signatures) external; +See the contents of [docs/examples/message-channel/README.md](./docs/examples/message-channel/README.md) - /** - * Set the validator role for a specific chain - * @param chain_id The ID of the chain for which to set the validator role. - * @param account The address of the validator, indicating which account to set the role for. - * @param valid A boolean indicating the validity of the validator role, true for valid and false for invalid. - */ - function setValidatorRole(uint256 chain_id, address account, bool valid) external; +### nft-bridge - // Event declarations - event SetWeight(uint256 chain_id, uint256 weight); // Event emitted when weight is set - event SetValidatorRole(uint256 chain_id, address account, bool valid); // Event emitted when validator role is set - event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message is sent - event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message call is made -} -``` +This example implements cross-chain functionality for NFTs following the ERC1155 and ERC721 standards. It shows how to +transfer and manage NFTs across different blockchains, providing a solution for multi-chain NFT interoperability. -#### 1.1.2 Business Contract Interface +See the contents of [docs/examples/nft-bridge/README.md](./docs/examples/nft-bridge/README.md) -``` -interface IBusinessContract { - /** - * Process cross-chain information in the business contract - * @param from_chain_id The ID of the originating chain, used to validate the source of the message. - * @param from_id The ID of the cross-chain message, used to check if the message has already been processed to prevent duplication. - * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy (business needs may dictate whether verification is necessary). - * @param message The input data for processing the cross-chain message, which may need to be decoded based on byte encoding rules. - * @return success Indicates whether the message processing was successful, returning true for success and false for failure. - */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success); -} -``` +### token-bridge -### 1.2 Contracts code +This example demonstrates cross-chain functionality for Native and ERC20 Tokens. It explains how to transfer and manage +tokens between different blockchains, ensuring cross-chain liquidity and availability of tokens. -#### 1.2.1 Message Sharing +See the contents of [docs/examples/token-bridge/README.md](./docs/examples/token-bridge/README.md) -[MessageSharing.sol](./contracts/contracts/message/MessageSharing.sol) +### orderbook -#### 1.2.2 Business Contract Example +This example implements multi-chain cashiering, aggregated chain order book, and cashier settlement functionalities. It +shows how to manage and settle orders across multiple blockchains, helping developers build decentralized financial +applications with cross-chain capabilities. -[BusinessContractExample.sol](contracts/contracts/business/example/BusinessContractExample.sol) +See the contents of [docs/examples/orderbook/README.md](./docs/examples/orderbook/README.md) -### 1.3 Deploy - -#### 1.3.1 Setting up a deployment account - -``` -cp ./contracts/.env.test ./contracts/.env -``` - -[.env.test](./contracts/.env.test) - -``` -.env -# dev -AS_DEV_RPC_URL=https://arbitrum-sepolia.blockpi.network/v1/rpc/public -AS_DEV_PRIVATE_KEY_0= -B2_DEV_RPC_URL=https://b2-testnet.alt.technology -B2_DEV_PRIVATE_KEY_0= -# pord -AS_RPC_URL=https://arbitrum.rpc.subquery.network/public -AS_PRIVATE_KEY_0= -B2_RPC_URL=https://rpc.bsquared.network -B2_PRIVATE_KEY_0= -``` - -#### 1.3.2 Deploy contract - -##### 1.3.2.1 安装环境 - -``` -cd ./contracts -npm i -``` - -##### 1.3.2.2 B2MessageBridge command - -``` -// deploy -yarn hardhat run scripts/message/deploy.js --network b2dev -// upgrade -yarn hardhat run scripts/message/upgrade.js --network b2dev -// grant_role -yarn hardhat run scripts/message/grant_role.js --network b2dev -// revoke_role -yarn hardhat run scripts/message/revoke_role.js --network b2dev -// set weight -yarn hardhat run scripts/message/set_weight.js --network b2dev -// call -yarn hardhat run scripts/message/call.js --network b2dev -// send -yarn hardhat run scripts/message/send.js --network b2dev -``` - -##### 1.3.2.3 BusinessContractExample command - -``` -// deploy -yarn hardhat run scripts/business/deploy.js --network b2dev -// upgrade -yarn hardhat run scripts/business/upgrade.js --network b2dev -// grant_role -yarn hardhat run scripts/business/grant_role.js --network b2dev -// revoke_role -yarn hardhat run scripts/business/revoke_role.js --network b2dev -``` - -### 1.4 Contracts instances - -#### 1.4.1 Bsquared testnet - -``` -B2MessageSharing: 0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8 -BusinessContract: 0x804641e29f5F63a037022f0eE90A493541cCb869 -``` - -#### 1.4.2 Arbitrum sepolia - -``` -B2MessageSharing: 0x2A82058E46151E337Baba56620133FC39BD5B71F -BusinessContract: 0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534 -``` - -## 2. applications - -### 2.1 Listener - -#### 2.1.1 Config - -[listener.yaml](./applications/config/listener.yaml) - -``` -log: - level: 6 - -particle: - Url: https://rpc.particle.network/evm-chain - ChainId: 1123 - ProjectUuid: 0000000000000000000000000000000000000000 - ProjectKey: 0000000000000000000000000000000000000000 - AAPubKeyAPI: https://bridge-aa-dev.bsquared.network - -database: - username: root - password: 123456 - host: 127.0.0.1 - port: 3306 - dbname: b2_message - loglevel: 4 # 1: Silent 2: Error 3: Warn 4: Info - -bitcoin: - status: false - name: bitcoin - chaintype: 2 - chainid: 0 - mainnet: false - rpcurl: 127.0.0.1:8085 - safeblocknumber: 3 - ListenAddress: muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME - BlockInterval: 6000 - ToChainId: 1123 - ToContractAddress: 0x0000000000000000000000000000000000000000 - BtcUser: test - BtcPass: test - DisableTLS: false - -bsquared: - status: false - name: bsquared - chaintype: 1 - mainnet: false - chainid: 1123 - rpcurl: 127.0.0.1:8084 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 2000 - Builders: [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] - -arbitrum: - status: false - name: arbitrum - chaintype: 1 - chainid: 421614 - mainnet: false - rpcurl: 127.0.0.1:8083 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 100 - Builders: [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] -``` - -#### 2.1.2 Quick start - -``` -cd applications -go build -o listener cmd/listener/main.go -./listener -f=listener -``` - -#### 2.1.3 Set Env && Quick start - -``` -log: - level: 6 -=> -APP_LOG_LEVEL=6 - -APP_LOG_LEVEL=6 ./listener -f=listener -``` - -#### 2.1.4 Env list - -``` -APP_LOG_LEVEL=6 - -APP_PARTICLE_URL=https://rpc.particle.network/evm-chain -APP_PARTICLE_CHAINID=1123 -APP_PARTICLE_PROJECTUUID=0000000000000000000000000000000000000000 -APP_PARTICLE_PROJECTKEY=0000000000000000000000000000000000000000 -APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network - -APP_DATABASE_USERNAME=root -APP_DATABASE_PASSWORD=123456 -APP_DATABASE_HOST=127.0.0.1 -APP_DATABASE_PORT=3306 -APP_DATABASE_DBNAME=b2_message -APP_DATABASE_LOGLEVEL=4 - -APP_BITCOIN_NAME=bitcoin -APP_BITCOIN_STATUS=true -APP_BITCOIN_CHAINTYPE=2 -APP_BITCOIN_CHAINID=0 -APP_BITCOIN_MAINNET=false -APP_BITCOIN_RPCURL=127.0.0.1:8085 -APP_BITCOIN_SAFEBLOCKNUMBER=3 -APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME -APP_BITCOIN_BLOCKINTERVAL=6000 -APP_BITCOIN_TOCHAINID=1123 -APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 -APP_BITCOIN_BTCUSER=test -APP_BITCOIN_BTCPASS=test -APP_BITCOIN_DISABLETLS=false - -APP_BSQUARED_NAME=bsquared -APP_BSQUARED_STATUS=true -APP_BSQUARED_CHAINTYPE=1 -APP_BSQUARED_MAINNET=false -APP_BSQUARED_CHAINID=1123 -APP_BSQUARED_RPCURL=127.0.0.1:8084 -APP_BSQUARED_SAFEBLOCKNUMBER=1 -APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_BSQUARED_BLOCKINTERVAL=2000 -APP_BSQUARED_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 - -APP_ARBITRUM_NAME=arbitrum -APP_ARBITRUM_STATUS=true -APP_ARBITRUM_CHAINTYPE=1 -APP_ARBITRUM_CHAINID=421614 -APP_ARBITRUM_MAINNET=false -APP_ARBITRUM_RPCURL=127.0.0.1:8083 -APP_ARBITRUM_SAFEBLOCKNUMBER=1 -APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_ARBITRUM_BLOCKINTERVAL=100 -APP_ARBITRUM_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 -``` - -### 2.2 Proposer - -#### 2.2.1 Config - -[proposer.yaml](./applications/config/proposer.yaml) - -``` -log: - level: 6 - -database: - username: root - password: 123456 - host: 127.0.0.1 - port: 3306 - dbname: b2_message - loglevel: 4 # 1: Silent 2: Error 3: Warn 4: Info - -bsquared: - status: false - name: bsquared - chaintype: 1 - mainnet: false - chainid: 1123 - rpcurl: 127.0.0.1:8081 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 2000 - NodeKey: 0000000000000000000000000000000000000000000000000000000000000000 - NodePort: 20000 - SignatureWeight: 1 - Validators: [ "0x0000000000000000000000000000000000000000" ] - -arbitrum: - status: false - name: arbitrum - chaintype: 1 - chainid: 421614 - mainnet: false - rpcurl: 127.0.0.1:8082 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 100 - NodeKey: 0000000000000000000000000000000000000000000000000000000000000000 - NodePort: 20001 - SignatureWeight: 1 - Validators: [ "0x0000000000000000000000000000000000000000" ] - -bitcoin: - status: false - name: bitcoin - chaintype: 2 - chainid: 0 - mainnet: false - rpcurl: 127.0.0.1:8083 - safeblocknumber: 3 - ListenAddress: muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME - BlockInterval: 6000 - ToChainId: 1123 - ToContractAddress: 0x0000000000000000000000000000000000000000 - BtcUser: 000000000000000000 - BtcPass: 000000000000000000 - DisableTLS: true - NodeKey: 0000000000000000000000000000000000000000000000000000000000000000 - NodePort: 20002 - SignatureWeight: 1 - Validators: [ "0x0000000000000000000000000000000000000000" ] - -particle: - Url: https://rpc.particle.network/evm-chain - ChainId: 1123 - ProjectUuid: 000000000000000000 - ProjectKey: 000000000000000000 - AAPubKeyAPI: https://bridge-aa-dev.bsquared.network -``` - -#### 2.2.2 Quick start - -``` -cd applications -go build -o proposer cmd/proposer/main.go -./proposer -f=proposer -``` - -#### 2.2.3 Set Env && Quick start - -``` -log: - level: 6 -=> -APP_LOG_LEVEL=6 - -APP_LOG_LEVEL=6 ./proposer -f=proposer -``` - -#### 2.2.4 Env list - -``` -APP_LOG_LEVEL=6 - -APP_DATABASE_USERNAME=root -APP_DATABASE_PASSWORD=123456 -APP_DATABASE_HOST=127.0.0.1 -APP_DATABASE_PORT=3306 -APP_DATABASE_DBNAME=b2_message -APP_DATABASE_LOGLEVEL=4 - -APP_BSQUARED_NAME=bsquared -APP_BSQUARED_STATUS=true -APP_BSQUARED_CHAINTYPE=1 -APP_BSQUARED_MAINNET=false -APP_BSQUARED_CHAINID=1123 -APP_BSQUARED_RPCURL=127.0.0.1:8081 -APP_BSQUARED_SAFEBLOCKNUMBER=1 -APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_BSQUARED_BLOCKINTERVAL=2000 -APP_BSQUARED_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 -APP_BSQUARED_NODEPORT=20000 -APP_BSQUARED_SIGNATUREWEIGHT=1 -APP_BSQUARED_VALIDATORS=0x0000000000000000000000000000000000000000 - -APP_ARBITRUM_NAME=arbitrum -APP_ARBITRUM_STATUS=true -APP_ARBITRUM_CHAINTYPE=1 -APP_ARBITRUM_CHAINID=421614 -APP_ARBITRUM_MAINNET=false -APP_ARBITRUM_RPCURL=127.0.0.1:8082 -APP_ARBITRUM_SAFEBLOCKNUMBER=1 -APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_ARBITRUM_BLOCKINTERVAL=100 -APP_ARBITRUM_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 -APP_ARBITRUM_NODEPORT=20001 -APP_ARBITRUM_SIGNATUREWEIGHT=1 -APP_ARBITRUM_VALIDATORS=0x0000000000000000000000000000000000000000 - -APP_BITCOIN_NAME=bitcoin -APP_BITCOIN_STATUS=true -APP_BITCOIN_CHAINTYPE=2 -APP_BITCOIN_CHAINID=0 -APP_BITCOIN_MAINNET=false -APP_BITCOIN_RPCURL=127.0.0.1:8083 -APP_BITCOIN_SAFEBLOCKNUMBER=3 -APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME -APP_BITCOIN_BLOCKINTERVAL=6000 -APP_BITCOIN_TOCHAINID=1123 -APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 -APP_BITCOIN_BTCUSER=000000000000000000 -APP_BITCOIN_BTCPASS=000000000000000000 -APP_BITCOIN_DISABLETLS=true -APP_BITCOIN_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 -APP_BITCOIN_NODEPORT=20002 -APP_BITCOIN_SIGNATUREWEIGHT=1 -APP_BITCOIN_VALIDATORS=0x0000000000000000000000000000000000000000 - -APP_PARTICLE_URL=https://rpc.particle.network/evm-chain -APP_PARTICLE_CHAINID=1123 -APP_PARTICLE_PROJECTUUID=000000000000000000 -APP_PARTICLE_PROJECTKEY=000000000000000000 -APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network -``` - -### 2.3 Validator - -#### 2.3.1 Config - -[validator.yaml](./applications/config/validator.yaml) - -``` -log: - level: 6 - -bsquared: - status: false - name: bsquared - chaintype: 1 - mainnet: false - chainid: 1123 - rpcurl: 127.0.0.1:8081 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 2000 - NodeKey: 0000000000000000000000000000000000000000000000000000000000000000 - Endpoint: /ip4/127.0.0.1/tcp/20000/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX # /ip4/{host}/tcp/{port}/p2p/{peerId} - SignatureWeight: 1 - -arbitrum: - status: false - name: arbitrum - chaintype: 1 - chainid: 421614 - mainnet: false - rpcurl: 127.0.0.1:8082 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 100 - NodeKey: 0000000000000000000000000000000000000000000000000000000000000000 - Endpoint: /ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX # /ip4/{host}/tcp/{port}/p2p/{peerId} - SignatureWeight: 1 - -bitcoin: - status: false - name: bitcoin - chaintype: 2 - chainid: 0 - mainnet: false - rpcurl: 127.0.0.1:8083 - safeblocknumber: 3 - ListenAddress: muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME - BlockInterval: 6000 - ToChainId: 1123 - ToContractAddress: 0x0000000000000000000000000000000000000000 - BtcUser: 000000000000000000 - BtcPass: 000000000000000000 - DisableTLS: true - NodeKey: 0000000000000000000000000000000000000000000000000000000000000000 - Endpoint: /ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX # /ip4/{host}/tcp/{port}/p2p/{peerId} - SignatureWeight: 1 - -particle: - Url: https://rpc.particle.network/evm-chain - ChainId: 1123 - ProjectUuid: 000000000000000000 - ProjectKey: 000000000000000000 - AAPubKeyAPI: https://bridge-aa-dev.bsquared.network - -``` - -#### 2.3.2 Quick start - -``` -cd applications -go build -o validator cmd/validator/main.go -./validator -f=validator -``` - -#### 2.3.3 Set Env && Quick start - -``` -log: - level: 6 -=> -APP_LOG_LEVEL=6 - -APP_LOG_LEVEL=6 ./validator -f=validator -``` - -#### 2.3.4 Env list - -``` -APP_LOG_LEVEL=6 - -APP_BSQUARED_NAME=bsquared -APP_BSQUARED_STATUS=true -APP_BSQUARED_CHAINTYPE=1 -APP_BSQUARED_MAINNET=false -APP_BSQUARED_CHAINID=1123 -APP_BSQUARED_RPCURL=127.0.0.1:8081 -APP_BSQUARED_SAFEBLOCKNUMBER=1 -APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_BSQUARED_BLOCKINTERVAL=2000 -APP_BSQUARED_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 -APP_BSQUARED_ENDPOINT=/ip4/127.0.0.1/tcp/20000/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX -APP_BSQUARED_SIGNATUREWEIGHT=1 - -APP_ARBITRUM_NAME=arbitrum -APP_ARBITRUM_STATUS=true -APP_ARBITRUM_CHAINTYPE=1 -APP_ARBITRUM_CHAINID=421614 -APP_ARBITRUM_MAINNET=false -APP_ARBITRUM_RPCURL=127.0.0.1:8082 -APP_ARBITRUM_SAFEBLOCKNUMBER=1 -APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_ARBITRUM_BLOCKINTERVAL=100 -APP_ARBITRUM_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 -APP_ARBITRUM_ENDPOINT=/ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX -APP_ARBITRUM_SIGNATUREWEIGHT=1 - -APP_BITCOIN_NAME=bitcoin -APP_BITCOIN_STATUS=true -APP_BITCOIN_CHAINTYPE=2 -APP_BITCOIN_CHAINID=0 -APP_BITCOIN_MAINNET=false -APP_BITCOIN_RPCURL=127.0.0.1:8083 -APP_BITCOIN_SAFEBLOCKNUMBER=3 -APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME -APP_BITCOIN_BLOCKINTERVAL=6000 -APP_BITCOIN_TOCHAINID=1123 -APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 -APP_BITCOIN_BTCUSER=000000000000000000 -APP_BITCOIN_BTCPASS=000000000000000000 -APP_BITCOIN_DISABLETLS=true -APP_BITCOIN_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 -APP_BITCOIN_ENDPOINT=/ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX -APP_BITCOIN_SIGNATUREWEIGHT=1 - -APP_PARTICLE_URL=https://rpc.particle.network/evm-chain -APP_PARTICLE_CHAINID=1123 -APP_PARTICLE_PROJECTUUID=000000000000000000 -APP_PARTICLE_PROJECTKEY=000000000000000000 -APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network -``` - -### 2.4 Builder - -#### 2.4.1 Config - -[builder.yaml](./applications/config/builder.yaml) - -``` -log: - level: 6 - -particle: - Url: https://rpc.particle.network/evm-chain - ChainId: 1123 - ProjectUuid: 0000000000000000000000000000000000000000 - ProjectKey: 0000000000000000000000000000000000000000 - AAPubKeyAPI: https://bridge-aa-dev.bsquared.network - -database: - username: root - password: 123456 - host: 127.0.0.1 - port: 3306 - dbname: b2_message - loglevel: 4 # 1: Silent 2: Error 3: Warn 4: Info - -bitcoin: - status: true - name: bitcoin - chaintype: 2 - chainid: 0 - mainnet: false - rpcurl: 127.0.0.1:8085 - safeblocknumber: 3 - ListenAddress: muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME - BlockInterval: 6000 - ToChainId: 1123 - ToContractAddress: 0x0000000000000000000000000000000000000000 - BtcUser: test - BtcPass: test - DisableTLS: false - -bsquared: - status: true - name: bsquared - chaintype: 1 - mainnet: false - chainid: 1123 - rpcurl: 127.0.0.1:8084 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 2000 - Builders: [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] - -arbitrum: - status: true - name: arbitrum - chaintype: 1 - chainid: 421614 - mainnet: false - rpcurl: 127.0.0.1:8083 - safeblocknumber: 1 - ListenAddress: 0x0000000000000000000000000000000000000000 - BlockInterval: 100 - Builders: [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] -``` - -#### 2.4.2 Quick start - -``` -cd applications -go build -o builder cmd/builder/main.go -./builder -f=builder -``` - -#### 2.4.3 Set Env && Quick start - -``` -log: - level: 6 -=> -APP_LOG_LEVEL=6 - -APP_LOG_LEVEL=6 ./builder -f=builder -``` - -#### 2.4.4 Env list - -``` -APP_LOG_LEVEL=6 -APP_PARTICLE_URL=https://rpc.particle.network/evm-chain -APP_PARTICLE_CHAINID=1123 -APP_PARTICLE_PROJECTUUID=0000000000000000000000000000000000000000 -APP_PARTICLE_PROJECTKEY=0000000000000000000000000000000000000000 -APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network - -APP_DATABASE_USERNAME=root -APP_DATABASE_PASSWORD=123456 -APP_DATABASE_HOST=127.0.0.1 -APP_DATABASE_PORT=3306 -APP_DATABASE_DBNAME=b2_message -APP_DATABASE_LOGLEVEL=4 - -APP_BITCOIN_NAME=bitcoin -APP_BITCOIN_STATUS=true -APP_BITCOIN_CHAINTYPE=2 -APP_BITCOIN_CHAINID=0 -APP_BITCOIN_MAINNET=false -APP_BITCOIN_RPCURL=127.0.0.1:8085 -APP_BITCOIN_SAFEBLOCKNUMBER=3 -APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME -APP_BITCOIN_BLOCKINTERVAL=6000 -APP_BITCOIN_TOCHAINID=1123 -APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 -APP_BITCOIN_BTCUSER=test -APP_BITCOIN_BTCPASS=test -APP_BITCOIN_DISABLETLS=false - -APP_BSQUARED_NAME=bsquared -APP_BSQUARED_STATUS=true -APP_BSQUARED_CHAINTYPE=1 -APP_BSQUARED_MAINNET=false -APP_BSQUARED_CHAINID=1123 -APP_BSQUARED_RPCURL=127.0.0.1:8084 -APP_BSQUARED_SAFEBLOCKNUMBER=1 -APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_BSQUARED_BLOCKINTERVAL=2000 -APP_BSQUARED_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 - -APP_ARBITRUM_NAME=arbitrum -APP_ARBITRUM_STATUS=true -APP_ARBITRUM_CHAINTYPE=1 -APP_ARBITRUM_CHAINID=421614 -APP_ARBITRUM_MAINNET=false -APP_ARBITRUM_RPCURL=127.0.0.1:8083 -APP_ARBITRUM_SAFEBLOCKNUMBER=1 -APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 -APP_ARBITRUM_BLOCKINTERVAL=100 -APP_ARBITRUM_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 -``` +Detailed content for each example can be found in the respective documentation. These examples help developers better +understand and implement multi-chain communication services. diff --git a/applications/cmd/builder/main.go b/applications/cmd/builder/main.go index 63134f83..d66062d4 100644 --- a/applications/cmd/builder/main.go +++ b/applications/cmd/builder/main.go @@ -1,10 +1,10 @@ package main import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/initiates" - "bsquared.network/b2-message-sharing-applications/internal/serves/builder" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/initiates" + "bsquared.network/message-sharing-applications/internal/serves/builder" + "bsquared.network/message-sharing-applications/internal/utils/log" "encoding/json" "flag" "fmt" diff --git a/applications/cmd/listener/main.go b/applications/cmd/listener/main.go index fdccc9b5..05f16708 100644 --- a/applications/cmd/listener/main.go +++ b/applications/cmd/listener/main.go @@ -1,11 +1,11 @@ package main import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/initiates" - "bsquared.network/b2-message-sharing-applications/internal/serves/listener/bitcoin" - "bsquared.network/b2-message-sharing-applications/internal/serves/listener/ethereum" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/initiates" + "bsquared.network/message-sharing-applications/internal/serves/listener/bitcoin" + "bsquared.network/message-sharing-applications/internal/serves/listener/ethereum" + "bsquared.network/message-sharing-applications/internal/utils/log" "encoding/json" "flag" "fmt" diff --git a/applications/cmd/proposer/main.go b/applications/cmd/proposer/main.go index 2e30cb8b..2e6ee5d2 100644 --- a/applications/cmd/proposer/main.go +++ b/applications/cmd/proposer/main.go @@ -1,11 +1,11 @@ package main import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/initiates" - "bsquared.network/b2-message-sharing-applications/internal/serves/proposer" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" - "bsquared.network/b2-message-sharing-applications/internal/vo" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/initiates" + "bsquared.network/message-sharing-applications/internal/serves/proposer" + "bsquared.network/message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/vo" "encoding/json" "flag" "fmt" diff --git a/applications/cmd/validator/main.go b/applications/cmd/validator/main.go index 0ad8317a..a0101ace 100644 --- a/applications/cmd/validator/main.go +++ b/applications/cmd/validator/main.go @@ -1,11 +1,11 @@ package main import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/initiates" - "bsquared.network/b2-message-sharing-applications/internal/serves/validator" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" - "bsquared.network/b2-message-sharing-applications/internal/vo" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/initiates" + "bsquared.network/message-sharing-applications/internal/serves/validator" + "bsquared.network/message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/vo" "encoding/json" "flag" "fmt" diff --git a/applications/go.mod b/applications/go.mod index ec675194..3708c362 100644 --- a/applications/go.mod +++ b/applications/go.mod @@ -1,4 +1,4 @@ -module bsquared.network/b2-message-sharing-applications +module bsquared.network/message-sharing-applications go 1.22 diff --git a/applications/internal/config/config.go b/applications/internal/config/config.go index 9741f619..ab178597 100644 --- a/applications/internal/config/config.go +++ b/applications/internal/config/config.go @@ -1,7 +1,7 @@ package config import ( - "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/enums" "fmt" "github.com/pkg/errors" "github.com/spf13/viper" diff --git a/applications/internal/initiates/db.go b/applications/internal/initiates/db.go index 4af095b0..96005653 100644 --- a/applications/internal/initiates/db.go +++ b/applications/internal/initiates/db.go @@ -1,7 +1,7 @@ package initiates import ( - "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/config" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" diff --git a/applications/internal/models/deposit.go b/applications/internal/models/deposit.go index f740491a..b359a4ff 100644 --- a/applications/internal/models/deposit.go +++ b/applications/internal/models/deposit.go @@ -1,7 +1,7 @@ package models import ( - "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/enums" "time" ) diff --git a/applications/internal/models/messages.go b/applications/internal/models/messages.go index f8c3a764..5102137d 100644 --- a/applications/internal/models/messages.go +++ b/applications/internal/models/messages.go @@ -1,6 +1,6 @@ package models -import "bsquared.network/b2-message-sharing-applications/internal/enums" +import "bsquared.network/message-sharing-applications/internal/enums" type Message struct { Base diff --git a/applications/internal/models/signatures.go b/applications/internal/models/signatures.go index 4a5e8fa7..6d9503aa 100644 --- a/applications/internal/models/signatures.go +++ b/applications/internal/models/signatures.go @@ -1,7 +1,7 @@ package models import ( - "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/enums" "github.com/shopspring/decimal" ) diff --git a/applications/internal/models/sync_tasks.go b/applications/internal/models/sync_tasks.go index 73141d10..8d45c793 100644 --- a/applications/internal/models/sync_tasks.go +++ b/applications/internal/models/sync_tasks.go @@ -1,6 +1,6 @@ package models -import "bsquared.network/b2-message-sharing-applications/internal/enums" +import "bsquared.network/message-sharing-applications/internal/enums" type SyncTask struct { Base diff --git a/applications/internal/serves/builder/builder.go b/applications/internal/serves/builder/builder.go index 8d7ccb9e..53a8e0dd 100644 --- a/applications/internal/serves/builder/builder.go +++ b/applications/internal/serves/builder/builder.go @@ -1,11 +1,11 @@ package builder import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/enums" - "bsquared.network/b2-message-sharing-applications/internal/models" - msg "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/models" + msg "bsquared.network/message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/message-sharing-applications/internal/utils/log" "bytes" "context" "crypto/ecdsa" diff --git a/applications/internal/serves/listener/bitcoin/bitcoin.go b/applications/internal/serves/listener/bitcoin/bitcoin.go index 5cb99cb9..ffac1245 100644 --- a/applications/internal/serves/listener/bitcoin/bitcoin.go +++ b/applications/internal/serves/listener/bitcoin/bitcoin.go @@ -1,13 +1,13 @@ package bitcoin import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/enums" - "bsquared.network/b2-message-sharing-applications/internal/models" - "bsquared.network/b2-message-sharing-applications/internal/types" - "bsquared.network/b2-message-sharing-applications/internal/utils/aa" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/models" + "bsquared.network/message-sharing-applications/internal/types" + "bsquared.network/message-sharing-applications/internal/utils/aa" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/message-sharing-applications/internal/utils/log" "bytes" "context" "encoding/hex" diff --git a/applications/internal/serves/listener/ethereum/ethereum.go b/applications/internal/serves/listener/ethereum/ethereum.go index 1b8d7e49..83f6505d 100644 --- a/applications/internal/serves/listener/ethereum/ethereum.go +++ b/applications/internal/serves/listener/ethereum/ethereum.go @@ -1,12 +1,12 @@ package ethereum import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/enums" - "bsquared.network/b2-message-sharing-applications/internal/models" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event/message" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/models" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/event" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/event/message" + "bsquared.network/message-sharing-applications/internal/utils/log" "context" "fmt" "github.com/ethereum/go-ethereum" @@ -235,6 +235,7 @@ func (l *EthereumListener) handEvent() { handles := make(map[string]bool) var Type enums.MessageType + var FromMessageBridge string var FromChainId int64 var FromSender string var FromId string @@ -259,6 +260,7 @@ func (l *EthereumListener) handEvent() { time.Sleep(duration) continue } + FromMessageBridge = event.ContractAddress FromChainId = messageCall.FromChainId FromSender = messageCall.FromSender FromId = common.BytesToHash(messageCall.FromId.BigInt().Bytes()).Hex() @@ -279,17 +281,30 @@ func (l *EthereumListener) handEvent() { FromId = common.BytesToHash(messageSend.FromId.BigInt().Bytes()).Hex() ToChainId = messageSend.ToChainId ToContractAddress = messageSend.ContractAddress + ToMessageBridge = event.ContractAddress ToBytes = messageSend.Bytes Type = enums.MessageTypeSend status = enums.MessageStatusPending } - messageBridge, ok := l.bridges[ToChainId] - if ok { - ToMessageBridge = messageBridge - } else { - invalids = append(invalids, event.Id) - continue + if FromMessageBridge == "" { + messageBridge, ok := l.bridges[FromChainId] + if ok { + FromMessageBridge = messageBridge + } else { + invalids = append(invalids, event.Id) + continue + } + } + + if ToMessageBridge == "" { + messageBridge, ok := l.bridges[ToChainId] + if ok { + ToMessageBridge = messageBridge + } else { + invalids = append(invalids, event.Id) + continue + } } var message models.Message @@ -305,7 +320,7 @@ func (l *EthereumListener) handEvent() { Type: Type, FromChainId: FromChainId, FromSender: FromSender, - FromMessageBridge: event.ContractAddress, + FromMessageBridge: FromMessageBridge, FromId: FromId, ToChainId: ToChainId, ToMessageBridge: ToMessageBridge, diff --git a/applications/internal/serves/proposer/proposer.go b/applications/internal/serves/proposer/proposer.go index 68cb534c..f6053e58 100644 --- a/applications/internal/serves/proposer/proposer.go +++ b/applications/internal/serves/proposer/proposer.go @@ -1,13 +1,13 @@ package proposer import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/enums" - "bsquared.network/b2-message-sharing-applications/internal/models" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" - "bsquared.network/b2-message-sharing-applications/internal/utils/tx" - "bsquared.network/b2-message-sharing-applications/internal/vo" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/models" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/utils/tx" + "bsquared.network/message-sharing-applications/internal/vo" "bufio" "context" "crypto/ecdsa" diff --git a/applications/internal/serves/validator/validator.go b/applications/internal/serves/validator/validator.go index dfd06879..02bd8832 100644 --- a/applications/internal/serves/validator/validator.go +++ b/applications/internal/serves/validator/validator.go @@ -1,12 +1,12 @@ package validator import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/enums" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-sharing-applications/internal/utils/log" - "bsquared.network/b2-message-sharing-applications/internal/utils/tx" - "bsquared.network/b2-message-sharing-applications/internal/vo" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/message-sharing-applications/internal/utils/log" + "bsquared.network/message-sharing-applications/internal/utils/tx" + "bsquared.network/message-sharing-applications/internal/vo" "bufio" "context" "crypto/ecdsa" diff --git a/applications/internal/utils/aa/aa.go b/applications/internal/utils/aa/aa.go index 10aebf9c..0e974357 100644 --- a/applications/internal/utils/aa/aa.go +++ b/applications/internal/utils/aa/aa.go @@ -1,7 +1,7 @@ package aa import ( - "bsquared.network/b2-message-sharing-applications/internal/utils/particle" + "bsquared.network/message-sharing-applications/internal/utils/particle" "encoding/json" "fmt" "io/ioutil" diff --git a/applications/internal/utils/ethereum/event/message/call.go b/applications/internal/utils/ethereum/event/message/call.go index a8df7190..3c0459b5 100644 --- a/applications/internal/utils/ethereum/event/message/call.go +++ b/applications/internal/utils/ethereum/event/message/call.go @@ -1,7 +1,7 @@ package message import ( - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/event" "encoding/json" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" diff --git a/applications/internal/utils/ethereum/event/message/send.go b/applications/internal/utils/ethereum/event/message/send.go index fab15803..3603d7b4 100644 --- a/applications/internal/utils/ethereum/event/message/send.go +++ b/applications/internal/utils/ethereum/event/message/send.go @@ -1,7 +1,7 @@ package message import ( - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/event" "encoding/json" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" diff --git a/applications/internal/utils/tx/tx.go b/applications/internal/utils/tx/tx.go index 801058b9..599162fe 100644 --- a/applications/internal/utils/tx/tx.go +++ b/applications/internal/utils/tx/tx.go @@ -1,11 +1,11 @@ package tx import ( - "bsquared.network/b2-message-sharing-applications/internal/config" - "bsquared.network/b2-message-sharing-applications/internal/types" - "bsquared.network/b2-message-sharing-applications/internal/utils/aa" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" - "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/message-sharing-applications/internal/config" + "bsquared.network/message-sharing-applications/internal/types" + "bsquared.network/message-sharing-applications/internal/utils/aa" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/event" + "bsquared.network/message-sharing-applications/internal/utils/ethereum/message" "bytes" "context" "encoding/hex" diff --git a/applications/internal/vo/vo.go b/applications/internal/vo/vo.go index 1fad7681..2042ec3f 100644 --- a/applications/internal/vo/vo.go +++ b/applications/internal/vo/vo.go @@ -1,7 +1,7 @@ package vo import ( - "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/message-sharing-applications/internal/enums" "github.com/btcsuite/btcd/rpcclient" "github.com/ethereum/go-ethereum/ethclient" ) diff --git a/contracts/.openzeppelin/unknown-421614.json b/contracts/.openzeppelin/unknown-421614.json index f2612fcc..e2b4f204 100644 --- a/contracts/.openzeppelin/unknown-421614.json +++ b/contracts/.openzeppelin/unknown-421614.json @@ -10,6 +10,11 @@ "address": "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534", "txHash": "0x96e2c430b426b8f5e2426ea599896cb875d2992e99abc95f7fa9fe902c236883", "kind": "uups" + }, + { + "address": "0x72848587deb762C4cCe38e6fA79d8347eF81b8a6", + "txHash": "0xc42e3bbf046853408e55fb005c3a5bcd63add2e45be3874e6d764c1eddc2da72", + "kind": "uups" } ], "impls": { @@ -393,6 +398,420 @@ ] } } + }, + "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874": { + "address": "0x8Bf226ce7565CFFdDB6E7eD7FEAda5b76E1862dF", + "txHash": "0x119f6883804538d37b4c485bb44ba2553e0ceed3dc2a4c0dd6be6362d9b11f0a", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec": { + "address": "0x2c585Eac006cc7DD45d224568E1284FC0D0A452c", + "txHash": "0x139974e1f74d0527489f175fb5a702cf4100236bf25b29d9713f5dce55fa65a1", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)3540", + "contract": "BusinessContractExample", + "src": "contracts/business/example/BusinessContractExample.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)3540": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } diff --git a/contracts/cache/solidity-files-cache.json b/contracts/cache/solidity-files-cache.json index 8f9c7d88..0eb49e0f 100644 --- a/contracts/cache/solidity-files-cache.json +++ b/contracts/cache/solidity-files-cache.json @@ -1,50 +1,7 @@ { "_format": "hh-sol-cache-2", "files": { - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/business/example/BusinessContractExample.sol": { - "lastModificationDate": 1727565914587, - "contentHash": "a06f9fca36c78543e58f14b62f94a097", - "sourceName": "contracts/business/example/BusinessContractExample.sol", - "solcConfig": { - "version": "0.8.20", - "settings": { - "optimizer": { - "enabled": true, - "runs": 1000 - }, - "evmVersion": "paris", - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "storageLayout" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [ - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" - ], - "versionPragmas": [ - "^0.8.20" - ], - "artifacts": [ - "BusinessContractExample", - "IBusinessContract" - ] - }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { "lastModificationDate": 1727232135596, "contentHash": "61a6b098d98b3b945beb7d9de481c025", "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", @@ -86,7 +43,7 @@ "AccessControlUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { "lastModificationDate": 1727232135857, "contentHash": "f0cedd674b4863ee90d1521a92ab82df", "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", @@ -123,7 +80,7 @@ "Initializable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { "lastModificationDate": 1727232135876, "contentHash": "0488cb927068c0c94b864ea40a34d1ea", "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", @@ -164,7 +121,7 @@ "UUPSUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { "lastModificationDate": 1727232135618, "contentHash": "184b684b7ed971771381712181df4367", "sourceName": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", @@ -205,7 +162,7 @@ "EIP712Upgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { "lastModificationDate": 1727232135613, "contentHash": "c28aaa25d083a9a55bd9ec9e0b785122", "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", @@ -244,7 +201,7 @@ "ContextUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { "lastModificationDate": 1727232135679, "contentHash": "ea9d297971734d541e82cc31ec88b84f", "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", @@ -284,7 +241,7 @@ "ERC165Upgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { "lastModificationDate": 1727232135965, "contentHash": "e3a14b0714caaaa82d58fa0bc3756079", "sourceName": "@openzeppelin/contracts/access/IAccessControl.sol", @@ -321,7 +278,7 @@ "IAccessControl" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { "lastModificationDate": 1727232135992, "contentHash": "de0163561b417b800d01749cbbe2147e", "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", @@ -358,7 +315,7 @@ "IERC165" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { "lastModificationDate": 1727232135846, "contentHash": "5a6f0412127636d802db818a7d6ac404", "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", @@ -395,7 +352,7 @@ "IERC1822Proxiable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { "lastModificationDate": 1727232135893, "contentHash": "838bc3ef3bcf0376af7d9b2041989b6a", "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", @@ -436,7 +393,7 @@ "ERC1967Utils" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Address.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Address.sol": { "lastModificationDate": 1727232135811, "contentHash": "79c699f80eb8a9b168cb34e37816f894", "sourceName": "@openzeppelin/contracts/utils/Address.sol", @@ -473,7 +430,7 @@ "Address" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { "lastModificationDate": 1727232136046, "contentHash": "08cbccfefa284405c12b4bfa8c8c9c2b", "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", @@ -510,7 +467,7 @@ "StorageSlot" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { "lastModificationDate": 1727232135974, "contentHash": "0a5c323fd908535580597848b8e550fb", "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", @@ -547,7 +504,7 @@ "IBeacon" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { "lastModificationDate": 1727232136007, "contentHash": "94364524cb1a39dcbc3d3afff6d8e53e", "sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol", @@ -584,7 +541,7 @@ "IERC5267" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { "lastModificationDate": 1727232136032, "contentHash": "9e5eec59eaffa554d6cca561dcb914eb", "sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", @@ -623,7 +580,7 @@ "MessageHashUtils" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Strings.sol": { "lastModificationDate": 1727232136047, "contentHash": "ba57ff4ddf1d9cae9d2009792795b7f6", "sourceName": "@openzeppelin/contracts/utils/Strings.sol", @@ -663,7 +620,7 @@ "Strings" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { "lastModificationDate": 1727232136028, "contentHash": "718fa8ba0ff269c92e364c1429d9de57", "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", @@ -700,7 +657,7 @@ "Math" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { "lastModificationDate": 1727232136046, "contentHash": "b6c6bdc7aaca4fe5b680760a72e09d3e", "sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol", @@ -737,7 +694,7 @@ "SignedMath" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { "lastModificationDate": 1727232135886, "contentHash": "6a55c353946e471d9792965d06208295", "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", @@ -776,7 +733,7 @@ "ERC165" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/access/AccessControl.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/access/AccessControl.sol": { "lastModificationDate": 1727232135786, "contentHash": "4c80b7fdf559a9a348e832a57d072a0b", "sourceName": "@openzeppelin/contracts/access/AccessControl.sol", @@ -817,7 +774,7 @@ "AccessControl" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Context.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Context.sol": { "lastModificationDate": 1727232135838, "contentHash": "67bfbc07588eb8683b3fd8f6f909563e", "sourceName": "@openzeppelin/contracts/utils/Context.sol", @@ -854,52 +811,7 @@ "Context" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/message/MessageSharing.sol": { - "lastModificationDate": 1727580611043, - "contentHash": "8e99d74ada1a3fa28cf9d10cfe2c8ad6", - "sourceName": "contracts/message/MessageSharing.sol", - "solcConfig": { - "version": "0.8.20", - "settings": { - "optimizer": { - "enabled": true, - "runs": 1000 - }, - "evmVersion": "paris", - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "storageLayout" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [ - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", - "@openzeppelin/contracts/utils/cryptography/ECDSA.sol" - ], - "versionPragmas": [ - "^0.8.20" - ], - "artifacts": [ - "B2MessageSharing", - "IB2MessageSharing", - "IBusinessContract" - ] - }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { "lastModificationDate": 1727232135852, "contentHash": "b96e0d7a3c2b185342c7d083d765b61f", "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", @@ -936,7 +848,7 @@ "ECDSA" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { "lastModificationDate": 1727232136044, "contentHash": "697fd27924863e77c17dace2179018b2", "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", @@ -977,10 +889,10 @@ "SafeERC20" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "lastModificationDate": 1727232135997, - "contentHash": "5517c8678c18eb1a8ba58810e7ca39ca", - "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "lastModificationDate": 1727232136000, + "contentHash": "da291753fa4641f2c5837bfc4aa4c01b", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -1011,13 +923,13 @@ "^0.8.20" ], "artifacts": [ - "IERC20" + "IERC20Permit" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { - "lastModificationDate": 1727232136000, - "contentHash": "da291753fa4641f2c5837bfc4aa4c01b", - "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "lastModificationDate": 1727232135997, + "contentHash": "5517c8678c18eb1a8ba58810e7ca39ca", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -1048,10 +960,10 @@ "^0.8.20" ], "artifacts": [ - "IERC20Permit" + "IERC20" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "lastModificationDate": 1727232135999, "contentHash": "4c02fa6f7ae7b6c289cef80424f0c875", "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", @@ -1090,7 +1002,7 @@ "IERC20Metadata" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { "lastModificationDate": 1727232135900, "contentHash": "c6375ef25e84c90b3d15f9ec4eef218f", "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", @@ -1132,7 +1044,7 @@ "ERC20" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { "lastModificationDate": 1727232135848, "contentHash": "4aefc698f77ecbace7f401257dfe182d", "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", @@ -1171,10 +1083,10 @@ "IERC721Errors" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/business/tokenLocker/MyERC20.sol": { - "lastModificationDate": 1727565994263, - "contentHash": "6eb80143fbc67b6a79f1da8ff8e56384", - "sourceName": "contracts/business/tokenLocker/MyERC20.sol", + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "lastModificationDate": 1727232135817, + "contentHash": "9f0f228c1bdec68e130ab539644f8887", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -1201,20 +1113,23 @@ } }, "imports": [ - "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "@openzeppelin/contracts/access/AccessControl.sol" + "../ERC721Upgradeable.sol", + "@openzeppelin/contracts/utils/Strings.sol", + "@openzeppelin/contracts/interfaces/IERC4906.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../../proxy/utils/Initializable.sol" ], "versionPragmas": [ - "^0.8.0" + "^0.8.20" ], "artifacts": [ - "MyERC20" + "ERC721URIStorageUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/business/tokenLocker/Lock.sol": { - "lastModificationDate": 1727611193601, - "contentHash": "3a1cb54ce50162160d831faeee75b660", - "sourceName": "contracts/business/tokenLocker/Lock.sol", + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "lastModificationDate": 1727232135816, + "contentHash": "63787651bcdb931377c7c0deb863edbd", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -1241,19 +1156,2893 @@ } }, "imports": [ - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", - "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol" + "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "../../utils/ContextUpgradeable.sol", + "@openzeppelin/contracts/utils/Strings.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../utils/introspection/ERC165Upgradeable.sol", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "../../proxy/utils/Initializable.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "IB2MessageSharing", + "ERC721Upgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol": { + "lastModificationDate": 1727232136007, + "contentHash": "7f130e0d70179d683e9b9df0dda38a51", + "sourceName": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC165.sol", + "./IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC4906" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "lastModificationDate": 1727232136016, + "contentHash": "fc8a9841f4bdd6329c26a00d5e75f4b3", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721Receiver" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "lastModificationDate": 1727232136011, + "contentHash": "5df8fdb527e563085847cad29e3c5f2e", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "lastModificationDate": 1727232136015, + "contentHash": "12c206f185cb951213799561fdcaa40d", + "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721Metadata" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC721.sol": { + "lastModificationDate": 1727232136011, + "contentHash": "d8d23fc2f55ed934d1a1b91c9afd8526", + "sourceName": "@openzeppelin/contracts/interfaces/IERC721.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../token/ERC721/IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": { + "lastModificationDate": 1727232135991, + "contentHash": "f808b485ee0cdc6768ee8385ae5f9a2a", + "sourceName": "@openzeppelin/contracts/interfaces/IERC165.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "lastModificationDate": 1727232136013, + "contentHash": "3fdc14aab706458ae99314f6f7f529a2", + "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721Enumerable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "lastModificationDate": 1727232135796, + "contentHash": "ed34441dcf15751f613899f10afa055c", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721EnumerableUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol": { + "lastModificationDate": 1727232135773, + "contentHash": "3fbc400ba26c6ff58dce1fc99cda6322", + "sourceName": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/interfaces/IERC2981.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../utils/introspection/ERC165Upgradeable.sol", + "../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC2981Upgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC2981.sol": { + "lastModificationDate": 1727232136002, + "contentHash": "a121ffbe9ad90f8eb00e40e96adc5a42", + "sourceName": "@openzeppelin/contracts/interfaces/IERC2981.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC2981" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol": { + "lastModificationDate": 1727232135790, + "contentHash": "206b6ee9c37f4c56c57e37962b5d807a", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "../../../utils/ContextUpgradeable.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721BurnableUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/message_sharing/MessageSharing.sol": { + "lastModificationDate": 1727580611043, + "contentHash": "8e99d74ada1a3fa28cf9d10cfe2c8ad6", + "sourceName": "contracts/message_sharing/MessageSharing.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "B2MessageSharing", + "IB2MessageSharing", + "IBusinessContract" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/token_bridge/TokenBridge.sol": { + "lastModificationDate": 1728403984483, + "contentHash": "fa95c7456ca2ba02999681426ffa6a05", + "sourceName": "contracts/examples/token_bridge/TokenBridge.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "TokenBridge" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/nft_bridge/NftBridge.sol": { + "lastModificationDate": 1728404023167, + "contentHash": "1e3153ec0ac0417139ae60967ef42384", + "sourceName": "contracts/examples/nft_bridge/NftBridge.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IERC1155", + "IERC721", + "IMessageSharing", + "NftBridge" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/message_channel/MessageChannel.sol": { + "lastModificationDate": 1728433153170, + "contentHash": "81ed86899f08b04cde99649f2d22aa23", + "sourceName": "contracts/examples/message_channel/MessageChannel.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "MessageChannel" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/erc721/MyERC721.sol": { + "lastModificationDate": 1728392684183, + "contentHash": "b303867fa9a1c5a99e809f1503d8a888", + "sourceName": "contracts/examples/erc721/MyERC721.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts/utils/Strings.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "MyERC721" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol": { + "lastModificationDate": 1727232135811, + "contentHash": "c1db986565615302e4b8da7d5224c280", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "../../common/ERC2981Upgradeable.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721RoyaltyUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/erc20/MyERC20.sol": { + "lastModificationDate": 1728354090173, + "contentHash": "6eb80143fbc67b6a79f1da8ff8e56384", + "sourceName": "contracts/examples/erc20/MyERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "@openzeppelin/contracts/access/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "MyERC20" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "lastModificationDate": 1727232135868, + "contentHash": "ef20fd32f5bdcc50bd466abc8fc7f181", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/ContextUpgradeable.sol", + "../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "PausableUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/orderbook/Cashier.sol": { + "lastModificationDate": 1728553160644, + "contentHash": "cae5b7756330006bf519023b7708616c", + "sourceName": "contracts/examples/orderbook/Cashier.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "@openzeppelin/contracts/utils/Address.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Cashier", + "IBusinessContract", + "IMessageSharing" + ] + }, + "/Users/m/Workspaces/b2-network/message-sharing/contracts/contracts/examples/orderbook/Orderbook.sol": { + "lastModificationDate": 1728553387556, + "contentHash": "51acea9ad2b6c3633497e1476b901a8b", + "sourceName": "contracts/examples/orderbook/Orderbook.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "Orderbook" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/erc20/MyERC20.sol": { + "lastModificationDate": 1728354090173, + "contentHash": "6eb80143fbc67b6a79f1da8ff8e56384", + "sourceName": "contracts/examples/erc20/MyERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "@openzeppelin/contracts/access/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "MyERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/access/AccessControl.sol": { + "lastModificationDate": 1727232135786, + "contentHash": "4c80b7fdf559a9a348e832a57d072a0b", + "sourceName": "@openzeppelin/contracts/access/AccessControl.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IAccessControl.sol", + "../utils/Context.sol", + "../utils/introspection/ERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "AccessControl" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "lastModificationDate": 1727232135900, + "contentHash": "c6375ef25e84c90b3d15f9ec4eef218f", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC20.sol", + "./extensions/IERC20Metadata.sol", + "../../utils/Context.sol", + "../../interfaces/draft-IERC6093.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Context.sol": { + "lastModificationDate": 1727232135838, + "contentHash": "67bfbc07588eb8683b3fd8f6f909563e", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Context" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "lastModificationDate": 1727232135886, + "contentHash": "6a55c353946e471d9792965d06208295", + "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC165" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { + "lastModificationDate": 1727232135965, + "contentHash": "e3a14b0714caaaa82d58fa0bc3756079", + "sourceName": "@openzeppelin/contracts/access/IAccessControl.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IAccessControl" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "lastModificationDate": 1727232135992, + "contentHash": "de0163561b417b800d01749cbbe2147e", + "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC165" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "lastModificationDate": 1727232135997, + "contentHash": "5517c8678c18eb1a8ba58810e7ca39ca", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "lastModificationDate": 1727232135848, + "contentHash": "4aefc698f77ecbace7f401257dfe182d", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC1155Errors", + "IERC20Errors", + "IERC721Errors" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "lastModificationDate": 1727232135999, + "contentHash": "4c02fa6f7ae7b6c289cef80424f0c875", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC20.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC20Metadata" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "lastModificationDate": 1727232136044, + "contentHash": "697fd27924863e77c17dace2179018b2", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC20.sol", + "../extensions/IERC20Permit.sol", + "../../../utils/Address.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "SafeERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Address.sol": { + "lastModificationDate": 1727232135811, + "contentHash": "79c699f80eb8a9b168cb34e37816f894", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Address" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "lastModificationDate": 1727232136000, + "contentHash": "da291753fa4641f2c5837bfc4aa4c01b", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC20Permit" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "lastModificationDate": 1727232135893, + "contentHash": "838bc3ef3bcf0376af7d9b2041989b6a", + "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../beacon/IBeacon.sol", + "../../utils/Address.sol", + "../../utils/StorageSlot.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC1967Utils" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "lastModificationDate": 1727232135974, + "contentHash": "0a5c323fd908535580597848b8e550fb", + "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBeacon" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "lastModificationDate": 1727232136046, + "contentHash": "08cbccfefa284405c12b4bfa8c8c9c2b", + "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "StorageSlot" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "lastModificationDate": 1727232135876, + "contentHash": "0488cb927068c0c94b864ea40a34d1ea", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "./Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "UUPSUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "lastModificationDate": 1727232135857, + "contentHash": "f0cedd674b4863ee90d1521a92ab82df", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Initializable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "lastModificationDate": 1727232135846, + "contentHash": "5a6f0412127636d802db818a7d6ac404", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC1822Proxiable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol": { + "lastModificationDate": 1727232135773, + "contentHash": "3fbc400ba26c6ff58dce1fc99cda6322", + "sourceName": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/interfaces/IERC2981.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../utils/introspection/ERC165Upgradeable.sol", + "../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC2981Upgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "lastModificationDate": 1727232135679, + "contentHash": "ea9d297971734d541e82cc31ec88b84f", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC165Upgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC2981.sol": { + "lastModificationDate": 1727232136002, + "contentHash": "a121ffbe9ad90f8eb00e40e96adc5a42", + "sourceName": "@openzeppelin/contracts/interfaces/IERC2981.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC2981" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": { + "lastModificationDate": 1727232135991, + "contentHash": "f808b485ee0cdc6768ee8385ae5f9a2a", + "sourceName": "@openzeppelin/contracts/interfaces/IERC165.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol": { + "lastModificationDate": 1727232136007, + "contentHash": "7f130e0d70179d683e9b9df0dda38a51", + "sourceName": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC165.sol", + "./IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC4906" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC721.sol": { + "lastModificationDate": 1727232136011, + "contentHash": "d8d23fc2f55ed934d1a1b91c9afd8526", + "sourceName": "@openzeppelin/contracts/interfaces/IERC721.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../token/ERC721/IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "lastModificationDate": 1727232136011, + "contentHash": "5df8fdb527e563085847cad29e3c5f2e", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "lastModificationDate": 1727232136013, + "contentHash": "3fdc14aab706458ae99314f6f7f529a2", + "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721Enumerable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "lastModificationDate": 1727232135796, + "contentHash": "ed34441dcf15751f613899f10afa055c", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721EnumerableUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "lastModificationDate": 1727232135816, + "contentHash": "63787651bcdb931377c7c0deb863edbd", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "../../utils/ContextUpgradeable.sol", + "@openzeppelin/contracts/utils/Strings.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../utils/introspection/ERC165Upgradeable.sol", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721Upgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "lastModificationDate": 1727232136047, + "contentHash": "ba57ff4ddf1d9cae9d2009792795b7f6", + "sourceName": "@openzeppelin/contracts/utils/Strings.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./math/Math.sol", + "./math/SignedMath.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Strings" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "lastModificationDate": 1727232135613, + "contentHash": "c28aaa25d083a9a55bd9ec9e0b785122", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ContextUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "lastModificationDate": 1727232136016, + "contentHash": "fc8a9841f4bdd6329c26a00d5e75f4b3", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721Receiver" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "lastModificationDate": 1727232136015, + "contentHash": "12c206f185cb951213799561fdcaa40d", + "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC721.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC721Metadata" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "lastModificationDate": 1727232136028, + "contentHash": "718fa8ba0ff269c92e364c1429d9de57", + "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Math" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "lastModificationDate": 1727232136046, + "contentHash": "b6c6bdc7aaca4fe5b680760a72e09d3e", + "sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "SignedMath" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol": { + "lastModificationDate": 1727232135790, + "contentHash": "206b6ee9c37f4c56c57e37962b5d807a", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "../../../utils/ContextUpgradeable.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721BurnableUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "lastModificationDate": 1727232135596, + "contentHash": "61a6b098d98b3b945beb7d9de481c025", + "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/access/IAccessControl.sol", + "../utils/ContextUpgradeable.sol", + "../utils/introspection/ERC165Upgradeable.sol", + "../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "AccessControlUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/message_sharing/MessageSharing.sol": { + "lastModificationDate": 1729481042434, + "contentHash": "ae137b08fc297bade4af84ffe889cedd", + "sourceName": "contracts/message_sharing/MessageSharing.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "MessageSharing" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { + "lastModificationDate": 1727232135618, + "contentHash": "184b684b7ed971771381712181df4367", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", + "@openzeppelin/contracts/interfaces/IERC5267.sol", + "../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "EIP712Upgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "lastModificationDate": 1727232135852, + "contentHash": "b96e0d7a3c2b185342c7d083d765b61f", + "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ECDSA" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { + "lastModificationDate": 1727232136007, + "contentHash": "94364524cb1a39dcbc3d3afff6d8e53e", + "sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC5267" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { + "lastModificationDate": 1727232136032, + "contentHash": "9e5eec59eaffa554d6cca561dcb914eb", + "sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../Strings.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "MessageHashUtils" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "lastModificationDate": 1727232135817, + "contentHash": "9f0f228c1bdec68e130ab539644f8887", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "@openzeppelin/contracts/utils/Strings.sol", + "@openzeppelin/contracts/interfaces/IERC4906.sol", + "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721URIStorageUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/erc721/MyERC721.sol": { + "lastModificationDate": 1728392684183, + "contentHash": "b303867fa9a1c5a99e809f1503d8a888", + "sourceName": "contracts/examples/erc721/MyERC721.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts/utils/Strings.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "MyERC721" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol": { + "lastModificationDate": 1727232135811, + "contentHash": "c1db986565615302e4b8da7d5224c280", + "sourceName": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC721Upgradeable.sol", + "../../common/ERC2981Upgradeable.sol", + "../../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC721RoyaltyUpgradeable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/token_bridge/TokenBridge.sol": { + "lastModificationDate": 1729481072143, + "contentHash": "cc7a0505a96cdf7a0da6ad9ed60b7e0b", + "sourceName": "contracts/examples/token_bridge/TokenBridge.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "TokenBridge" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/orderbook/Orderbook.sol": { + "lastModificationDate": 1729481133339, + "contentHash": "34eb20a8cb2220cce2050afae75e08ad", + "sourceName": "contracts/examples/orderbook/Orderbook.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "Orderbook" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/nft_bridge/NftBridge.sol": { + "lastModificationDate": 1729481099314, + "contentHash": "aaf6f04c9d8cb19faba39dfe60eaa5c6", + "sourceName": "contracts/examples/nft_bridge/NftBridge.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IERC1155", + "IERC721", + "IMessageSharing", + "NftBridge" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/message_channel/MessageChannel.sol": { + "lastModificationDate": 1729482400173, + "contentHash": "7e841b62e5e629624c12a88711e496d0", + "sourceName": "contracts/examples/message_channel/MessageChannel.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBusinessContract", + "IMessageSharing", + "MessageChannel" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/examples/orderbook/Cashier.sol": { + "lastModificationDate": 1729481124912, + "contentHash": "d0fc99f22f6b643bae1c89a6d1845abe", + "sourceName": "contracts/examples/orderbook/Cashier.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "@openzeppelin/contracts/utils/Address.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Cashier", "IBusinessContract", - "TokenLockerContract" + "IMessageSharing" ] } } diff --git a/contracts/cache/validations.json b/contracts/cache/validations.json index 0f4bb7a8..3c078588 100644 --- a/contracts/cache/validations.json +++ b/contracts/cache/validations.json @@ -651,6 +651,36515 @@ }, "solcVersion": "0.8.20" }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract": { + "src": "contracts/examples/message_channel/MessageChannel.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IMessageSharing": { + "src": "contracts/examples/message_channel/MessageChannel.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:MessageChannel": { + "src": "contracts/examples/message_channel/MessageChannel.sol:17", + "version": { + "withMetadata": "b1d2cd676ef1fd497b8429e867cba684da248d51260b4e5b5b7e587da0fd5435", + "withoutMetadata": "23d1df633720210284642b1245cf1a8d0e2ae4263733091c77ee038b31bf3efb", + "linkedWithoutMetadata": "23d1df633720210284642b1245cf1a8d0e2ae4263733091c77ee038b31bf3efb" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "version()", + "setMessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "MessageChannel", + "src": "contracts/examples/message_channel/MessageChannel.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "supportsInterface(bytes4)", + "balanceOf(address)", + "ownerOf(uint256)", + "name()", + "symbol()", + "tokenURI(uint256)", + "approve(address,uint256)", + "getApproved(uint256)", + "setApprovalForAll(address,bool)", + "isApprovedForAll(address,address)", + "transferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:ERC721BurnableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:14", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "burn(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:ERC721EnumerableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:18", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "tokenOfOwnerByIndex(address,uint256)", + "totalSupply()", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721EnumerableStorage)793_storage": { + "label": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "members": [ + { + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "offset": 0, + "slot": "0" + }, + { + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721Enumerable": [ + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:24", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:25", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:ERC721RoyaltyUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:15", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/interfaces/IERC4906.sol:IERC4906", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "supportsInterface(bytes4)", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(ERC721URIStorageStorage)984_storage": { + "label": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage", + "members": [ + { + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721URIStorage": [ + { + "contract": "ERC721URIStorageUpgradeable", + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:25", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:24", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "royaltyInfo(uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl": { + "src": "@openzeppelin/contracts/access/AccessControl.sol:49", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)3449_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)3449_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)3449_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981": { + "src": "@openzeppelin/contracts/interfaces/IERC2981.sol:14", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "royaltyInfo(uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol:IERC4906": { + "src": "@openzeppelin/contracts/interfaces/IERC4906.sol:10", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:113", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:9", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:55", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": { + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:34", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:50" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:11", + "inherit": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721": { + "src": "@openzeppelin/contracts/token/ERC721/IERC721.sol:11", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256,bytes)", + "safeTransferFrom(address,address,uint256)", + "transferFrom(address,address,uint256)", + "approve(address,uint256)", + "setApprovalForAll(address,bool)", + "getApproved(uint256)", + "isApprovedForAll(address,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:IERC721Receiver": { + "src": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "onERC721Received(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable": { + "src": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:12", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "totalSupply()", + "tokenOfOwnerByIndex(address,uint256)", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata": { + "src": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:12", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Context.sol:Context": { + "src": "@openzeppelin/contracts/utils/Context.sol:16", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": { + "src": "@openzeppelin/contracts/utils/introspection/ERC165.sol:20", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/erc20/MyERC20.sol:MyERC20": { + "src": "contracts/examples/erc20/MyERC20.sol:7", + "version": { + "withMetadata": "c017a144191494b0980a02b7ddeb6357e83a7e2a20164ca52e071f4c909c0e5c", + "withoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae", + "linkedWithoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae" + }, + "inherit": [ + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl", + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "(string,string,uint8)", + "decimals()", + "mint(address,uint256)", + "burn(address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "MyERC20", + "src": "contracts/examples/erc20/MyERC20.sol:12" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + }, + { + "label": "_roles", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_bytes32,t_struct(RoleData)3449_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "6", + "type": "t_uint8", + "contract": "MyERC20", + "src": "contracts/examples/erc20/MyERC20.sol:10" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)3449_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(RoleData)3449_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "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" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/erc721/MyERC721.sol:MyERC721": { + "src": "contracts/examples/erc721/MyERC721.sol:14", + "version": { + "withMetadata": "b1d39d71c5d0a9c83edfe23359ff3e78823872426a646917294452b7d9963999", + "withoutMetadata": "56011b41900c5bb71327074f8da05dde35f5718ba6d541e6d33013d134cba665", + "linkedWithoutMetadata": "56011b41900c5bb71327074f8da05dde35f5718ba6d541e6d33013d134cba665" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:ERC721EnumerableUpgradeable", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:ERC721BurnableUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:ERC721RoyaltyUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "initialize(string,string)", + "supportsInterface(bytes4)", + "baseURI()", + "uriSuffix()", + "setUnTransferable(bool)", + "setBlocklist(uint256[],bool)", + "setBaseURI(string)", + "setURISuffix(string)", + "tokenURI(uint256)", + "existOf(uint256)", + "mint(address,uint256)", + "batchMint(address[],uint256[])", + "burn(address,uint256)", + "burn(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_baseTokenURI", + "offset": 0, + "slot": "0", + "type": "t_string_storage", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:16" + }, + { + "label": "_uriSuffix", + "offset": 0, + "slot": "1", + "type": "t_string_storage", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:17" + }, + { + "label": "unTransferable", + "offset": 0, + "slot": "2", + "type": "t_bool", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:18" + }, + { + "label": "blocklist", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:24" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "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_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ERC721EnumerableStorage)793_storage": { + "label": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "members": [ + { + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "offset": 0, + "slot": "0" + }, + { + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.ERC721Enumerable": [ + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:24", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:25", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract": { + "src": "contracts/examples/message_channel/MessageChannel.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IMessageSharing": { + "src": "contracts/examples/message_channel/MessageChannel.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:MessageChannel": { + "src": "contracts/examples/message_channel/MessageChannel.sol:18", + "version": { + "withMetadata": "320f03ebed7dabdd06bc6871f302a59e3fe97bcb55f419d9a41d04583ced625d", + "withoutMetadata": "23d1df633720210284642b1245cf1a8d0e2ae4263733091c77ee038b31bf3efb", + "linkedWithoutMetadata": "23d1df633720210284642b1245cf1a8d0e2ae4263733091c77ee038b31bf3efb" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "version()", + "setMessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)8387", + "contract": "MessageChannel", + "src": "contracts/examples/message_channel/MessageChannel.sol:24" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)8387": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "d12508613cc15145e92edbe79e0d85a1318e0515bac9ec8fac6cb064d14e36d9", + "withoutMetadata": "49ce5b3b98bc591912778dba1a448c3a690e68052122ca8535323e4923992a5c", + "linkedWithoutMetadata": "49ce5b3b98bc591912778dba1a448c3a690e68052122ca8535323e4923992a5c" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)8594", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)8622_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)8594": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)8614": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)8622_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)8622_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)8622_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)8622_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)8614", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:Cashier": { + "src": "contracts/examples/orderbook/Cashier.sol:45", + "version": { + "withMetadata": "e1d0a02395f568651e4fc81cff393203bbd073df7fb5e11621b2c12ed97ec34c", + "withoutMetadata": "5eeb789fd6ea0aa9915265798258ffd7520ad498944c9f9a2766d4cf51011474", + "linkedWithoutMetadata": "5eeb789fd6ea0aa9915265798258ffd7520ad498944c9f9a2766d4cf51011474" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Cashier.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [ + "payOrder(string,address)", + "send(uint256,uint256,address,bytes)", + "setWihitelist(address,(address,uint256,bool))", + "setOrderbook(address,uint256)", + "setMessageSharing(address)", + "withdraw(address,address,uint256)", + "encodePayData(string,address,address,uint256,uint256)", + "decodeSettleData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)9480", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:53" + }, + { + "label": "orderbook", + "offset": 0, + "slot": "1", + "type": "t_struct(Orderbook)9512_storage", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:54" + }, + { + "label": "wihitelists", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Wihitelist)9507_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:56" + }, + { + "label": "executes", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:58" + }, + { + "label": "orders", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)9528_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:60" + }, + { + "label": "user_orders", + "offset": 0, + "slot": "6", + "type": "t_mapping(t_address,t_array(t_string_storage)dyn_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:62" + }, + { + "label": "withdraw_balance", + "offset": 0, + "slot": "7", + "type": "t_uint256", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:64" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_string_storage)dyn_storage": { + "label": "string[]", + "numberOfBytes": "32" + }, + "t_contract(IMessageSharing)9480": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)9500": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_array(t_string_storage)dyn_storage)": { + "label": "mapping(address => string[])", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Wihitelist)9507_storage)": { + "label": "mapping(address => struct Wihitelist)", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)9528_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)9528_storage": { + "label": "struct Order", + "members": [ + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)9500", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_struct(Orderbook)9512_storage": { + "label": "struct Orderbook", + "members": [ + { + "label": "chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "contract_address", + "type": "t_address", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Wihitelist)9507_storage": { + "label": "struct Wihitelist", + "members": [ + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "status", + "type": "t_bool", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Cashier.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Cashier.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Orderbook.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Orderbook.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:Orderbook": { + "src": "contracts/examples/orderbook/Orderbook.sol:35", + "version": { + "withMetadata": "daaa004118affe13b1e474f6c8a54d1c66e1bf96457a106be38239e8d66a1e3f", + "withoutMetadata": "c3701e4cd8c430786580143c2619fde0b7297791c3c1e943f639321f5790ec8e", + "linkedWithoutMetadata": "c3701e4cd8c430786580143c2619fde0b7297791c3c1e943f639321f5790ec8e" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "settle(string,uint256)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "decodePayData(bytes)", + "encodeSettleData(string,address,address,uint256,uint256)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)10307", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:42" + }, + { + "label": "bridges", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:44" + }, + { + "label": "executes", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:46" + }, + { + "label": "orders", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)10347_storage)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:48" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)10307": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)10327": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)10347_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)10347_storage": { + "label": "struct Order", + "members": [ + { + "label": "from_chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "from_business", + "type": "t_address", + "offset": 0, + "slot": "1" + }, + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "2" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "5" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "6" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "7" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)10327", + "offset": 0, + "slot": "8" + } + ], + "numberOfBytes": "288" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IMessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "6772fa7f9d0f1763a8b894b87121dd0e8d0b2e92421f303d19d758964dfa9c9f", + "withoutMetadata": "7373318c02b8c529b53d3745d911f2fe146ffbd2040bc9e630544872ea3c60ae", + "linkedWithoutMetadata": "7373318c02b8c529b53d3745d911f2fe146ffbd2040bc9e630544872ea3c60ae" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)10799", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)10799": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message_sharing/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message_sharing/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message_sharing/MessageSharing.sol:IMessageSharing": { + "src": "contracts/message_sharing/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message_sharing/MessageSharing.sol:MessageSharing": { + "src": "contracts/message_sharing/MessageSharing.sol:99", + "version": { + "withMetadata": "2f374c287c3bb9a1d9202add9aca32059ba279bbc6598fa8649dadfe61e5fe4c", + "withoutMetadata": "f12c7627bf5ee23fd5d902068db0463e1024013f3d6b158d0a8d69a1d3afaada", + "linkedWithoutMetadata": "f12c7627bf5ee23fd5d902068db0463e1024013f3d6b158d0a8d69a1d3afaada" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message_sharing/MessageSharing.sol:IMessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "MessageSharing", + "src": "contracts/message_sharing/MessageSharing.sol:106" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "MessageSharing", + "src": "contracts/message_sharing/MessageSharing.sol:107" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "MessageSharing", + "src": "contracts/message_sharing/MessageSharing.sol:108" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Orderbook.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Orderbook.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:Orderbook": { + "src": "contracts/examples/orderbook/Orderbook.sol:35", + "version": { + "withMetadata": "ee641d3eadf80ac749b09a04e902896e963cc5499ed1b0399495e32761615927", + "withoutMetadata": "ba7f007562cb1d2a8d29c587cc6940dfd8550946f5d727e526cc12d27b2eb831", + "linkedWithoutMetadata": "ba7f007562cb1d2a8d29c587cc6940dfd8550946f5d727e526cc12d27b2eb831" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "settle(string,uint256)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "decodePayData(bytes)", + "encodeSettleData(string,address,address,uint256,uint256)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:42" + }, + { + "label": "bridges", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:44" + }, + { + "label": "executes", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:46" + }, + { + "label": "orders", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)3578_storage)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:48" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)3558": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)3578_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)3578_storage": { + "label": "struct Order", + "members": [ + { + "label": "from_chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "from_business", + "type": "t_address", + "offset": 0, + "slot": "1" + }, + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "2" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "5" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "6" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "7" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)3558", + "offset": 0, + "slot": "8" + } + ], + "numberOfBytes": "288" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:Cashier": { + "src": "contracts/examples/orderbook/Cashier.sol:45", + "version": { + "withMetadata": "f3395c4f4207235024af4cdfb11246bd0a2d449712cc0c13fb949682f283dca1", + "withoutMetadata": "d39ffbc156222ecfdb25a9a6707cec511d8bc0c9cb7c9b8bb2aa50455b8d57da", + "linkedWithoutMetadata": "d39ffbc156222ecfdb25a9a6707cec511d8bc0c9cb7c9b8bb2aa50455b8d57da" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Cashier.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [ + "payOrder(string,address)", + "send(uint256,uint256,address,bytes)", + "setWihitelist(address,(address,uint256,bool))", + "setOrderbook(address,uint256)", + "setMessageSharing(address)", + "withdraw(address,address,uint256)", + "encodePayData(string,address,address,uint256,uint256)", + "decodeSettleData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3946", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:53" + }, + { + "label": "orderbook", + "offset": 0, + "slot": "1", + "type": "t_struct(Orderbook)3976_storage", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:54" + }, + { + "label": "wihitelists", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Wihitelist)3971_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:56" + }, + { + "label": "executes", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:58" + }, + { + "label": "orders", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)3992_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:60" + }, + { + "label": "user_orders", + "offset": 0, + "slot": "6", + "type": "t_mapping(t_address,t_array(t_string_storage)dyn_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:62" + }, + { + "label": "withdraw_balance", + "offset": 0, + "slot": "7", + "type": "t_uint256", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:64" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_string_storage)dyn_storage": { + "label": "string[]", + "numberOfBytes": "32" + }, + "t_contract(IMessageSharing)3946": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)3964": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_array(t_string_storage)dyn_storage)": { + "label": "mapping(address => string[])", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Wihitelist)3971_storage)": { + "label": "mapping(address => struct Wihitelist)", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)3992_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)3992_storage": { + "label": "struct Order", + "members": [ + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)3964", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_struct(Orderbook)3976_storage": { + "label": "struct Orderbook", + "members": [ + { + "label": "chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "contract_address", + "type": "t_address", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Wihitelist)3971_storage": { + "label": "struct Wihitelist", + "members": [ + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "status", + "type": "t_bool", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Cashier.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Cashier.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Orderbook.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Orderbook.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:Orderbook": { + "src": "contracts/examples/orderbook/Orderbook.sol:35", + "version": { + "withMetadata": "4e5e3aadb964b61316c42f2bbba1c4b26ae670ef4e584972f5c9889791bad4e3", + "withoutMetadata": "0368c2de49c15a64cbadbc4fae0f3202b9eeb2df7eb79ea7dfd0d8963a1e0820", + "linkedWithoutMetadata": "0368c2de49c15a64cbadbc4fae0f3202b9eeb2df7eb79ea7dfd0d8963a1e0820" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "settle(string,uint256)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "decodePayData(bytes)", + "encodeSettleData(string,address,uint256,address,uint256)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)4767", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:42" + }, + { + "label": "bridges", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:44" + }, + { + "label": "executes", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:46" + }, + { + "label": "orders", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)4805_storage)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:48" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)4767": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)4785": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)4805_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)4805_storage": { + "label": "struct Order", + "members": [ + { + "label": "from_chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "from_business", + "type": "t_address", + "offset": 0, + "slot": "1" + }, + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "2" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "5" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "6" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "7" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)4785", + "offset": 0, + "slot": "8" + } + ], + "numberOfBytes": "288" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:Cashier": { + "src": "contracts/examples/orderbook/Cashier.sol:45", + "version": { + "withMetadata": "fe73adfaa507d0cc6e790b21b40b98c84551684c7390ba25078f13866e6e8026", + "withoutMetadata": "efda8ca35b153837084a17d40a292520448b3e6b80135f50b8da9c2ae75a604f", + "linkedWithoutMetadata": "efda8ca35b153837084a17d40a292520448b3e6b80135f50b8da9c2ae75a604f" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Cashier.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [ + "payOrder(string,address)", + "send(uint256,uint256,address,bytes)", + "setWihitelist(address,(address,uint256,bool))", + "setOrderbook(address,uint256)", + "setMessageSharing(address)", + "withdraw(address,address,uint256)", + "encodePayData(string,address,address,uint256,uint256)", + "decodeSettleData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)2089", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:53" + }, + { + "label": "orderbook", + "offset": 0, + "slot": "1", + "type": "t_struct(Orderbook)2119_storage", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:54" + }, + { + "label": "wihitelists", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Wihitelist)2114_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:56" + }, + { + "label": "executes", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:58" + }, + { + "label": "orders", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)2135_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:60" + }, + { + "label": "user_orders", + "offset": 0, + "slot": "6", + "type": "t_mapping(t_address,t_array(t_string_storage)dyn_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:62" + }, + { + "label": "withdraw_balance", + "offset": 0, + "slot": "7", + "type": "t_uint256", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:64" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_string_storage)dyn_storage": { + "label": "string[]", + "numberOfBytes": "32" + }, + "t_contract(IMessageSharing)2089": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)2107": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_array(t_string_storage)dyn_storage)": { + "label": "mapping(address => string[])", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Wihitelist)2114_storage)": { + "label": "mapping(address => struct Wihitelist)", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)2135_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)2135_storage": { + "label": "struct Order", + "members": [ + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)2107", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_struct(Orderbook)2119_storage": { + "label": "struct Orderbook", + "members": [ + { + "label": "chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "contract_address", + "type": "t_address", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Wihitelist)2114_storage": { + "label": "struct Wihitelist", + "members": [ + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "status", + "type": "t_bool", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Cashier.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Cashier.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol:PausableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol:18", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "paused()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PausableStorage)361_storage": { + "label": "struct PausableUpgradeable.PausableStorage", + "members": [ + { + "label": "_paused", + "type": "t_bool", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Pausable": [ + { + "contract": "PausableUpgradeable", + "label": "_paused", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)458_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract": { + "src": "contracts/examples/message_channel/MessageChannel.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IMessageSharing": { + "src": "contracts/examples/message_channel/MessageChannel.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:MessageChannel": { + "src": "contracts/examples/message_channel/MessageChannel.sol:17", + "version": { + "withMetadata": "f5418469c4220c6b8d2706300d58a9b12d1eca2552342111e54fe61be1043506", + "withoutMetadata": "cd20b42ea3866cd60735651d40b58049926242d39f900acee207ad6259b961cf", + "linkedWithoutMetadata": "cd20b42ea3866cd60735651d40b58049926242d39f900acee207ad6259b961cf" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "version()", + "setMessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)4120", + "contract": "MessageChannel", + "src": "contracts/examples/message_channel/MessageChannel.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)458_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)4120": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "719a5bc0c4a8c2dba650f00b297a79dfb7c092bd5e7674bfb9e7f2762499d6cb", + "withoutMetadata": "027a19336029759aaef61598ce1dc0e18a1d266c31d52e270f3a8034821c4651", + "linkedWithoutMetadata": "027a19336029759aaef61598ce1dc0e18a1d266c31d52e270f3a8034821c4651" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)4321", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)4347_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)458_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)4321": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)4339": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)4347_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)4347_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)4347_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)4347_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)4339", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:Cashier": { + "src": "contracts/examples/orderbook/Cashier.sol:47", + "version": { + "withMetadata": "5e2f14eb735b1f733794ceb7193e9ea4d07973c6ef546261aac95f4ea470c262", + "withoutMetadata": "7574685f78607ace6407d7cccac1ea65063f2e90b7af6d6866a1cdc79b8e5c81", + "linkedWithoutMetadata": "7574685f78607ace6407d7cccac1ea65063f2e90b7af6d6866a1cdc79b8e5c81" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol:PausableUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Cashier.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [ + "payOrder(string,address)", + "send(uint256,uint256,address,bytes)", + "setWihitelist(address,(address,uint256,bool))", + "setOrderbook(address,uint256)", + "setMessageSharing(address)", + "withdraw(address,address,uint256)", + "encodePayData(string,address,address,uint256,uint256)", + "decodeSettleData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)5178", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:55" + }, + { + "label": "orderbook", + "offset": 0, + "slot": "1", + "type": "t_struct(Orderbook)5208_storage", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:56" + }, + { + "label": "wihitelists", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Wihitelist)5203_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:58" + }, + { + "label": "executes", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:60" + }, + { + "label": "orders", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)5224_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:62" + }, + { + "label": "user_orders", + "offset": 0, + "slot": "6", + "type": "t_mapping(t_address,t_array(t_string_storage)dyn_storage)", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:64" + }, + { + "label": "withdraw_balance", + "offset": 0, + "slot": "7", + "type": "t_uint256", + "contract": "Cashier", + "src": "contracts/examples/orderbook/Cashier.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PausableStorage)361_storage": { + "label": "struct PausableUpgradeable.PausableStorage", + "members": [ + { + "label": "_paused", + "type": "t_bool", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_string_storage)dyn_storage": { + "label": "string[]", + "numberOfBytes": "32" + }, + "t_contract(IMessageSharing)5178": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)5196": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_array(t_string_storage)dyn_storage)": { + "label": "mapping(address => string[])", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Wihitelist)5203_storage)": { + "label": "mapping(address => struct Wihitelist)", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)5224_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)5224_storage": { + "label": "struct Order", + "members": [ + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)5196", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_struct(Orderbook)5208_storage": { + "label": "struct Orderbook", + "members": [ + { + "label": "chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "contract_address", + "type": "t_address", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Wihitelist)5203_storage": { + "label": "struct Wihitelist", + "members": [ + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "status", + "type": "t_bool", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Pausable": [ + { + "contract": "PausableUpgradeable", + "label": "_paused", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Cashier.sol:17", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Cashier.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Cashier.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract": { + "src": "contracts/examples/orderbook/Orderbook.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:IMessageSharing": { + "src": "contracts/examples/orderbook/Orderbook.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/orderbook/Orderbook.sol:Orderbook": { + "src": "contracts/examples/orderbook/Orderbook.sol:35", + "version": { + "withMetadata": "9cbef55b04afb4bf14862ec1e8c8de40dbfdfb2a32a1af8248491d77b906457e", + "withoutMetadata": "393051517e1b8f1f8dfb42b19f863b2223603041d2da879c4c89c046b1382aa0", + "linkedWithoutMetadata": "393051517e1b8f1f8dfb42b19f863b2223603041d2da879c4c89c046b1382aa0" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/orderbook/Orderbook.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "settle(string,uint256)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "decodePayData(bytes)", + "encodeSettleData(string,address,uint256,address,uint256)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "message_sharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)6003", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:42" + }, + { + "label": "bridges", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:44" + }, + { + "label": "executes", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:46" + }, + { + "label": "orders", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_string_memory_ptr,t_struct(Order)6041_storage)", + "contract": "Orderbook", + "src": "contracts/examples/orderbook/Orderbook.sol:48" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)458_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)6003": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(OrderStatus)6021": { + "label": "enum OrderStatus", + "members": [ + "UNKNOWN", + "IN_PROCESS", + "COMPLETED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_struct(Order)6041_storage)": { + "label": "mapping(string => struct Order)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Order)6041_storage": { + "label": "struct Order", + "members": [ + { + "label": "from_chain_id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "from_business", + "type": "t_address", + "offset": 0, + "slot": "1" + }, + { + "label": "user_address", + "type": "t_address", + "offset": 0, + "slot": "2" + }, + { + "label": "start_time", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "end_time", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "token_address", + "type": "t_address", + "offset": 0, + "slot": "5" + }, + { + "label": "deposit_amount", + "type": "t_uint256", + "offset": 0, + "slot": "6" + }, + { + "label": "fee_amount", + "type": "t_uint256", + "offset": 0, + "slot": "7" + }, + { + "label": "status", + "type": "t_enum(OrderStatus)6021", + "offset": 0, + "slot": "8" + } + ], + "numberOfBytes": "288" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IMessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "e37d8fd9c08b4dc43d2b0d1fa907c26fa0b8e74f4276f3bb920bed2f21477e80", + "withoutMetadata": "dbde88ab5c56e62b1a4cbfc36108e1b7fff10e9d26c4a3ea3798529d11c2ff91", + "linkedWithoutMetadata": "dbde88ab5c56e62b1a4cbfc36108e1b7fff10e9d26c4a3ea3798529d11c2ff91" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)6489", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)458_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)6489": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IMessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "ddb346b41a5159e2a123aedce9755ecacc2b09c47f32fcab83242f52e498fd75", + "withoutMetadata": "a8ebe4461e54b4f1b466f38c581ed72bb8a61af526ff6c3f2424c7c309c82684", + "linkedWithoutMetadata": "a8ebe4461e54b4f1b466f38c581ed72bb8a61af526ff6c3f2424c7c309c82684" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3945", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3945": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IMessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "e1d2d4317f63823aa1c0dd86ef3d702bc5321207a6adb48fffb9bb7ad7b7c07c", + "withoutMetadata": "1322ed3196e3f493532e414587eed4d2fb447f074f5f36a6cc8a0ae967408f59", + "linkedWithoutMetadata": "1322ed3196e3f493532e414587eed4d2fb447f074f5f36a6cc8a0ae967408f59" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3945", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3945": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "c10c7f0287369e99b105b3696470d414febbecda432e4b065a2f820afa18cc74", + "withoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379", + "linkedWithoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)3558": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)3566_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)3566_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)3558", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "7fd4af084da0396c85d6210097dc0785d5deb1e84fbb164aad1cdcebc0f39f5f", + "withoutMetadata": "2a2d034a60e9bbf338e79a5159b2cb248277775057ca2455a0b0a83373f5df9c", + "linkedWithoutMetadata": "2a2d034a60e9bbf338e79a5159b2cb248277775057ca2455a0b0a83373f5df9c" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)3558": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)3566_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)3566_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)3558", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "ea06d6058e3ef16e6a9e385e802975d5c8e3997c51c419e0788d413d824dfb1b", + "withoutMetadata": "67537bad934332496710f6aaf8eb6bbc4c60987e725b5d290030436ad572dfa9", + "linkedWithoutMetadata": "67537bad934332496710f6aaf8eb6bbc4c60987e725b5d290030436ad572dfa9" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)3558": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)3566_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)3566_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)3558", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "c10c7f0287369e99b105b3696470d414febbecda432e4b065a2f820afa18cc74", + "withoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379", + "linkedWithoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)3558": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)3566_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)3566_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)3558", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "supportsInterface(bytes4)", + "balanceOf(address)", + "ownerOf(uint256)", + "name()", + "symbol()", + "tokenURI(uint256)", + "approve(address,uint256)", + "getApproved(uint256)", + "setApprovalForAll(address,bool)", + "isApprovedForAll(address,address)", + "transferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:ERC721BurnableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:14", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "burn(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:ERC721EnumerableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:18", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "tokenOfOwnerByIndex(address,uint256)", + "totalSupply()", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721EnumerableStorage)793_storage": { + "label": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "members": [ + { + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "offset": 0, + "slot": "0" + }, + { + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721Enumerable": [ + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:24", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:25", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:ERC721RoyaltyUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:15", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/interfaces/IERC4906.sol:IERC4906", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "supportsInterface(bytes4)", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(ERC721URIStorageStorage)984_storage": { + "label": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage", + "members": [ + { + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721URIStorage": [ + { + "contract": "ERC721URIStorageUpgradeable", + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:25", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:24", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "royaltyInfo(uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981": { + "src": "@openzeppelin/contracts/interfaces/IERC2981.sol:14", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "royaltyInfo(uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol:IERC4906": { + "src": "@openzeppelin/contracts/interfaces/IERC4906.sol:10", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:113", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:9", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:55", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721": { + "src": "@openzeppelin/contracts/token/ERC721/IERC721.sol:11", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256,bytes)", + "safeTransferFrom(address,address,uint256)", + "transferFrom(address,address,uint256)", + "approve(address,uint256)", + "setApprovalForAll(address,bool)", + "getApproved(uint256)", + "isApprovedForAll(address,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:IERC721Receiver": { + "src": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "onERC721Received(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable": { + "src": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:12", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "totalSupply()", + "tokenOfOwnerByIndex(address,uint256)", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata": { + "src": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:12", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/erc721/MyERC721.sol:MyERC721": { + "src": "contracts/examples/erc721/MyERC721.sol:14", + "version": { + "withMetadata": "b1d39d71c5d0a9c83edfe23359ff3e78823872426a646917294452b7d9963999", + "withoutMetadata": "56011b41900c5bb71327074f8da05dde35f5718ba6d541e6d33013d134cba665", + "linkedWithoutMetadata": "56011b41900c5bb71327074f8da05dde35f5718ba6d541e6d33013d134cba665" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:ERC721EnumerableUpgradeable", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:ERC721BurnableUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:ERC721RoyaltyUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "initialize(string,string)", + "supportsInterface(bytes4)", + "baseURI()", + "uriSuffix()", + "setUnTransferable(bool)", + "setBlocklist(uint256[],bool)", + "setBaseURI(string)", + "setURISuffix(string)", + "tokenURI(uint256)", + "existOf(uint256)", + "mint(address,uint256)", + "batchMint(address[],uint256[])", + "burn(address,uint256)", + "burn(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_baseTokenURI", + "offset": 0, + "slot": "0", + "type": "t_string_storage", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:16" + }, + { + "label": "_uriSuffix", + "offset": 0, + "slot": "1", + "type": "t_string_storage", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:17" + }, + { + "label": "unTransferable", + "offset": 0, + "slot": "2", + "type": "t_bool", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:18" + }, + { + "label": "blocklist", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:24" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "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_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ERC721EnumerableStorage)793_storage": { + "label": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "members": [ + { + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "offset": 0, + "slot": "0" + }, + { + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.ERC721Enumerable": [ + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:24", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:25", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IMessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "63e23b8df7d4ee9f42c60751a1b3a46cb05dd02740b3ba2aeea06bf74cf2e8f0", + "withoutMetadata": "be289c8ca89e8f1dedc449e7c447e1c624b43000c6b83a67cd43b0000c8d658b", + "linkedWithoutMetadata": "be289c8ca89e8f1dedc449e7c447e1c624b43000c6b83a67cd43b0000c8d658b" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3945", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3945": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IMessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "c56fe27b3fd030d3a97342971fea09b8736fc0b222cecf45215d1c836ce7ebff", + "withoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379", + "linkedWithoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IMessageSharing)3540", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IMessageSharing)3540": { + "label": "contract IMessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)3558": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)3566_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)3566_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)3566_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)3558", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IB2MessageSharing": { + "src": "contracts/examples/message_channel/MessageChannel.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract": { + "src": "contracts/examples/message_channel/MessageChannel.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:MessageChannel": { + "src": "contracts/examples/message_channel/MessageChannel.sol:17", + "version": { + "withMetadata": "5f67eda852169853c58f1cbb707257b06167e190f6e67478fb1619cbfb53d692", + "withoutMetadata": "cd20b42ea3866cd60735651d40b58049926242d39f900acee207ad6259b961cf", + "linkedWithoutMetadata": "cd20b42ea3866cd60735651d40b58049926242d39f900acee207ad6259b961cf" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "version()", + "setMessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)3944", + "contract": "MessageChannel", + "src": "contracts/examples/message_channel/MessageChannel.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)3944": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IB2MessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "d09f8c75e099ceba16f4420d4d5de182a938e51d81932dd06df82b7acde98cc9", + "withoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379", + "linkedWithoutMetadata": "f5ab71a214651b9b0664a993136151848b95be902b02482c95cd41501e24f379" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)4145", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)4171_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)4145": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)4163": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)4171_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)4171_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)4171_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)4171_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)4163", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IB2MessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "8e30d28433e30cb61241f7739c7eda18b0261e9ebb09e6753da2bca8012b45e8", + "withoutMetadata": "be289c8ca89e8f1dedc449e7c447e1c624b43000c6b83a67cd43b0000c8d658b", + "linkedWithoutMetadata": "be289c8ca89e8f1dedc449e7c447e1c624b43000c6b83a67cd43b0000c8d658b" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setMessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)4992", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)4992": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IB2MessageSharing": { + "src": "contracts/examples/message_channel/MessageChannel.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract": { + "src": "contracts/examples/message_channel/MessageChannel.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:MessageChannel": { + "src": "contracts/examples/message_channel/MessageChannel.sol:17", + "version": { + "withMetadata": "b36173aab589753d85214770cb8e62e5422b5b932e74fd640cd2bbfa5a31cdea", + "withoutMetadata": "988646f0c2bdea070db54f4fd41b18c778173e8bc8a48840ef64ca1df7083001", + "linkedWithoutMetadata": "988646f0c2bdea070db54f4fd41b18c778173e8bc8a48840ef64ca1df7083001" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "version()", + "setB2MessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)3540", + "contract": "MessageChannel", + "src": "contracts/examples/message_channel/MessageChannel.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)3540": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "supportsInterface(bytes4)", + "balanceOf(address)", + "ownerOf(uint256)", + "name()", + "symbol()", + "tokenURI(uint256)", + "approve(address,uint256)", + "getApproved(uint256)", + "setApprovalForAll(address,bool)", + "isApprovedForAll(address,address)", + "transferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:ERC721BurnableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:14", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "burn(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:ERC721EnumerableUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:18", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "tokenOfOwnerByIndex(address,uint256)", + "totalSupply()", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721EnumerableStorage)793_storage": { + "label": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "members": [ + { + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "offset": 0, + "slot": "0" + }, + { + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721Enumerable": [ + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:24", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:25", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:ERC721RoyaltyUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:15", + "inherit": [ + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/interfaces/IERC4906.sol:IERC4906", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "supportsInterface(bytes4)", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(ERC721URIStorageStorage)984_storage": { + "label": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage", + "members": [ + { + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC721URIStorage": [ + { + "contract": "ERC721URIStorageUpgradeable", + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:25", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:24", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "royaltyInfo(uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl": { + "src": "@openzeppelin/contracts/access/AccessControl.sol:49", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)3449_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)3449_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)3449_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981": { + "src": "@openzeppelin/contracts/interfaces/IERC2981.sol:14", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "royaltyInfo(uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol:IERC4906": { + "src": "@openzeppelin/contracts/interfaces/IERC4906.sol:10", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:113", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:9", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:55", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": { + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:34", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:50" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:11", + "inherit": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721": { + "src": "@openzeppelin/contracts/token/ERC721/IERC721.sol:11", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256,bytes)", + "safeTransferFrom(address,address,uint256)", + "transferFrom(address,address,uint256)", + "approve(address,uint256)", + "setApprovalForAll(address,bool)", + "getApproved(uint256)", + "isApprovedForAll(address,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:IERC721Receiver": { + "src": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "onERC721Received(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable": { + "src": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:12", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "totalSupply()", + "tokenOfOwnerByIndex(address,uint256)", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata": { + "src": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:12", + "inherit": [ + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Context.sol:Context": { + "src": "@openzeppelin/contracts/utils/Context.sol:16", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": { + "src": "@openzeppelin/contracts/utils/introspection/ERC165.sol:20", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/erc20/MyERC20.sol:MyERC20": { + "src": "contracts/examples/erc20/MyERC20.sol:7", + "version": { + "withMetadata": "c017a144191494b0980a02b7ddeb6357e83a7e2a20164ca52e071f4c909c0e5c", + "withoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae", + "linkedWithoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae" + }, + "inherit": [ + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl", + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "(string,string,uint8)", + "decimals()", + "mint(address,uint256)", + "burn(address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "MyERC20", + "src": "contracts/examples/erc20/MyERC20.sol:12" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + }, + { + "label": "_roles", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_bytes32,t_struct(RoleData)3449_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "6", + "type": "t_uint8", + "contract": "MyERC20", + "src": "contracts/examples/erc20/MyERC20.sol:10" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)3449_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(RoleData)3449_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "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" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/erc721/MyERC721.sol:MyERC721": { + "src": "contracts/examples/erc721/MyERC721.sol:14", + "version": { + "withMetadata": "de0ba046b7cd04b3ac0e35ff467c50a458992cbfe3a604a727782e62fa5bb257", + "withoutMetadata": "ed2b9118c87f86388c9d9081f790d8d31036ea714c1aecaee610b6f0a2e2dbf6", + "linkedWithoutMetadata": "ed2b9118c87f86388c9d9081f790d8d31036ea714c1aecaee610b6f0a2e2dbf6" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:ERC721EnumerableUpgradeable", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol:IERC721Enumerable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol:ERC721BurnableUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol:ERC721RoyaltyUpgradeable", + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors", + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata", + "@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721", + "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:ERC2981Upgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/interfaces/IERC2981.sol:IERC2981", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [ + "initialize(string,string)", + "supportsInterface(bytes4)", + "baseURI()", + "uriSuffix()", + "setUnTransferable(bool)", + "setBlocklist(uint256[],bool)", + "setBaseURI(string)", + "setURISuffix(string)", + "tokenURI(uint256)", + "mint(address,uint256)", + "batchMint(address[],uint256[])", + "burn(address,uint256)", + "burn(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_baseTokenURI", + "offset": 0, + "slot": "0", + "type": "t_string_storage", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:16" + }, + { + "label": "_uriSuffix", + "offset": 0, + "slot": "1", + "type": "t_string_storage", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:17" + }, + { + "label": "unTransferable", + "offset": 0, + "slot": "2", + "type": "t_bool", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:18" + }, + { + "label": "blocklist", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "MyERC721", + "src": "contracts/examples/erc721/MyERC721.sol:24" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "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_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)": { + "label": "mapping(uint256 => struct ERC2981Upgradeable.RoyaltyInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ERC2981Storage)1068_storage": { + "label": "struct ERC2981Upgradeable.ERC2981Storage", + "members": [ + { + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ERC721EnumerableStorage)793_storage": { + "label": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "members": [ + { + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "offset": 0, + "slot": "0" + }, + { + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(ERC721Storage)371_storage": { + "label": "struct ERC721Upgradeable.ERC721Storage", + "members": [ + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_symbol", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "2" + }, + { + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "offset": 0, + "slot": "3" + }, + { + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "offset": 0, + "slot": "4" + }, + { + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoyaltyInfo)1058_storage": { + "label": "struct ERC2981Upgradeable.RoyaltyInfo", + "members": [ + { + "label": "receiver", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "royaltyFraction", + "type": "t_uint96", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.ERC721Enumerable": [ + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokens", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokens", + "type": "t_array(t_uint256)dyn_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:24", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721EnumerableUpgradeable", + "label": "_allTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol:25", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.ERC721": [ + { + "contract": "ERC721Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:27", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC721Upgradeable", + "label": "_symbol", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:30", + "offset": 0, + "slot": "1" + }, + { + "contract": "ERC721Upgradeable", + "label": "_owners", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:32", + "offset": 0, + "slot": "2" + }, + { + "contract": "ERC721Upgradeable", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34", + "offset": 0, + "slot": "3" + }, + { + "contract": "ERC721Upgradeable", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:36", + "offset": 0, + "slot": "4" + }, + { + "contract": "ERC721Upgradeable", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:38", + "offset": 0, + "slot": "5" + } + ], + "erc7201:openzeppelin.storage.ERC2981": [ + { + "contract": "ERC2981Upgradeable", + "label": "_defaultRoyaltyInfo", + "type": "t_struct(RoyaltyInfo)1058_storage", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:32", + "offset": 0, + "slot": "0" + }, + { + "contract": "ERC2981Upgradeable", + "label": "_tokenRoyaltyInfo", + "type": "t_mapping(t_uint256,t_struct(RoyaltyInfo)1058_storage)", + "src": "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol:33", + "offset": 0, + "slot": "1" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IB2MessageSharing": { + "src": "contracts/examples/message_channel/MessageChannel.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract": { + "src": "contracts/examples/message_channel/MessageChannel.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/message_channel/MessageChannel.sol:MessageChannel": { + "src": "contracts/examples/message_channel/MessageChannel.sol:17", + "version": { + "withMetadata": "fbbea7e7e110007ddf7734c067bb1925d94840c3584d5ed9b25ba440f8fe8fc1", + "withoutMetadata": "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec", + "linkedWithoutMetadata": "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/message_channel/MessageChannel.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "setB2MessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)8361", + "contract": "MessageChannel", + "src": "contracts/examples/message_channel/MessageChannel.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)8361": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IB2MessageSharing": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC1155": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:36", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address,uint256)", + "safeTransferFrom(address,address,uint256,uint256,bytes)", + "mint(address,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:IERC721": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:29", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/nft_bridge/NftBridge.sol:NftBridge": { + "src": "contracts/examples/nft_bridge/NftBridge.sol:42", + "version": { + "withMetadata": "8f6579200ca4fccc8e9a7179f499f17b42598da70488d374e10730901887983f", + "withoutMetadata": "ec948e4ccc5333ffa2efa34474d74b04c53387c9ad12ae0a84b38a086d1f961a", + "linkedWithoutMetadata": "ec948e4ccc5333ffa2efa34474d74b04c53387c9ad12ae0a84b38a086d1f961a" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/nft_bridge/NftBridge.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,uint256,address,address)", + "setB2MessageSharing(address)", + "setBridges(uint256,address)", + "setNftMapping(uint256,address,uint256,address,uint8,bool)", + "encodeLockData(address,address,uint256,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()", + "onERC721Received(address,address,uint256,bytes)", + "onERC1155Received(address,address,uint256,uint256,bytes)", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)8554", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:49" + }, + { + "label": "nft_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)8580_storage)))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:51" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:53" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "NftBridge", + "src": "contracts/examples/nft_bridge/NftBridge.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)8554": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_enum(NftStandard)8572": { + "label": "enum NftStandard", + "members": [ + "UNKNOWN", + "ERC721", + "ERC1155" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)8580_storage))": { + "label": "mapping(address => mapping(uint256 => struct Nft))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_uint256,t_struct(Nft)8580_storage)))": { + "label": "mapping(uint256 => mapping(address => mapping(uint256 => struct Nft)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Nft)8580_storage)": { + "label": "mapping(uint256 => struct Nft)", + "numberOfBytes": "32" + }, + "t_struct(Nft)8580_storage": { + "label": "struct Nft", + "members": [ + { + "label": "standard", + "type": "t_enum(NftStandard)8572", + "offset": 0, + "slot": "0" + }, + { + "label": "nft_address", + "type": "t_address", + "offset": 1, + "slot": "0" + }, + { + "label": "status", + "type": "t_bool", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IB2MessageSharing": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/examples/token_bridge/TokenBridge.sol:TokenBridge": { + "src": "contracts/examples/token_bridge/TokenBridge.sol:18", + "version": { + "withMetadata": "d99e0f72378f85d0ea0e886b660c83664c97cc72f403d961816b6e0dfb6ab2b7", + "withoutMetadata": "d0130cf7885afb59242cd719c79f53c383700c6f954835377b4d5756456ea9de", + "linkedWithoutMetadata": "d0130cf7885afb59242cd719c79f53c383700c6f954835377b4d5756456ea9de" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/examples/token_bridge/TokenBridge.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "setB2MessageSharing(address)", + "setBridges(uint256,address)", + "setTokenMapping(uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)", + "initialize()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)9402", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:27" + }, + { + "label": "token_mapping", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:29" + }, + { + "label": "bridges", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:31" + }, + { + "label": "executes", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenBridge", + "src": "contracts/examples/token_bridge/TokenBridge.sol:33" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)9402": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message_sharing/MessageSharing.sol:B2MessageSharing": { + "src": "contracts/message_sharing/MessageSharing.sol:98", + "version": { + "withMetadata": "098a9e08a455f143b2b119fd4b75ac909f9906ae9e4cefc1ce880be8f5db953f", + "withoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874", + "linkedWithoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message_sharing/MessageSharing.sol:IB2MessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message_sharing/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message_sharing/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message_sharing/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)1229_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message_sharing/MessageSharing.sol:IB2MessageSharing": { + "src": "contracts/message_sharing/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message_sharing/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message_sharing/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:BusinessContractExample": { + "src": "contracts/business/example/BusinessContractExample.sol:17", + "version": { + "withMetadata": "add1c8c2b8482deaf4ee5e24f2cd1a7b24361993f510426d1ac34fbb67cacf0b", + "withoutMetadata": "a677c68f212ffbb5c80fd02f1becd341eb24a3f2a73a281bd21e1af5fa4bd87c", + "linkedWithoutMetadata": "a677c68f212ffbb5c80fd02f1becd341eb24a3f2a73a281bd21e1af5fa4bd87c" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/example/BusinessContractExample.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "version()", + "initialize()", + "setB2MessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)3540", + "contract": "BusinessContractExample", + "src": "contracts/business/example/BusinessContractExample.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)3540": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IB2MessageSharing": { + "src": "contracts/business/example/BusinessContractExample.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IBusinessContract": { + "src": "contracts/business/example/BusinessContractExample.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl": { + "src": "@openzeppelin/contracts/access/AccessControl.sol:49", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:113", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:9", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:55", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": { + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:34", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:50" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:11", + "inherit": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Context.sol:Context": { + "src": "@openzeppelin/contracts/utils/Context.sol:16", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": { + "src": "@openzeppelin/contracts/utils/introspection/ERC165.sol:20", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:BusinessContractExample": { + "src": "contracts/business/example/BusinessContractExample.sol:17", + "version": { + "withMetadata": "6864210a83f65c26100bac7e4a53ad9006f3d64a5b98a4427c94306abbef1cbe", + "withoutMetadata": "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec", + "linkedWithoutMetadata": "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/example/BusinessContractExample.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "setB2MessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)5320", + "contract": "BusinessContractExample", + "src": "contracts/business/example/BusinessContractExample.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)5320": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IB2MessageSharing": { + "src": "contracts/business/example/BusinessContractExample.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IBusinessContract": { + "src": "contracts/business/example/BusinessContractExample.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:IB2MessageSharing": { + "src": "contracts/business/tokenLocker/Lock.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:IBusinessContract": { + "src": "contracts/business/tokenLocker/Lock.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:TokenLockerContract": { + "src": "contracts/business/tokenLocker/Lock.sol:20", + "version": { + "withMetadata": "5a18788c35cf00de0fd8869e2d604c74351c73fc309e0c6eb3b50cbe5bb3acfe", + "withoutMetadata": "c4e095f14de083d33ab35c55027b2a59a2d53c817aa426881717bb0c8867ee17", + "linkedWithoutMetadata": "c4e095f14de083d33ab35c55027b2a59a2d53c817aa426881717bb0c8867ee17" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/tokenLocker/Lock.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "initialize()", + "setB2MessageSharing(address)", + "setLocks(uint256,address)", + "setTokens(uint256,address,address)", + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)5514", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:28" + }, + { + "label": "locks", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:58" + }, + { + "label": "ids", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:59" + }, + { + "label": "tokens", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:60" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)5514": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/MyERC20.sol:MyERC20": { + "src": "contracts/business/tokenLocker/MyERC20.sol:7", + "version": { + "withMetadata": "1d8c2234e4486aa94447b19be93d4a96eeaf4e61cc11f4144382ae5cd9990b17", + "withoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae", + "linkedWithoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae" + }, + "inherit": [ + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl", + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "(string,string,uint8)", + "decimals()", + "mint(address,uint256)", + "burn(address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "MyERC20", + "src": "contracts/business/tokenLocker/MyERC20.sol:12" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + }, + { + "label": "_roles", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "6", + "type": "t_uint8", + "contract": "MyERC20", + "src": "contracts/business/tokenLocker/MyERC20.sol:10" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "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" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:B2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:98", + "version": { + "withMetadata": "39663f0c2891fe6729954e3ee20ef4663d7d5e82508e7835ceca4d3e15b1210c", + "withoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874", + "linkedWithoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message/MessageSharing.sol:IB2MessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IB2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:BusinessContractExample": { + "src": "contracts/business/example/BusinessContractExample.sol:17", + "version": { + "withMetadata": "6864210a83f65c26100bac7e4a53ad9006f3d64a5b98a4427c94306abbef1cbe", + "withoutMetadata": "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec", + "linkedWithoutMetadata": "3a6bf363d08dd89be1ee35964533871a70ae750a6041b0cd0c9bf6295acef7ec" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/example/BusinessContractExample.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "setB2MessageSharing(address)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)3540", + "contract": "BusinessContractExample", + "src": "contracts/business/example/BusinessContractExample.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)3540": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IB2MessageSharing": { + "src": "contracts/business/example/BusinessContractExample.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IBusinessContract": { + "src": "contracts/business/example/BusinessContractExample.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "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)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", "inherit": [], diff --git a/contracts/contracts/business/tokenLocker/Lock.sol b/contracts/contracts/business/tokenLocker/Lock.sol deleted file mode 100644 index d30d3d48..00000000 --- a/contracts/contracts/business/tokenLocker/Lock.sol +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; - - -interface IB2MessageSharing { - function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); -} - -interface IBusinessContract { - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success); -} - - -contract TokenLockerContract is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { - - using SafeERC20 for IERC20; - - bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); - bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); - bytes32 public constant SENDER_ROLE = keccak256("sender_role"); - - IB2MessageSharing public messageSharing; - - function initialize() public initializer { - __AccessControl_init(); - __UUPSUpgradeable_init(); - _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); - _grantRole(ADMIN_ROLE, msg.sender); - _grantRole(UPGRADE_ROLE, msg.sender); - } - - function _authorizeUpgrade(address newImplementation) - internal - onlyRole(UPGRADE_ROLE) - override - { - - } - - function setB2MessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { - messageSharing = IB2MessageSharing(sharing_address); - } - - function setLocks(uint256 chain_id,address lock_address) external onlyRole(ADMIN_ROLE) { - locks[chain_id] = lock_address; - } - - function setTokens(uint256 chain_id, address token_address ,address to_token_address) external onlyRole(ADMIN_ROLE) { - tokens[chain_id][token_address] = to_token_address; - } - - mapping (uint256 => address) public locks; - mapping (uint256 => mapping (uint256 => bool)) public ids; - mapping (uint256 => mapping (address => address)) public tokens; - - event Unlock(uint256 from_chain_id ,uint256 from_id, address from_address, address token_address, uint256 to_chain_id, address to_business_contract, address to_address, uint256 amount); - - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success) { - require(locks[from_chain_id] == from_sender, "Invalid chain id or from_sender"); - require(!ids[from_chain_id][from_id], "Have been executed"); - (address from_token_address, address from_address, address to_address, uint256 amount) = decodeLockData(message); - - address token_address = tokens[from_chain_id][from_token_address]; - require(token_address != address(0x0), "Invalid token"); - - IERC20(token_address).transfer(to_address, amount); - emit Unlock(from_chain_id, from_id, from_address, token_address, block.chainid, address(this), to_address, amount); - return true; - } - - event Lock(uint256 from_chain_id ,uint256 from_id, address from_address, address token_address, uint256 to_chain_id, address to_business_contract, address to_address, uint256 amount); - - function lock(address token_address, uint256 amount, uint256 to_chain_id, address to_business_contract, address to_address) external { - IERC20(token_address).transferFrom(msg.sender, address(this), amount); - bytes memory to_message = encodeLockData(token_address, msg.sender, to_address, amount); - - uint256 from_id = messageSharing.call(to_chain_id, to_business_contract, to_message); - emit Lock(block.chainid ,from_id, msg.sender, token_address, to_chain_id, to_business_contract, to_address, amount); - } - - function encodeLockData(address token_address, address from_address, address to_address, uint256 amount) public pure returns (bytes memory) { - return abi.encode(token_address, from_address, to_address, amount); - } - - function decodeLockData(bytes memory data) public pure returns (address token_address, address from_address, address to_address, uint256 amount) { - (token_address, from_address, to_address, amount) = abi.decode(data, (address, address, address, uint256)); - } -} \ No newline at end of file diff --git a/contracts/contracts/business/tokenLocker/MyERC20.sol b/contracts/contracts/examples/erc20/MyERC20.sol similarity index 100% rename from contracts/contracts/business/tokenLocker/MyERC20.sol rename to contracts/contracts/examples/erc20/MyERC20.sol diff --git a/contracts/contracts/examples/erc721/MyERC721.sol b/contracts/contracts/examples/erc721/MyERC721.sol new file mode 100644 index 00000000..7d4d0fa6 --- /dev/null +++ b/contracts/contracts/examples/erc721/MyERC721.sol @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721RoyaltyUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; + +contract MyERC721 is Initializable, UUPSUpgradeable, ERC721Upgradeable, ERC721RoyaltyUpgradeable, ERC721BurnableUpgradeable, ERC721EnumerableUpgradeable, AccessControlUpgradeable { + using Strings for uint256; + string private _baseTokenURI; + string private _uriSuffix; + bool public unTransferable; + + bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); + bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); + bytes32 public constant MINT_ROLE = keccak256("mint_role"); + bytes32 public constant BURN_ROLE = keccak256("burn_role"); + mapping(uint256 => bool) public blocklist; + + function initialize(string calldata name, string calldata symbol) public initializer { + __ERC721_init(name, symbol); + __AccessControl_init(); + __UUPSUpgradeable_init(); + __ERC721Enumerable_init(); + __ERC721Burnable_init(); + __ERC721Royalty_init(); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(UPGRADE_ROLE, msg.sender); + _grantRole(ADMIN_ROLE, msg.sender); + _grantRole(MINT_ROLE, msg.sender); + _grantRole(BURN_ROLE, msg.sender); + } + + function _authorizeUpgrade(address newImplementation) + internal + onlyRole(UPGRADE_ROLE) + override + {} + + function supportsInterface(bytes4 interfaceId) public view virtual override( ERC721Upgradeable,ERC721RoyaltyUpgradeable, ERC721EnumerableUpgradeable, AccessControlUpgradeable) returns (bool) { + return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); + } + + function baseURI() external view virtual returns (string memory) { + return _baseTokenURI; + } + + function uriSuffix() external view virtual returns (string memory) { + return _uriSuffix; + } + + function setUnTransferable(bool _unTransferable) external onlyRole(ADMIN_ROLE) { + unTransferable = _unTransferable; + } + + function _update(address to, uint256 tokenId, address auth) internal override(ERC721Upgradeable, ERC721EnumerableUpgradeable) virtual returns (address) { + if (!(hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(ADMIN_ROLE, msg.sender) || hasRole(MINT_ROLE, msg.sender) || hasRole(BURN_ROLE, msg.sender))) { + require(!unTransferable, "unTransferable"); + } + require(!blocklist[tokenId], "it is blocklist"); + return ERC721EnumerableUpgradeable._update(to, tokenId, auth); + } + + function setBlocklist(uint256[] calldata _tokenIds, bool _blocklist) external onlyRole(ADMIN_ROLE) { + for (uint256 i = 0; i < _tokenIds.length; i++) { + blocklist[_tokenIds[i]] = _blocklist; + } + } + + function _increaseBalance(address account, uint128 value) internal override(ERC721Upgradeable, ERC721EnumerableUpgradeable) { + ERC721EnumerableUpgradeable._increaseBalance(account, value); + } + + function setBaseURI(string calldata newBaseTokenURI) external onlyRole(ADMIN_ROLE) { + _baseTokenURI = newBaseTokenURI; + } + + function setURISuffix(string calldata newUriSuffix) external onlyRole(ADMIN_ROLE) { + _uriSuffix = newUriSuffix; + } + + function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { + if (keccak256(abi.encodePacked(_uriSuffix)) == keccak256(abi.encodePacked("fixed"))) { + return bytes(_baseTokenURI).length > 0 ? string(abi.encodePacked(_baseTokenURI)) : ""; + } else { + return bytes(_baseTokenURI).length > 0 ? string(abi.encodePacked(_baseTokenURI, tokenId.toString(), _uriSuffix)) : ""; + } + } + + function existOf(uint256 tokenId) external view virtual returns (bool) { + address owner = _ownerOf(tokenId); + if (owner == address(0)) { + return false; + } + return true; + } + + function mint(address to, uint256 tokenId) external onlyRole(MINT_ROLE) { + _mint(to, tokenId); + } + + function batchMint(address[] calldata toAddresses, uint256[] calldata tokenIds ) external onlyRole(MINT_ROLE) { + for(uint256 i = 0; i < toAddresses.length; i++) { + _mint(toAddresses[i], tokenIds[i]); + } + } + + function burn(address from, uint256 tokenId) external onlyRole(BURN_ROLE) { + require(_ownerOf(tokenId) == from, "owner mismatch"); + _burn(tokenId); + } + + function burn(uint256 tokenId) public override onlyRole(BURN_ROLE) { + _burn(tokenId); + } + +} diff --git a/contracts/contracts/business/example/BusinessContractExample.sol b/contracts/contracts/examples/message_channel/MessageChannel.sol similarity index 50% rename from contracts/contracts/business/example/BusinessContractExample.sol rename to contracts/contracts/examples/message_channel/MessageChannel.sol index d84fde65..48f46518 100644 --- a/contracts/contracts/business/example/BusinessContractExample.sol +++ b/contracts/contracts/examples/message_channel/MessageChannel.sol @@ -6,16 +6,25 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; +interface IMessageSharing { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +} + interface IBusinessContract { - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success); + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success, string memory error); } -contract BusinessContractExample is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { +contract MessageChannel is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); bytes32 public constant SENDER_ROLE = keccak256("sender_role"); + IMessageSharing public messageSharing; + + event Send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes to_message); + event Call(uint256 from_id, uint256 to_chain_id, address to_business_contract, bytes to_message); + function initialize() public initializer { __AccessControl_init(); __UUPSUpgradeable_init(); @@ -32,14 +41,26 @@ contract BusinessContractExample is IBusinessContract, Initializable, UUPSUpgrad } - event Send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes data); + function version() external pure returns (string memory) { + return "v1.0.0"; + } + + function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { + messageSharing = IMessageSharing(sharing_address); + } + + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256) { + uint256 from_id = messageSharing.call(to_chain_id, to_business_contract, to_message); + emit Call(from_id, to_chain_id, to_business_contract, to_message); + return from_id; + } - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external onlyRole(SENDER_ROLE) override returns (bool success) { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata to_message) external onlyRole(SENDER_ROLE) override returns (bool success, string memory error) { // TODO 1. Verify the validity of from_chain_id and from_sender // TODO 2. Verify that from_id has been executed // TODO 3. Parse data and execute service logic - emit Send(from_chain_id, from_id, from_sender, data); - return true; + emit Send(from_chain_id, from_id, from_sender, to_message); + return (true, ""); } } \ No newline at end of file diff --git a/contracts/contracts/examples/nft_bridge/NftBridge.sol b/contracts/contracts/examples/nft_bridge/NftBridge.sol new file mode 100644 index 00000000..b3976870 --- /dev/null +++ b/contracts/contracts/examples/nft_bridge/NftBridge.sol @@ -0,0 +1,190 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; + +interface IMessageSharing { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +} + +interface IBusinessContract { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success, string memory error); +} + +enum NftStandard { + UNKNOWN, + ERC721, + ERC1155 +} + +struct Nft { + NftStandard standard; + address nft_address; + bool status; +} + +interface IERC721 { + function balanceOf(address owner) external view returns (uint256 balance); + function ownerOf(uint256 tokenId) external view returns (address owner); + function safeTransferFrom(address from, address to, uint256 tokenId) external; + function mint(address to, uint256 tokenId) external; +} + +interface IERC1155 { + function balanceOf(address account, uint256 id) external view returns (uint256); + function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external; + function mint(address to, uint256 id, uint256 value) external; +} + +contract NftBridge is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { + + bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); + bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); + bytes32 public constant SENDER_ROLE = keccak256("sender_role"); + + // message sharing address + IMessageSharing public messageSharing; + // from_chain_id => from_nft_address => to_chain_id => Nft info + mapping(uint256 => mapping (address => mapping (uint256 => Nft))) public nft_mapping; + // from_chain_id => nft bridge address + mapping (uint256 => address) public bridges; + // from_chain_id => from_id => execute + mapping (uint256 => mapping (uint256 => bool)) public executes; + + event Lock(uint256 from_chain_id, uint256 from_id, address from_address, address from_token_address, address to_token_address, uint256 to_chain_id, address to_token_bridge, address to_address, uint256 amount); + + event Unlock(uint256 from_chain_id, uint256 from_id, address from_address, address from_token_address, address to_token_address, uint256 token_id, uint256 to_chain_id, address to_token_bridge, address to_address, uint256 amount); + + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success, string memory error) { + require(bridges[from_chain_id] == from_sender, "Invalid chain id or from_sender"); + require(!executes[from_chain_id][from_id], "Have been executed"); + executes[from_chain_id][from_id] = true; + (address from_token_address, address to_token_address, uint256 token_id, address from_address, address to_address, uint256 amount) = decodeLockData(message); + transferNft(from_chain_id, from_token_address, to_token_address, token_id, to_address, amount); + emit Unlock(from_chain_id, from_id, from_address, from_token_address, to_token_address, token_id , block.chainid, address(this), to_address, amount); + return (true, ""); + } + + function transferNft(uint256 from_chain_id, address from_token_address, address to_token_address, uint256 token_id, address to_address, uint256 amount) internal { + Nft memory nft = nft_mapping[from_chain_id][from_token_address][block.chainid]; + require(nft.standard != NftStandard.UNKNOWN, "Invalid nft info"); + require(nft.nft_address == to_token_address, "Invalid nft address"); + require(nft.status, "nft status is false"); + if (nft.standard == NftStandard.ERC721) { + interTransferNft721(nft.nft_address, to_address, token_id); + } else if (nft.standard == NftStandard.ERC1155) { + interTransferNft1155(nft.nft_address, to_address, token_id, amount); + } + } + + function lock(address nft_address, uint256 token_id, uint256 amount, uint256 to_chain_id, address to_token_bridge, address to_address) external { + Nft memory nft = nft_mapping[block.chainid][nft_address][to_chain_id]; + require(nft.standard != NftStandard.UNKNOWN, "Invalid nft info"); + require(nft.status, "nft status is false"); + if (nft.standard == NftStandard.ERC721) { + require(amount == 1, "Invalid amount"); + IERC721(nft_address).safeTransferFrom(msg.sender, address(this), token_id); + } else if (nft.standard == NftStandard.ERC1155) { + require(amount > 0, "Invalid amount"); + IERC1155(nft_address).safeTransferFrom(msg.sender, address(this), token_id, amount, ""); + } + + bytes memory to_message = encodeLockData(nft_address, nft.nft_address, token_id, msg.sender, to_address, amount); + + uint256 from_id = messageSharing.call(to_chain_id, to_token_bridge, to_message); + emit Lock(block.chainid ,from_id, msg.sender, nft_address, nft.nft_address, to_chain_id, to_token_bridge, to_address, amount); + } + + function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { + messageSharing = IMessageSharing(sharing_address); + } + + function setBridges(uint256 from_chain_id, address bridge) external onlyRole(ADMIN_ROLE) { + bridges[from_chain_id] = bridge; + } + + function setNftMapping(uint256 from_chain_id, address from_nft_address, uint256 to_chain_id, address to_nft_address, NftStandard standard, bool status) external onlyRole(ADMIN_ROLE) { + require(from_chain_id == block.chainid || to_chain_id == block.chainid , "Invalid chain id"); + nft_mapping[from_chain_id][from_nft_address][to_chain_id] = Nft({ + nft_address:to_nft_address, + standard: standard, + status: status + }); + } + + function encodeLockData(address from_nft_address, address to_nft_address, uint256 token_id, address from_address, address to_address, uint256 amount) public pure returns (bytes memory) { + return abi.encode(from_nft_address, to_nft_address, token_id, from_address, to_address, amount); + } + + function decodeLockData(bytes memory data) public pure returns (address from_nft_address, address to_nft_address , uint256 token_id, address from_address, address to_address, uint256 amount) { + (from_nft_address, to_nft_address, token_id, from_address, to_address, amount) = abi.decode(data, (address, address, uint256, address, address, uint256)); + } + + function initialize() public initializer { + __AccessControl_init(); + __UUPSUpgradeable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(ADMIN_ROLE, msg.sender); + _grantRole(UPGRADE_ROLE, msg.sender); + } + + function _authorizeUpgrade(address newImplementation) + internal + onlyRole(UPGRADE_ROLE) + override + { + + } + + function interTransferNft1155(address token_address, address to, uint256 token_id, uint256 amount) internal { + uint256 balance = IERC1155(token_address).balanceOf(address(this), token_id); + if (balance < amount) { + IERC1155(token_address).mint(to, token_id, amount); + } else { + IERC1155(token_address).safeTransferFrom(address(this), to, token_id, amount, ""); + } + } + + function interTransferNft721(address token_address, address to, uint256 token_id) internal { + address from = IERC721(token_address).ownerOf(token_id); + require(from == address(0x0) || from == address(this), "no operation permission"); + if (from == address(0x0)) { + IERC721(token_address).mint(to, token_id); + } else { + IERC721(token_address).safeTransferFrom(address(this), to, token_id); + } + } + + function onERC721Received( + address, + address, + uint256, + bytes memory + ) public virtual returns (bytes4) { + return this.onERC721Received.selector; + } + + function onERC1155Received( + address, + address, + uint256, + uint256, + bytes calldata + ) public virtual returns (bytes4) { + return bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")); + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) public virtual returns (bytes4) { + return bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)")); + } + +} \ No newline at end of file diff --git a/contracts/contracts/examples/orderbook/Cashier.sol b/contracts/contracts/examples/orderbook/Cashier.sol new file mode 100644 index 00000000..1f1a476b --- /dev/null +++ b/contracts/contracts/examples/orderbook/Cashier.sol @@ -0,0 +1,214 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; + +interface IMessageSharing { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +} + +interface IBusinessContract { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success, string memory error); +} +enum OrderStatus { + UNKNOWN, + IN_PROCESS, + COMPLETED +} + +struct Wihitelist { + address token_address; + uint256 deposit_amount; + bool status; +} + +struct Orderbook { + uint256 chain_id; + address contract_address; +} + +struct Order { + address user_address; + uint256 start_time; + uint256 end_time; + address token_address; + uint256 deposit_amount; + uint256 fee_amount; + OrderStatus status; +} + +contract Cashier is IBusinessContract, Initializable, UUPSUpgradeable, AccessControlUpgradeable { + using SafeERC20 for IERC20; + using Address for address; + + bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); + bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); + bytes32 public constant SENDER_ROLE = keccak256("sender_role"); + + IMessageSharing public message_sharing; + Orderbook public orderbook; + // token_address => wihitelist + mapping (address => Wihitelist) public wihitelists; + // from_chain_id => from_id => execute + mapping (uint256 => mapping (uint256 => bool)) public executes; + // order_no => order + mapping (string => Order) public orders; + // user_address => order_no + mapping (address => string[]) public user_orders; + // withdraw balance + uint256 public withdraw_balance; + + event SetWihitelist(address indexed token_address, Wihitelist wihitelist); + event PayOrder(string indexed order_no, address indexed token_address, address indexed user_address, uint256 deposit_amount, uint256 from_id); + event SettleOrder(string indexed order_no, address indexed token_address, address indexed user_address, uint256 fee_amount, uint256 end_time); + event Withdraw(address token_address, address to_address, uint256 amount); + + // ************************************** PUBLIC FUNCTION ************************************** + + function payOrder(string calldata order_no, address token_address) external payable { + Wihitelist memory wihitelist = wihitelists[token_address]; + require(wihitelist.status, "Token not support"); + Order storage order = orders[order_no]; + require(order.status == OrderStatus.UNKNOWN, "Order already exists"); + + if (token_address == address(0x0)) { + require(wihitelist.deposit_amount == msg.value, "Invalid value"); + } else { + require(msg.value == 0, "Invalid transaction value"); + IERC20(token_address).safeTransferFrom(msg.sender, address(this), wihitelist.deposit_amount); + } + + order.user_address = msg.sender; + order.start_time = block.timestamp; + order.end_time = 0; + order.token_address = token_address; + order.deposit_amount = wihitelist.deposit_amount; + order.fee_amount = 0; + order.status = OrderStatus.IN_PROCESS; + + user_orders[msg.sender].push(order_no); + + bytes memory to_message = encodePayData(order_no, token_address, msg.sender, wihitelist.deposit_amount, block.timestamp); + + uint256 from_id = message_sharing.call(orderbook.chain_id, orderbook.contract_address, to_message); + + emit PayOrder(order_no, token_address, msg.sender, wihitelist.deposit_amount, from_id); + } + + + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external onlyRole(SENDER_ROLE) returns (bool success, string memory error) { + require(!executes[from_chain_id][from_id], "Have been executed"); + executes[from_chain_id][from_id] = true; + (string memory order_no, address token_address, address user_address, uint256 fee_amount, uint256 end_time) = decodeSettleData(data); + + require( orderbook.chain_id == from_chain_id, "Invalid chian id"); + require( orderbook.contract_address == from_sender, "Invalid business address"); + + Order storage order = orders[order_no]; + require(order.status == OrderStatus.IN_PROCESS, "Invalid order status"); + require(order.user_address == user_address, "Invalid user address"); + require(order.deposit_amount >= fee_amount, "Invalid fee amount"); + + for (uint256 i = 0; i < user_orders[user_address].length; i++) { + if (compareStrings(user_orders[user_address][i], order_no)) { + user_orders[user_address][i] = user_orders[user_address][user_orders[user_address].length - 1]; + user_orders[user_address].pop(); + } + } + + order.fee_amount = fee_amount; + order.end_time = end_time; + order.status = OrderStatus.COMPLETED; + if (order.deposit_amount > fee_amount) { + _safeTransfer(token_address, user_address, order.deposit_amount - fee_amount); + } + withdraw_balance = withdraw_balance + fee_amount; + + emit SettleOrder(order_no, token_address, user_address, fee_amount, end_time); + return (true, ""); + } + + // ************************************** ADMIN FUNCTION ************************************** + + function setWihitelist(address token_address, Wihitelist calldata wihitelist) external onlyRole(ADMIN_ROLE) { + wihitelists[token_address] = wihitelist; + emit SetWihitelist(token_address, wihitelist); + } + + function setOrderbook(address contract_address, uint256 chain_id) external onlyRole(ADMIN_ROLE) { + orderbook.chain_id = chain_id; + orderbook.contract_address = contract_address; + } + + function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { + message_sharing = IMessageSharing(sharing_address); + } + + function withdraw(address token_address, address to_address, uint256 amount) external onlyRole(ADMIN_ROLE) { + require(withdraw_balance >= amount, "Invalid amount"); + _safeTransfer(token_address, to_address, amount); + withdraw_balance = withdraw_balance - amount; + emit Withdraw(token_address, to_address, amount); + } + + function encodePayData(string calldata order_no, address token_address, address user_address, uint256 deposit_amount, uint256 start_time) public pure returns (bytes memory) { + return abi.encode(order_no, token_address, user_address, deposit_amount, start_time); + } + + function decodeSettleData(bytes memory data) public pure returns (string memory order_no, address token_address, address user_address, uint256 fee_amount, uint256 end_time) { + // bytes memory to_message = encodeSettleData(order_no, order.token_address, order.end_time, order.user_address, fee_amount); + (order_no, token_address, end_time, user_address, fee_amount) = abi.decode(data, (string, address, uint256, address, uint256)); + // (order_no, token_address, user_address, fee_amount, end_time) = abi.decode(data, (string, address, address, uint256, uint256)); + } + + function compareStrings(string memory str1, string memory str2) internal pure returns (bool) { + return keccak256(abi.encodePacked(str1)) == keccak256(abi.encodePacked(str2)); + } + + /** + * @notice Safe transfer function + * + * @param to_address Token address + * @param to_address Address to get transferred BTC + * @param amount Amount of BTC to be transferred + */ + function _safeTransfer(address token_address, address to_address, uint256 amount) internal { + if (token_address == address(0x0)) { + (bool success, bytes memory data) = address(to_address).call{ + value: amount + }(""); + + require(success, "transfer call failed"); + if (data.length > 0) { + require( + abi.decode(data, (bool)), + "transfer operation did not succeed" + ); + } + } else { + bool success = IERC20(token_address).transfer(to_address, amount); + require(success, "token transfer call failed"); + } + } + + function initialize() public initializer { + __AccessControl_init(); + __UUPSUpgradeable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(UPGRADE_ROLE, msg.sender); + _grantRole(ADMIN_ROLE, msg.sender); + } + + function _authorizeUpgrade(address newImplementation) + internal + onlyRole(UPGRADE_ROLE) + override + { + + } +} \ No newline at end of file diff --git a/contracts/contracts/examples/orderbook/Orderbook.sol b/contracts/contracts/examples/orderbook/Orderbook.sol new file mode 100644 index 00000000..62f17b4c --- /dev/null +++ b/contracts/contracts/examples/orderbook/Orderbook.sol @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; + +interface IMessageSharing { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +} + +interface IBusinessContract { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success, string memory error); +} + +enum OrderStatus { + UNKNOWN, + IN_PROCESS, + COMPLETED +} + +struct Order { + uint256 from_chain_id; + address from_business; + address user_address; + uint256 start_time; + uint256 end_time; + address token_address; + uint256 deposit_amount; + uint256 fee_amount; + OrderStatus status; +} + +contract Orderbook is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { + + bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); + bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); + bytes32 public constant SENDER_ROLE = keccak256("sender_role"); + + // message sharing address + IMessageSharing public message_sharing; + // from_chain_id => nft bridge address + mapping (uint256 => address) public bridges; + // from_chain_id => from_id => execute + mapping (uint256 => mapping (uint256 => bool)) public executes; + + mapping (string => Order) public orders; + + event PayOrder(uint256 from_chain_id, uint256 from_id, address from_business, string order_no, uint256 start_time, address user_address, address token_address, uint256 deposit_amount); + + event Settle(string order_no, uint256 fee_amount, uint256 end_time, uint256 from_id); + + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success, string memory error) { + require(bridges[from_chain_id] == from_sender, "Invalid chain id or from_sender"); + require(!executes[from_chain_id][from_id], "Have been executed"); + executes[from_chain_id][from_id] = true; + + (string memory order_no, address token_address, address user_address, uint256 deposit_amount, uint256 start_time) = decodePayData(message); + Order storage order = orders[order_no]; + require(order.status == OrderStatus.UNKNOWN, "Order already exists"); + order.from_chain_id = from_chain_id; + order.from_business = from_sender; + order.user_address = user_address; + order.start_time = start_time; + order.end_time = 0; + order.token_address = token_address; + order.deposit_amount = deposit_amount; + order.fee_amount = 0; + order.status = OrderStatus.IN_PROCESS; + emit PayOrder(from_chain_id, from_id, from_sender, order_no, start_time, user_address, token_address, deposit_amount); + return (true, ""); + } + + function settle(string calldata order_no, uint256 fee_amount) external { + Order storage order = orders[order_no]; + require(order.status == OrderStatus.IN_PROCESS, "Invalid order status"); + require(order.deposit_amount >= fee_amount, "Invalid fee amount"); + order.end_time = block.timestamp; + order.status = OrderStatus.COMPLETED; + + bytes memory to_message = encodeSettleData(order_no, order.token_address, order.user_address, fee_amount, order.end_time); + + uint256 from_id = message_sharing.call(order.from_chain_id, order.from_business, to_message); + emit Settle(order_no, fee_amount, block.timestamp, from_id); + } + + function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { + message_sharing = IMessageSharing(sharing_address); + } + + function setBridges(uint256 from_chain_id, address bridge) external onlyRole(ADMIN_ROLE) { + bridges[from_chain_id] = bridge; + } + + function decodePayData(bytes memory data) public pure returns (string memory order_no, address token_address, address user_address, uint256 deposit_amount, uint256 start_time) { + (order_no, token_address, user_address, deposit_amount, start_time) = abi.decode(data, (string, address, address, uint256, uint256)); + } + + function encodeSettleData(string memory order_no, address token_address, address user_address, uint256 fee_amount, uint256 end_time) public pure returns (bytes memory) { + return abi.encode(order_no, token_address, user_address, fee_amount, end_time); + } + + function initialize() public initializer { + __AccessControl_init(); + __UUPSUpgradeable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(ADMIN_ROLE, msg.sender); + _grantRole(UPGRADE_ROLE, msg.sender); + } + + function _authorizeUpgrade(address newImplementation) + internal + onlyRole(UPGRADE_ROLE) + override + { + + } + +} \ No newline at end of file diff --git a/contracts/contracts/examples/token_bridge/TokenBridge.sol b/contracts/contracts/examples/token_bridge/TokenBridge.sol new file mode 100644 index 00000000..0abc28ff --- /dev/null +++ b/contracts/contracts/examples/token_bridge/TokenBridge.sol @@ -0,0 +1,122 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +interface IMessageSharing { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +} + +interface IBusinessContract { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success, string memory error); +} + +contract TokenBridge is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { + + using SafeERC20 for IERC20; + + bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); + bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); + bytes32 public constant SENDER_ROLE = keccak256("sender_role"); + + // message sharing address + IMessageSharing public messageSharing; + // from_chain_id => from_token_address => to_token_address + mapping (uint256 => mapping (address => address)) public token_mapping; + // from_chain_id => bridge address + mapping (uint256 => address) public bridges; + // from_chain_id => from_id => execute + mapping (uint256 => mapping (uint256 => bool)) public executes; + + event Lock(uint256 from_chain_id, uint256 from_id, address from_address, address from_token_address, uint256 to_chain_id, address to_token_bridge, address to_address, uint256 amount); + + event Unlock(uint256 from_chain_id, uint256 from_id, address from_address, address to_token_address, uint256 to_chain_id, address to_token_bridge, address to_address, uint256 amount); + + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success, string memory error) { + require(bridges[from_chain_id] == from_sender, "Invalid chain id or from_sender"); + require(!executes[from_chain_id][from_id], "Have been executed"); + executes[from_chain_id][from_id] = true; + (address from_token_address, address from_address, address to_address, uint256 amount) = decodeLockData(message); + + address token_address = token_mapping[from_chain_id][from_token_address]; + if (from_token_address != address(0x0)) { + require(token_address != address(0x0), "Invalid token"); + } + _safeTransfer(token_address, to_address, amount); + emit Unlock(from_chain_id, from_id, from_address, token_address, block.chainid, address(this), to_address, amount); + return (true, ""); + } + + function lock(address token_address, uint256 amount, uint256 to_chain_id, address to_token_bridge, address to_address) external payable { + if (token_address == address(0x0)) { + require(msg.value == amount, "invalid amount"); + } else { + IERC20(token_address).transferFrom(msg.sender, address(this), amount); + } + + bytes memory to_message = encodeLockData(token_address, msg.sender, to_address, amount); + + uint256 from_id = messageSharing.call(to_chain_id, to_token_bridge, to_message); + emit Lock(block.chainid ,from_id, msg.sender, token_address, to_chain_id, to_token_bridge, to_address, amount); + } + + function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { + messageSharing = IMessageSharing(sharing_address); + } + + function setBridges(uint256 from_chain_id, address bridge) external onlyRole(ADMIN_ROLE) { + bridges[from_chain_id] = bridge; + } + + function setTokenMapping(uint256 from_chain_id, address from_token_address, address to_token_address) external onlyRole(ADMIN_ROLE) { + token_mapping[from_chain_id][from_token_address] = to_token_address; + } + + function encodeLockData(address token_address, address from_address, address to_address, uint256 amount) public pure returns (bytes memory) { + return abi.encode(token_address, from_address, to_address, amount); + } + + function decodeLockData(bytes memory data) public pure returns (address token_address, address from_address, address to_address, uint256 amount) { + (token_address, from_address, to_address, amount) = abi.decode(data, (address, address, address, uint256)); + } + + function _safeTransfer(address token_address, address to_address, uint256 amount) internal { + if (token_address == address(0x0)) { + (bool success, bytes memory data) = address(to_address).call{ + value: amount + }(""); + + require(success, "transfer call failed"); + if (data.length > 0) { + require( + abi.decode(data, (bool)), + "transfer operation did not succeed" + ); + } + } else { + bool success = IERC20(token_address).transfer(to_address, amount); + require(success, "token transfer call failed"); + } + } + + function initialize() public initializer { + __AccessControl_init(); + __UUPSUpgradeable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(ADMIN_ROLE, msg.sender); + _grantRole(UPGRADE_ROLE, msg.sender); + } + + function _authorizeUpgrade(address newImplementation) + internal + onlyRole(UPGRADE_ROLE) + override + { + + } + +} \ No newline at end of file diff --git a/contracts/contracts/message/MessageSharing.sol b/contracts/contracts/message_sharing/MessageSharing.sol similarity index 95% rename from contracts/contracts/message/MessageSharing.sol rename to contracts/contracts/message_sharing/MessageSharing.sol index e4cb2a90..3b40aca4 100644 --- a/contracts/contracts/message/MessageSharing.sol +++ b/contracts/contracts/message_sharing/MessageSharing.sol @@ -7,7 +7,7 @@ import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol" import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -interface IB2MessageSharing { +interface IMessageSharing { /** * Get the validator role for a specific chain @@ -91,11 +91,12 @@ interface IBusinessContract { * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy (business needs may dictate whether verification is necessary). * @param message The input data for processing the cross-chain message, which may need to be decoded based on byte encoding rules. * @return success Indicates whether the message processing was successful, returning true for success and false for failure. + * @return error Returns an error message if processing fails. A descriptive string containing the reason for failure, useful for debugging and logging. */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success); + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success, string memory error); } -contract B2MessageSharing is IB2MessageSharing, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { +contract MessageSharing is IMessageSharing, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { using ECDSA for bytes32; bytes32 public constant SEND_HASH_TYPE = keccak256('Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address to_business_contract,bytes to_message)'); @@ -145,8 +146,8 @@ contract B2MessageSharing is IB2MessageSharing, Initializable, UUPSUpgradeable, require(weight_ >= weights[from_chain_id], "verify signatures weight invalid"); if (to_business_contract != address(0x0)) { - bool success = IBusinessContract(to_business_contract).send(from_chain_id, from_id, from_sender, to_message); - require(success, "Call failed"); + (bool success, string memory error) = IBusinessContract(to_business_contract).send(from_chain_id, from_id, from_sender, to_message); + require(success, error); } emit Send(from_chain_id, from_id, from_sender, block.chainid, to_business_contract, to_message); } diff --git a/contracts/scripts/business/deploy.js b/contracts/scripts/business/deploy.js deleted file mode 100644 index a0766391..00000000 --- a/contracts/scripts/business/deploy.js +++ /dev/null @@ -1,28 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/business/deploy.js --network b2dev - * asdev: yarn hardhat run scripts/business/deploy.js --network asdev - * # pord - * as: yarn hardhat run scripts/business/deploy.js --network as - * b2: yarn hardhat run scripts/business/deploy.js --network b2 - */ - - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - - // deploy - const BusinessContractExample = await ethers.getContractFactory("BusinessContractExample"); - const instance = await upgrades.deployProxy(BusinessContractExample); - await instance.waitForDeployment(); - console.log("BusinessContractExample Address:", instance.target); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/business/grant_role.js b/contracts/scripts/business/grant_role.js deleted file mode 100644 index 271d9f97..00000000 --- a/contracts/scripts/business/grant_role.js +++ /dev/null @@ -1,56 +0,0 @@ -const {ethers, run, network, upgrades} = require("hardhat") - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/business/grant_role.js --network b2dev - * asdev: yarn hardhat run scripts/business/grant_role.js --network asdev - * # pord - * as: yarn hardhat run scripts/business/grant_role.js --network as - * b2: yarn hardhat run scripts/business/grant_role.js --network b2 - */ - - let businessAddress; - let senderAddress; - if (network.name == 'b2dev') { - businessAddress = "0x804641e29f5F63a037022f0eE90A493541cCb869"; - // senderAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - senderAddress = "0x0527aE9B13cdb9ce3B4250303702Be7845A24451"; - - } else if (network.name == 'asdev') { - businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; - senderAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'as') { - businessAddress = ""; - senderAddress = ""; - } else if (network.name == 'b2') { - businessAddress = ""; - senderAddress = ""; - } - console.log("Business Address: ", businessAddress); - - const [owner] = await ethers.getSigners(); - console.log("Owner Address:", owner.address); - - const BusinessContractExample = await ethers.getContractFactory("BusinessContractExample"); - const instance = await BusinessContractExample.attach(businessAddress) - let role = await instance.SENDER_ROLE(); - console.log("role hash:", role); - - let has = await instance.hasRole(role, senderAddress) - console.log("has role:", has) - if (!has) { - const tx = await instance.grantRole(role, senderAddress); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - has = await instance.hasRole(role, senderAddress) - console.log("has role:", has) - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/business/revoke_role.js b/contracts/scripts/business/revoke_role.js deleted file mode 100644 index 2bbd1c17..00000000 --- a/contracts/scripts/business/revoke_role.js +++ /dev/null @@ -1,55 +0,0 @@ -const {ethers, run, network, upgrades} = require("hardhat") - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/business/revoke_role.js --network b2dev - * asdev: yarn hardhat run scripts/business/revoke_role.js --network asdev - * # pord - * as: yarn hardhat run scripts/business/revoke_role.js --network as - * b2: yarn hardhat run scripts/business/revoke_role.js --network b2 - */ - - let businessAddress; - let senderAddress; - - if (network.name == 'b2dev') { - businessAddress = "0x804641e29f5F63a037022f0eE90A493541cCb869"; - senderAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - } else if (network.name == 'asdev') { - businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; - senderAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'as') { - businessAddress = ""; - senderAddress = ""; - } else if (network.name == 'b2') { - businessAddress = ""; - senderAddress = ""; - } - console.log("Business Address: ", businessAddress); - - const [owner] = await ethers.getSigners(); - console.log("Owner Address:", owner.address); - - const BusinessContractExample = await ethers.getContractFactory("BusinessContractExample"); - const instance = await BusinessContractExample.attach(businessAddress) - let role = await instance.SENDER_ROLE(); - console.log("role hash:", role); - - let has = await instance.hasRole(role, senderAddress) - console.log("has role:", has) - if (has) { - const tx = await instance.revokeRole(role, senderAddress); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - has = await instance.hasRole(role, senderAddress) - console.log("has role:", has) - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/business/upgrade.js b/contracts/scripts/business/upgrade.js deleted file mode 100644 index d563e737..00000000 --- a/contracts/scripts/business/upgrade.js +++ /dev/null @@ -1,40 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/business/upgrade.js --network b2dev - * asdev: yarn hardhat run scripts/business/upgrade.js --network asdev - * # pord - * as: yarn hardhat run scripts/business/upgrade.js --network as - * b2: yarn hardhat run scripts/business/upgrade.js --network b2 - */ - - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - - let businessAddress = ''; - if (network.name == 'b2dev') { - businessAddress = "0x804641e29f5F63a037022f0eE90A493541cCb869"; - } else if (network.name == 'asdev') { - businessAddress = ""; - } else if (network.name == 'b2') { - businessAddress = ""; - } else if (network.name == 'as') { - businessAddress = ""; - } - console.log("Business Address: ", businessAddress); - - // Upgrading - const BusinessContractExample = await ethers.getContractFactory("BusinessContractExample"); - const upgraded = await upgrades.upgradeProxy(businessAddress, BusinessContractExample); - console.log("BusinessContractExample upgraded:", upgraded.target); - -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc20/approve.js b/contracts/scripts/examples/erc20/approve.js new file mode 100644 index 00000000..5f7879fb --- /dev/null +++ b/contracts/scripts/examples/erc20/approve.js @@ -0,0 +1,50 @@ +const {ethers, run, network} = require("hardhat") + + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/erc20/approve.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc20/approve.js --network asdev + * # pord + * b2: yarn hardhat run scripts/examples/erc20/approve.js --network b2 + * as: yarn hardhat run scripts/examples/erc20/approve.js --network as + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address: ", owner.address); + + let tokenAddress; + if (network.name == 'b2dev') { + tokenAddress = "0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06"; + } else if (network.name == 'asdev') { + tokenAddress = ""; + } else if (network.name == 'b2') { + tokenAddress = ""; + } else if (network.name == 'as') { + tokenAddress = ""; + } + console.log("Token Address: ", tokenAddress); + + const MyERC20 = await ethers.getContractFactory('MyERC20'); + const instance = MyERC20.attach(tokenAddress); + + let approve = { + // to: process.env.B2_DEV_TOKEN_BRIDGE, + to: process.env.B2_DEV_CASHIER, + amount: '1000000000000000000000', + }; + console.log("approve: ", approve); + const tx = await instance.approve(approve.to, approve.amount) + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + console.log("allowance:", await instance.allowance(owner.address, approve.to)); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/token/deploy.js b/contracts/scripts/examples/erc20/deploy.js similarity index 50% rename from contracts/scripts/token/deploy.js rename to contracts/scripts/examples/erc20/deploy.js index 6dabc06f..6d08fc33 100644 --- a/contracts/scripts/token/deploy.js +++ b/contracts/scripts/examples/erc20/deploy.js @@ -1,21 +1,21 @@ const {ethers, upgrades} = require("hardhat") -const TokenName = "USDT" -const TokenSymbol = "USDT" -const decimals = 18 - async function main() { /** - * b2dev: yarn hardhat run scripts/token/deploy.js --network b2dev - * asdev: yarn hardhat run scripts/token/deploy.js --network asdev + * b2dev: yarn hardhat run scripts/examples/erc20/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc20/deploy.js --network asdev */ const [owner] = await ethers.getSigners(); console.log(owner.address); + let token = { + name: 'USDT', symbol: 'USDT', decimals: 18, + }; + const MyERC20 = await ethers.getContractFactory("MyERC20"); - const instance = await MyERC20.deploy(TokenName, TokenSymbol, decimals); + const instance = await MyERC20.deploy(token.name, token.symbol, token.decimals); await instance.waitForDeployment(); - console.log("MyERC20 V1:", instance.target); + console.log("MyERC20 address:", instance.target); } main() @@ -23,4 +23,4 @@ main() .catch((error) => { console.error(error) process.exit(1) - }) \ No newline at end of file + }); \ No newline at end of file diff --git a/contracts/scripts/examples/erc20/grant_role.js b/contracts/scripts/examples/erc20/grant_role.js new file mode 100644 index 00000000..c1ef7d48 --- /dev/null +++ b/contracts/scripts/examples/erc20/grant_role.js @@ -0,0 +1,56 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/erc20/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc20/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/erc20/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/erc20/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = "0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06"; + account = ""; + } else if (network.name == 'asdev') { + address = ""; + account = ""; + } else if (network.name == 'as') { + address = ""; + account = ""; + } else if (network.name == 'b2') { + address = ""; + account = ""; + } + console.log("MyERC20 Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const MyERC20 = await ethers.getContractFactory("MyERC20"); + const instance = await MyERC20.attach(address) + + const role = await instance.MINTER_ROLE(); + // const role = await instance.BURNER_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc20/mint.js b/contracts/scripts/examples/erc20/mint.js new file mode 100644 index 00000000..066494ba --- /dev/null +++ b/contracts/scripts/examples/erc20/mint.js @@ -0,0 +1,50 @@ +const {ethers, run, network} = require("hardhat") + + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/erc20/mint.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc20/mint.js --network asdev + * # pord + * b2: yarn hardhat run scripts/examples/erc20/mint.js --network b2 + * as: yarn hardhat run scripts/examples/erc20/mint.js --network as + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address: ", owner.address); + + let tokenAddress; + if (network.name == 'b2dev') { + tokenAddress = "0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06"; + } else if (network.name == 'asdev') { + tokenAddress = ""; + } else if (network.name == 'b2') { + tokenAddress = ""; + } else if (network.name == 'as') { + tokenAddress = ""; + } + console.log("Token Address: ", tokenAddress); + + const MyERC20 = await ethers.getContractFactory('MyERC20'); + const instance = MyERC20.attach(tokenAddress); + + let mint = { + // to: '0xa218c247a24Cd3Eb2D53E0cb827f52540Cc2312E', + // amount: '100000000000000', + to: owner.address, amount: '100000000000000', + }; + console.log("mint: ", mint); + const tx = await instance.mint(mint.to, mint.amount) + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + console.log("balance of:", await instance.balanceOf(mint.to)); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc721/deploy.js b/contracts/scripts/examples/erc721/deploy.js new file mode 100644 index 00000000..3bde2564 --- /dev/null +++ b/contracts/scripts/examples/erc721/deploy.js @@ -0,0 +1,28 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/erc721/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc721/deploy.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/erc721/deploy.js --network as + * b2: yarn hardhat run scripts/examples/erc721/deploy.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + // deploy + const MyERC721 = await ethers.getContractFactory("MyERC721"); + const instance = await upgrades.deployProxy(MyERC721, ["Test Dog", "TDT"]); + await instance.waitForDeployment(); + console.log("MyERC721 Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc721/grant_role.js b/contracts/scripts/examples/erc721/grant_role.js new file mode 100644 index 00000000..75a4fd7b --- /dev/null +++ b/contracts/scripts/examples/erc721/grant_role.js @@ -0,0 +1,58 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/erc721/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc721/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/erc721/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/erc721/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = ""; + account = ""; + } else if (network.name == 'asdev') { + address = ""; + account = ""; + } else if (network.name == 'as') { + address = ""; + account = ""; + } else if (network.name == 'b2') { + address = ""; + account = ""; + } + console.log("MyERC721 Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const MyERC721 = await ethers.getContractFactory("MyERC721"); + const instance = await MyERC721.attach(address) + + // const role = await instance.UPGRADE_ROLE(); + // const role = await instance.MINT_ROLE(); + const role = await instance.ADMIN_ROLE(); + // const role = await instance.BURN_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc721/mint.js b/contracts/scripts/examples/erc721/mint.js new file mode 100644 index 00000000..c03f1078 --- /dev/null +++ b/contracts/scripts/examples/erc721/mint.js @@ -0,0 +1,43 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * b2dev: yarn hardhat run scripts/examples/erc721/mint.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc721/mint.js --network asdev + */ + + let nftAddress; + if (network.name == 'b2dev') { + nftAddress = "0x1f3B35A031F712E1852260111D4d29165903824F" + } else if (network.name == 'asdev') { + nftAddress = ""; + } + console.log("Nft Address: ", nftAddress) + + const [owner] = await ethers.getSigners() + console.log("Owner Address: ", owner.address) + + const MyERC721 = await ethers.getContractFactory("MyERC721"); + const instance = await MyERC721.attach(nftAddress) + + let mint = { + token_id: 2, // to_address: owner.address, + to_address: '0x952b63C6C799B7033c24B055f7F023Eb7f3a5c73', + }; + console.log("mint: ", mint); + let exist = await instance.existOf(mint.token_id); + console.log("exist: ", exist); + if (!exist) { + const tx = await instance.mint(mint.to_address, mint.token_id); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + } + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc721/setApprovalForAll.js b/contracts/scripts/examples/erc721/setApprovalForAll.js new file mode 100644 index 00000000..6bdbad06 --- /dev/null +++ b/contracts/scripts/examples/erc721/setApprovalForAll.js @@ -0,0 +1,42 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * b2dev: yarn hardhat run scripts/examples/erc721/setApprovalForAll.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc721/setApprovalForAll.js --network asdev + */ + + let nftAddress; + let nftBridge; + if (network.name == 'b2dev') { + nftAddress = "0x1f3B35A031F712E1852260111D4d29165903824F"; + nftBridge = process.env.B2_DEV_NFT_BRIDGE; + } else if (network.name == 'asdev') { + nftAddress = ""; + nftBridge = process.env.AS_DEV_NFT_BRIDGE; + } + console.log("Nft Address: ", nftAddress); + console.log("NftBridge Address: ", nftBridge); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address: ", owner.address) + + const MyERC721 = await ethers.getContractFactory("MyERC721"); + const instance = await MyERC721.attach(nftAddress) + let approved = await instance.isApprovedForAll(owner.address, nftBridge); + console.log("approved: ", approved); + if (!approved) { + const tx = await instance.setApprovalForAll(nftBridge, true); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + approved = await instance.isApprovedForAll(owner.address, nftBridge); + console.log("approved: ", approved); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc721/transfer.js b/contracts/scripts/examples/erc721/transfer.js new file mode 100644 index 00000000..5304fd35 --- /dev/null +++ b/contracts/scripts/examples/erc721/transfer.js @@ -0,0 +1,46 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * b2dev: yarn hardhat run scripts/examples/erc721/transfer.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc721/transfer.js --network asdev + */ + + let nftAddress; + if (network.name == 'b2dev') { + nftAddress = "0x1f3B35A031F712E1852260111D4d29165903824F" + } else if (network.name == 'asdev') { + nftAddress = ""; + } + console.log("Nft Address: ", nftAddress) + + const [owner] = await ethers.getSigners() + console.log("Owner Address: ", owner.address) + + const MyERC721 = await ethers.getContractFactory("MyERC721"); + const instance = await MyERC721.attach(nftAddress) + + let transfer = { + token_id: 1, // to_address: owner.address, + to_address: '0x952b63C6C799B7033c24B055f7F023Eb7f3a5c73', + }; + console.log("transfer: ", transfer); + let exist = await instance.existOf(transfer.token_id); + console.log("exist: ", exist); + if (exist) { + let _owner = await instance.ownerOf(transfer.token_id); + if (_owner == owner.address) { + const tx = await instance.safeTransferFrom(owner.address, transfer.to_address, transfer.token_id); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + } + } + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/erc721/upgrade.js b/contracts/scripts/examples/erc721/upgrade.js new file mode 100644 index 00000000..7c38f834 --- /dev/null +++ b/contracts/scripts/examples/erc721/upgrade.js @@ -0,0 +1,40 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/erc721/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/examples/erc721/upgrade.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/erc721/upgrade.js --network as + * b2: yarn hardhat run scripts/examples/erc721/upgrade.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + let address; + if (network.name == 'b2dev') { + address = "0x1f3B35A031F712E1852260111D4d29165903824F"; + } else if (network.name == 'asdev') { + address = ""; + } else if (network.name == 'b2') { + address = ""; + } else if (network.name == 'as') { + address = ""; + } + console.log("MyERC721 Address: ", address); + + // Upgrading + const MyERC721 = await ethers.getContractFactory("MyERC721"); + const upgraded = await upgrades.upgradeProxy(address, MyERC721); + console.log("MyERC721 upgraded:", upgraded.target); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/message_channel/deploy.js b/contracts/scripts/examples/message_channel/deploy.js new file mode 100644 index 00000000..79da2397 --- /dev/null +++ b/contracts/scripts/examples/message_channel/deploy.js @@ -0,0 +1,28 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/message_channel/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/message_channel/deploy.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/message_channel/deploy.js --network as + * b2: yarn hardhat run scripts/examples/message_channel/deploy.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + // deploy + const MessageChannel = await ethers.getContractFactory("MessageChannel"); + const instance = await upgrades.deployProxy(MessageChannel); + await instance.waitForDeployment(); + console.log("MessageChannel Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/message_channel/grant_role.js b/contracts/scripts/examples/message_channel/grant_role.js new file mode 100644 index 00000000..6b1042ce --- /dev/null +++ b/contracts/scripts/examples/message_channel/grant_role.js @@ -0,0 +1,57 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/message_channel/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/message_channel/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/message_channel/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/message_channel/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_MESSAGE_CHANNEL; + account = ""; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_MESSAGE_CHANNEL; + account = ""; + } else if (network.name == 'as') { + address = process.env.AS_MESSAGE_CHANNEL; + account = ""; + } else if (network.name == 'b2') { + address = process.env.B2_MESSAGE_CHANNEL; + account = ""; + } + console.log("MessageChannel Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const MessageChannel = await ethers.getContractFactory("MessageChannel"); + const instance = await MessageChannel.attach(address) + + const role = await instance.ADMIN_ROLE(); + // const role = await instance.UPGRADE_ROLE(); + // const role = await instance.SENDER_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/message_channel/set.js b/contracts/scripts/examples/message_channel/set.js new file mode 100644 index 00000000..15f0d80d --- /dev/null +++ b/contracts/scripts/examples/message_channel/set.js @@ -0,0 +1,68 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/message_channel/set.js --network b2dev + * asdev: yarn hardhat run scripts/examples/message_channel/set.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/message_channel/set.js --network as + * b2: yarn hardhat run scripts/examples/message_channel/set.js --network b2 + */ + + let address; + let messageSharing; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_MESSAGE_CHANNEL; + messageSharing = process.env.B2_DEV_MESSAGE_SHARING; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_MESSAGE_CHANNEL; + messageSharing = process.env.AS_DEV_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.B2_MESSAGE_CHANNEL; + messageSharing = process.env.B2_MESSAGE_SHARING; + } else if (network.name == 'b2') { + address = process.env.AS_MESSAGE_CHANNEL; + messageSharing = process.env.AS_MESSAGE_SHARING; + } + console.log("MessageChannel Address: ", address); + console.log("messageSharing Address: ", messageSharing); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const MessageChannel = await ethers.getContractFactory("MessageChannel"); + const instance = await MessageChannel.attach(address) + + // 1. setMessageSharing + let _messageSharing = await instance.messageSharing(); + console.log("MessageChannel.messageSharing:", _messageSharing); + if (messageSharing != _messageSharing) { + const tx = await instance.setMessageSharing(messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _messageSharing = await instance.messageSharing() + console.log("MessageChannel.messageSharing:", _messageSharing); + } + + // 2. grant role + let role = await instance.SENDER_ROLE(); + console.log("MessageChannel.SENDER_ROLE Role:", role); + + let has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/message_channel/test.js b/contracts/scripts/examples/message_channel/test.js new file mode 100644 index 00000000..ecf73047 --- /dev/null +++ b/contracts/scripts/examples/message_channel/test.js @@ -0,0 +1,70 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/message_channel/test.js --network b2dev + * asdev: yarn hardhat run scripts/examples/message_channel/test.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/message_channel/test.js --network as + * b2: yarn hardhat run scripts/examples/message_channel/test.js --network b2 + */ + + let address; + let messageSharing; + let param; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_MESSAGE_CHANNEL; + messageSharing = process.env.B2_DEV_MESSAGE_SHARING; + param = { + to_chain_id: process.env.AS_DEV_CHAIN_ID, + to_business_contract: process.env.AS_DEV_MESSAGE_CHANNEL, + to_message: '0x12345678', + }; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_MESSAGE_CHANNEL; + messageSharing = process.env.AS_DEV_MESSAGE_SHARING; + param = { + to_chain_id: process.env.B2_DEV_CHAIN_ID, + to_business_contract: process.env.B2_DEV_MESSAGE_CHANNEL, + to_message: '0x87654321', + }; + } else if (network.name == 'as') { + address = process.env.B2_MESSAGE_CHANNEL; + messageSharing = process.env.B2_MESSAGE_SHARING; + param = { + to_chain_id: process.env.AS_CHAIN_ID, + to_business_contract: process.env.AS_MESSAGE_CHANNEL, + to_message: '0x12345678', + }; + } else if (network.name == 'b2') { + address = process.env.AS_MESSAGE_CHANNEL; + messageSharing = process.env.AS_MESSAGE_SHARING; + param = { + to_chain_id: process.env.B2_CHAIN_ID, + to_business_contract: process.env.B2_MESSAGE_CHANNEL, + to_message: '0x87654321', + }; + } + console.log("MessageChannel Address: ", address); + console.log("MessageSharing Address: ", messageSharing); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const MessageChannel = await ethers.getContractFactory("MessageChannel"); + const instance = await MessageChannel.attach(address) + + // call + console.log("param: ", param); + const tx = await instance.call(param.to_chain_id, param.to_business_contract, param.to_message); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/message_channel/upgrade.js b/contracts/scripts/examples/message_channel/upgrade.js new file mode 100644 index 00000000..471b7b37 --- /dev/null +++ b/contracts/scripts/examples/message_channel/upgrade.js @@ -0,0 +1,40 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/message_channel/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/examples/message_channel/upgrade.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/message_channel/upgrade.js --network as + * b2: yarn hardhat run scripts/examples/message_channel/upgrade.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_MESSAGE_CHANNEL; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_MESSAGE_CHANNEL; + } else if (network.name == 'b2') { + address = process.env.B2_MESSAGE_CHANNEL; + } else if (network.name == 'as') { + address = process.env.AS_MESSAGE_CHANNEL; + } + console.log("MessageChannel Address: ", address); + + // Upgrading + const MessageChannel = await ethers.getContractFactory("MessageChannel"); + const upgraded = await upgrades.upgradeProxy(address, MessageChannel); + console.log("MessageChannel upgraded:", upgraded.target); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/nft_bridge/deploy.js b/contracts/scripts/examples/nft_bridge/deploy.js new file mode 100644 index 00000000..7961a0d8 --- /dev/null +++ b/contracts/scripts/examples/nft_bridge/deploy.js @@ -0,0 +1,28 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/nft_bridge/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/nft_bridge/deploy.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/nft_bridge/deploy.js --network as + * b2: yarn hardhat run scripts/examples/nft_bridge/deploy.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + // deploy + const NftBridge = await ethers.getContractFactory("NftBridge"); + const instance = await upgrades.deployProxy(NftBridge); + await instance.waitForDeployment(); + console.log("NftBridge Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/nft_bridge/grant_role.js b/contracts/scripts/examples/nft_bridge/grant_role.js new file mode 100644 index 00000000..a427adc2 --- /dev/null +++ b/contracts/scripts/examples/nft_bridge/grant_role.js @@ -0,0 +1,57 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/nft_bridge/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/nft_bridge/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/nft_bridge/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/nft_bridge/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_NFT_BRIDGE; + account = ""; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_NFT_BRIDGE; + account = ""; + } else if (network.name == 'as') { + address = process.env.AS_NFT_BRIDGE; + account = ""; + } else if (network.name == 'b2') { + address = process.env.B2_NFT_BRIDGE; + account = ""; + } + console.log("NftBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const NftBridge = await ethers.getContractFactory("NftBridge"); + const instance = await NftBridge.attach(address) + + const role = await instance.ADMIN_ROLE(); + // const role = await instance.UPGRADE_ROLE(); + // const role = await instance.SENDER_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/nft_bridge/set.js b/contracts/scripts/examples/nft_bridge/set.js new file mode 100644 index 00000000..038f5ae1 --- /dev/null +++ b/contracts/scripts/examples/nft_bridge/set.js @@ -0,0 +1,111 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/nft_bridge/set.js --network b2dev + * asdev: yarn hardhat run scripts/examples/nft_bridge/set.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/nft_bridge/set.js --network as + * b2: yarn hardhat run scripts/examples/nft_bridge/set.js --network b2 + */ + + let address; + let messageSharing; + let bridges; + let nftMaps; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_NFT_BRIDGE; + messageSharing = process.env.B2_DEV_MESSAGE_SHARING; + bridges = [{ + chainId: process.env.B2_DEV_CHAIN_ID, address: process.env.B2_DEV_NFT_BRIDGE, + }]; + nftMaps = [{ + from_chain_id: process.env.B2_DEV_CHAIN_ID, + from_nft_address: '0x1f3B35A031F712E1852260111D4d29165903824F', + to_chain_id: process.env.B2_DEV_CHAIN_ID, + to_nft_address: '0x1f3B35A031F712E1852260111D4d29165903824F', + standard: 1, + status: true, + }]; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_NFT_BRIDGE; + messageSharing = process.env.AS_DEV_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.AS_DEV_NFT_BRIDGE; + messageSharing = process.env.AS_MESSAGE_SHARING; + } else if (network.name == 'b2') { + address = process.env.B2_DEV_NFT_BRIDGE; + messageSharing = process.env.B2_MESSAGE_SHARING; + } + console.log("NftBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const NftBridge = await ethers.getContractFactory("NftBridge"); + const instance = await NftBridge.attach(address) + + // 1. setMessageSharing + let _messageSharing = await instance.messageSharing(); + console.log("NftBridge.messageSharing:", _messageSharing); + if (messageSharing != _messageSharing) { + const tx = await instance.setMessageSharing(messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _messageSharing = await instance.messageSharing() + console.log("NftBridge.messageSharing:", _messageSharing); + } + console.log("1. setMessageSharing success."); + + // 2. grant role + let role = await instance.SENDER_ROLE(); + console.log("NftBridge.SENDER_ROLE Role:", role); + let has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + } + console.log("2. grantRole success."); + + // 3. setBridges + for (const bridge of bridges) { + let bridgeAddress = await instance.bridges(bridge.chainId); + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + if (bridge.address != bridgeAddress) { + const tx = await instance.setBridges(bridge.chainId, bridge.address); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + bridgeAddress = await instance.bridges(bridge.chainId); + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + } + } + console.log("3. setBridges success."); + + // 4. setNftMapping + for (const nftMap of nftMaps) { + console.log("nftMap: ", nftMap); + let _nftMap = await instance.nft_mapping(nftMap.from_chain_id, nftMap.from_nft_address, nftMap.to_chain_id); + console.log("_nftMap: ", _nftMap); + if (_nftMap.nft_address != nftMap.to_nft_address || _nftMap.standard != nftMap.standard || _nftMap.status != nftMap.status) { + const tx = await instance.setNftMapping(nftMap.from_chain_id, nftMap.from_nft_address, nftMap.to_chain_id, nftMap.to_nft_address, nftMap.standard, nftMap.status); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _nftMap = await instance.nft_mapping(nftMap.from_chain_id, nftMap.from_nft_address, nftMap.to_chain_id); + console.log("_nftMap:", _nftMap); + } + } + console.log("4. setNftMapping success."); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/nft_bridge/test.js b/contracts/scripts/examples/nft_bridge/test.js new file mode 100644 index 00000000..a26617c1 --- /dev/null +++ b/contracts/scripts/examples/nft_bridge/test.js @@ -0,0 +1,52 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/nft_bridge/test.js --network b2dev + * asdev: yarn hardhat run scripts/examples/nft_bridge/test.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/nft_bridge/test.js --network as + * b2: yarn hardhat run scripts/examples/nft_bridge/test.js --network b2 + */ + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_NFT_BRIDGE; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_NFT_BRIDGE; + } else if (network.name == 'as') { + address = process.env.AS_NFT_BRIDGE; + } else if (network.name == 'b2') { + address = process.env.B2_NFT_BRIDGE; + } + console.log("NftBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const NftBridge = await ethers.getContractFactory("NftBridge"); + const instance = await NftBridge.attach(address) + + let nft = { + address: '0x1f3B35A031F712E1852260111D4d29165903824F', + token_id: 1, + amount: 1, + to_chain_id: process.env.B2_DEV_CHAIN_ID, + to_token_bridge: process.env.B2_DEV_NFT_BRIDGE, + to_address: owner.address, + } + console.log("nft: ", nft); + + // function lock(address nft_address, uint256 token_id, uint256 amount, uint256 to_chain_id, address to_token_bridge, address to_address) external + const tx = await instance.lock(nft.address, nft.token_id, nft.amount, nft.to_chain_id, nft.to_token_bridge, nft.to_address); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/nft_bridge/upgrade.js b/contracts/scripts/examples/nft_bridge/upgrade.js new file mode 100644 index 00000000..1f0792b9 --- /dev/null +++ b/contracts/scripts/examples/nft_bridge/upgrade.js @@ -0,0 +1,39 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/nft_bridge/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/examples/nft_bridge/upgrade.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/nft_bridge/upgrade.js --network as + * b2: yarn hardhat run scripts/examples/nft_bridge/upgrade.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_NFT_BRIDGE; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_NFT_BRIDGE; + } else if (network.name == 'as') { + address = process.env.AS_NFT_BRIDGE; + } else if (network.name == 'b2') { + address = process.env.B2_NFT_BRIDGE; + } + console.log("NftBridge Address: ", address); + + // Upgrading + const NftBridge = await ethers.getContractFactory("NftBridge"); + const upgraded = await upgrades.upgradeProxy(address, NftBridge); + console.log("NftBridge upgraded:", upgraded.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/cashier/deploy.js b/contracts/scripts/examples/orderbook/cashier/deploy.js new file mode 100644 index 00000000..07d35f77 --- /dev/null +++ b/contracts/scripts/examples/orderbook/cashier/deploy.js @@ -0,0 +1,28 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/cashier/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/cashier/deploy.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/cashier/deploy.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/cashier/deploy.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + // deploy + const Cashier = await ethers.getContractFactory("Cashier"); + const instance = await upgrades.deployProxy(Cashier); + await instance.waitForDeployment(); + console.log("Cashier Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/cashier/grant_role.js b/contracts/scripts/examples/orderbook/cashier/grant_role.js new file mode 100644 index 00000000..148de95e --- /dev/null +++ b/contracts/scripts/examples/orderbook/cashier/grant_role.js @@ -0,0 +1,57 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/cashier/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/cashier/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/cashier/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/cashier/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_CASHIER; + account = ""; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_CASHIER; + account = ""; + } else if (network.name == 'as') { + address = process.env.AS_CASHIER; + account = ""; + } else if (network.name == 'b2') { + address = process.env.B2_CASHIER; + account = ""; + } + console.log("NftBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Cashier = await ethers.getContractFactory("Cashier"); + const instance = await Cashier.attach(address) + + const role = await instance.ADMIN_ROLE(); + // const role = await instance.UPGRADE_ROLE(); + // const role = await instance.SENDER_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/cashier/set.js b/contracts/scripts/examples/orderbook/cashier/set.js new file mode 100644 index 00000000..ae0574ee --- /dev/null +++ b/contracts/scripts/examples/orderbook/cashier/set.js @@ -0,0 +1,103 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/cashier/set.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/cashier/set.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/cashier/set.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/cashier/set.js --network b2 + */ + + let address; + let messageSharing; + let orderbook; + let wihitelists; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_CASHIER; + messageSharing = process.env.B2_DEV_MESSAGE_SHARING; + orderbook = { + chain_id: process.env.B2_DEV_CHAIN_ID, contract_address: process.env.B2_DEV_ORDERBOOK, + }; + wihitelists = [{ + token_address: '0x0000000000000000000000000000000000000000', deposit_amount: '1000000', status: true, + }, { + token_address: '0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06', deposit_amount: '1000000', status: true, + }]; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_CASHIER; + messageSharing = process.env.AS_DEV_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.AS_DEV_CASHIER; + messageSharing = process.env.AS_MESSAGE_SHARING; + } else if (network.name == 'b2') { + address = process.env.B2_DEV_CASHIER; + messageSharing = process.env.B2_MESSAGE_SHARING; + } + console.log("Cashier Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Cashier = await ethers.getContractFactory("Cashier"); + const instance = await Cashier.attach(address) + + // 1. setMessageSharing + let _messageSharing = await instance.message_sharing(); + console.log("Cashier.messageSharing:", _messageSharing); + if (messageSharing != _messageSharing) { + const tx = await instance.setMessageSharing(messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _messageSharing = await instance.message_sharing() + console.log("Cashier.messageSharing:", _messageSharing); + } + console.log("1. setMessageSharing success."); + + // 2. grant role + let role = await instance.SENDER_ROLE(); + console.log("Cashier.SENDER_ROLE Role:", role); + let has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + } + console.log("2. grantRole success."); + + // 3. setOrderbook + let _orderbook = await instance.orderbook(); + console.log("_orderbook: ", _orderbook); + if (_orderbook.chain_id != orderbook.chain_id || _orderbook.contract_address != orderbook.contract_address) { + const tx = await instance.setOrderbook(orderbook.contract_address, orderbook.chain_id); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + } + console.log("3. setOrderbook success."); + + // 4. setWihitelist + for (const wihitelist of wihitelists) { + let _wihitelist = await instance.wihitelists(wihitelist.token_address); + if (_wihitelist.token_address != wihitelist.token_address || _wihitelist.deposit_amount != wihitelist.deposit_amount || _wihitelist.status != wihitelist.status) { + console.log("wihitelist: ", wihitelist); + const tx = await instance.setWihitelist(wihitelist.token_address, wihitelist); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _wihitelist = await instance.wihitelists(wihitelist.token_address); + } + console.log("_wihitelist: ", _wihitelist); + } + console.log("4. setNftMapping success."); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/cashier/test.js b/contracts/scripts/examples/orderbook/cashier/test.js new file mode 100644 index 00000000..4bb7423f --- /dev/null +++ b/contracts/scripts/examples/orderbook/cashier/test.js @@ -0,0 +1,47 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/cashier/test.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/cashier/test.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/cashier/test.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/cashier/test.js --network b2 + */ + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_CASHIER; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_CASHIER; + } else if (network.name == 'as') { + address = process.env.AS_CASHIER; + } else if (network.name == 'b2') { + address = process.env.B2_CASHIER; + } + console.log("Cashier Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Cashier = await ethers.getContractFactory("Cashier"); + const instance = await Cashier.attach(address) + + let payOrder = { + order_no: '10001', token_address: '0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06', value: 0, + } + console.log("payOrder: ", payOrder); + const tx = await instance.payOrder(payOrder.order_no, payOrder.token_address, { + value: payOrder.value + }); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/cashier/upgrade.js b/contracts/scripts/examples/orderbook/cashier/upgrade.js new file mode 100644 index 00000000..e5fb689a --- /dev/null +++ b/contracts/scripts/examples/orderbook/cashier/upgrade.js @@ -0,0 +1,39 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/cashier/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/cashier/upgrade.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/cashier/upgrade.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/cashier/upgrade.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_CASHIER; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_CASHIER; + } else if (network.name == 'as') { + address = process.env.AS_CASHIER; + } else if (network.name == 'b2') { + address = process.env.B2_CASHIER; + } + console.log("Cashier Address: ", address); + + // Upgrading + const Cashier = await ethers.getContractFactory("Cashier"); + const upgraded = await upgrades.upgradeProxy(address, Cashier); + console.log("Cashier upgraded:", upgraded.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/cashier/withdraw.js b/contracts/scripts/examples/orderbook/cashier/withdraw.js new file mode 100644 index 00000000..7360371e --- /dev/null +++ b/contracts/scripts/examples/orderbook/cashier/withdraw.js @@ -0,0 +1,49 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/cashier/withdraw.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/cashier/withdraw.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/cashier/withdraw.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/cashier/withdraw.js --network b2 + */ + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_CASHIER; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_CASHIER; + } else if (network.name == 'as') { + address = process.env.AS_CASHIER; + } else if (network.name == 'b2') { + address = process.env.B2_CASHIER; + } + console.log("Cashier Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Cashier = await ethers.getContractFactory("Cashier"); + const instance = await Cashier.attach(address) + + let withdraw = { + token_address: '0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06', + to_address: '0x0000000000000000000000000000000000000001', + amount: 1, + } + console.log("withdraw: ", withdraw); + let withdraw_balance = await instance.withdraw_balance(); + console.log("withdraw_balance:", withdraw_balance); + const tx = await instance.withdraw(withdraw.token_address, withdraw.to_address, withdraw.amount); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/orderbook/deploy.js b/contracts/scripts/examples/orderbook/orderbook/deploy.js new file mode 100644 index 00000000..047813f4 --- /dev/null +++ b/contracts/scripts/examples/orderbook/orderbook/deploy.js @@ -0,0 +1,28 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/orderbook/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/orderbook/deploy.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/orderbook/deploy.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/orderbook/deploy.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + // deploy + const Orderbook = await ethers.getContractFactory("Orderbook"); + const instance = await upgrades.deployProxy(Orderbook); + await instance.waitForDeployment(); + console.log("Orderbook Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/orderbook/grant_role.js b/contracts/scripts/examples/orderbook/orderbook/grant_role.js new file mode 100644 index 00000000..9c5f4e07 --- /dev/null +++ b/contracts/scripts/examples/orderbook/orderbook/grant_role.js @@ -0,0 +1,57 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/orderbook/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/orderbook/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/orderbook/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/orderbook/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_ORDERBOOK; + account = ""; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_ORDERBOOK; + account = ""; + } else if (network.name == 'as') { + address = process.env.AS_ORDERBOOK; + account = ""; + } else if (network.name == 'b2') { + address = process.env.B2_ORDERBOOK; + account = ""; + } + console.log("NftBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Orderbook = await ethers.getContractFactory("Orderbook"); + const instance = await Orderbook.attach(address) + + const role = await instance.ADMIN_ROLE(); + // const role = await instance.UPGRADE_ROLE(); + // const role = await instance.SENDER_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/orderbook/set.js b/contracts/scripts/examples/orderbook/orderbook/set.js new file mode 100644 index 00000000..321331bc --- /dev/null +++ b/contracts/scripts/examples/orderbook/orderbook/set.js @@ -0,0 +1,87 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/orderbook/set.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/orderbook/set.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/orderbook/set.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/orderbook/set.js --network b2 + */ + + let address; + let messageSharing; + let bridges; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_ORDERBOOK; + messageSharing = process.env.B2_DEV_MESSAGE_SHARING; + bridges = [{ + chainId: process.env.B2_DEV_CHAIN_ID, address: process.env.B2_DEV_CASHIER, + }]; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_ORDERBOOK; + messageSharing = process.env.AS_DEV_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.AS_ORDERBOOK; + messageSharing = process.env.AS_MESSAGE_SHARING; + } else if (network.name == 'b2') { + address = process.env.B2_ORDERBOOK; + messageSharing = process.env.B2_MESSAGE_SHARING; + } + console.log("Orderbook Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Orderbook = await ethers.getContractFactory("Orderbook"); + const instance = await Orderbook.attach(address) + + // 1. setMessageSharing + let _messageSharing = await instance.message_sharing(); + console.log("Orderbook.messageSharing:", _messageSharing); + if (messageSharing != _messageSharing) { + const tx = await instance.setMessageSharing(messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _messageSharing = await instance.message_sharing() + console.log("Orderbook.messageSharing:", _messageSharing); + } + console.log("1. setMessageSharing success."); + + // 2. grant role + let role = await instance.SENDER_ROLE(); + console.log("Orderbook.SENDER_ROLE Role:", role); + let has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, messageSharing) + console.log("has role:", has) + } + console.log("2. grantRole success."); + + // 3. setBridges + for (const bridge of bridges) { + let bridgeAddress = await instance.bridges(bridge.chainId); + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + if (bridge.address != bridgeAddress) { + const tx = await instance.setBridges(bridge.chainId, bridge.address); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + bridgeAddress = await instance.bridges(bridge.chainId); + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + } + } + console.log("3. setBridges success."); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/orderbook/test.js b/contracts/scripts/examples/orderbook/orderbook/test.js new file mode 100644 index 00000000..710b0134 --- /dev/null +++ b/contracts/scripts/examples/orderbook/orderbook/test.js @@ -0,0 +1,47 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/orderbook/test.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/orderbook/test.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/orderbook/test.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/orderbook/test.js --network b2 + */ + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_ORDERBOOK; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_ORDERBOOK; + } else if (network.name == 'as') { + address = process.env.AS_ORDERBOOK; + } else if (network.name == 'b2') { + address = process.env.B2_ORDERBOOK; + } + console.log("Orderbook Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const Orderbook = await ethers.getContractFactory("Orderbook"); + const instance = await Orderbook.attach(address) + + let settle = { + order_no: '10001', fee_amount: '1000' + } + console.log("settle: ", settle); + let order = await instance.orders(settle.order_no); + console.log("order: ", order); + const tx = await instance.settle(settle.order_no, settle.fee_amount); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/orderbook/orderbook/upgrade.js b/contracts/scripts/examples/orderbook/orderbook/upgrade.js new file mode 100644 index 00000000..bc2707c9 --- /dev/null +++ b/contracts/scripts/examples/orderbook/orderbook/upgrade.js @@ -0,0 +1,39 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/orderbook/orderbook/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/examples/orderbook/orderbook/upgrade.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/orderbook/orderbook/upgrade.js --network as + * b2: yarn hardhat run scripts/examples/orderbook/orderbook/upgrade.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_ORDERBOOK; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_ORDERBOOK; + } else if (network.name == 'as') { + address = process.env.AS_ORDERBOOK; + } else if (network.name == 'b2') { + address = process.env.B2_ORDERBOOK; + } + console.log("Orderbook Address: ", address); + + // Upgrading + const Orderbook = await ethers.getContractFactory("Orderbook"); + const upgraded = await upgrades.upgradeProxy(address, Orderbook); + console.log("Orderbook upgraded:", upgraded.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/token_bridge/deploy.js b/contracts/scripts/examples/token_bridge/deploy.js new file mode 100644 index 00000000..fd61e4df --- /dev/null +++ b/contracts/scripts/examples/token_bridge/deploy.js @@ -0,0 +1,28 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/token_bridge/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/examples/token_bridge/deploy.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/token_bridge/deploy.js --network as + * b2: yarn hardhat run scripts/examples/token_bridge/deploy.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + // deploy + const TokenBridge = await ethers.getContractFactory("TokenBridge"); + const instance = await upgrades.deployProxy(TokenBridge); + await instance.waitForDeployment(); + console.log("TokenBridge Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/token_bridge/grant_role.js b/contracts/scripts/examples/token_bridge/grant_role.js new file mode 100644 index 00000000..532358da --- /dev/null +++ b/contracts/scripts/examples/token_bridge/grant_role.js @@ -0,0 +1,57 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/token_bridge/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/examples/token_bridge/grant_role.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/token_bridge/grant_role.js --network as + * b2: yarn hardhat run scripts/examples/token_bridge/grant_role.js --network b2 + */ + + let address; + let account; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_TOKEN_BRIDGE; + account = ""; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_TOKEN_BRIDGE; + account = ""; + } else if (network.name == 'as') { + address = process.env.AS_TOKEN_BRIDGE; + account = ""; + } else if (network.name == 'b2') { + address = process.env.B2_TOKEN_BRIDGE; + account = ""; + } + console.log("TokenBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const TokenBridge = await ethers.getContractFactory("TokenBridge"); + const instance = await TokenBridge.attach(address) + + const role = await instance.ADMIN_ROLE(); + // const role = await instance.UPGRADE_ROLE(); + // const role = await instance.SENDER_ROLE(); + console.log("role hash:", role); + + let has = await instance.hasRole(role, account) + console.log("has role:", has) + if (!has) { + const tx = await instance.grantRole(role, account); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + has = await instance.hasRole(role, account) + console.log("has role:", has) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/token_bridge/set.js b/contracts/scripts/examples/token_bridge/set.js new file mode 100644 index 00000000..823cd7c7 --- /dev/null +++ b/contracts/scripts/examples/token_bridge/set.js @@ -0,0 +1,107 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/token_bridge/set.js --network b2dev + * asdev: yarn hardhat run scripts/examples/token_bridge/set.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/token_bridge/set.js --network as + * b2: yarn hardhat run scripts/examples/token_bridge/set.js --network b2 + */ + + let address; + let messageSharing; + let bridges; + let tokenMaps; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_TOKEN_BRIDGE; + messageSharing = process.env.B2_DEV_MESSAGE_SHARING; + bridges = [{ + chainId: process.env.B2_DEV_CHAIN_ID, address: process.env.B2_DEV_TOKEN_BRIDGE, + }]; + tokenMaps = [{ + from_chain_id: process.env.B2_DEV_CHAIN_ID, + from_token_address: '0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06', + token_address: '0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06', + }]; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_TOKEN_BRIDGE; + messageSharing = process.env.AS_DEV_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.AS_TOKEN_BRIDGE; + messageSharing = process.env.AS_MESSAGE_SHARING; + } else if (network.name == 'b2') { + address = process.env.B2_TOKEN_BRIDGE; + messageSharing = process.env.B2_MESSAGE_SHARING; + } + console.log("TokenBridge Address: ", address); + console.log("MessageSharing Address: ", messageSharing); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const TokenBridge = await ethers.getContractFactory("TokenBridge"); + const instance = await TokenBridge.attach(address) + + // 1. setMessageSharing + let _messageSharing = await instance.messageSharing(); + if (messageSharing != _messageSharing) { + console.log("TokenBridge.messageSharing:", _messageSharing); + const tx = await instance.setMessageSharing(messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _messageSharing = await instance.messageSharing() + } + console.log("TokenBridge.messageSharing:", _messageSharing); + console.log("1. setMessageSharing success."); + + // 2. grant role + let role = await instance.SENDER_ROLE(); + let has = await instance.hasRole(role, messageSharing) + if (!has) { + console.log("TokenBridge.SENDER_ROLE Role: ", role, ", has role: ", has) + const tx = await instance.grantRole(role, messageSharing); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`); + has = await instance.hasRole(role, messageSharing); + } + console.log("TokenBridge.SENDER_ROLE Role: ", role, ", has role: ", has) + console.log("2. grantRole success."); + + // 3. setBridges + for (const bridge of bridges) { + let bridgeAddress = await instance.bridges(bridge.chainId); + if (bridge.address != bridgeAddress) { + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + const tx = await instance.setBridges(bridge.chainId, bridge.address); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + bridgeAddress = await instance.bridges(bridge.chainId); + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + } + console.log("chainId:", bridge.chainId, ", bridgeAddress: ", bridgeAddress); + } + console.log("3. setBridges success."); + + // 4. setTokenMapping + for (const tokenMap of tokenMaps) { + console.log("tokenMap: ", tokenMap); + let token_address = await instance.token_mapping(tokenMap.from_chain_id, tokenMap.from_token_address); + if (tokenMap.token_address != token_address) { + const tx = await instance.setTokenMapping(tokenMap.from_chain_id, tokenMap.from_token_address, tokenMap.token_address); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`); + } + console.log("token_address: ", token_address); + } + console.log("4. setTokenMapping success."); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/token_bridge/test.js b/contracts/scripts/examples/token_bridge/test.js new file mode 100644 index 00000000..40b47262 --- /dev/null +++ b/contracts/scripts/examples/token_bridge/test.js @@ -0,0 +1,59 @@ +const {ethers, run, network, upgrades} = require("hardhat") + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/token_bridge/test.js --network b2dev + * asdev: yarn hardhat run scripts/examples/token_bridge/test.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/token_bridge/test.js --network as + * b2: yarn hardhat run scripts/examples/token_bridge/test.js --network b2 + */ + + let address; + let lock; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_TOKEN_BRIDGE; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_TOKEN_BRIDGE; + } else if (network.name == 'as') { + address = process.env.AS_TOKEN_BRIDGE; + } else if (network.name == 'b2') { + address = process.env.B2_TOKEN_BRIDGE; + } + + console.log("TokenBridge Address: ", address); + + const [owner] = await ethers.getSigners(); + console.log("Owner Address:", owner.address); + + const TokenBridge = await ethers.getContractFactory("TokenBridge"); + const instance = await TokenBridge.attach(address) + + // 1. lock + lock = { + token_address: '0xE6BF3CCAb0D6b461B281F04349aD73d839c25B06', + // token_address: '0x0000000000000000000000000000000000000000', + amount: 1000, + to_chain_id: process.env.B2_DEV_CHAIN_ID, + to_token_bridge: process.env.B2_DEV_TOKEN_BRIDGE, + to_address: owner.address, + }; + console.log("lock: ", lock); + let value = 0; + if (lock.token_address == '0x0000000000000000000000000000000000000000') { + value = lock.amount; + } + const tx = await instance.lock(lock.token_address, lock.amount, lock.to_chain_id, lock.to_token_bridge, lock.to_address, { + value: value + }); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/examples/token_bridge/upgrade.js b/contracts/scripts/examples/token_bridge/upgrade.js new file mode 100644 index 00000000..32d7752b --- /dev/null +++ b/contracts/scripts/examples/token_bridge/upgrade.js @@ -0,0 +1,39 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/examples/token_bridge/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/examples/token_bridge/upgrade.js --network asdev + * # pord + * as: yarn hardhat run scripts/examples/token_bridge/upgrade.js --network as + * b2: yarn hardhat run scripts/examples/token_bridge/upgrade.js --network b2 + */ + + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + let address; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_TOKEN_BRIDGE; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_TOKEN_BRIDGE; + } else if (network.name == 'b2') { + address = process.env.B2_TOKEN_BRIDGE; + } else if (network.name == 'as') { + address = process.env.AS_TOKEN_BRIDGE; + } + console.log("TokenBridge Address:", address); + + // Upgrading + const TokenBridge = await ethers.getContractFactory("TokenBridge"); + const upgraded = await upgrades.upgradeProxy(address, TokenBridge); + console.log("TokenBridge upgraded:", upgraded.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/lock/deploy.js b/contracts/scripts/lock/deploy.js deleted file mode 100644 index bc0b0c84..00000000 --- a/contracts/scripts/lock/deploy.js +++ /dev/null @@ -1,28 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/lock/deploy.js --network b2dev - * asdev: yarn hardhat run scripts/lock/deploy.js --network asdev - * # pord - * as: yarn hardhat run scripts/lock/deploy.js --network as - * b2: yarn hardhat run scripts/lock/deploy.js --network b2 - */ - - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - - // deploy - const TokenLockerContract = await ethers.getContractFactory("TokenLockerContract"); - const instance = await upgrades.deployProxy(TokenLockerContract); - await instance.waitForDeployment(); - console.log("TokenLockerContract Address:", instance.target); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/lock/grant_role.js b/contracts/scripts/lock/grant_role.js deleted file mode 100644 index 8d00415d..00000000 --- a/contracts/scripts/lock/grant_role.js +++ /dev/null @@ -1,54 +0,0 @@ -const {ethers, run, network, upgrades} = require("hardhat") - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/lock/grant_role.js --network b2dev - * asdev: yarn hardhat run scripts/lock/grant_role.js --network asdev - * # pord - * as: yarn hardhat run scripts/lock/grant_role.js --network as - * b2: yarn hardhat run scripts/lock/grant_role.js --network b2 - */ - - let businessAddress; - let senderAddress; - if (network.name == 'b2dev') { - businessAddress = "0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b"; - senderAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; - } else if (network.name == 'asdev') { - businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; - senderAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'as') { - businessAddress = ""; - senderAddress = ""; - } else if (network.name == 'b2') { - businessAddress = ""; - senderAddress = ""; - } - console.log("Business Address: ", businessAddress); - - const [owner] = await ethers.getSigners(); - console.log("Owner Address:", owner.address); - - const TokenLockerContract = await ethers.getContractFactory("TokenLockerContract"); - const instance = await TokenLockerContract.attach(businessAddress) - let role = await instance.SENDER_ROLE(); - console.log("role hash:", role); - - let has = await instance.hasRole(role, senderAddress) - console.log("has role:", has) - if (!has) { - const tx = await instance.grantRole(role, senderAddress); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - has = await instance.hasRole(role, senderAddress) - console.log("has role:", has) - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/lock/lock.js b/contracts/scripts/lock/lock.js deleted file mode 100644 index 61c48428..00000000 --- a/contracts/scripts/lock/lock.js +++ /dev/null @@ -1,46 +0,0 @@ -const {ethers, run, network, upgrades} = require("hardhat") - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/lock/lock.js --network b2dev - * asdev: yarn hardhat run scripts/lock/lock.js --network asdev - * # pord - * as: yarn hardhat run scripts/lock/lock.js --network as - * b2: yarn hardhat run scripts/lock/lock.js --network b2 - */ - - let businessAddress; - if (network.name == 'b2dev') { - businessAddress = "0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b"; - } else if (network.name == 'asdev') { - businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; - } else if (network.name == 'as') { - businessAddress = ""; - } else if (network.name == 'b2') { - businessAddress = ""; - } - console.log("Business Address: ", businessAddress); - - const [owner] = await ethers.getSigners(); - console.log("Owner Address:", owner.address); - - const TokenLockerContract = await ethers.getContractFactory("TokenLockerContract"); - const instance = await TokenLockerContract.attach(businessAddress) - - let token_address = '0xc810b0b75Af60D60De8451587DF9cb240BE22d9d'; - let amount = '1000'; - let to_chain_id = 1123; - let to_business_contract = '0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b'; - let to_address = '0x502FA825441D215EDECc54804d74f3FBFe20fb97'; - const tx = await instance.lock(token_address, amount, to_chain_id, to_business_contract, to_address); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/lock/set.js b/contracts/scripts/lock/set.js deleted file mode 100644 index b21a5976..00000000 --- a/contracts/scripts/lock/set.js +++ /dev/null @@ -1,73 +0,0 @@ -const {ethers, run, network, upgrades} = require("hardhat") - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/lock/set.js --network b2dev - * asdev: yarn hardhat run scripts/lock/set.js --network asdev - * # pord - * as: yarn hardhat run scripts/lock/set.js --network as - * b2: yarn hardhat run scripts/lock/set.js --network b2 - */ - - let businessAddress; - let messageAddress; - if (network.name == 'b2dev') { - businessAddress = "0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b"; - messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; - } else if (network.name == 'asdev') { - businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'as') { - businessAddress = ""; - messageAddress = ""; - } else if (network.name == 'b2') { - businessAddress = ""; - messageAddress = ""; - } - console.log("Business Address: ", businessAddress); - - const [owner] = await ethers.getSigners(); - console.log("Owner Address:", owner.address); - - const TokenLockerContract = await ethers.getContractFactory("TokenLockerContract"); - const instance = await TokenLockerContract.attach(businessAddress) - let messageSharing = await instance.messageSharing(); - console.log("messageSharing address:", messageSharing); - - if (messageSharing != messageAddress) { - const tx = await instance.setB2MessageSharing(messageAddress); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - } - - let chain_id = 1123; - let locker = '0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b'; - - let _locker = await instance.locks(chain_id); - if (_locker != locker) { - const tx = await instance.setLocks(chain_id, locker); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - } - - let token_address = '0xc810b0b75Af60D60De8451587DF9cb240BE22d9d'; - let to_token_address = '0xc810b0b75Af60D60De8451587DF9cb240BE22d9d'; - - let _to_token_address = await instance.tokens(chain_id, token_address); - if (_to_token_address != to_token_address) { - const tx = await instance.setTokens(chain_id, token_address, to_token_address); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - } - - - -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/lock/upgrade.js b/contracts/scripts/lock/upgrade.js deleted file mode 100644 index 372e4784..00000000 --- a/contracts/scripts/lock/upgrade.js +++ /dev/null @@ -1,39 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/lock/upgrade.js --network b2dev - * asdev: yarn hardhat run scripts/lock/upgrade.js --network asdev - * # pord - * as: yarn hardhat run scripts/lock/upgrade.js --network as - * b2: yarn hardhat run scripts/lock/upgrade.js --network b2 - */ - - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - - let lockerAddress = ''; - if (network.name == 'b2dev') { - lockerAddress = "0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b"; - } else if (network.name == 'asdev') { - lockerAddress = ""; - } else if (network.name == 'b2') { - lockerAddress = ""; - } else if (network.name == 'as') { - lockerAddress = ""; - } - console.log("locker Address: ", lockerAddress); - - // Upgrading - const TokenLockerContract = await ethers.getContractFactory("TokenLockerContract"); - const upgraded = await upgrades.upgradeProxy(lockerAddress, TokenLockerContract); - console.log("TokenLockerContract upgraded:", upgraded.target); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/message/call.js b/contracts/scripts/message/call.js deleted file mode 100644 index a383c15f..00000000 --- a/contracts/scripts/message/call.js +++ /dev/null @@ -1,53 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/message/call.js --network b2dev - * asdev: yarn hardhat run scripts/message/call.js --network asdev - * # pord - * b2: yarn hardhat run scripts/message/call.js --network b2 - * as: yarn hardhat run scripts/message/call.js --network as - */ - - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - - let messageAddress; - let businessAddress; - let to_chain_id; - if (network.name == 'b2dev') { - // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; - businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; - to_chain_id = 421614; - } else if (network.name == 'asdev') { - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - businessAddress = "0x804641e29f5F63a037022f0eE90A493541cCb869"; - to_chain_id = 1123; - } else if (network.name == 'b2') { - messageAddress = ""; - businessAddress = ""; - } else if (network.name == 'as') { - messageAddress = ""; - businessAddress = ""; - } - console.log("Message Address: ", messageAddress); - console.log("Business Address: ", businessAddress); - // MessageSharing.sol - // TODO - let data = '0x1234'; - const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); - const instance = await B2MessageSharing.attach(messageAddress); - - let tx = await instance.call(to_chain_id, businessAddress, data); - const txReceipt = await tx.wait(1); - console.log("txReceipt:", txReceipt.hash); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/message/deploy.js b/contracts/scripts/message/deploy.js deleted file mode 100644 index 1041340a..00000000 --- a/contracts/scripts/message/deploy.js +++ /dev/null @@ -1,26 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/message/deploy.js --network b2dev - * asdev: yarn hardhat run scripts/message/deploy.js --network asdev - * # pord - * b2: yarn hardhat run scripts/message/deploy.js --network b2 - * as: yarn hardhat run scripts/message/deploy.js --network as - */ - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); // 0x2BC22b1754ff4aDea4Ef9bdF9b16A7210bC45579 - - const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); - const instance = await upgrades.deployProxy(B2MessageSharing); - await instance.waitForDeployment(); - console.log("B2MessageSharing Address:", instance.target); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/message/revoke_role.js b/contracts/scripts/message/revoke_role.js deleted file mode 100644 index 96f78fc9..00000000 --- a/contracts/scripts/message/revoke_role.js +++ /dev/null @@ -1,55 +0,0 @@ -const {ethers, network} = require("hardhat"); - - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/message/revoke_role.js --network b2dev - * asdev: yarn hardhat run scripts/message/revoke_role.js --network asdev - * # pord - * b2: yarn hardhat run scripts/message/revoke_role.js --network b2 - * as: yarn hardhat run scripts/message/revoke_role.js --network as - */ - const [owner] = await ethers.getSigners() - console.log("Owner Address: ", owner.address); - let messageAddress; - if (network.name == 'b2dev') { - messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - } else if (network.name == 'asdev') { - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'b2') { - messageAddress = ""; - } else if (network.name == 'as') { - messageAddress = ""; - } - console.log("Message Address: ", messageAddress); - // B2MessageSharing - const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); - const instance = await B2MessageSharing.attach(messageAddress); - // TODO - let role = await instance.ADMIN_ROLE(); // admin role - // role = await instance.UPGRADE_ROLE(); // upgrade role - // role = await instance.validatorRole(1); // validatorRole(uint256 chain_id) - console.log("role hash: ", role); - - // TODO - let accounts = []; - for (const account of accounts) { - let hasRole = await instance.hasRole(role, account); - console.log("account: ", account, " => hasRole:", hasRole) - if (hasRole) { - const tx = await instance.revokeRole(role, account); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - hasRole = await instance.hasRole(role, account) - console.log("account: ", account, " => hasRole:", hasRole) - } - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/message/send.js b/contracts/scripts/message/send.js deleted file mode 100644 index be595ddf..00000000 --- a/contracts/scripts/message/send.js +++ /dev/null @@ -1,65 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -``` -# Listener - -``` - -async function main() { - /** - * b2dev: yarn hardhat run scripts/message/send.js --network b2dev - * asdev: yarn hardhat run scripts/message/send.js --network asdev - * b2: yarn hardhat run scripts/message/send.js --network b2 - * as: yarn hardhat run scripts/message/send.js --network as - */ - - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - - let messageAddress; - if (network.name == 'b2dev') { - // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; - } else if (network.name == 'asdev') { - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'b2') { - messageAddress = ""; - } else if (network.name == 'as') { - messageAddress = ""; - } - console.log("Message Address: ", messageAddress); - - const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); - const instance = await B2MessageSharing.attach(messageAddress); - - let from_chain_id = 421614; - let from_id = '0x000000000000000000000000000000000000000000000000000000000000000a'; - let from_sender = "0x98C6e991D1b338604D4Fa10F351a27012eFe8eC2"; - let to_chain_id = 1123; - let contract_address = '0x804641e29f5F63a037022f0eE90A493541cCb869'; - let data = '0x1234'; - let signatures = ['0x27bda5470df8273d66f40fc50f4f6cd7b79f890a02383519c9e0315cbedc180b283381744a10fa7924ceca44faf947dbc3c94aaf059ed7d802393b58b490db321b']; - - let weight = 0; - for (const signature of signatures) { - let verify = await instance.verify(from_chain_id, from_id, from_sender, to_chain_id, contract_address, data, signature); - console.log("verify:", verify); - if (verify) { - weight = weight + 1; - } - } - let _weight = await instance.weights(from_chain_id); - console.log("weight:", _weight); - // if (weight >= _weight) { - // let sendTx = await instance.send(from_chain_id, from_id, from_sender, contract_address, data, signatures); - // const sendTxReceipt = await sendTx.wait(1); - // console.log("sendTxReceipt:", sendTxReceipt.hash); - // } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/message/set_weight.js b/contracts/scripts/message/set_weight.js deleted file mode 100644 index 3903ef97..00000000 --- a/contracts/scripts/message/set_weight.js +++ /dev/null @@ -1,51 +0,0 @@ -const {ethers, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/message/set_weight.js --network b2dev - * asdev: yarn hardhat run scripts/message/set_weight.js --network asdev - * # pord - * b2: yarn hardhat run scripts/message/set_weight.js --network b2 - * as: yarn hardhat run scripts/message/set_weight.js --network as - */ - const [owner] = await ethers.getSigners() - console.log("Owner Address: ", owner.address); - let messageAddress; - if (network.name == 'b2dev') { - // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; - } else if (network.name == 'asdev') { - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'b2') { - messageAddress = ""; - } else if (network.name == 'as') { - messageAddress = ""; - } - console.log("Message Address: ", messageAddress); - // sharing - const sharing = await ethers.getContractFactory("B2MessageSharing"); - const instance = await sharing.attach(messageAddress); - - let _weight = 1; - // let chainId = 0; - // let chainId = 421614; - let chainId = 1123; - - let weight = await instance.weights(chainId); - console.log("weight: ", weight); - if (_weight != weight) { - const tx = await instance.setWeight(chainId, _weight); - const txReceipt = await tx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - weight = await instance.weights(chainId); - console.log("weight: ", weight); - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) diff --git a/contracts/scripts/message/upgrade.js b/contracts/scripts/message/upgrade.js deleted file mode 100644 index 70ac953c..00000000 --- a/contracts/scripts/message/upgrade.js +++ /dev/null @@ -1,38 +0,0 @@ -const {ethers, upgrades, network} = require("hardhat"); - -async function main() { - /** - * # dev - * b2dev: yarn hardhat run scripts/message/upgrade.js --network b2dev - * asdev: yarn hardhat run scripts/message/upgrade.js --network asdev - * # pord - * b2: yarn hardhat run scripts/message/upgrade.js --network b2 - * as: yarn hardhat run scripts/message/upgrade.js --network as - */ - const [owner] = await ethers.getSigners() - console.log("Owner Address:", owner.address); - let messageAddress = ''; - if (network.name == 'b2dev') { - // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; - } else if (network.name == 'asdev') { - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; - } else if (network.name == 'b2') { - messageAddress = ""; - } else if (network.name == 'as') { - messageAddress = ""; - } - console.log("Message Address: ", messageAddress); - - // Upgrading - const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); - const upgraded = await upgrades.upgradeProxy(messageAddress, B2MessageSharing); - console.log("B2MessageSharing upgraded:", upgraded.target); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/message_sharing/deploy.js b/contracts/scripts/message_sharing/deploy.js new file mode 100644 index 00000000..1f298e00 --- /dev/null +++ b/contracts/scripts/message_sharing/deploy.js @@ -0,0 +1,26 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/message_sharing/deploy.js --network b2dev + * asdev: yarn hardhat run scripts/message_sharing/deploy.js --network asdev + * # pord + * b2: yarn hardhat run scripts/message_sharing/deploy.js --network b2 + * as: yarn hardhat run scripts/message_sharing/deploy.js --network as + */ + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + + const MessageSharing = await ethers.getContractFactory("MessageSharing"); + const instance = await upgrades.deployProxy(MessageSharing); + await instance.waitForDeployment(); + console.log("MessageSharing Address:", instance.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/message/grant_role.js b/contracts/scripts/message_sharing/grant_role.js similarity index 50% rename from contracts/scripts/message/grant_role.js rename to contracts/scripts/message_sharing/grant_role.js index fb84e810..3dacbded 100644 --- a/contracts/scripts/message/grant_role.js +++ b/contracts/scripts/message_sharing/grant_role.js @@ -3,39 +3,40 @@ const {ethers, network} = require("hardhat"); async function main() { /** * # dev - * b2dev: yarn hardhat run scripts/message/grant_role.js --network b2dev - * asdev: yarn hardhat run scripts/message/grant_role.js --network asdev + * b2dev: yarn hardhat run scripts/message_sharing/grant_role.js --network b2dev + * asdev: yarn hardhat run scripts/message_sharing/grant_role.js --network asdev * # pord - * b2: yarn hardhat run scripts/message/grant_role.js --network b2 - * as: yarn hardhat run scripts/message/grant_role.js --network as + * b2: yarn hardhat run scripts/message_sharing/grant_role.js --network b2 + * as: yarn hardhat run scripts/message_sharing/grant_role.js --network as */ const [owner] = await ethers.getSigners() console.log("Owner Address: ", owner.address); - let messageAddress; + let address; if (network.name == 'b2dev') { - // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; - messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; + // address = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // address = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; + address = process.env.B2_DEV_MESSAGE_SHARING; } else if (network.name == 'asdev') { - messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; + // address = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; + // address = "0x72848587deb762C4cCe38e6fA79d8347eF81b8a6"; + address = process.env.AS_DEV_MESSAGE_SHARING; } else if (network.name == 'b2') { - messageAddress = ""; + address = process.env.B2_MESSAGE_SHARING; } else if (network.name == 'as') { - messageAddress = ""; + address = process.env.AS_MESSAGE_SHARING; } - console.log("Message Address: ", messageAddress); - // B2MessageSharing - const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); - const instance = await B2MessageSharing.attach(messageAddress); - // TODO + console.log("MessageSharing Address: ", address); + // MessageSharing + const MessageSharing = await ethers.getContractFactory("MessageSharing"); + const instance = await MessageSharing.attach(address); + // let role = await instance.ADMIN_ROLE(); // admin role // let role = await instance.UPGRADE_ROLE(); // upgrade role - // let chainId = 0; - // let chainId = 421614; - let chainId = 1123; - let role = await instance.validatorRole(chainId); // validatorRole(uint256 chain_id) + // let role = await instance.validatorRole(0); + // let role = await instance.validatorRole(421614); + let role = await instance.validatorRole(1123); console.log("role hash: ", role); - // TODO let accounts = ["0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d"]; for (const account of accounts) { let hasRole = await instance.hasRole(role, account); diff --git a/contracts/scripts/message_sharing/set.js b/contracts/scripts/message_sharing/set.js new file mode 100644 index 00000000..896153b0 --- /dev/null +++ b/contracts/scripts/message_sharing/set.js @@ -0,0 +1,76 @@ +const {ethers, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/message_sharing/set.js --network b2dev + * asdev: yarn hardhat run scripts/message_sharing/set.js --network asdev + * # pord + * b2: yarn hardhat run scripts/message_sharing/set.js --network b2 + * as: yarn hardhat run scripts/message_sharing/set.js --network as + */ + const [owner] = await ethers.getSigners() + console.log("Owner Address: ", owner.address); + + let address; + let weight; + let validators; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_MESSAGE_SHARING; + weight = { + chain_id: process.env.B2_DEV_CHAIN_ID, weight: 1, + }; + validators = [{ + chain_id: process.env.B2_DEV_CHAIN_ID, account: '0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d', valid: true, + }, { + chain_id: process.env.AS_DEV_CHAIN_ID, account: '0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d', valid: true, + }]; + } else if (network.name == 'asdev') { + address = process.env.AS_DEV_MESSAGE_SHARING; + weight = { + chain_id: process.env.B2_DEV_CHAIN_ID, weight: 1, + }; + validators = [{ + chain_id: process.env.B2_DEV_CHAIN_ID, account: '0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d', valid: true, + }, { + chain_id: process.env.AS_DEV_CHAIN_ID, account: '0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d', valid: true, + }]; + } else if (network.name == 'b2') { + address = process.env.B2_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.AS_MESSAGE_SHARING; + } + console.log("MessageSharing Address: ", address); + // MessageSharing + const MessageSharing = await ethers.getContractFactory("MessageSharing"); + const instance = await MessageSharing.attach(address); + + + // 1. setWeight + for (const setup of setups) { + let _weight = await instance.weights(weight.chain_id); + if (weight.weight != _weight) { + const tx = await instance.setWeight(weight.chain_id, weight.weight); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + _weight = await instance.weights(weight.chain_id); + } + console.log("chain_id:", weight.chain_id, ", weight: ", weight.weight) + } + console.log("1. setWeight success.") + + // 2. setValidatorRole + for (const validator of validators) { + const tx = await instance.setValidatorRole(validator.chain_id, validator.account, validator.valid); + const txReceipt = await tx.wait(1); + console.log(`tx hash: ${txReceipt.hash}`) + } + console.log("2. setValidatorRole success.") +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/contracts/scripts/message_sharing/upgrade.js b/contracts/scripts/message_sharing/upgrade.js new file mode 100644 index 00000000..f75b41ba --- /dev/null +++ b/contracts/scripts/message_sharing/upgrade.js @@ -0,0 +1,41 @@ +const {ethers, upgrades, network} = require("hardhat"); + +async function main() { + /** + * # dev + * b2dev: yarn hardhat run scripts/message_sharing/upgrade.js --network b2dev + * asdev: yarn hardhat run scripts/message_sharing/upgrade.js --network asdev + * # pord + * b2: yarn hardhat run scripts/message_sharing/upgrade.js --network b2 + * as: yarn hardhat run scripts/message_sharing/upgrade.js --network as + */ + const [owner] = await ethers.getSigners() + console.log("Owner Address:", owner.address); + let address = ''; + if (network.name == 'b2dev') { + // address = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // address = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; + address = process.env.B2_DEV_MESSAGE_SHARING; + } else if (network.name == 'asdev') { + // address = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; + address = process.env.AS_DEV_MESSAGE_SHARING; + } else if (network.name == 'b2') { + address = process.env.B2_MESSAGE_SHARING; + } else if (network.name == 'as') { + address = process.env.AS_MESSAGE_SHARING; + } + console.log("MessageSharing Address: ", address); + + // Upgrading + const MessageSharing = await ethers.getContractFactory("MessageSharing"); + // await upgrades.forceImport(address, MessageSharing); + const upgraded = await upgrades.upgradeProxy(address, MessageSharing); + console.log("MessageSharing upgraded:", upgraded.target); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) \ No newline at end of file diff --git a/contracts/scripts/token/approve.js b/contracts/scripts/token/approve.js deleted file mode 100644 index 49763319..00000000 --- a/contracts/scripts/token/approve.js +++ /dev/null @@ -1,30 +0,0 @@ -const {ethers, run, network} = require("hardhat") - -const tokenAddress = "0xc810b0b75Af60D60De8451587DF9cb240BE22d9d" -const toAccount = "0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b" -const approveAmount = "10000000000000000000000000000000000000000" - -async function main() { - /** - * b2dev: yarn hardhat run scripts/token/approve.js --network b2dev - * asdev: yarn hardhat run scripts/token/approve.js --network asdev - */ - - const [owner] = await ethers.getSigners() - - const MyERC20 = await ethers.getContractFactory('MyERC20'); - const token = MyERC20.attach(tokenAddress); - - const approveTx = await token.approve(toAccount, approveAmount) - const txReceipt = await approveTx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - console.log("allowance:", await token.allowance(owner.address, toAccount)); - -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/contracts/scripts/token/mint.js b/contracts/scripts/token/mint.js deleted file mode 100644 index f67b7fd6..00000000 --- a/contracts/scripts/token/mint.js +++ /dev/null @@ -1,31 +0,0 @@ -const {ethers, run, network} = require("hardhat") - -const tokenAddress = "0xc810b0b75Af60D60De8451587DF9cb240BE22d9d" -const mintAmount = "100000000000000" - -async function main() { - /** - * b2dev: yarn hardhat run scripts/token/mint.js --network b2dev - * asdev: yarn hardhat run scripts/token/mint.js --network asdev - */ - - const [owner] = await ethers.getSigners() - let toAccount = "0x690bC18DfAA4C5f1cC67495781B90FC4D90cD78b" - toAccount = owner.address; - - const MyERC20 = await ethers.getContractFactory('MyERC20'); - const token = MyERC20.attach(tokenAddress); - - const mintTx = await token.mint(toAccount, mintAmount) - const txReceipt = await mintTx.wait(1); - console.log(`tx hash: ${txReceipt.hash}`) - console.log("balance of:", await token.balanceOf(toAccount)); - -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) \ No newline at end of file diff --git a/docs/examples/attention.md b/docs/examples/attention.md new file mode 100644 index 00000000..46934e57 --- /dev/null +++ b/docs/examples/attention.md @@ -0,0 +1,32 @@ +### Matters needing attention + +1. Use the call method of the MessageSharing contract to initiate a cross-chain request: + +``` +/** + * @dev Initiates a cross-chain message call. + * @param to_chain_id The ID of the destination chain. + * @param to_business_contract The address of the target contract on the destination chain. + * @param to_message The message payload to be sent. + * @return from_id The unique identifier for this message call. + */ +function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256) +``` + +2. Implement the send method to receive and process data from the MessageSharing contract: + +``` +/** + * @dev Receives and processes a cross-chain message. + * @param from_chain_id The ID of the source chain. + * @param from_id The unique identifier of the message on the source chain. + * @param from_sender The address of the sender on the source chain. + * @param to_message The received message payload. + * @return success Boolean indicating whether the message was processed successfully. + */ +function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata to_message) external onlyRole(SENDER_ROLE) override returns (bool success) +``` + +When implementing cross-chain message transmission, ensure to correctly invoke the call function to initiate requests, +and implement the send function in the target contract to handle received messages. The onlyRole(SENDER_ROLE) modifier +in the send function is not mandatory and can be used based on specific requirements to control access permissions. diff --git a/docs/examples/message-channel/README.md b/docs/examples/message-channel/README.md new file mode 100644 index 00000000..349011dd --- /dev/null +++ b/docs/examples/message-channel/README.md @@ -0,0 +1,114 @@ +# Message channel + +What you need to know before looking at the examples, See the contents +of [docs/examples/attention.md](./docs/examples/attention.md) + +## Contract + +### Contract Interfaces + +``` +/** + * @dev Initiates a cross-chain message call to another blockchain network. + * @param to_chain_id The ID of the destination chain where the message will be sent. + * @param to_business_contract The address of the target contract on the destination chain. + * @param to_message The payload of the message to be sent. + * @return from_id The unique identifier for this message call, returned by the message sharing contract. + * + * This function uses the messageSharing contract to send a message to a specified contract + * on another blockchain. It emits a Call event for logging purposes. + */ +function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256); + +/** + * @dev Receives and processes an incoming cross-chain message. + * @param from_chain_id The ID of the source chain from which the message originates. + * @param from_id The unique identifier of the message on the source chain. + * @param from_sender The address of the sender on the source chain. + * @param to_message The payload of the message received. + * @return success Boolean indicating whether the message was processed successfully. + * + * This function is restricted to entities with the SENDER_ROLE, ensuring only authorized + * senders can invoke it. It emits a Send event for logging purposes. The function currently + * contains placeholders for verifying the message's validity and executing the service logic. + */ +function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata to_message) external onlyRole(SENDER_ROLE) override returns (bool success); + +/** + * @dev Sets the address of the message sharing contract. + * @param sharing_address The address of the IMessageSharing contract to be set. + * + * This function allows an admin to specify the address of the message sharing contract + * that will be used for cross-chain message communication. It is restricted to accounts + * with the ADMIN_ROLE to ensure only authorized modifications. + */ +function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE); +``` + +### Contract Code + +See the contents +of [contracts/examples/message_channel/MessageChannel.sol](../../../contracts/contracts/examples/message_channel/MessageChannel.sol) + +### Deployment + +The deployment and configuration instructions you've provided outline the steps for deploying and setting up the +MessageChannel contract on two different blockchain networks: bsquared-dev and arbitrum-sepolia. Here's a detailed +explanation of each step: + +1. Deploy the MessageChannel Contract + +``` +// Deploy the MessageChannel contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/message_channel/deploy.js --network b2dev +// Deploy the MessageChannel contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/message_channel/deploy.js --network asdev +``` + +Explanation: + +These commands use Hardhat, a development environment for Ethereum software, to deploy the MessageChannel contract. +The [deploy.js](../../../contracts/scripts/examples/message_channel/deploy.js) script is executed for each specified +network (b2dev and asdev), which are likely configurations defined in your Hardhat setup. +The deployment script should contain logic to compile the contract and deploy it to the specified network. + +2. Configure Contract Information + +After deploying the contract, update your .env file with the deployed contract addresses. + +Example entry: + +``` +B2_DEV_MESSAGE_CHANNEL=0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8 +AS_DEV_MESSAGE_CHANNEL=0x2A82058E46151E337Baba56620133FC39BD5B71F +``` + +3. Configure the MessageChannel Contract + +``` +// Configure the MessageChannel contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/message_channel/set.js --network b2dev +// Configure the MessageChannel contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/message_channel/set.js --network asdev +``` + +Explanation: + +These commands run the [set.js](../../../contracts/scripts/examples/message_channel/set.js) script on each network to +configure the deployed MessageChannel contract. +The script should contain logic to set essential contract parameters, such as the address of the IMessageSharing +contract or any other initial configurations required. +Ensure that the set.js script uses the addresses from the .env file to interact with the correct contract instances. + +4. Test + +``` +$ yarn hardhat run scripts/examples/message_channel/test.js --network b2dev +``` + +Explanation: + +This command executes the [test.js](../../../contracts/scripts/examples/message_channel/test.js) script on the +bsquared-dev network to verify the deployment and configuration. +The script should contain tests to ensure that the MessageChannel contract is functioning correctly, such as sending and +receiving messages. \ No newline at end of file diff --git a/docs/examples/nft-bridge/README.md b/docs/examples/nft-bridge/README.md new file mode 100644 index 00000000..ab9c7177 --- /dev/null +++ b/docs/examples/nft-bridge/README.md @@ -0,0 +1,118 @@ +# Nft bridge + +What you need to know before looking at the examples, See the contents +of [docs/examples/attention.md](./docs/examples/attention.md) + +## Contract + +### Contract Interfaces + +``` +/** + * @notice Receives a cross-chain message and unlocks the NFT + * @param from_chain_id The ID of the source chain + * @param from_id The unique identifier of the message + * @param from_sender The address of the sender of the message + * @param message The encoded message containing unlock data + * @return success Returns whether the operation was successful + */ +function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success); + +/** + * @notice Locks an NFT and sends a cross-chain message + * @param nft_address The address of the NFT to be locked + * @param token_id The ID of the token to be locked + * @param amount The amount of the NFT to lock (for ERC1155) + * @param to_chain_id The ID of the destination chain + * @param to_token_bridge The NFT bridge contract address on the destination chain + * @param to_address The address of the recipient + */ +function lock(address nft_address, uint256 token_id, uint256 amount, uint256 to_chain_id, address to_token_bridge, address to_address) external; +/** + * @notice Sets the cross-chain message sharing contract address + * @param sharing_address The new address of the cross-chain message sharing contract + */ +function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE); + +/** + * @notice Sets the NFT mapping between source and destination chains + * @param from_chain_id The ID of the source chain + * @param from_nft_address The NFT address on the source chain + * @param to_chain_id The ID of the destination chain + * @param to_nft_address The NFT address on the destination chain + * @param standard The NFT standard (ERC721 or ERC1155) + * @param status The status of the NFT mapping (active or inactive) + */ +function setNftMapping(uint256 from_chain_id, address from_nft_address, uint256 to_chain_id, address to_nft_address, NftStandard standard, bool status) external onlyRole(ADMIN_ROLE); +``` + +### Contract Code + +See the contents +of [contracts/examples/nft_bridge/NftBridge.sol](../../../contracts/contracts/examples/nft_bridge/NftBridge.sol) + +### Deployment + +The deployment and configuration process for the NftBridge contract involves several key steps. Here is a detailed +explanation of each step: + +1. Deploy the NftBridge Contract + +This step involves deploying the NftBridge contract to two different blockchain networks. Use Hardhat to execute the +deployment scripts as follows: + +``` +// Deploy the NftBridge contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/nft_bridge/deploy.js --network b2dev +// Deploy the NftBridge contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/nft_bridge/deploy.js --network asdev +``` + +Explanation: +The [contracts/scripts/examples/nft_bridge/deploy.js](../../../contracts/scripts/examples/nft_bridge/deploy.js) is the +path to the deployment script. + +2. Configure Contract Information + +After deploying the contract, update your .env file with the deployed contract addresses. + +Example entry: + +``` +B2_DEV_NFT_BRIDGE=0x952b63C6C799B7033c24B055f7F023Eb7f3a5c73 +AS_DEV_NFT_BRIDGE=0xYourArbitrumSepoliaAddressHere +``` + +3. Configure the NftBridge Contract + +This step involves running configuration scripts to set up the NftBridge contracts on each network. These scripts +might set initial parameters, permissions, or other necessary configurations. + +``` +// Configure the NftBridge contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/nft_bridge/set.js --network b2dev +// Configure the NftBridge contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/nft_bridge/set.js --network asdev +``` + +Explanation: +The [contracts/scripts/examples/nft_bridge/set.js](../../../contracts/scripts/examples/nft_bridge/set.js) script likely +contains logic to initialize or configure the contract after deployment. + +4. Test + +Finally, you run tests to ensure that the NftBridge contract works as expected on the specified network. + +``` +$ yarn hardhat run scripts/examples/nft_bridge/test.js --network b2dev +``` + +Explanation: +This command runs the [test.js](../../../contracts/scripts/examples/nft_bridge/test.js) script, which should contain +test cases or scenarios to validate the functionality of your deployed contract. + +Note: +The nft used for testing needs to be deployed using +the [deploy.js](../../../contracts/scripts/examples/erc721/deploy.js) +script, and operations such as [minting](../../../contracts/scripts/examples/erc721/mint.js) and +[setApprovalForAll](../../../contracts/scripts/examples/erc721/setApprovalForAll.js) should be performed. \ No newline at end of file diff --git a/docs/examples/orderbook/README.md b/docs/examples/orderbook/README.md new file mode 100644 index 00000000..f9683ddd --- /dev/null +++ b/docs/examples/orderbook/README.md @@ -0,0 +1,200 @@ +# Orderbook + +What you need to know before looking at the examples, See the contents +of [docs/examples/attention.md](./docs/examples/attention.md) + +## Contract + +### Contract Interfaces + +#### Cashier Contract Interfaces + +``` +/** + * @notice Allows a user to pay for an order using a supported token + * @param order_no The unique identifier for the order + * @param token_address The address of the token to be used for payment + */ + function payOrder(string calldata order_no, address token_address) external payable; + + /** + * @notice Processes a cross-chain message to settle an order + * @param from_chain_id The ID of the source chain + * @param from_id The unique identifier of the message + * @param from_sender The address of the sender of the message + * @param data The encoded message containing settlement data + * @return success Returns whether the operation was successful + */ +function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external onlyRole(SENDER_ROLE) returns (bool success); + +/** + * @notice Sets the whitelist configuration for a token + * @param token_address The address of the token to be whitelisted + * @param wihitelist The whitelist configuration for the token + */ +function setWihitelist(address token_address, Wihitelist calldata wihitelist) external onlyRole(ADMIN_ROLE); + +/** + * @notice Sets the orderbook configuration + * @param contract_address The address of the orderbook contract + * @param chain_id The ID of the chain where the orderbook contract is located + */ +function setOrderbook(address contract_address, uint256 chain_id) external onlyRole(ADMIN_ROLE); + +/** + * @notice Sets the cross-chain message sharing contract address + * @param sharing_address The new address of the cross-chain message sharing contract + */ +function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE); + +/** + * @notice Withdraws the specified amount of tokens to a given address + * @param token_address The address of the token to be withdrawn + * @param to_address The address to which the tokens will be sent + * @param amount The amount of tokens to be withdrawn + */ +function withdraw(address token_address, address to_address, uint256 amount) external onlyRole(ADMIN_ROLE); +``` + +#### Orderbook Contract Interfaces + +``` +/** + * @notice Processes a cross-chain message to create an order + * @param from_chain_id The ID of the source chain + * @param from_id The unique identifier of the message + * @param from_sender The address of the sender of the message + * @param message The encoded message containing order data + * @return success Returns whether the operation was successful + */ +function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success); + +/** + * @notice Settles an order by finalizing it and sending a message back to the originating chain + * @param order_no The unique identifier for the order to be settled + * @param fee_amount The fee amount to be deducted from the order's deposit + */ +function settle(string calldata order_no, uint256 fee_amount) external; + +/** + * @notice Sets the cross-chain message sharing contract address + * @param sharing_address The new address of the cross-chain message sharing contract + */ +function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE); + +/** + * @notice Sets the bridge contract address for a specific source chain + * @param from_chain_id The ID of the source chain + * @param bridge The new bridge contract address + */ +function setBridges(uint256 from_chain_id, address bridge) external onlyRole(ADMIN_ROLE); +``` + +### Contract Code + +See the contents +of [contracts/examples/orderbook/Cashier.sol](../../../contracts/contracts/examples/orderbook/Cashier.sol) +and [contracts/examples/orderbook/Orderbook.sol](../../../contracts/contracts/examples/orderbook/Orderbook.sol) + +### Deployment + +The deployment and configuration process for the Cashier and Orderbook contracts involves several steps. Here's a +detailed explanation of each: + +1. Deploy the Cashier & Orderbook Contracts + +1.1. Deploy the Cashier Contract + +Deploy the Cashier contract on two different blockchain networks using the following commands: + +``` +// Deploy the Cashier contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/orderbook/cashier/deploy.js --network b2dev +// Deploy the Cashier contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/orderbook/cashier/deploy.js --network asdev +``` + +1.2. Deploy the Orderbook Contract + +Similarly, deploy the Orderbook contract on the same networks: + +``` +// Deploy the Orderbook contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/orderbook/orderbook/deploy.js --network b2dev +// Deploy the Orderbook contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/orderbook/orderbook/deploy.js --network asdev +``` + +2. Configure Contract Information + +After deploying the contract, update your .env file with the deployed contract addresses. + +Example entry: + +``` +B2_DEV_ORDERBOOK=0x91009D6edEaBfE095749DaBf2c0359c5f4343e8e +B2_DEV_CASHIER=0xfb70B98f4935f6E983D1Ccac947dA51d6d42c023 +AS_DEV_ORDERBOOK=0xYourArbitrumSepoliaOrderbookAddressHere +AS_DEV_CASHIER=0xYourArbitrumSepoliaCashierAddressHere +``` + +3. Configure the Cashier & Orderbook Contract + +3.1. Configure the Cashier Contract + +Run the configuration scripts to set up the Cashier contracts on each network: + +``` +// Configure the Cashier contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/orderbook/cashier/set.js --network b2dev +// Configure the Cashier contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/orderbook/cashier/set.js --network asdev +``` + +3.2. Configure the Orderbook Contract + +Similarly, configure the Orderbook contracts: + +``` +// Configure the Orderbook contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/orderbook/orderbook/set.js --network b2dev +// Configure the Orderbook contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/orderbook/orderbook/set.js --network asdev +``` + +4. Test + +4.1. Test payOrder + +Run +the [contracts/scripts/examples/orderbook/cashier/test.js](../../../contracts/scripts/examples/orderbook/cashier/test.js) +script for the Cashier contract to ensure the payOrder functionality works as expected: + +``` +$ yarn hardhat run scripts/examples/orderbook/cashier/test.js --network b2dev +``` + +4.2. Test settle + +Run +the [contracts/scripts/examples/orderbook/orderbook/test.js](../../../contracts/scripts/examples/orderbook/orderbook/test.js) +script for the Orderbook contract to verify the settle functionality: + +``` +$ yarn hardhat run scripts/examples/orderbook/orderbook/test.js --network asdev +``` + +4.3. Test withdraw + +Finally, test the [withdraw](../../../contracts/scripts/examples/orderbook/cashier/withdraw.js) functionality of the +Cashier contract: + +``` +$ yarn hardhat run scripts/examples/orderbook/cashier/withdraw.js --network b2dev +``` + +Note: +The token used for testing needs to be deployed using +the [deploy.js](../../../contracts/scripts/examples/erc20/deploy.js) +script, and operations such as [minting](../../../contracts/scripts/examples/erc20/mint.js) and +[approving](../../../contracts/scripts/examples/erc20/approve.js) should be performed. diff --git a/docs/examples/token-bridge/README.md b/docs/examples/token-bridge/README.md new file mode 100644 index 00000000..96c9c859 --- /dev/null +++ b/docs/examples/token-bridge/README.md @@ -0,0 +1,124 @@ +# Token bridge + +What you need to know before looking at the examples, See the contents +of [docs/examples/attention.md](./docs/examples/attention.md) + +## Contract + +### Contract Interfaces + +``` +/** + * @notice Receives cross-chain messages and unlocks tokens + * @param from_chain_id The ID of the source chain + * @param from_id The unique identifier of the message + * @param from_sender The address of the sender of the message + * @param message The encoded message containing unlock data + * @return success Returns whether the operation was successful + */ +function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success); + +/** + * @notice Locks tokens and sends a cross-chain message + * @param token_address The address of the token to be locked + * @param amount The amount of tokens to lock + * @param to_chain_id The ID of the destination chain + * @param to_token_bridge The token bridge contract address on the destination chain + * @param to_address The address of the recipient + */ +function lock(address token_address, uint256 amount, uint256 to_chain_id, address to_token_bridge, address to_address) external payable; + +/** + * @notice Sets the cross-chain message sharing contract address + * @param sharing_address The new address of the cross-chain message sharing contract + */ +function setMessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE); + +/** + * @notice Sets the bridge contract address for a specific source chain + * @param from_chain_id The ID of the source chain + * @param bridge The new bridge contract address + */ +function setBridges(uint256 from_chain_id, address bridge) external onlyRole(ADMIN_ROLE); + +/** + * @notice Sets the token mapping between source and destination chains + * @param from_chain_id The ID of the source chain + * @param from_token_address The token address on the source chain + * @param to_token_address The token address on the destination chain + */ +function setTokenMapping(uint256 from_chain_id, address from_token_address, address to_token_address) external onlyRole(ADMIN_ROLE); +``` + +### Contract Code + +See the contents +of [contracts/examples/token_bridge/TokenBridge.sol](../../../contracts/contracts/examples/token_bridge/TokenBridge.sol) + +### Deployment + +The deployment and configuration process you've outlined for the TokenBridge contract involves several key steps. Here's +a breakdown of each step with some additional context and tips: + +1. Deploy the TokenBridge Contract + +This step involves deploying the TokenBridge contract to two different blockchain networks. The commands use Hardhat, +a popular Ethereum development environment, to execute deployment scripts. + +``` +// Deploy the TokenBridge contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/token_bridge/deploy.js --network b2dev +// Deploy the TokenBridge contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/token_bridge/deploy.js --network asdev +``` + +Explanation: +The [contracts/scripts/examples/token_bridge/deploy.js](../../../contracts/scripts/examples/token_bridge/deploy.js) is +the path to the deployment script. + +2. Configure Contract Information + +After deploying the contract, update your .env file with the deployed contract addresses. + +Example entry: + +``` +B2_DEV_TOKEN_BRIDGE=0xE2E4C6B693c66f4C9C3c1c88A5Ef76d94526d6fB +AS_DEV_TOKEN_BRIDGE=0xYourArbitrumSepoliaAddressHere +``` + +3. Configure the TokenBridge Contract + +This step involves running configuration scripts to set up the TokenBridge contracts on each network. These scripts +might set initial parameters, permissions, or other necessary configurations. + +``` +// Configure the TokenBridge contract on the bsquared-dev chain +$ yarn hardhat run scripts/examples/token_bridge/set.js --network b2dev +// Configure the TokenBridge contract on the arbitrum-sepolia chain +$ yarn hardhat run scripts/examples/token_bridge/set.js --network asdev +``` + +Explanation: +The [contracts/scripts/examples/token_bridge/set.js](../../../contracts/scripts/examples/token_bridge/set.js) script +likely contains logic to initialize or configure the contract after deployment. + +4. Test + +Finally, you run tests to ensure that the TokenBridge contract works as expected on the specified network. + +``` +$ yarn hardhat run scripts/examples/token_bridge/test.js --network b2dev +``` + +Explanation: +This command runs +the [contracts/scripts/examples/token_bridge/test.js](../../../contracts/scripts/examples/token_bridge/test.js) script, +which should contain +test cases or scenarios to validate the functionality of your deployed contract. + +Note: +The token used for testing needs to be deployed using +the [deploy.js](../../../contracts/scripts/examples/erc20/deploy.js) +script, and operations such as [minting](../../../contracts/scripts/examples/erc20/mint.js) and +[approving](../../../contracts/scripts/examples/erc20/approve.js) should be performed. \ No newline at end of file diff --git a/docs/message-sharing/dapp-deployment.md b/docs/message-sharing/dapp-deployment.md new file mode 100644 index 00000000..ebb88132 --- /dev/null +++ b/docs/message-sharing/dapp-deployment.md @@ -0,0 +1,541 @@ +# Dapp Deployment + + +* [Dapp Deployment](#dapp-deployment) + * [Message-Sharing Mechanism Overview](#message-sharing-mechanism-overview) + * [Message-Sharing Services](#message-sharing-services) + * [Listener](#listener) + * [Proposer](#proposer) + * [Validator](#validator) + * [Builder](#builder) + * [Deployment](#deployment) + * [Build](#build) + * [Database](#database) + * [Config](#config) + * [Yaml config](#yaml-config) + * [Env config](#env-config) + * [Quick start](#quick-start) + + +## Message-Sharing Mechanism Overview + +The system is composed of four main services: Listener, Proposer, Validator, and Builder. Each service has a specific +role in ensuring secure and efficient cross-chain message transmission. + +## Message-Sharing Services + +### Listener + +Role: + +> The Listener service is responsible for monitoring the message-sharing smart contract for specific events. +> + +Functionality: + +> It listens for Call and Send events emitted by the contract. \ +> Serves as a data source for the Proposer and Builder services by capturing and relaying event data. +> + +### Proposer + +Role: +> The Proposer service is tasked with transmitting transaction information to Validators and gathering valid signatures. +> +Functionality: +> Utilizes a peer-to-peer (p2p) protocol to communicate transaction details that require validation. \ +> Collects signatures from Validators to confirm the legitimacy of the transaction data. +> + +### Validator + +Role: +> The Validator service is responsible for validating transaction information received from the Proposer. +> +Functionality: +> Performs on-chain data verification to ensure the authenticity of the transaction data. \ +> Provides signatures for legitimate transaction data back to the Proposer. +> + +### Builder + +Role: +> The Builder service processes messages and their corresponding signatures to complete transaction construction and +> broadcasting. +> +Functionality: +> Constructs transactions based on validated messages and signatures. \ +> Broadcasts these transactions onto the blockchain. +> + +## Deployment + +### Build + +``` +// Navigate to the Working Directory: +$ cd message-sharing/applications/ +// Build Listener +$ go build -o listener cmd/listener/main.go +// Build Proposer +$ go build -o proposer cmd/proposer/main.go +// Build Validator +$ go build -o validator cmd/validator/main.go +// Build Builder +$ go build -o builder cmd/builder/main.go +``` + +### Database + +The Message Sharing service depends on a MySQL service, and a service instance needs to be created first. + +1. Create database b2_message + +``` +CREATE DATABASE `b2_message` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ +``` + +2. Create tables + +2.1 messages + +``` +CREATE TABLE `messages` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `type` int NOT NULL COMMENT 'type', + `chain_id` bigint NOT NULL COMMENT 'chain id', + `from_chain_id` bigint NOT NULL COMMENT 'from_chain_id', + `from_sender` varchar(66) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'from_sender', + `from_message_bridge` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT 'from_message_bridge', + `from_id` varchar(128) NOT NULL COMMENT 'from_id', + `to_chain_id` bigint NOT NULL COMMENT 'to_chain_id', + `to_message_bridge` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT 'to_message_bridge', + `to_contract_address` varchar(66) NOT NULL COMMENT 'to_contract_address', + `to_bytes` text NOT NULL COMMENT 'to_bytes', + `event_id` bigint NOT NULL COMMENT 'event_id', + `block_time` bigint NOT NULL COMMENT 'block_time', + `block_number` bigint NOT NULL COMMENT 'block_number', + `log_index` bigint NOT NULL COMMENT 'log_index', + `tx_hash` varchar(128) NOT NULL COMMENT 'tx_hash', + `status` tinyint NOT NULL DEFAULT '0' COMMENT 'status', + `signatures` json NOT NULL COMMENT 'signatures', + `signatures_count` int NOT NULL DEFAULT '0' COMMENT 'signatures count', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +2.2 message_signatures + +``` +CREATE TABLE `message_signatures` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `message_id` bigint NOT NULL COMMENT 'message id', + `signer` varchar(66) NOT NULL COMMENT 'from_contract_address', + `signature` varchar(256) NOT NULL COMMENT 'signatures', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +2.3 signatures + +``` +CREATE TABLE `signatures` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `chain_id` bigint NOT NULL COMMENT 'chain id', + `refer_id` varchar(128) NOT NULL COMMENT ' refer id', + `nonce` bigint NOT NULL COMMENT ' nonce', + `type` bigint NOT NULL COMMENT ' type', + `data` text NOT NULL COMMENT ' data', + `value` decimal(64,18) NOT NULL DEFAULT '0.000000000000000000' COMMENT ' value', + `address` varchar(42) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT ' sender address', + `status` varchar(32) NOT NULL COMMENT ' status', + `event_id` bigint NOT NULL COMMENT ' event_id', + `block_time` bigint NOT NULL COMMENT ' block_time', + `block_number` bigint NOT NULL COMMENT ' block_number', + `log_index` bigint NOT NULL COMMENT ' log_index', + `tx_hash` varchar(66) NOT NULL COMMENT ' Tx Hash', + `signature` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT ' signature', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1000037 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +2.4 sync_events + +``` +CREATE TABLE `sync_events` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `sync_block_id` bigint NOT NULL COMMENT ' sync block id', + `block_time` bigint NOT NULL COMMENT ' block time', + `block_number` bigint NOT NULL COMMENT ' block height', + `block_hash` varchar(66) NOT NULL COMMENT ' block hash', + `block_log_indexed` bigint NOT NULL COMMENT ' block log index', + `tx_index` bigint NOT NULL COMMENT ' tx index', + `tx_hash` varchar(66) NOT NULL COMMENT ' tx hash', + `event_name` varchar(32) NOT NULL COMMENT ' event name', + `event_hash` varchar(66) NOT NULL COMMENT ' event hash', + `contract_address` varchar(42) NOT NULL COMMENT ' contract address', + `data` json NOT NULL COMMENT ' data content', + `status` varchar(32) NOT NULL COMMENT ' status', + `retry_count` bigint NOT NULL DEFAULT '0' COMMENT 'retry_count', + `chain_id` bigint NOT NULL COMMENT 'chain id', + PRIMARY KEY (`id`), + KEY `status_index` (`status`), + KEY `idx_event_hash` (`sync_block_id`,`block_log_indexed`,`tx_hash`,`event_hash`) +) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +2.5 sync_events_history + +``` +CREATE TABLE `sync_events_history` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `chain_id` bigint NOT NULL COMMENT 'chain id', + `sync_block_id` bigint NOT NULL COMMENT ' sync block id', + `block_time` bigint NOT NULL COMMENT ' block time', + `block_number` bigint NOT NULL COMMENT ' block height', + `block_hash` varchar(66) NOT NULL COMMENT ' block hash', + `block_log_indexed` bigint NOT NULL COMMENT ' block log index', + `tx_index` bigint NOT NULL COMMENT ' tx index', + `tx_hash` varchar(66) NOT NULL COMMENT ' tx hash', + `event_name` varchar(32) NOT NULL COMMENT ' event name', + `event_hash` varchar(66) NOT NULL COMMENT ' event hash', + `contract_address` varchar(42) NOT NULL COMMENT ' contract address', + `data` json NOT NULL COMMENT ' data content', + `status` varchar(32) NOT NULL COMMENT ' status', + `retry_count` int NOT NULL COMMENT 'retry_count', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +2.6 sync_tasks + +``` +CREATE TABLE `sync_tasks` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `chain_type` tinyint NOT NULL DEFAULT '0' COMMENT 'chain type', + `chain_id` bigint NOT NULL COMMENT 'chain id', + `latest_block` bigint NOT NULL COMMENT ' handle block height', + `latest_tx` bigint NOT NULL DEFAULT '0' COMMENT 'latest_tx', + `start_block` bigint NOT NULL COMMENT ' start block', + `end_block` bigint NOT NULL COMMENT ' end block', + `handle_num` bigint NOT NULL COMMENT ' handle num', + `contracts` text NOT NULL COMMENT ' contracts address, multiple use, split', + `status` tinyint NOT NULL DEFAULT '0' COMMENT ' status', + PRIMARY KEY (`id`), + KEY `status_index` (`status`) +) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +2.7 deposit_history + +``` +CREATE TABLE `deposit_history` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `btc_block_number` bigint NOT NULL COMMENT 'btc_block_number', + `btc_tx_index` bigint NOT NULL COMMENT 'btc_tx_index', + `btc_tx_hash` varchar(128) NOT NULL COMMENT ' btc_tx_hash', + `btc_tx_type` tinyint NOT NULL DEFAULT '0' COMMENT 'chain type', + `btc_froms` json DEFAULT NULL COMMENT ' btc_froms', + `btc_from` varchar(128) NOT NULL COMMENT ' btc_from', + `btc_tos` json DEFAULT NULL COMMENT ' btc_tos', + `btc_to` varchar(128) NOT NULL COMMENT ' btc_to', + `btc_from_aa_address` varchar(128) NOT NULL COMMENT ' btc_from_aa_address', + `btc_from_evm_address` varchar(128) NOT NULL COMMENT ' btc_from_evm_address', + `btc_value` bigint NOT NULL COMMENT 'btc_tx_index', + `b2_tx_from` varchar(128) NOT NULL COMMENT ' b2_tx_from', + `b2_tx_hash` varchar(128) NOT NULL COMMENT ' b2_tx_hash', + `b2_tx_nonce` bigint NOT NULL COMMENT 'b2_tx_nonce', + `b2_tx_status` bigint NOT NULL COMMENT 'b2_tx_status', + `b2_tx_retry` bigint NOT NULL COMMENT 'b2_tx_retry', + `b2_eoa_tx_from` varchar(128) NOT NULL COMMENT ' b2_eoa_tx_from', + `b2_eoa_tx_nonce` bigint NOT NULL COMMENT 'b2_eoa_tx_nonce', + `b2_eoa_tx_hash` varchar(128) NOT NULL COMMENT ' b2_eoa_tx_hash', + `b2_eoa_tx_status` bigint NOT NULL COMMENT 'b2_eoa_tx_status', + `btc_block_time` datetime NOT NULL COMMENT 'btc_block_time', + `callback_status` bigint NOT NULL COMMENT ' callback_status', + `listener_status` bigint NOT NULL COMMENT ' listener_status', + `b2_tx_check` bigint NOT NULL COMMENT ' b2_tx_check', + `status` tinyint NOT NULL DEFAULT '0' COMMENT 'status', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +``` + +### Config + +#### Yaml config + +Before starting the service, you need to handle the service configuration files. Please refer to configuration +files [builder.yaml](../../applications/config/listener.yaml)、[proposer.yaml](../../applications/config/proposer.yaml) +、[validator.yaml](../../applications/config/validator.yaml) and [builder.yaml](../../applications/config/builder.yaml) +for specific details. + +#### Env config + +listener.env + +``` +APP_LOG_LEVEL=6 + +APP_PARTICLE_URL=https://rpc.particle.network/evm-chain +APP_PARTICLE_CHAINID=1123 +APP_PARTICLE_PROJECTUUID=0000000000000000000000000000000000000000 +APP_PARTICLE_PROJECTKEY=0000000000000000000000000000000000000000 +APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network + +APP_DATABASE_USERNAME=root +APP_DATABASE_PASSWORD=123456 +APP_DATABASE_HOST=127.0.0.1 +APP_DATABASE_PORT=3306 +APP_DATABASE_DBNAME=b2_message +APP_DATABASE_LOGLEVEL=4 + +APP_BITCOIN_NAME=bitcoin +APP_BITCOIN_STATUS=true +APP_BITCOIN_CHAINTYPE=2 +APP_BITCOIN_CHAINID=0 +APP_BITCOIN_MAINNET=false +APP_BITCOIN_RPCURL=127.0.0.1:8085 +APP_BITCOIN_SAFEBLOCKNUMBER=3 +APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME +APP_BITCOIN_BLOCKINTERVAL=6000 +APP_BITCOIN_TOCHAINID=1123 +APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 +APP_BITCOIN_BTCUSER=test +APP_BITCOIN_BTCPASS=test +APP_BITCOIN_DISABLETLS=false + +APP_BSQUARED_NAME=bsquared +APP_BSQUARED_STATUS=true +APP_BSQUARED_CHAINTYPE=1 +APP_BSQUARED_MAINNET=false +APP_BSQUARED_CHAINID=1123 +APP_BSQUARED_RPCURL=127.0.0.1:8084 +APP_BSQUARED_SAFEBLOCKNUMBER=1 +APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_BSQUARED_BLOCKINTERVAL=2000 +APP_BSQUARED_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 + +APP_ARBITRUM_NAME=arbitrum +APP_ARBITRUM_STATUS=true +APP_ARBITRUM_CHAINTYPE=1 +APP_ARBITRUM_CHAINID=421614 +APP_ARBITRUM_MAINNET=false +APP_ARBITRUM_RPCURL=127.0.0.1:8083 +APP_ARBITRUM_SAFEBLOCKNUMBER=1 +APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_ARBITRUM_BLOCKINTERVAL=100 +APP_ARBITRUM_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 +``` + +proposer.env + +``` +APP_LOG_LEVEL=6 + +APP_DATABASE_USERNAME=root +APP_DATABASE_PASSWORD=123456 +APP_DATABASE_HOST=127.0.0.1 +APP_DATABASE_PORT=3306 +APP_DATABASE_DBNAME=b2_message +APP_DATABASE_LOGLEVEL=4 + +APP_BSQUARED_NAME=bsquared +APP_BSQUARED_STATUS=true +APP_BSQUARED_CHAINTYPE=1 +APP_BSQUARED_MAINNET=false +APP_BSQUARED_CHAINID=1123 +APP_BSQUARED_RPCURL=127.0.0.1:8081 +APP_BSQUARED_SAFEBLOCKNUMBER=1 +APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_BSQUARED_BLOCKINTERVAL=2000 +APP_BSQUARED_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 +APP_BSQUARED_NODEPORT=20000 +APP_BSQUARED_SIGNATUREWEIGHT=1 +APP_BSQUARED_VALIDATORS=0x0000000000000000000000000000000000000000 + +APP_ARBITRUM_NAME=arbitrum +APP_ARBITRUM_STATUS=true +APP_ARBITRUM_CHAINTYPE=1 +APP_ARBITRUM_CHAINID=421614 +APP_ARBITRUM_MAINNET=false +APP_ARBITRUM_RPCURL=127.0.0.1:8082 +APP_ARBITRUM_SAFEBLOCKNUMBER=1 +APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_ARBITRUM_BLOCKINTERVAL=100 +APP_ARBITRUM_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 +APP_ARBITRUM_NODEPORT=20001 +APP_ARBITRUM_SIGNATUREWEIGHT=1 +APP_ARBITRUM_VALIDATORS=0x0000000000000000000000000000000000000000 + +APP_BITCOIN_NAME=bitcoin +APP_BITCOIN_STATUS=true +APP_BITCOIN_CHAINTYPE=2 +APP_BITCOIN_CHAINID=0 +APP_BITCOIN_MAINNET=false +APP_BITCOIN_RPCURL=127.0.0.1:8083 +APP_BITCOIN_SAFEBLOCKNUMBER=3 +APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME +APP_BITCOIN_BLOCKINTERVAL=6000 +APP_BITCOIN_TOCHAINID=1123 +APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 +APP_BITCOIN_BTCUSER=000000000000000000 +APP_BITCOIN_BTCPASS=000000000000000000 +APP_BITCOIN_DISABLETLS=true +APP_BITCOIN_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 +APP_BITCOIN_NODEPORT=20002 +APP_BITCOIN_SIGNATUREWEIGHT=1 +APP_BITCOIN_VALIDATORS=0x0000000000000000000000000000000000000000 + +APP_PARTICLE_URL=https://rpc.particle.network/evm-chain +APP_PARTICLE_CHAINID=1123 +APP_PARTICLE_PROJECTUUID=000000000000000000 +APP_PARTICLE_PROJECTKEY=000000000000000000 +APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network +``` + +validator.env + +``` +APP_LOG_LEVEL=6 + +APP_BSQUARED_NAME=bsquared +APP_BSQUARED_STATUS=true +APP_BSQUARED_CHAINTYPE=1 +APP_BSQUARED_MAINNET=false +APP_BSQUARED_CHAINID=1123 +APP_BSQUARED_RPCURL=127.0.0.1:8081 +APP_BSQUARED_SAFEBLOCKNUMBER=1 +APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_BSQUARED_BLOCKINTERVAL=2000 +APP_BSQUARED_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 +APP_BSQUARED_ENDPOINT=/ip4/127.0.0.1/tcp/20000/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX +APP_BSQUARED_SIGNATUREWEIGHT=1 + +APP_ARBITRUM_NAME=arbitrum +APP_ARBITRUM_STATUS=true +APP_ARBITRUM_CHAINTYPE=1 +APP_ARBITRUM_CHAINID=421614 +APP_ARBITRUM_MAINNET=false +APP_ARBITRUM_RPCURL=127.0.0.1:8082 +APP_ARBITRUM_SAFEBLOCKNUMBER=1 +APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_ARBITRUM_BLOCKINTERVAL=100 +APP_ARBITRUM_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 +APP_ARBITRUM_ENDPOINT=/ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX +APP_ARBITRUM_SIGNATUREWEIGHT=1 + +APP_BITCOIN_NAME=bitcoin +APP_BITCOIN_STATUS=true +APP_BITCOIN_CHAINTYPE=2 +APP_BITCOIN_CHAINID=0 +APP_BITCOIN_MAINNET=false +APP_BITCOIN_RPCURL=127.0.0.1:8083 +APP_BITCOIN_SAFEBLOCKNUMBER=3 +APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME +APP_BITCOIN_BLOCKINTERVAL=6000 +APP_BITCOIN_TOCHAINID=1123 +APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 +APP_BITCOIN_BTCUSER=000000000000000000 +APP_BITCOIN_BTCPASS=000000000000000000 +APP_BITCOIN_DISABLETLS=true +APP_BITCOIN_NODEKEY=0000000000000000000000000000000000000000000000000000000000000000 +APP_BITCOIN_ENDPOINT=/ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAkwynt59WSsNRS9sk1aszgeQ1PXUS8ax3a3tsewaVMgvZX +APP_BITCOIN_SIGNATUREWEIGHT=1 + +APP_PARTICLE_URL=https://rpc.particle.network/evm-chain +APP_PARTICLE_CHAINID=1123 +APP_PARTICLE_PROJECTUUID=000000000000000000 +APP_PARTICLE_PROJECTKEY=000000000000000000 +APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network +``` + +builder.env + +``` +APP_LOG_LEVEL=6 +APP_PARTICLE_URL=https://rpc.particle.network/evm-chain +APP_PARTICLE_CHAINID=1123 +APP_PARTICLE_PROJECTUUID=0000000000000000000000000000000000000000 +APP_PARTICLE_PROJECTKEY=0000000000000000000000000000000000000000 +APP_PARTICLE_AAPUBKEYAPI=https://bridge-aa-dev.bsquared.network + +APP_DATABASE_USERNAME=root +APP_DATABASE_PASSWORD=123456 +APP_DATABASE_HOST=127.0.0.1 +APP_DATABASE_PORT=3306 +APP_DATABASE_DBNAME=b2_message +APP_DATABASE_LOGLEVEL=4 + +APP_BITCOIN_NAME=bitcoin +APP_BITCOIN_STATUS=true +APP_BITCOIN_CHAINTYPE=2 +APP_BITCOIN_CHAINID=0 +APP_BITCOIN_MAINNET=false +APP_BITCOIN_RPCURL=127.0.0.1:8085 +APP_BITCOIN_SAFEBLOCKNUMBER=3 +APP_BITCOIN_LISTENADDRESS=muGFcyjuyURJJsXaLXHCm43jLBmGPPU7ME +APP_BITCOIN_BLOCKINTERVAL=6000 +APP_BITCOIN_TOCHAINID=1123 +APP_BITCOIN_TOCONTRACTADDRESS=0x0000000000000000000000000000000000000000 +APP_BITCOIN_BTCUSER=test +APP_BITCOIN_BTCPASS=test +APP_BITCOIN_DISABLETLS=false + +APP_BSQUARED_NAME=bsquared +APP_BSQUARED_STATUS=true +APP_BSQUARED_CHAINTYPE=1 +APP_BSQUARED_MAINNET=false +APP_BSQUARED_CHAINID=1123 +APP_BSQUARED_RPCURL=127.0.0.1:8084 +APP_BSQUARED_SAFEBLOCKNUMBER=1 +APP_BSQUARED_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_BSQUARED_BLOCKINTERVAL=2000 +APP_BSQUARED_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 + +APP_ARBITRUM_NAME=arbitrum +APP_ARBITRUM_STATUS=true +APP_ARBITRUM_CHAINTYPE=1 +APP_ARBITRUM_CHAINID=421614 +APP_ARBITRUM_MAINNET=false +APP_ARBITRUM_RPCURL=127.0.0.1:8083 +APP_ARBITRUM_SAFEBLOCKNUMBER=1 +APP_ARBITRUM_LISTENADDRESS=0x0000000000000000000000000000000000000000 +APP_ARBITRUM_BLOCKINTERVAL=100 +APP_ARBITRUM_BUILDERS=0x0000000000000000000000000000000000000000000000000000000000000000 +``` + +### Quick start + +Start using configuration files: + +``` +$ ./listener -f=listener.yaml +$ ./proposer -f=proposer.yaml +$ ./validator -f=validator.yaml +$ ./builder -f=builder.yaml +``` + +Start by specifying environment variables: + +``` +$ APP_LOG_LEVEL=6 ./listener -f=listener.yaml +$ APP_LOG_LEVEL=6 ./proposer -f=proposer.yaml +$ APP_LOG_LEVEL=6 ./validator -f=validator.yaml +$ APP_LOG_LEVEL=6 ./builder -f=builder.yaml +``` + +Please modify according to the specific configuration and start the service. \ No newline at end of file diff --git a/docs/message-sharing/smart-contract.md b/docs/message-sharing/smart-contract.md new file mode 100644 index 00000000..f317a2b5 --- /dev/null +++ b/docs/message-sharing/smart-contract.md @@ -0,0 +1,213 @@ +# Smart Contract + +The MessageSharing contract is a smart contract designed for cross-chain message transmission, providing a set of +functionalities to manage and verify cross-chain messages. Here's a summary of the contract's main features and +deployment steps: + + + +* [Smart Contract](#smart-contract) + * [Contracts interface](#contracts-interface) + * [Contracts events](#contracts-events) + * [Contracts code](#contracts-code) + * [Deployment Steps](#deployment-steps) + * [Contracts instances](#contracts-instances) + + + +## Contracts interface + +1. validatorRole: Returns the hash associated with the validator role for a specific chain. +2. SendHash: Generates a hash for a cross-chain message, used for subsequent verification and processing. +3. verify: Verifies the legitimacy of a message by checking if the signature is valid. +4. setWeight: Sets the weight for message processing, influencing the logic or priority of message verification. +5. call: Requests cross-chain message data and returns a unique message ID. +6. send: Confirms cross-chain message data, ensuring the message has not been processed before and verifying the weight + of the signatures. +7. setValidatorRole: Sets the validator role for a specific chain. + +``` +interface IMessageSharing { + + /** + * Get the validator role for a specific chain + * @param chain_id The ID of the chain for which to retrieve the validator role. + * @return bytes32 The hash associated with the validator role for the specified chain ID. + */ + function validatorRole(uint256 chain_id) external pure returns (bytes32); + + /** + * Generate a message hash + * @param from_chain_id The ID of the originating chain, used to identify the source of the message. + * @param from_id The ID of the cross-chain message, used to uniquely identify the message. + * @param from_sender The address of the sender on the originating chain. + * @param to_chain_id The ID of the target chain, where the message will be sent. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. + * @return bytes32 The generated message hash, used for subsequent verification and processing. + */ + function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external view returns (bytes32); + + /** + * Verify the legitimacy of a message + * @param from_chain_id The ID of the originating chain, used to validate the source of the message. + * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. + * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy. + * @param to_chain_id The ID of the target chain, indicating where the message will be sent. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. + * @param signature The signature of the message, used to verify its legitimacy and integrity. + * @return bool Returns true if the verification succeeds, and false if it fails. + */ + function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message, bytes calldata signature) external view returns (bool); + + /** + * Set the weight for message processing + * @param chain_id The ID of the chain. + * @param _weight The weight value that influences the logic or priority of message processing. + */ + function setWeight(uint256 chain_id, uint256 _weight) external; + + /** + * Request cross-chain message data + * @param to_chain_id The ID of the target chain, specifying where the message will be sent. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. + * @return from_id The ID of the cross-chain message, returning a unique identifier to track the request. + */ + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); + + /** + * Confirm cross-chain message data + * @param from_chain_id The ID of the originating chain, used to validate the source of the message. + * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. + * @param from_sender The address of the sender on the originating chain (msg.sender), used to determine the sender's security based on business needs. + * @param to_business_contract The address of the target contract, indicating where the message will be sent (can be a contract on the target chain or the current chain). + * @param to_message The input data for the target contract's cross-chain call. + * @param signatures An array of signatures used to verify the legitimacy of the message, ensuring only authorized senders can send the message. + */ + function send(uint256 from_chain_id, uint256 from_id, address from_sender, address to_business_contract, bytes calldata to_message, bytes[] calldata signatures) external; + + /** + * Set the validator role for a specific chain + * @param chain_id The ID of the chain for which to set the validator role. + * @param account The address of the validator, indicating which account to set the role for. + * @param valid A boolean indicating the validity of the validator role, true for valid and false for invalid. + */ + function setValidatorRole(uint256 chain_id, address account, bool valid) external; + + } +``` + +## Contracts events + +1. SetWeight: Triggered when the weight is set. +2. SetValidatorRole: Triggered when a validator role is set. +3. Send: Triggered when a message is sent. +4. Call: Triggered when a message call is made. + +``` + event SetWeight(uint256 chain_id, uint256 weight); // Event emitted when weight is set + event SetValidatorRole(uint256 chain_id, address account, bool valid); // Event emitted when validator role is set + event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message is sent + event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message call is made + +``` + +## Contracts code + +[MessageSharing.sol](../../contracts/contracts/message_sharing/MessageSharing.sol) + +## Deployment Steps + +1. Navigate to the Working Directory: + +``` +$ cd message-sharing/contracts +``` + +2. Install Dependencies: + +``` +$ npm install +``` + +3. Set Environment Variables: + +If the .env file does not exist, copy .env.test to .env and set the chain RPC URLs and deployment account private keys. + +``` +$ cp .env.test .env +``` + +[.env](../../contracts/.env.test) + +``` +// bsquared-dev +AS_DEV_RPC_URL=https://arbitrum-sepolia.blockpi.network/v1/rpc/public +AS_DEV_PRIVATE_KEY_0=... +// arbitrum-sepolia +B2_DEV_RPC_URL=https://b2-testnet.alt.technology +B2_DEV_PRIVATE_KEY_0=... +``` + +4. Deploy the Contract: + +Use the yarn command to deploy the contract on different networks. + +``` +// Deploy on the bsquared-dev network +$ yarn hardhat run scripts/message_sharing/deploy.js --network b2dev +// Deploy on the arbitrum-sepolia network +$ yarn hardhat run scripts/message_sharing/deploy.js --network asdev +``` + +5. Set Contract Address Environment Variables: + +Add the contract addresses to the .env file: + +``` +B2_DEV_MESSAGE_SHARING=0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8 +AS_DEV_MESSAGE_SHARING=0x2A82058E46151E337Baba56620133FC39BD5B71F +``` + +6. Configure the Contract: + +Modify the [scripts/message_sharing/set.js](../../contracts/scripts/message_sharing/set.js) script to set validators and +weight. +validators is the set of witnesses signing the message, and weight is the minimum weight required for successful +signature verification when sending transactions on-chain. + +``` + let weight; + let validators; + if (network.name == 'b2dev') { + address = process.env.B2_DEV_MESSAGE_SHARING; + weight = { + chain_id: process.env.B2_DEV_CHAIN_ID, weight: 1, + }; + validators = [{ + chain_id: process.env.B2_DEV_CHAIN_ID, account: '0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d', valid: true, + }, { + chain_id: process.env.AS_DEV_CHAIN_ID, account: '0x8F8676b34cbEEe7ADc31D17a149B07E3474bC98d', valid: true, + }]; + } +``` + +By following these steps, the MessageSharing contract can be successfully deployed and configured for secure and +efficient cross-chain message transmission. + +``` +// Set on the bsquared-dev network +$ yarn hardhat run scripts/message_sharing/set.js --network b2dev +// Set on the arbitrum-sepolia network +$ yarn hardhat run scripts/message_sharing/set.js --network asdev +``` + +## Contracts instances + +``` +MessageSharing(Bsquared-dev): 0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8 +// +MessageSharing(Arbitrum-sepolia): 0x2A82058E46151E337Baba56620133FC39BD5B71F +``` \ No newline at end of file