|
1 | 1 | { |
2 | | - "address": "0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3", |
| 2 | + "address": "0xb5A05196Fdda3b680fdA6E17565f6707E9365752", |
3 | 3 | "abi": [ |
4 | 4 | { |
5 | 5 | "inputs": [ |
|
19 | 19 | ], |
20 | 20 | "stateMutability": "view", |
21 | 21 | "type": "function" |
| 22 | + }, |
| 23 | + { |
| 24 | + "inputs": [], |
| 25 | + "name": "trustedForwarder", |
| 26 | + "outputs": [ |
| 27 | + { |
| 28 | + "internalType": "address", |
| 29 | + "name": "", |
| 30 | + "type": "address" |
| 31 | + } |
| 32 | + ], |
| 33 | + "stateMutability": "view", |
| 34 | + "type": "function" |
22 | 35 | } |
23 | 36 | ], |
24 | | - "transactionHash": "0xabfc8b7940b42a21171bcdeb9f7c061ed7a62e2065d6919d402aae6989c31ed1", |
| 37 | + "transactionHash": "0xa09e138967eb7139f81fd51dce73d030dcbfd3223bb2c32b9f52ea772bbea444", |
25 | 38 | "receipt": { |
26 | 39 | "to": null, |
27 | 40 | "from": "0xB68d649F181bDE8A8FeE367535a606Cc3C09fCCd", |
28 | | - "contractAddress": "0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3", |
| 41 | + "contractAddress": "0xb5A05196Fdda3b680fdA6E17565f6707E9365752", |
29 | 42 | "transactionIndex": 1, |
30 | | - "gasUsed": "1233231", |
| 43 | + "gasUsed": "808252", |
31 | 44 | "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", |
32 | | - "blockHash": "0x3a8fb9d8b952f92819c3d47748fef3a9a8ab5615b253afcd1701e8d0ba782752", |
33 | | - "transactionHash": "0xabfc8b7940b42a21171bcdeb9f7c061ed7a62e2065d6919d402aae6989c31ed1", |
| 45 | + "blockHash": "0xb791806c4071442fdcf9a613655007bc0de2588d2571611f464e121ae73e10dd", |
| 46 | + "transactionHash": "0xa09e138967eb7139f81fd51dce73d030dcbfd3223bb2c32b9f52ea772bbea444", |
34 | 47 | "logs": [], |
35 | | - "blockNumber": 31573284, |
36 | | - "cumulativeGasUsed": "1233231", |
| 48 | + "blockNumber": 34517381, |
| 49 | + "cumulativeGasUsed": "808252", |
37 | 50 | "status": 1, |
38 | 51 | "byzantium": true |
39 | 52 | }, |
40 | 53 | "args": [], |
41 | | - "numDeployments": 1, |
42 | | - "solcInputHash": "e2f42af2f5273c7308f3825761226b47", |
43 | | - "metadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/metatx/ERC2771Context.sol\":\"ERC2771Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1337},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"src/metatx/ERC2771Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\nimport \\\"./ERC2771ContextStorage.sol\\\";\\nimport \\\"./ERC2771ContextInternal.sol\\\";\\nimport \\\"./IERC2771Context.sol\\\";\\n\\ncontract ERC2771Context is IERC2771Context, ERC2771ContextInternal {\\n using ERC2771ContextStorage for ERC2771ContextStorage.Layout;\\n\\n function isTrustedForwarder(address forwarder) public view virtual returns (bool) {\\n return _isTrustedForwarder(forwarder);\\n }\\n}\\n\",\"keccak256\":\"0x5473550cfca72a4bf32f47144f81c01e655f0032776f60ec4d7eca6850bdf895\",\"license\":\"MIT\"},\"src/metatx/ERC2771ContextInternal.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport \\\"./ERC2771ContextStorage.sol\\\";\\n\\nabstract contract ERC2771ContextInternal is Context {\\n function _isTrustedForwarder(address operator) internal view returns (bool) {\\n return ERC2771ContextStorage.layout().trustedForwarder == operator;\\n }\\n\\n function _msgSender() internal view virtual override returns (address sender) {\\n if (_isTrustedForwarder(msg.sender)) {\\n // The assembly code is more direct than the Solidity version using `abi.decode`.\\n /// @solidity memory-safe-assembly\\n assembly {\\n sender := shr(96, calldataload(sub(calldatasize(), 20)))\\n }\\n } else {\\n return super._msgSender();\\n }\\n }\\n\\n function _msgData() internal view virtual override returns (bytes calldata) {\\n if (_isTrustedForwarder(msg.sender)) {\\n return msg.data[:msg.data.length - 20];\\n } else {\\n return super._msgData();\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9b78f51039de18500ce56634bfa72f8d8a0510c97dd94f175e1cbd2385d4ae37\",\"license\":\"MIT\"},\"src/metatx/ERC2771ContextStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\nlibrary ERC2771ContextStorage {\\n struct Layout {\\n address trustedForwarder;\\n }\\n\\n bytes32 internal constant STORAGE_SLOT = keccak256(\\\"openzeppelin.contracts.storage.ERC2771Context\\\");\\n\\n function layout() internal pure returns (Layout storage l) {\\n bytes32 slot = STORAGE_SLOT;\\n assembly {\\n l.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xdb2e9e2c6145ecf4aae84a602ff668269869da26b25924e9b486b5e94936740e\",\"license\":\"MIT\"},\"src/metatx/IERC2771Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\ninterface IERC2771Context {\\n function isTrustedForwarder(address forwarder) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x7a4e180be11b78b5f0d8a14efc2009d08685e35e37d0c1eca767317e1145ed1f\",\"license\":\"MIT\"}},\"version\":1}", |
44 | | - "bytecode": "0x608060405234801561001057600080fd5b5060fd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063572b6c0514602d575b600080fd5b60786038366004608c565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b604051901515815260200160405180910390f35b600060208284031215609d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460c057600080fd5b939250505056fea264697066735822122023ddc8d058c0345018ecfa96ecdcff3095a28d31d153eefe2bc2866560ab42c264736f6c634300080f0033", |
45 | | - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063572b6c0514602d575b600080fd5b60786038366004608c565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b604051901515815260200160405180910390f35b600060208284031215609d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460c057600080fd5b939250505056fea264697066735822122023ddc8d058c0345018ecfa96ecdcff3095a28d31d153eefe2bc2866560ab42c264736f6c634300080f0033", |
| 54 | + "numDeployments": 2, |
| 55 | + "solcInputHash": "deeb9615089b4b4adbd23ef4716af455", |
| 56 | + "metadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:category\":\"Meta Transactions\",\"custom:provides-interfaces\":\"IERC2771Context\",\"custom:type\":\"eip-2535-facet\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ERC2771 Context\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides view functions about configured trusted forwarder according to EIP-2771.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/metatx/ERC2771Context.sol\":\"ERC2771Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1337},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"src/metatx/ERC2771Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\nimport \\\"./ERC2771ContextStorage.sol\\\";\\nimport \\\"./ERC2771ContextInternal.sol\\\";\\nimport \\\"./IERC2771Context.sol\\\";\\n\\n/**\\n * @title ERC2771 Context\\n * @notice Provides view functions about configured trusted forwarder according to EIP-2771.\\n *\\n * @custom:type eip-2535-facet\\n * @custom:category Meta Transactions\\n * @custom:provides-interfaces IERC2771Context\\n */\\ncontract ERC2771Context is IERC2771Context, ERC2771ContextInternal {\\n using ERC2771ContextStorage for ERC2771ContextStorage.Layout;\\n\\n function trustedForwarder() external view override returns (address) {\\n return ERC2771ContextStorage.layout().trustedForwarder;\\n }\\n\\n function isTrustedForwarder(address forwarder) public view virtual returns (bool) {\\n return _isTrustedForwarder(forwarder);\\n }\\n}\\n\",\"keccak256\":\"0x727040caffd59f755d64c5dc6e219ba935ea34de486265e265a14ee52137be24\",\"license\":\"MIT\"},\"src/metatx/ERC2771ContextInternal.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport \\\"./ERC2771ContextStorage.sol\\\";\\n\\nabstract contract ERC2771ContextInternal is Context {\\n function _isTrustedForwarder(address operator) internal view returns (bool) {\\n return ERC2771ContextStorage.layout().trustedForwarder == operator;\\n }\\n\\n function _msgSender() internal view virtual override returns (address sender) {\\n if (_isTrustedForwarder(msg.sender)) {\\n // The assembly code is more direct than the Solidity version using `abi.decode`.\\n /// @solidity memory-safe-assembly\\n assembly {\\n sender := shr(96, calldataload(sub(calldatasize(), 20)))\\n }\\n } else {\\n return super._msgSender();\\n }\\n }\\n\\n function _msgData() internal view virtual override returns (bytes calldata) {\\n if (_isTrustedForwarder(msg.sender)) {\\n return msg.data[:msg.data.length - 20];\\n } else {\\n return super._msgData();\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9b78f51039de18500ce56634bfa72f8d8a0510c97dd94f175e1cbd2385d4ae37\",\"license\":\"MIT\"},\"src/metatx/ERC2771ContextStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\nlibrary ERC2771ContextStorage {\\n struct Layout {\\n address trustedForwarder;\\n }\\n\\n bytes32 internal constant STORAGE_SLOT = keccak256(\\\"openzeppelin.contracts.storage.ERC2771Context\\\");\\n\\n function layout() internal pure returns (Layout storage l) {\\n bytes32 slot = STORAGE_SLOT;\\n assembly {\\n l.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xdb2e9e2c6145ecf4aae84a602ff668269869da26b25924e9b486b5e94936740e\",\"license\":\"MIT\"},\"src/metatx/IERC2771Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.15;\\n\\ninterface IERC2771Context {\\n function trustedForwarder() external view returns (address);\\n\\n function isTrustedForwarder(address forwarder) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x0daedab94060595fa25a1ae0a4450e5732b6e0f1b45c6396c537d10f9b40b542\",\"license\":\"MIT\"}},\"version\":1}", |
| 57 | + "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063572b6c051461003b5780637da0a8771461009e575b600080fd5b6100896100493660046100e5565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405190151581526020015b60405180910390f35b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b6000602082840312156100f757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461011b57600080fd5b939250505056fea264697066735822122009fb7418942c8f3c86a55d72104e5feed7c9dbfdf94587d92eda99ba4ab6152464736f6c634300080f0033", |
| 58 | + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063572b6c051461003b5780637da0a8771461009e575b600080fd5b6100896100493660046100e5565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405190151581526020015b60405180910390f35b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b6000602082840312156100f757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461011b57600080fd5b939250505056fea264697066735822122009fb7418942c8f3c86a55d72104e5feed7c9dbfdf94587d92eda99ba4ab6152464736f6c634300080f0033", |
46 | 59 | "devdoc": { |
| 60 | + "custom:category": "Meta Transactions", |
| 61 | + "custom:provides-interfaces": "IERC2771Context", |
| 62 | + "custom:type": "eip-2535-facet", |
47 | 63 | "kind": "dev", |
48 | 64 | "methods": {}, |
| 65 | + "title": "ERC2771 Context", |
49 | 66 | "version": 1 |
50 | 67 | }, |
51 | 68 | "userdoc": { |
52 | 69 | "kind": "user", |
53 | 70 | "methods": {}, |
| 71 | + "notice": "Provides view functions about configured trusted forwarder according to EIP-2771.", |
54 | 72 | "version": 1 |
55 | 73 | }, |
56 | 74 | "storageLayout": { |
|
0 commit comments