From 633e4ea6b78ee27c4154082f2147f3a3cb2e9461 Mon Sep 17 00:00:00 2001 From: taek Date: Thu, 22 Feb 2024 15:02:39 +0900 Subject: [PATCH] Modular permission (#84) * restructured to seprate plugins folder * added modular permission * fmt * synced dev * fix: shadowed variable * modular permission encoding checked * intersect supports validation data with aggregator * draft for modular permission * forge fmt * non-view for validCaller * fix: test for helper * changed validCaller to non-view * removed rawMessage, move this to policy...? * gas policy example for policy * execute policy for interval based execution limits * added natspec for modular permission validator * added flag to skip validation data * moved policy config to separate file * remapping to includ I4337 * temp * modular permission test without validCaller support * support requestor feature * now call it allowed requestor * forge fmt * example for eip712 * test fix to check if signature validation result is ok * fix: nonce fixes in ModularPermissionValidator * fix: use calldata for sig * fix: proof fetching in MerklePolicy * fix : use msg.sender instead of caller for signature verification on eip712 policy * chore: deploy signaturePolicy * fix: added validator in the storage mapping of SignaturePolicy to fix unauthenticated state change vuln * fix: remove p256-verifier lib * feat: added WebAuthnSigner for ModularPermissionValidator (#83) * feat: added Sudo policy for ModularPermissionValidator * fix: nonce for single tx dual enable and ECDSASigner sig --------- Co-authored-by: Sahil Vasava --- .gitignore | 1 + .gitmodules | 2 +- .../80001/run-1708379656.json | 31 + .../80001/run-1708379701.json | 33 + .../80001/run-1708379708.json | 65 ++ .../DeployKernel.s.sol/80001/run-latest.json | 65 ++ .../80001/run-1707331759.json | 69 ++ .../80001/run-1707331808.json | 73 ++ .../80001/run-1707331815.json | 169 ++++ .../80001/run-1707430304.json | 33 + .../80001/run-1707430395.json | 65 ++ .../80001/run-1707439892.json | 33 + .../80001/run-1707439906.json | 65 ++ .../80001/run-1707741950.json | 33 + .../80001/run-1707741957.json | 65 ++ .../80001/run-1707822518.json | 33 + .../80001/run-1707822525.json | 65 ++ .../80001/run-1708112110.json | 33 + .../80001/run-1708112117.json | 65 ++ .../80001/run-1708376910.json | 53 ++ .../80001/run-1708376917.json | 117 +++ .../80001/run-1708453269.json | 33 + .../80001/run-1708453276.json | 65 ++ .../80001/run-latest.json | 65 ++ foundry.toml | 2 +- gas/gas_report.sh | 4 +- index.ts | 1 - lib/p256-verifier | 1 + remappings.txt | 1 + script/DeployModularPermission.s.sol | 74 ++ script/postpack-contracts-package.sh | 4 - script/prepack-contracts-package.sh | 13 - src/Kernel.sol | 25 +- src/common/Types.sol | 10 + src/interfaces/IKernelValidator.sol | 2 +- src/lite/KernelLiteECDSA.sol | 2 +- src/mock/TestValidator.sol | 2 +- src/utils/KernelHelper.sol | 17 +- src/utils/KernelTestBase.sol | 6 + src/validator/ECDSATypedValidator.sol | 2 +- src/validator/ECDSAValidator.sol | 2 +- src/validator/ERC165SessionKeyValidator.sol | 2 +- src/validator/KillSwitchValidator.sol | 2 +- src/validator/SessionKeyValidator.sol | 6 +- src/validator/WeightedECDSAValidator.sol | 2 +- src/validator/modularPermission/IPolicy.sol | 23 + src/validator/modularPermission/ISigner.sol | 17 + .../ModularPermissionValidator.sol | 280 +++++++ .../modularPermission/PolicyConfig.sol | 67 ++ .../modularPermission/mock/MockPolicy.sol | 49 ++ .../modularPermission/mock/MockRequestor.sol | 11 + .../modularPermission/mock/MockSigner.sol | 42 + .../policies/EIP712Policy.sol | 131 ++++ .../policies/ExecutePolicy.sol | 50 ++ .../modularPermission/policies/GasPolicy.sol | 58 ++ .../policies/MerklePolicy.sol | 180 +++++ .../policies/SignaturePolicy.sol | 45 ++ .../modularPermission/policies/SudoPolicy.sol | 29 + .../modularPermission/signers/ECDSASigner.sol | 52 ++ .../signers/WebAuthnSigner.sol | 82 ++ test/foundry/KernelECDSA.t.sol | 8 +- test/foundry/KernelHelper.t.sol | 36 + test/foundry/validator/KernelECDSATyped.t.sol | 12 +- .../modularPermission/ModularPermission.t.sol | 729 ++++++++++++++++++ tsconfig.json | 11 - 65 files changed, 3358 insertions(+), 65 deletions(-) create mode 100644 broadcast/DeployKernel.s.sol/80001/run-1708379656.json create mode 100644 broadcast/DeployKernel.s.sol/80001/run-1708379701.json create mode 100644 broadcast/DeployKernel.s.sol/80001/run-1708379708.json create mode 100644 broadcast/DeployKernel.s.sol/80001/run-latest.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707331759.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707331808.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707331815.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707430304.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707430395.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707439892.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707439906.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707741950.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707741957.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707822518.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1707822525.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1708112110.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1708112117.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1708376910.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1708376917.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1708453269.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-1708453276.json create mode 100644 broadcast/DeployModularPermission.s.sol/80001/run-latest.json delete mode 100644 index.ts create mode 160000 lib/p256-verifier create mode 100644 script/DeployModularPermission.s.sol delete mode 100755 script/postpack-contracts-package.sh delete mode 100755 script/prepack-contracts-package.sh create mode 100644 src/validator/modularPermission/IPolicy.sol create mode 100644 src/validator/modularPermission/ISigner.sol create mode 100644 src/validator/modularPermission/ModularPermissionValidator.sol create mode 100644 src/validator/modularPermission/PolicyConfig.sol create mode 100644 src/validator/modularPermission/mock/MockPolicy.sol create mode 100644 src/validator/modularPermission/mock/MockRequestor.sol create mode 100644 src/validator/modularPermission/mock/MockSigner.sol create mode 100644 src/validator/modularPermission/policies/EIP712Policy.sol create mode 100644 src/validator/modularPermission/policies/ExecutePolicy.sol create mode 100644 src/validator/modularPermission/policies/GasPolicy.sol create mode 100644 src/validator/modularPermission/policies/MerklePolicy.sol create mode 100644 src/validator/modularPermission/policies/SignaturePolicy.sol create mode 100644 src/validator/modularPermission/policies/SudoPolicy.sol create mode 100644 src/validator/modularPermission/signers/ECDSASigner.sol create mode 100644 src/validator/modularPermission/signers/WebAuthnSigner.sol create mode 100644 test/foundry/validator/modularPermission/ModularPermission.t.sol delete mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 3978feff..cfe668b2 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ artifacts-selected cache_hardhat lcov.info +settings.json \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index ff8d8f4c..14110192 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,4 +9,4 @@ url = https://github.com/rdubois-crypto/FreshCryptoLib [submodule "lib/solady"] path = lib/solady - url = https://github.com/vectorized/solady + url = https://github.com/vectorized/solady \ No newline at end of file diff --git a/broadcast/DeployKernel.s.sol/80001/run-1708379656.json b/broadcast/DeployKernel.s.sol/80001/run-1708379656.json new file mode 100644 index 00000000..b47ca049 --- /dev/null +++ b/broadcast/DeployKernel.s.sol/80001/run-1708379656.json @@ -0,0 +1,31 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE2", + "contractName": "Kernel", + "contractAddress": "0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x32ee8b", + "value": "0x0", + "data": "0x00000000000000000000000000000000000000000000000000000000000000006101406040523480156200001257600080fd5b5060405162002c4138038062002c41833981016040819052620000359162000137565b306080524660a0528060608062000081604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a090206101005250506001600160a01b031661012052507f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd98054600160501b600160f01b0319166a010000000000000000000017905562000169565b6000602082840312156200014a57600080fd5b81516001600160a01b03811681146200016257600080fd5b9392505050565b60805160a05160c05160e0516101005161012051612a3b62000206600039600081816101e9015281816105ec015281816108e401528181610ae601528181610bb701528181610c6b01528181610f7b01528181610fff015281816110b7015281816112020152818161129b015261132901526000611c6901526000611d2301526000611cfd01526000611cad01526000611c8a0152612a3b6000f3fe60806040526004361061014f5760003560e01c806354fd4d50116100b6578063b68df16d1161006f578063b68df16d1461060e578063bc197c8114610621578063d087d28814610650578063d1f5789414610665578063d541622114610678578063f23a6e611461068b5761018e565b806354fd4d501461050557806355b14f501461053657806357b750471461054957806384b0196e1461056e57806388e7fd0614610596578063b0d691fe146105da5761018e565b806334fcd5be1161010857806334fcd5be146103885780633659cfe61461039b5780633a871cdd146103ae5780633e1b0812146103c157806351166ba0146103e157806351945447146104f25761018e565b806306fdde03146102615780630b3dc354146102a9578063150b7a02146102e25780631626ba7e1461032757806329f8b17414610347578063333daf921461035a5761018e565b3661018e57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080356001600160e01b031916905060006101b56000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902054600160601b90046001600160a01b0390811691507f000000000000000000000000000000000000000000000000000000000000000016331480159061021d575061021b6106b8565b155b1561023b57604051637046c88d60e01b815260040160405180910390fd5b3660008037600080366000845af43d6000803e80801561025a573d6000f35b3d6000fd5b005b34801561026d57600080fd5b506102936040518060400160405280600681526020016512d95c9b995b60d21b81525081565b6040516102a09190611dcf565b60405180910390f35b3480156102b557600080fd5b50600080516020612a1b8339815191525460501c5b6040516001600160a01b0390911681526020016102a0565b3480156102ee57600080fd5b5061030e6102fd366004611e52565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016102a0565b34801561033357600080fd5b5061030e610342366004611ec4565b610800565b61025f610355366004611f3b565b6108d9565b34801561036657600080fd5b5061037a610375366004611ec4565b610ac4565b6040519081526020016102a0565b61025f6103963660046120d9565b610adb565b61025f6103a93660046121df565b610bac565b61037a6103bc3660046121fc565b610c5e565b3480156103cd57600080fd5b5061037a6103dc36600461224f565b610f54565b3480156103ed57600080fd5b506104a56103fc366004612278565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160e01b03199590951681527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda855283902083519182018452805465ffffffffffff8082168452600160301b82041695830195909552600160601b9094046001600160a01b03908116938201939093526001909301549091169082015290565b60408051825165ffffffffffff908116825260208085015190911690820152828201516001600160a01b0390811692820192909252606092830151909116918101919091526080016102a0565b61025f610500366004612293565b610ff4565b34801561051157600080fd5b5061029360405180604001604052806005815260200164302e322e3360d81b81525081565b61025f610544366004612302565b6110ac565b34801561055557600080fd5b50600080516020612a1b8339815191525460e01b61030e565b34801561057a57600080fd5b506105836111d0565b6040516102a0979695949392919061233d565b3480156105a257600080fd5b50600080516020612a1b83398151915254640100000000900465ffffffffffff1660405165ffffffffffff90911681526020016102a0565b3480156105e657600080fd5b506102ca7f000000000000000000000000000000000000000000000000000000000000000081565b61025f61061c3660046123d3565b6111f7565b34801561062d57600080fd5b5061030e61063c366004612466565b63bc197c8160e01b98975050505050505050565b34801561065c57600080fd5b5061037a61127c565b61025f610673366004612302565b611313565b61025f610686366004612278565b61131e565b34801561069757600080fd5b5061030e6106a6366004612524565b63f23a6e6160e01b9695505050505050565b60006106c6336000366113b4565b156106d15750600190565b600080356001600160e01b031916905060006106f86000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902060018101549091506001600160a01b0316158061075c57508054600160301b900465ffffffffffff161580159061075c5750805442600160301b90910465ffffffffffff16105b80610771575080544265ffffffffffff909116115b1561077f5760009250505090565b6001810154604051639ea9bd5960e01b81526001600160a01b0390911690639ea9bd59906107b690339060009036906004016125c8565b6020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906125ed565b9250505090565b60008061080b611447565b60405161190160f01b60208201526022810182905260428101879052909150600090606201604051602081830303815290604052805190602001209050600061085733838989896114ca565b9050600080600061086784611645565b925092509250428365ffffffffffff161115801561088d5750428265ffffffffffff1610155b80156108a057506001600160a01b038116155b156108bb5750630b135d3f60e11b95506108d2945050505050565b506001600160e01b031995506108d2945050505050565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906109125750333014155b1561093057604051637046c88d60e01b815260040160405180910390fd5b60405180608001604052808465ffffffffffff1681526020018565ffffffffffff168152602001876001600160a01b03168152602001866001600160a01b03168152506109886000805160206129fb83398151915290565b6001600160e01b031989166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b815290861690630c95955690610a45908590859060040161260f565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691506001600160e01b03198a16907fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d32135390600090a450505050505050565b6000610ad333858686866114ca565b949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610b195750610b176106b8565b155b15610b3757604051637046c88d60e01b815260040160405180910390fd5b805160005b81811015610ba7576000838281518110610b5857610b58612623565b6020026020010151905060008160000151905060008260200151905060008360400151905060008082516020840185875af13d6000803e80801561025a57600187019650505050505050610b3c565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610be55750333014155b15610c0357604051637046c88d60e01b815260040160405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca957604051636b31ba1560e11b815260040160405180910390fd5b6024600480356101448101358101838101939083013592910190600090610cd290828587612639565b610cdb91612663565b90506001600160e01b03198116600003610d15578515610cff573434343489335af1505b610d0a888888611678565b9450505050506108d2565b600080516020612a1b8339815191525460e01b81811615610d3e5763fc2f51c56000526004601cfd5b5060006001600160e01b03198216600160e01b03610e0d5760408301358301601f1981013560007f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda81610d946004828688612639565b610d9d91612663565b6001600160e01b0319168152602081019190915260400160002060018101546001600160a01b031694509050610dd6876004818b612639565b82549199509750600160301b810460a01b65ffffffffffff60a01b1660d09190911b6001600160d01b031916179850505050610e6f565b6001600160e01b03198216600160e11b03610e615760408301358301601f19810135610e50610e40600460008486612639565b610e4991612663565b8888611770565b919a50985096509250610e6f915050565b6001955050505050506108d2565b8615610e7f57343434348a335af1505b6000610e8a8a612691565b905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152604051633a871cdd60e01b8152610f469088906001600160a01b03851690633a871cdd90610efe9086908f908f9060040161279f565b6020604051808303816000875af1158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190612891565b611ad9565b9a9950505050505050505050565b604051631aab3f0d60e11b81523060048201526001600160c01b03821660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190612891565b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480159061102d5750333014155b801561103e575061103c6106b8565b155b1561105c57604051637046c88d60e01b815260040160405180910390fd5b6000816001811115611070576110706128aa565b1461108e576040516367ce775960e01b815260040160405180910390fd5b60008083516020850186885af13d6000803e80801561025a573d6000f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906110e55750333014155b1561110357604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b83398151915280546001600160a01b03858116600160501b818102600160501b600160f01b031985161790945560405193909204169182907fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c90600090a360405163064acaab60e11b81526001600160a01b03851690630c95955690611198908690869060040161260f565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b5050505050505050565b600f60f81b60608060008080836111e5611b97565b97989097965046955030945091925090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112305750333014155b8015611241575061123f6106b8565b155b1561125f57604051637046c88d60e01b815260040160405180910390fd5b600080825160208401855af43d6000803e80801561025a573d6000f35b604051631aab3f0d60e11b8152306004820152600060248201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190612891565b905090565b610ba7838383611bd3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906113575750333014155b1561137557604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b833981519152805460e09290921c69ffffffffffffffffffff19909216919091176401000000004265ffffffffffff1602179055565b600080516020612a1b83398151915254604051639ea9bd5960e01b815260009160501c906001600160a01b03821690639ea9bd59906113fb908890889088906004016125c8565b6020604051808303816000875af115801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906125ed565b95945050505050565b6000806000611454611b97565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818601528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c0909201905280519101209392505050565b600080600080516020612a1b8339815191525460501c9050600080826001600160a01b031663333daf9260e01b89888860405160240161150c939291906128c0565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093525161154e928b918e91016128da565b60408051601f19818403018152908290526115689161290e565b600060405180830381855afa9150503d80600081146115a3576040519150601f19603f3d011682016040523d82523d6000602084013e6115a8565b606091505b5091509150816116245760405162461bcd60e51b815260206004820152603860248201527f4b65726e656c3a3a5f76616c69646174655369676e61747572653a206661696c60448201527f656420746f2076616c6964617465207369676e61747572650000000000000000606482015260840160405180910390fd5b808060200190518101906116389190612891565b9998505050505050505050565b600060a082901c65ffffffffffff16828115600019810161166a5765ffffffffffff92505b508360d01c92509193909250565b60008061168485612691565b905061169461014086018661292a565b6116a2916004908290612639565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152600080516020612a1b83398151915254604051633a871cdd60e01b815260509190911c906001600160a01b03821690633a871cdd906117239085908990899060040161279f565b6020604051808303816000875af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117669190612891565b9695505050505050565b6000803681611783602460108789612639565b61178c91612970565b60601c9350605860006117a2826038898b612639565b6117ab9161299e565b828101929091508801816117c460208501858b8d612639565b6117cd9161299e565b60001c925060208401935060006118b77f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee96417660001b8d8d8d60049060249261181693929190612639565b61181f9161299e565b60001c8e8e60249060389261183693929190612639565b61183f91612970565b60601c87876040516118529291906129bc565b60405190819003812061189c95949392916020019485526001600160e01b031993909316602085015260408401919091526001600160a01b03166060830152608082015260a00190565b60405160208183030381529060405280519060200120611c67565b90506119076118db3083848f8f8b908b8d01926118d693929190612639565b6114ca565b8c8c6004906024926118ef93929190612639565b6118f89161299e565b6001600160a01b031916611ad9565b97508385019450848b019650848a03955060405180608001604052808c8c600490600a9261193793929190612639565b611940916129cc565b60d01c65ffffffffffff1681526020018c8c600a9060109261196493929190612639565b61196d916129cc565b60d01c65ffffffffffff1681526020018c8c60249060389261199193929190612639565b61199a91612970565b60601c6001600160a01b031681526020018c8c6010906024926119bf93929190612639565b6119c891612970565b60601c90526000805160206129fb8339815191526001600160e01b03198e166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b8152908a1690630c95955690611a99908690869060040161260f565b600060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b50505050505050505093509350935093565b600081830160601b8260601b81148460601b8214176001600160a01b0384861816151760018114611b0d5760019250611b8f565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b86169081611b525765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611b70575065ffffffffffff60a01b5b808218908211021880611b89575065ffffffffffff60a01b5b92909217915b505092915050565b604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b600080516020612a1b8339815191525460501c6001600160a01b03811615611c0d5760405162dc149f60e41b815260040160405180910390fd5b600080516020612a1b8339815191528054600160501b600160f01b031916600160501b6001600160a01b0387169081029190911790915560405163064acaab60e11b8152630c95955690611198908690869060040161260f565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416611d5a5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60005b83811015611d9a578181015183820152602001611d82565b50506000910152565b60008151808452611dbb816020860160208601611d7f565b601f01601f19169290920160200192915050565b6020815260006108d26020830184611da3565b6001600160a01b0381168114611df757600080fd5b50565b8035611e0581611de2565b919050565b60008083601f840112611e1c57600080fd5b5081356001600160401b03811115611e3357600080fd5b602083019150836020828501011115611e4b57600080fd5b9250929050565b600080600080600060808688031215611e6a57600080fd5b8535611e7581611de2565b94506020860135611e8581611de2565b93506040860135925060608601356001600160401b03811115611ea757600080fd5b611eb388828901611e0a565b969995985093965092949392505050565b600080600060408486031215611ed957600080fd5b8335925060208401356001600160401b03811115611ef657600080fd5b611f0286828701611e0a565b9497909650939450505050565b80356001600160e01b031981168114611e0557600080fd5b65ffffffffffff81168114611df757600080fd5b600080600080600080600060c0888a031215611f5657600080fd5b611f5f88611f0f565b96506020880135611f6f81611de2565b95506040880135611f7f81611de2565b94506060880135611f8f81611f27565b93506080880135611f9f81611f27565b925060a08801356001600160401b03811115611fba57600080fd5b611fc68a828b01611e0a565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561201157612011611fd9565b60405290565b60405161016081016001600160401b038111828210171561201157612011611fd9565b604051601f8201601f191681016001600160401b038111828210171561206257612062611fd9565b604052919050565b600082601f83011261207b57600080fd5b81356001600160401b0381111561209457612094611fd9565b6120a7601f8201601f191660200161203a565b8181528460208386010111156120bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156120ec57600080fd5b82356001600160401b038082111561210357600080fd5b818501915085601f83011261211757600080fd5b81358181111561212957612129611fd9565b8060051b61213885820161203a565b918252838101850191858101908984111561215257600080fd5b86860192505b83831015611638578235858111156121705760008081fd5b86016060818c03601f19018113156121885760008081fd5b612190611fef565b8983013561219d81611de2565b81526040838101358b8301529183013591888311156121bc5760008081fd5b6121ca8e8c8587010161206a565b90820152845250509186019190860190612158565b6000602082840312156121f157600080fd5b81356108d281611de2565b60008060006060848603121561221157600080fd5b83356001600160401b0381111561222757600080fd5b8401610160818703121561223a57600080fd5b95602085013595506040909401359392505050565b60006020828403121561226157600080fd5b81356001600160c01b03811681146108d257600080fd5b60006020828403121561228a57600080fd5b6108d282611f0f565b600080600080608085870312156122a957600080fd5b84356122b481611de2565b93506020850135925060408501356001600160401b038111156122d657600080fd5b6122e28782880161206a565b9250506060850135600281106122f757600080fd5b939692955090935050565b60008060006040848603121561231757600080fd5b833561232281611de2565b925060208401356001600160401b03811115611ef657600080fd5b60ff60f81b881681526000602060e08184015261235d60e084018a611da3565b838103604085015261236f818a611da3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156123c1578351835292840192918401916001016123a5565b50909c9b505050505050505050505050565b600080604083850312156123e657600080fd5b82356123f181611de2565b915060208301356001600160401b0381111561240c57600080fd5b6124188582860161206a565b9150509250929050565b60008083601f84011261243457600080fd5b5081356001600160401b0381111561244b57600080fd5b6020830191508360208260051b8501011115611e4b57600080fd5b60008060008060008060008060a0898b03121561248257600080fd5b883561248d81611de2565b9750602089013561249d81611de2565b965060408901356001600160401b03808211156124b957600080fd5b6124c58c838d01612422565b909850965060608b01359150808211156124de57600080fd5b6124ea8c838d01612422565b909650945060808b013591508082111561250357600080fd5b506125108b828c01611e0a565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561253d57600080fd5b863561254881611de2565b9550602087013561255881611de2565b9450604087013593506060870135925060808701356001600160401b0381111561258157600080fd5b61258d89828a01611e0a565b979a9699509497509295939492505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061143e908301848661259f565b6000602082840312156125ff57600080fd5b815180151581146108d257600080fd5b602081526000610ad360208301848661259f565b634e487b7160e01b600052603260045260246000fd5b6000808585111561264957600080fd5b8386111561265657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611b8f5760049490940360031b84901b1690921692915050565b600061016082360312156126a457600080fd5b6126ac612017565b6126b583611dfa565b81526020830135602082015260408301356001600160401b03808211156126db57600080fd5b6126e73683870161206a565b6040840152606085013591508082111561270057600080fd5b61270c3683870161206a565b60608401526080850135608084015260a085013560a084015260c085013560c084015260e085013560e0840152610100915081850135828401526101209150818501358181111561275c57600080fd5b6127683682880161206a565b83850152506101409150818501358181111561278357600080fd5b61278f3682880161206a565b8385015250505080915050919050565b606081526127b96060820185516001600160a01b03169052565b60208401516080820152600060408501516101608060a08501526127e16101c0850183611da3565b91506060870151605f19808685030160c08701526127ff8483611da3565b9350608089015160e087015260a08901519150610100828188015260c08a01519250610120838189015260e08b0151935061014084818a0152828c0151868a0152818c0151955083898803016101808a015261285b8787611da3565b9650808c0151955050505080868503016101a0870152505061287d8282611da3565b602085019690965250505060400152919050565b6000602082840312156128a357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260406020820152600061143e60408301848661259f565b600084516128ec818460208901611d7f565b919091019283525060601b6001600160601b0319166020820152603401919050565b60008251612920818460208701611d7f565b9190910192915050565b6000808335601e1984360301811261294157600080fd5b8301803591506001600160401b0382111561295b57600080fd5b602001915036819003821315611e4b57600080fd5b6001600160601b03198135818116916014851015611b8f5760149490940360031b84901b1690921692915050565b80356020831015610fee57600019602084900360031b1b1692915050565b8183823760009101908152919050565b6001600160d01b03198135818116916006851015611b8f5760069490940360031b84901b169092169291505056fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd8439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd90000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789", + "nonce": "0x95ea" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708379656, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployKernel.s.sol/80001/run-1708379701.json b/broadcast/DeployKernel.s.sol/80001/run-1708379701.json new file mode 100644 index 00000000..1db8adf8 --- /dev/null +++ b/broadcast/DeployKernel.s.sol/80001/run-1708379701.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionType": "CREATE2", + "contractName": "Kernel", + "contractAddress": "0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x32ee8b", + "value": "0x0", + "data": "0x00000000000000000000000000000000000000000000000000000000000000006101406040523480156200001257600080fd5b5060405162002c4138038062002c41833981016040819052620000359162000137565b306080524660a0528060608062000081604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a090206101005250506001600160a01b031661012052507f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd98054600160501b600160f01b0319166a010000000000000000000017905562000169565b6000602082840312156200014a57600080fd5b81516001600160a01b03811681146200016257600080fd5b9392505050565b60805160a05160c05160e0516101005161012051612a3b62000206600039600081816101e9015281816105ec015281816108e401528181610ae601528181610bb701528181610c6b01528181610f7b01528181610fff015281816110b7015281816112020152818161129b015261132901526000611c6901526000611d2301526000611cfd01526000611cad01526000611c8a0152612a3b6000f3fe60806040526004361061014f5760003560e01c806354fd4d50116100b6578063b68df16d1161006f578063b68df16d1461060e578063bc197c8114610621578063d087d28814610650578063d1f5789414610665578063d541622114610678578063f23a6e611461068b5761018e565b806354fd4d501461050557806355b14f501461053657806357b750471461054957806384b0196e1461056e57806388e7fd0614610596578063b0d691fe146105da5761018e565b806334fcd5be1161010857806334fcd5be146103885780633659cfe61461039b5780633a871cdd146103ae5780633e1b0812146103c157806351166ba0146103e157806351945447146104f25761018e565b806306fdde03146102615780630b3dc354146102a9578063150b7a02146102e25780631626ba7e1461032757806329f8b17414610347578063333daf921461035a5761018e565b3661018e57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080356001600160e01b031916905060006101b56000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902054600160601b90046001600160a01b0390811691507f000000000000000000000000000000000000000000000000000000000000000016331480159061021d575061021b6106b8565b155b1561023b57604051637046c88d60e01b815260040160405180910390fd5b3660008037600080366000845af43d6000803e80801561025a573d6000f35b3d6000fd5b005b34801561026d57600080fd5b506102936040518060400160405280600681526020016512d95c9b995b60d21b81525081565b6040516102a09190611dcf565b60405180910390f35b3480156102b557600080fd5b50600080516020612a1b8339815191525460501c5b6040516001600160a01b0390911681526020016102a0565b3480156102ee57600080fd5b5061030e6102fd366004611e52565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016102a0565b34801561033357600080fd5b5061030e610342366004611ec4565b610800565b61025f610355366004611f3b565b6108d9565b34801561036657600080fd5b5061037a610375366004611ec4565b610ac4565b6040519081526020016102a0565b61025f6103963660046120d9565b610adb565b61025f6103a93660046121df565b610bac565b61037a6103bc3660046121fc565b610c5e565b3480156103cd57600080fd5b5061037a6103dc36600461224f565b610f54565b3480156103ed57600080fd5b506104a56103fc366004612278565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160e01b03199590951681527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda855283902083519182018452805465ffffffffffff8082168452600160301b82041695830195909552600160601b9094046001600160a01b03908116938201939093526001909301549091169082015290565b60408051825165ffffffffffff908116825260208085015190911690820152828201516001600160a01b0390811692820192909252606092830151909116918101919091526080016102a0565b61025f610500366004612293565b610ff4565b34801561051157600080fd5b5061029360405180604001604052806005815260200164302e322e3360d81b81525081565b61025f610544366004612302565b6110ac565b34801561055557600080fd5b50600080516020612a1b8339815191525460e01b61030e565b34801561057a57600080fd5b506105836111d0565b6040516102a0979695949392919061233d565b3480156105a257600080fd5b50600080516020612a1b83398151915254640100000000900465ffffffffffff1660405165ffffffffffff90911681526020016102a0565b3480156105e657600080fd5b506102ca7f000000000000000000000000000000000000000000000000000000000000000081565b61025f61061c3660046123d3565b6111f7565b34801561062d57600080fd5b5061030e61063c366004612466565b63bc197c8160e01b98975050505050505050565b34801561065c57600080fd5b5061037a61127c565b61025f610673366004612302565b611313565b61025f610686366004612278565b61131e565b34801561069757600080fd5b5061030e6106a6366004612524565b63f23a6e6160e01b9695505050505050565b60006106c6336000366113b4565b156106d15750600190565b600080356001600160e01b031916905060006106f86000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902060018101549091506001600160a01b0316158061075c57508054600160301b900465ffffffffffff161580159061075c5750805442600160301b90910465ffffffffffff16105b80610771575080544265ffffffffffff909116115b1561077f5760009250505090565b6001810154604051639ea9bd5960e01b81526001600160a01b0390911690639ea9bd59906107b690339060009036906004016125c8565b6020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906125ed565b9250505090565b60008061080b611447565b60405161190160f01b60208201526022810182905260428101879052909150600090606201604051602081830303815290604052805190602001209050600061085733838989896114ca565b9050600080600061086784611645565b925092509250428365ffffffffffff161115801561088d5750428265ffffffffffff1610155b80156108a057506001600160a01b038116155b156108bb5750630b135d3f60e11b95506108d2945050505050565b506001600160e01b031995506108d2945050505050565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906109125750333014155b1561093057604051637046c88d60e01b815260040160405180910390fd5b60405180608001604052808465ffffffffffff1681526020018565ffffffffffff168152602001876001600160a01b03168152602001866001600160a01b03168152506109886000805160206129fb83398151915290565b6001600160e01b031989166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b815290861690630c95955690610a45908590859060040161260f565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691506001600160e01b03198a16907fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d32135390600090a450505050505050565b6000610ad333858686866114ca565b949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610b195750610b176106b8565b155b15610b3757604051637046c88d60e01b815260040160405180910390fd5b805160005b81811015610ba7576000838281518110610b5857610b58612623565b6020026020010151905060008160000151905060008260200151905060008360400151905060008082516020840185875af13d6000803e80801561025a57600187019650505050505050610b3c565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610be55750333014155b15610c0357604051637046c88d60e01b815260040160405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca957604051636b31ba1560e11b815260040160405180910390fd5b6024600480356101448101358101838101939083013592910190600090610cd290828587612639565b610cdb91612663565b90506001600160e01b03198116600003610d15578515610cff573434343489335af1505b610d0a888888611678565b9450505050506108d2565b600080516020612a1b8339815191525460e01b81811615610d3e5763fc2f51c56000526004601cfd5b5060006001600160e01b03198216600160e01b03610e0d5760408301358301601f1981013560007f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda81610d946004828688612639565b610d9d91612663565b6001600160e01b0319168152602081019190915260400160002060018101546001600160a01b031694509050610dd6876004818b612639565b82549199509750600160301b810460a01b65ffffffffffff60a01b1660d09190911b6001600160d01b031916179850505050610e6f565b6001600160e01b03198216600160e11b03610e615760408301358301601f19810135610e50610e40600460008486612639565b610e4991612663565b8888611770565b919a50985096509250610e6f915050565b6001955050505050506108d2565b8615610e7f57343434348a335af1505b6000610e8a8a612691565b905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152604051633a871cdd60e01b8152610f469088906001600160a01b03851690633a871cdd90610efe9086908f908f9060040161279f565b6020604051808303816000875af1158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190612891565b611ad9565b9a9950505050505050505050565b604051631aab3f0d60e11b81523060048201526001600160c01b03821660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190612891565b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480159061102d5750333014155b801561103e575061103c6106b8565b155b1561105c57604051637046c88d60e01b815260040160405180910390fd5b6000816001811115611070576110706128aa565b1461108e576040516367ce775960e01b815260040160405180910390fd5b60008083516020850186885af13d6000803e80801561025a573d6000f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906110e55750333014155b1561110357604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b83398151915280546001600160a01b03858116600160501b818102600160501b600160f01b031985161790945560405193909204169182907fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c90600090a360405163064acaab60e11b81526001600160a01b03851690630c95955690611198908690869060040161260f565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b5050505050505050565b600f60f81b60608060008080836111e5611b97565b97989097965046955030945091925090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112305750333014155b8015611241575061123f6106b8565b155b1561125f57604051637046c88d60e01b815260040160405180910390fd5b600080825160208401855af43d6000803e80801561025a573d6000f35b604051631aab3f0d60e11b8152306004820152600060248201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190612891565b905090565b610ba7838383611bd3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906113575750333014155b1561137557604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b833981519152805460e09290921c69ffffffffffffffffffff19909216919091176401000000004265ffffffffffff1602179055565b600080516020612a1b83398151915254604051639ea9bd5960e01b815260009160501c906001600160a01b03821690639ea9bd59906113fb908890889088906004016125c8565b6020604051808303816000875af115801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906125ed565b95945050505050565b6000806000611454611b97565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818601528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c0909201905280519101209392505050565b600080600080516020612a1b8339815191525460501c9050600080826001600160a01b031663333daf9260e01b89888860405160240161150c939291906128c0565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093525161154e928b918e91016128da565b60408051601f19818403018152908290526115689161290e565b600060405180830381855afa9150503d80600081146115a3576040519150601f19603f3d011682016040523d82523d6000602084013e6115a8565b606091505b5091509150816116245760405162461bcd60e51b815260206004820152603860248201527f4b65726e656c3a3a5f76616c69646174655369676e61747572653a206661696c60448201527f656420746f2076616c6964617465207369676e61747572650000000000000000606482015260840160405180910390fd5b808060200190518101906116389190612891565b9998505050505050505050565b600060a082901c65ffffffffffff16828115600019810161166a5765ffffffffffff92505b508360d01c92509193909250565b60008061168485612691565b905061169461014086018661292a565b6116a2916004908290612639565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152600080516020612a1b83398151915254604051633a871cdd60e01b815260509190911c906001600160a01b03821690633a871cdd906117239085908990899060040161279f565b6020604051808303816000875af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117669190612891565b9695505050505050565b6000803681611783602460108789612639565b61178c91612970565b60601c9350605860006117a2826038898b612639565b6117ab9161299e565b828101929091508801816117c460208501858b8d612639565b6117cd9161299e565b60001c925060208401935060006118b77f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee96417660001b8d8d8d60049060249261181693929190612639565b61181f9161299e565b60001c8e8e60249060389261183693929190612639565b61183f91612970565b60601c87876040516118529291906129bc565b60405190819003812061189c95949392916020019485526001600160e01b031993909316602085015260408401919091526001600160a01b03166060830152608082015260a00190565b60405160208183030381529060405280519060200120611c67565b90506119076118db3083848f8f8b908b8d01926118d693929190612639565b6114ca565b8c8c6004906024926118ef93929190612639565b6118f89161299e565b6001600160a01b031916611ad9565b97508385019450848b019650848a03955060405180608001604052808c8c600490600a9261193793929190612639565b611940916129cc565b60d01c65ffffffffffff1681526020018c8c600a9060109261196493929190612639565b61196d916129cc565b60d01c65ffffffffffff1681526020018c8c60249060389261199193929190612639565b61199a91612970565b60601c6001600160a01b031681526020018c8c6010906024926119bf93929190612639565b6119c891612970565b60601c90526000805160206129fb8339815191526001600160e01b03198e166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b8152908a1690630c95955690611a99908690869060040161260f565b600060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b50505050505050505093509350935093565b600081830160601b8260601b81148460601b8214176001600160a01b0384861816151760018114611b0d5760019250611b8f565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b86169081611b525765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611b70575065ffffffffffff60a01b5b808218908211021880611b89575065ffffffffffff60a01b5b92909217915b505092915050565b604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b600080516020612a1b8339815191525460501c6001600160a01b03811615611c0d5760405162dc149f60e41b815260040160405180910390fd5b600080516020612a1b8339815191528054600160501b600160f01b031916600160501b6001600160a01b0387169081029190911790915560405163064acaab60e11b8152630c95955690611198908690869060040161260f565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416611d5a5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60005b83811015611d9a578181015183820152602001611d82565b50506000910152565b60008151808452611dbb816020860160208601611d7f565b601f01601f19169290920160200192915050565b6020815260006108d26020830184611da3565b6001600160a01b0381168114611df757600080fd5b50565b8035611e0581611de2565b919050565b60008083601f840112611e1c57600080fd5b5081356001600160401b03811115611e3357600080fd5b602083019150836020828501011115611e4b57600080fd5b9250929050565b600080600080600060808688031215611e6a57600080fd5b8535611e7581611de2565b94506020860135611e8581611de2565b93506040860135925060608601356001600160401b03811115611ea757600080fd5b611eb388828901611e0a565b969995985093965092949392505050565b600080600060408486031215611ed957600080fd5b8335925060208401356001600160401b03811115611ef657600080fd5b611f0286828701611e0a565b9497909650939450505050565b80356001600160e01b031981168114611e0557600080fd5b65ffffffffffff81168114611df757600080fd5b600080600080600080600060c0888a031215611f5657600080fd5b611f5f88611f0f565b96506020880135611f6f81611de2565b95506040880135611f7f81611de2565b94506060880135611f8f81611f27565b93506080880135611f9f81611f27565b925060a08801356001600160401b03811115611fba57600080fd5b611fc68a828b01611e0a565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561201157612011611fd9565b60405290565b60405161016081016001600160401b038111828210171561201157612011611fd9565b604051601f8201601f191681016001600160401b038111828210171561206257612062611fd9565b604052919050565b600082601f83011261207b57600080fd5b81356001600160401b0381111561209457612094611fd9565b6120a7601f8201601f191660200161203a565b8181528460208386010111156120bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156120ec57600080fd5b82356001600160401b038082111561210357600080fd5b818501915085601f83011261211757600080fd5b81358181111561212957612129611fd9565b8060051b61213885820161203a565b918252838101850191858101908984111561215257600080fd5b86860192505b83831015611638578235858111156121705760008081fd5b86016060818c03601f19018113156121885760008081fd5b612190611fef565b8983013561219d81611de2565b81526040838101358b8301529183013591888311156121bc5760008081fd5b6121ca8e8c8587010161206a565b90820152845250509186019190860190612158565b6000602082840312156121f157600080fd5b81356108d281611de2565b60008060006060848603121561221157600080fd5b83356001600160401b0381111561222757600080fd5b8401610160818703121561223a57600080fd5b95602085013595506040909401359392505050565b60006020828403121561226157600080fd5b81356001600160c01b03811681146108d257600080fd5b60006020828403121561228a57600080fd5b6108d282611f0f565b600080600080608085870312156122a957600080fd5b84356122b481611de2565b93506020850135925060408501356001600160401b038111156122d657600080fd5b6122e28782880161206a565b9250506060850135600281106122f757600080fd5b939692955090935050565b60008060006040848603121561231757600080fd5b833561232281611de2565b925060208401356001600160401b03811115611ef657600080fd5b60ff60f81b881681526000602060e08184015261235d60e084018a611da3565b838103604085015261236f818a611da3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156123c1578351835292840192918401916001016123a5565b50909c9b505050505050505050505050565b600080604083850312156123e657600080fd5b82356123f181611de2565b915060208301356001600160401b0381111561240c57600080fd5b6124188582860161206a565b9150509250929050565b60008083601f84011261243457600080fd5b5081356001600160401b0381111561244b57600080fd5b6020830191508360208260051b8501011115611e4b57600080fd5b60008060008060008060008060a0898b03121561248257600080fd5b883561248d81611de2565b9750602089013561249d81611de2565b965060408901356001600160401b03808211156124b957600080fd5b6124c58c838d01612422565b909850965060608b01359150808211156124de57600080fd5b6124ea8c838d01612422565b909650945060808b013591508082111561250357600080fd5b506125108b828c01611e0a565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561253d57600080fd5b863561254881611de2565b9550602087013561255881611de2565b9450604087013593506060870135925060808701356001600160401b0381111561258157600080fd5b61258d89828a01611e0a565b979a9699509497509295939492505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061143e908301848661259f565b6000602082840312156125ff57600080fd5b815180151581146108d257600080fd5b602081526000610ad360208301848661259f565b634e487b7160e01b600052603260045260246000fd5b6000808585111561264957600080fd5b8386111561265657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611b8f5760049490940360031b84901b1690921692915050565b600061016082360312156126a457600080fd5b6126ac612017565b6126b583611dfa565b81526020830135602082015260408301356001600160401b03808211156126db57600080fd5b6126e73683870161206a565b6040840152606085013591508082111561270057600080fd5b61270c3683870161206a565b60608401526080850135608084015260a085013560a084015260c085013560c084015260e085013560e0840152610100915081850135828401526101209150818501358181111561275c57600080fd5b6127683682880161206a565b83850152506101409150818501358181111561278357600080fd5b61278f3682880161206a565b8385015250505080915050919050565b606081526127b96060820185516001600160a01b03169052565b60208401516080820152600060408501516101608060a08501526127e16101c0850183611da3565b91506060870151605f19808685030160c08701526127ff8483611da3565b9350608089015160e087015260a08901519150610100828188015260c08a01519250610120838189015260e08b0151935061014084818a0152828c0151868a0152818c0151955083898803016101808a015261285b8787611da3565b9650808c0151955050505080868503016101a0870152505061287d8282611da3565b602085019690965250505060400152919050565b6000602082840312156128a357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260406020820152600061143e60408301848661259f565b600084516128ec818460208901611d7f565b919091019283525060601b6001600160601b0319166020820152603401919050565b60008251612920818460208701611d7f565b9190910192915050565b6000808335601e1984360301811261294157600080fd5b8301803591506001600160401b0382111561295b57600080fd5b602001915036819003821315611e4b57600080fd5b6001600160601b03198135818116916014851015611b8f5760149490940360031b84901b1690921692915050565b80356020831015610fee57600019602084900360031b1b1692915050565b8183823760009101908152919050565b6001600160d01b03198135818116916006851015611b8f5760069490940360031b84901b169092169291505056fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd8439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd90000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789", + "nonce": "0x1db" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5" + ], + "returns": {}, + "timestamp": 1708379701, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployKernel.s.sol/80001/run-1708379708.json b/broadcast/DeployKernel.s.sol/80001/run-1708379708.json new file mode 100644 index 00000000..8290830e --- /dev/null +++ b/broadcast/DeployKernel.s.sol/80001/run-1708379708.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionType": "CREATE2", + "contractName": "Kernel", + "contractAddress": "0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x32ee8b", + "value": "0x0", + "data": "0x00000000000000000000000000000000000000000000000000000000000000006101406040523480156200001257600080fd5b5060405162002c4138038062002c41833981016040819052620000359162000137565b306080524660a0528060608062000081604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a090206101005250506001600160a01b031661012052507f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd98054600160501b600160f01b0319166a010000000000000000000017905562000169565b6000602082840312156200014a57600080fd5b81516001600160a01b03811681146200016257600080fd5b9392505050565b60805160a05160c05160e0516101005161012051612a3b62000206600039600081816101e9015281816105ec015281816108e401528181610ae601528181610bb701528181610c6b01528181610f7b01528181610fff015281816110b7015281816112020152818161129b015261132901526000611c6901526000611d2301526000611cfd01526000611cad01526000611c8a0152612a3b6000f3fe60806040526004361061014f5760003560e01c806354fd4d50116100b6578063b68df16d1161006f578063b68df16d1461060e578063bc197c8114610621578063d087d28814610650578063d1f5789414610665578063d541622114610678578063f23a6e611461068b5761018e565b806354fd4d501461050557806355b14f501461053657806357b750471461054957806384b0196e1461056e57806388e7fd0614610596578063b0d691fe146105da5761018e565b806334fcd5be1161010857806334fcd5be146103885780633659cfe61461039b5780633a871cdd146103ae5780633e1b0812146103c157806351166ba0146103e157806351945447146104f25761018e565b806306fdde03146102615780630b3dc354146102a9578063150b7a02146102e25780631626ba7e1461032757806329f8b17414610347578063333daf921461035a5761018e565b3661018e57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080356001600160e01b031916905060006101b56000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902054600160601b90046001600160a01b0390811691507f000000000000000000000000000000000000000000000000000000000000000016331480159061021d575061021b6106b8565b155b1561023b57604051637046c88d60e01b815260040160405180910390fd5b3660008037600080366000845af43d6000803e80801561025a573d6000f35b3d6000fd5b005b34801561026d57600080fd5b506102936040518060400160405280600681526020016512d95c9b995b60d21b81525081565b6040516102a09190611dcf565b60405180910390f35b3480156102b557600080fd5b50600080516020612a1b8339815191525460501c5b6040516001600160a01b0390911681526020016102a0565b3480156102ee57600080fd5b5061030e6102fd366004611e52565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016102a0565b34801561033357600080fd5b5061030e610342366004611ec4565b610800565b61025f610355366004611f3b565b6108d9565b34801561036657600080fd5b5061037a610375366004611ec4565b610ac4565b6040519081526020016102a0565b61025f6103963660046120d9565b610adb565b61025f6103a93660046121df565b610bac565b61037a6103bc3660046121fc565b610c5e565b3480156103cd57600080fd5b5061037a6103dc36600461224f565b610f54565b3480156103ed57600080fd5b506104a56103fc366004612278565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160e01b03199590951681527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda855283902083519182018452805465ffffffffffff8082168452600160301b82041695830195909552600160601b9094046001600160a01b03908116938201939093526001909301549091169082015290565b60408051825165ffffffffffff908116825260208085015190911690820152828201516001600160a01b0390811692820192909252606092830151909116918101919091526080016102a0565b61025f610500366004612293565b610ff4565b34801561051157600080fd5b5061029360405180604001604052806005815260200164302e322e3360d81b81525081565b61025f610544366004612302565b6110ac565b34801561055557600080fd5b50600080516020612a1b8339815191525460e01b61030e565b34801561057a57600080fd5b506105836111d0565b6040516102a0979695949392919061233d565b3480156105a257600080fd5b50600080516020612a1b83398151915254640100000000900465ffffffffffff1660405165ffffffffffff90911681526020016102a0565b3480156105e657600080fd5b506102ca7f000000000000000000000000000000000000000000000000000000000000000081565b61025f61061c3660046123d3565b6111f7565b34801561062d57600080fd5b5061030e61063c366004612466565b63bc197c8160e01b98975050505050505050565b34801561065c57600080fd5b5061037a61127c565b61025f610673366004612302565b611313565b61025f610686366004612278565b61131e565b34801561069757600080fd5b5061030e6106a6366004612524565b63f23a6e6160e01b9695505050505050565b60006106c6336000366113b4565b156106d15750600190565b600080356001600160e01b031916905060006106f86000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902060018101549091506001600160a01b0316158061075c57508054600160301b900465ffffffffffff161580159061075c5750805442600160301b90910465ffffffffffff16105b80610771575080544265ffffffffffff909116115b1561077f5760009250505090565b6001810154604051639ea9bd5960e01b81526001600160a01b0390911690639ea9bd59906107b690339060009036906004016125c8565b6020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906125ed565b9250505090565b60008061080b611447565b60405161190160f01b60208201526022810182905260428101879052909150600090606201604051602081830303815290604052805190602001209050600061085733838989896114ca565b9050600080600061086784611645565b925092509250428365ffffffffffff161115801561088d5750428265ffffffffffff1610155b80156108a057506001600160a01b038116155b156108bb5750630b135d3f60e11b95506108d2945050505050565b506001600160e01b031995506108d2945050505050565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906109125750333014155b1561093057604051637046c88d60e01b815260040160405180910390fd5b60405180608001604052808465ffffffffffff1681526020018565ffffffffffff168152602001876001600160a01b03168152602001866001600160a01b03168152506109886000805160206129fb83398151915290565b6001600160e01b031989166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b815290861690630c95955690610a45908590859060040161260f565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691506001600160e01b03198a16907fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d32135390600090a450505050505050565b6000610ad333858686866114ca565b949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610b195750610b176106b8565b155b15610b3757604051637046c88d60e01b815260040160405180910390fd5b805160005b81811015610ba7576000838281518110610b5857610b58612623565b6020026020010151905060008160000151905060008260200151905060008360400151905060008082516020840185875af13d6000803e80801561025a57600187019650505050505050610b3c565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610be55750333014155b15610c0357604051637046c88d60e01b815260040160405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca957604051636b31ba1560e11b815260040160405180910390fd5b6024600480356101448101358101838101939083013592910190600090610cd290828587612639565b610cdb91612663565b90506001600160e01b03198116600003610d15578515610cff573434343489335af1505b610d0a888888611678565b9450505050506108d2565b600080516020612a1b8339815191525460e01b81811615610d3e5763fc2f51c56000526004601cfd5b5060006001600160e01b03198216600160e01b03610e0d5760408301358301601f1981013560007f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda81610d946004828688612639565b610d9d91612663565b6001600160e01b0319168152602081019190915260400160002060018101546001600160a01b031694509050610dd6876004818b612639565b82549199509750600160301b810460a01b65ffffffffffff60a01b1660d09190911b6001600160d01b031916179850505050610e6f565b6001600160e01b03198216600160e11b03610e615760408301358301601f19810135610e50610e40600460008486612639565b610e4991612663565b8888611770565b919a50985096509250610e6f915050565b6001955050505050506108d2565b8615610e7f57343434348a335af1505b6000610e8a8a612691565b905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152604051633a871cdd60e01b8152610f469088906001600160a01b03851690633a871cdd90610efe9086908f908f9060040161279f565b6020604051808303816000875af1158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190612891565b611ad9565b9a9950505050505050505050565b604051631aab3f0d60e11b81523060048201526001600160c01b03821660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190612891565b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480159061102d5750333014155b801561103e575061103c6106b8565b155b1561105c57604051637046c88d60e01b815260040160405180910390fd5b6000816001811115611070576110706128aa565b1461108e576040516367ce775960e01b815260040160405180910390fd5b60008083516020850186885af13d6000803e80801561025a573d6000f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906110e55750333014155b1561110357604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b83398151915280546001600160a01b03858116600160501b818102600160501b600160f01b031985161790945560405193909204169182907fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c90600090a360405163064acaab60e11b81526001600160a01b03851690630c95955690611198908690869060040161260f565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b5050505050505050565b600f60f81b60608060008080836111e5611b97565b97989097965046955030945091925090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112305750333014155b8015611241575061123f6106b8565b155b1561125f57604051637046c88d60e01b815260040160405180910390fd5b600080825160208401855af43d6000803e80801561025a573d6000f35b604051631aab3f0d60e11b8152306004820152600060248201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190612891565b905090565b610ba7838383611bd3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906113575750333014155b1561137557604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b833981519152805460e09290921c69ffffffffffffffffffff19909216919091176401000000004265ffffffffffff1602179055565b600080516020612a1b83398151915254604051639ea9bd5960e01b815260009160501c906001600160a01b03821690639ea9bd59906113fb908890889088906004016125c8565b6020604051808303816000875af115801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906125ed565b95945050505050565b6000806000611454611b97565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818601528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c0909201905280519101209392505050565b600080600080516020612a1b8339815191525460501c9050600080826001600160a01b031663333daf9260e01b89888860405160240161150c939291906128c0565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093525161154e928b918e91016128da565b60408051601f19818403018152908290526115689161290e565b600060405180830381855afa9150503d80600081146115a3576040519150601f19603f3d011682016040523d82523d6000602084013e6115a8565b606091505b5091509150816116245760405162461bcd60e51b815260206004820152603860248201527f4b65726e656c3a3a5f76616c69646174655369676e61747572653a206661696c60448201527f656420746f2076616c6964617465207369676e61747572650000000000000000606482015260840160405180910390fd5b808060200190518101906116389190612891565b9998505050505050505050565b600060a082901c65ffffffffffff16828115600019810161166a5765ffffffffffff92505b508360d01c92509193909250565b60008061168485612691565b905061169461014086018661292a565b6116a2916004908290612639565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152600080516020612a1b83398151915254604051633a871cdd60e01b815260509190911c906001600160a01b03821690633a871cdd906117239085908990899060040161279f565b6020604051808303816000875af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117669190612891565b9695505050505050565b6000803681611783602460108789612639565b61178c91612970565b60601c9350605860006117a2826038898b612639565b6117ab9161299e565b828101929091508801816117c460208501858b8d612639565b6117cd9161299e565b60001c925060208401935060006118b77f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee96417660001b8d8d8d60049060249261181693929190612639565b61181f9161299e565b60001c8e8e60249060389261183693929190612639565b61183f91612970565b60601c87876040516118529291906129bc565b60405190819003812061189c95949392916020019485526001600160e01b031993909316602085015260408401919091526001600160a01b03166060830152608082015260a00190565b60405160208183030381529060405280519060200120611c67565b90506119076118db3083848f8f8b908b8d01926118d693929190612639565b6114ca565b8c8c6004906024926118ef93929190612639565b6118f89161299e565b6001600160a01b031916611ad9565b97508385019450848b019650848a03955060405180608001604052808c8c600490600a9261193793929190612639565b611940916129cc565b60d01c65ffffffffffff1681526020018c8c600a9060109261196493929190612639565b61196d916129cc565b60d01c65ffffffffffff1681526020018c8c60249060389261199193929190612639565b61199a91612970565b60601c6001600160a01b031681526020018c8c6010906024926119bf93929190612639565b6119c891612970565b60601c90526000805160206129fb8339815191526001600160e01b03198e166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b8152908a1690630c95955690611a99908690869060040161260f565b600060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b50505050505050505093509350935093565b600081830160601b8260601b81148460601b8214176001600160a01b0384861816151760018114611b0d5760019250611b8f565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b86169081611b525765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611b70575065ffffffffffff60a01b5b808218908211021880611b89575065ffffffffffff60a01b5b92909217915b505092915050565b604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b600080516020612a1b8339815191525460501c6001600160a01b03811615611c0d5760405162dc149f60e41b815260040160405180910390fd5b600080516020612a1b8339815191528054600160501b600160f01b031916600160501b6001600160a01b0387169081029190911790915560405163064acaab60e11b8152630c95955690611198908690869060040161260f565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416611d5a5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60005b83811015611d9a578181015183820152602001611d82565b50506000910152565b60008151808452611dbb816020860160208601611d7f565b601f01601f19169290920160200192915050565b6020815260006108d26020830184611da3565b6001600160a01b0381168114611df757600080fd5b50565b8035611e0581611de2565b919050565b60008083601f840112611e1c57600080fd5b5081356001600160401b03811115611e3357600080fd5b602083019150836020828501011115611e4b57600080fd5b9250929050565b600080600080600060808688031215611e6a57600080fd5b8535611e7581611de2565b94506020860135611e8581611de2565b93506040860135925060608601356001600160401b03811115611ea757600080fd5b611eb388828901611e0a565b969995985093965092949392505050565b600080600060408486031215611ed957600080fd5b8335925060208401356001600160401b03811115611ef657600080fd5b611f0286828701611e0a565b9497909650939450505050565b80356001600160e01b031981168114611e0557600080fd5b65ffffffffffff81168114611df757600080fd5b600080600080600080600060c0888a031215611f5657600080fd5b611f5f88611f0f565b96506020880135611f6f81611de2565b95506040880135611f7f81611de2565b94506060880135611f8f81611f27565b93506080880135611f9f81611f27565b925060a08801356001600160401b03811115611fba57600080fd5b611fc68a828b01611e0a565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561201157612011611fd9565b60405290565b60405161016081016001600160401b038111828210171561201157612011611fd9565b604051601f8201601f191681016001600160401b038111828210171561206257612062611fd9565b604052919050565b600082601f83011261207b57600080fd5b81356001600160401b0381111561209457612094611fd9565b6120a7601f8201601f191660200161203a565b8181528460208386010111156120bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156120ec57600080fd5b82356001600160401b038082111561210357600080fd5b818501915085601f83011261211757600080fd5b81358181111561212957612129611fd9565b8060051b61213885820161203a565b918252838101850191858101908984111561215257600080fd5b86860192505b83831015611638578235858111156121705760008081fd5b86016060818c03601f19018113156121885760008081fd5b612190611fef565b8983013561219d81611de2565b81526040838101358b8301529183013591888311156121bc5760008081fd5b6121ca8e8c8587010161206a565b90820152845250509186019190860190612158565b6000602082840312156121f157600080fd5b81356108d281611de2565b60008060006060848603121561221157600080fd5b83356001600160401b0381111561222757600080fd5b8401610160818703121561223a57600080fd5b95602085013595506040909401359392505050565b60006020828403121561226157600080fd5b81356001600160c01b03811681146108d257600080fd5b60006020828403121561228a57600080fd5b6108d282611f0f565b600080600080608085870312156122a957600080fd5b84356122b481611de2565b93506020850135925060408501356001600160401b038111156122d657600080fd5b6122e28782880161206a565b9250506060850135600281106122f757600080fd5b939692955090935050565b60008060006040848603121561231757600080fd5b833561232281611de2565b925060208401356001600160401b03811115611ef657600080fd5b60ff60f81b881681526000602060e08184015261235d60e084018a611da3565b838103604085015261236f818a611da3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156123c1578351835292840192918401916001016123a5565b50909c9b505050505050505050505050565b600080604083850312156123e657600080fd5b82356123f181611de2565b915060208301356001600160401b0381111561240c57600080fd5b6124188582860161206a565b9150509250929050565b60008083601f84011261243457600080fd5b5081356001600160401b0381111561244b57600080fd5b6020830191508360208260051b8501011115611e4b57600080fd5b60008060008060008060008060a0898b03121561248257600080fd5b883561248d81611de2565b9750602089013561249d81611de2565b965060408901356001600160401b03808211156124b957600080fd5b6124c58c838d01612422565b909850965060608b01359150808211156124de57600080fd5b6124ea8c838d01612422565b909650945060808b013591508082111561250357600080fd5b506125108b828c01611e0a565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561253d57600080fd5b863561254881611de2565b9550602087013561255881611de2565b9450604087013593506060870135925060808701356001600160401b0381111561258157600080fd5b61258d89828a01611e0a565b979a9699509497509295939492505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061143e908301848661259f565b6000602082840312156125ff57600080fd5b815180151581146108d257600080fd5b602081526000610ad360208301848661259f565b634e487b7160e01b600052603260045260246000fd5b6000808585111561264957600080fd5b8386111561265657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611b8f5760049490940360031b84901b1690921692915050565b600061016082360312156126a457600080fd5b6126ac612017565b6126b583611dfa565b81526020830135602082015260408301356001600160401b03808211156126db57600080fd5b6126e73683870161206a565b6040840152606085013591508082111561270057600080fd5b61270c3683870161206a565b60608401526080850135608084015260a085013560a084015260c085013560c084015260e085013560e0840152610100915081850135828401526101209150818501358181111561275c57600080fd5b6127683682880161206a565b83850152506101409150818501358181111561278357600080fd5b61278f3682880161206a565b8385015250505080915050919050565b606081526127b96060820185516001600160a01b03169052565b60208401516080820152600060408501516101608060a08501526127e16101c0850183611da3565b91506060870151605f19808685030160c08701526127ff8483611da3565b9350608089015160e087015260a08901519150610100828188015260c08a01519250610120838189015260e08b0151935061014084818a0152828c0151868a0152818c0151955083898803016101808a015261285b8787611da3565b9650808c0151955050505080868503016101a0870152505061287d8282611da3565b602085019690965250505060400152919050565b6000602082840312156128a357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260406020820152600061143e60408301848661259f565b600084516128ec818460208901611d7f565b919091019283525060601b6001600160601b0319166020820152603401919050565b60008251612920818460208701611d7f565b9190910192915050565b6000808335601e1984360301811261294157600080fd5b8301803591506001600160401b0382111561295b57600080fd5b602001915036819003821315611e4b57600080fd5b6001600160601b03198135818116916014851015611b8f5760149490940360031b84901b1690921692915050565b80356020831015610fee57600019602084900360031b1b1692915050565b8183823760009101908152919050565b6001600160d01b03198135818116916006851015611b8f5760069490940360031b84901b169092169291505056fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd8439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd90000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789", + "nonce": "0x1db" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionIndex": "0x5", + "blockHash": "0x646d03a5c531523d64b9ab9b5850c6acd8e2bf288af463682ba20fee3db0bbd3", + "blockNumber": "0x2bfa041", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x2d5257", + "gasUsed": "0x24e274", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x000000000000000000000000000000000000000000000000002846178c2af7e000000000000000000000000000000000000000000000000002871cce0617f7890000000000000000000000000000000000000000000023ad78b1a2609c9b5ec9000000000000000000000000000000000000000000000000025ed6b679ecffa90000000000000000000000000000000000000000000023ad78d9e87828c656a9", + "blockHash": "0x646d03a5c531523d64b9ab9b5850c6acd8e2bf288af463682ba20fee3db0bbd3", + "blockNumber": "0x2bfa041", + "transactionHash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionIndex": "0x5", + "logIndex": "0x12", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x11785e867" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708379708, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployKernel.s.sol/80001/run-latest.json b/broadcast/DeployKernel.s.sol/80001/run-latest.json new file mode 100644 index 00000000..8290830e --- /dev/null +++ b/broadcast/DeployKernel.s.sol/80001/run-latest.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionType": "CREATE2", + "contractName": "Kernel", + "contractAddress": "0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x32ee8b", + "value": "0x0", + "data": "0x00000000000000000000000000000000000000000000000000000000000000006101406040523480156200001257600080fd5b5060405162002c4138038062002c41833981016040819052620000359162000137565b306080524660a0528060608062000081604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a090206101005250506001600160a01b031661012052507f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd98054600160501b600160f01b0319166a010000000000000000000017905562000169565b6000602082840312156200014a57600080fd5b81516001600160a01b03811681146200016257600080fd5b9392505050565b60805160a05160c05160e0516101005161012051612a3b62000206600039600081816101e9015281816105ec015281816108e401528181610ae601528181610bb701528181610c6b01528181610f7b01528181610fff015281816110b7015281816112020152818161129b015261132901526000611c6901526000611d2301526000611cfd01526000611cad01526000611c8a0152612a3b6000f3fe60806040526004361061014f5760003560e01c806354fd4d50116100b6578063b68df16d1161006f578063b68df16d1461060e578063bc197c8114610621578063d087d28814610650578063d1f5789414610665578063d541622114610678578063f23a6e611461068b5761018e565b806354fd4d501461050557806355b14f501461053657806357b750471461054957806384b0196e1461056e57806388e7fd0614610596578063b0d691fe146105da5761018e565b806334fcd5be1161010857806334fcd5be146103885780633659cfe61461039b5780633a871cdd146103ae5780633e1b0812146103c157806351166ba0146103e157806351945447146104f25761018e565b806306fdde03146102615780630b3dc354146102a9578063150b7a02146102e25780631626ba7e1461032757806329f8b17414610347578063333daf921461035a5761018e565b3661018e57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080356001600160e01b031916905060006101b56000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902054600160601b90046001600160a01b0390811691507f000000000000000000000000000000000000000000000000000000000000000016331480159061021d575061021b6106b8565b155b1561023b57604051637046c88d60e01b815260040160405180910390fd5b3660008037600080366000845af43d6000803e80801561025a573d6000f35b3d6000fd5b005b34801561026d57600080fd5b506102936040518060400160405280600681526020016512d95c9b995b60d21b81525081565b6040516102a09190611dcf565b60405180910390f35b3480156102b557600080fd5b50600080516020612a1b8339815191525460501c5b6040516001600160a01b0390911681526020016102a0565b3480156102ee57600080fd5b5061030e6102fd366004611e52565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016102a0565b34801561033357600080fd5b5061030e610342366004611ec4565b610800565b61025f610355366004611f3b565b6108d9565b34801561036657600080fd5b5061037a610375366004611ec4565b610ac4565b6040519081526020016102a0565b61025f6103963660046120d9565b610adb565b61025f6103a93660046121df565b610bac565b61037a6103bc3660046121fc565b610c5e565b3480156103cd57600080fd5b5061037a6103dc36600461224f565b610f54565b3480156103ed57600080fd5b506104a56103fc366004612278565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160e01b03199590951681527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda855283902083519182018452805465ffffffffffff8082168452600160301b82041695830195909552600160601b9094046001600160a01b03908116938201939093526001909301549091169082015290565b60408051825165ffffffffffff908116825260208085015190911690820152828201516001600160a01b0390811692820192909252606092830151909116918101919091526080016102a0565b61025f610500366004612293565b610ff4565b34801561051157600080fd5b5061029360405180604001604052806005815260200164302e322e3360d81b81525081565b61025f610544366004612302565b6110ac565b34801561055557600080fd5b50600080516020612a1b8339815191525460e01b61030e565b34801561057a57600080fd5b506105836111d0565b6040516102a0979695949392919061233d565b3480156105a257600080fd5b50600080516020612a1b83398151915254640100000000900465ffffffffffff1660405165ffffffffffff90911681526020016102a0565b3480156105e657600080fd5b506102ca7f000000000000000000000000000000000000000000000000000000000000000081565b61025f61061c3660046123d3565b6111f7565b34801561062d57600080fd5b5061030e61063c366004612466565b63bc197c8160e01b98975050505050505050565b34801561065c57600080fd5b5061037a61127c565b61025f610673366004612302565b611313565b61025f610686366004612278565b61131e565b34801561069757600080fd5b5061030e6106a6366004612524565b63f23a6e6160e01b9695505050505050565b60006106c6336000366113b4565b156106d15750600190565b600080356001600160e01b031916905060006106f86000805160206129fb83398151915290565b6001600160e01b0319831660009081526002919091016020526040902060018101549091506001600160a01b0316158061075c57508054600160301b900465ffffffffffff161580159061075c5750805442600160301b90910465ffffffffffff16105b80610771575080544265ffffffffffff909116115b1561077f5760009250505090565b6001810154604051639ea9bd5960e01b81526001600160a01b0390911690639ea9bd59906107b690339060009036906004016125c8565b6020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906125ed565b9250505090565b60008061080b611447565b60405161190160f01b60208201526022810182905260428101879052909150600090606201604051602081830303815290604052805190602001209050600061085733838989896114ca565b9050600080600061086784611645565b925092509250428365ffffffffffff161115801561088d5750428265ffffffffffff1610155b80156108a057506001600160a01b038116155b156108bb5750630b135d3f60e11b95506108d2945050505050565b506001600160e01b031995506108d2945050505050565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906109125750333014155b1561093057604051637046c88d60e01b815260040160405180910390fd5b60405180608001604052808465ffffffffffff1681526020018565ffffffffffff168152602001876001600160a01b03168152602001866001600160a01b03168152506109886000805160206129fb83398151915290565b6001600160e01b031989166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b815290861690630c95955690610a45908590859060040161260f565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691506001600160e01b03198a16907fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d32135390600090a450505050505050565b6000610ad333858686866114ca565b949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610b195750610b176106b8565b155b15610b3757604051637046c88d60e01b815260040160405180910390fd5b805160005b81811015610ba7576000838281518110610b5857610b58612623565b6020026020010151905060008160000151905060008260200151905060008360400151905060008082516020840185875af13d6000803e80801561025a57600187019650505050505050610b3c565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610be55750333014155b15610c0357604051637046c88d60e01b815260040160405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca957604051636b31ba1560e11b815260040160405180910390fd5b6024600480356101448101358101838101939083013592910190600090610cd290828587612639565b610cdb91612663565b90506001600160e01b03198116600003610d15578515610cff573434343489335af1505b610d0a888888611678565b9450505050506108d2565b600080516020612a1b8339815191525460e01b81811615610d3e5763fc2f51c56000526004601cfd5b5060006001600160e01b03198216600160e01b03610e0d5760408301358301601f1981013560007f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda81610d946004828688612639565b610d9d91612663565b6001600160e01b0319168152602081019190915260400160002060018101546001600160a01b031694509050610dd6876004818b612639565b82549199509750600160301b810460a01b65ffffffffffff60a01b1660d09190911b6001600160d01b031916179850505050610e6f565b6001600160e01b03198216600160e11b03610e615760408301358301601f19810135610e50610e40600460008486612639565b610e4991612663565b8888611770565b919a50985096509250610e6f915050565b6001955050505050506108d2565b8615610e7f57343434348a335af1505b6000610e8a8a612691565b905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152604051633a871cdd60e01b8152610f469088906001600160a01b03851690633a871cdd90610efe9086908f908f9060040161279f565b6020604051808303816000875af1158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190612891565b611ad9565b9a9950505050505050505050565b604051631aab3f0d60e11b81523060048201526001600160c01b03821660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190612891565b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480159061102d5750333014155b801561103e575061103c6106b8565b155b1561105c57604051637046c88d60e01b815260040160405180910390fd5b6000816001811115611070576110706128aa565b1461108e576040516367ce775960e01b815260040160405180910390fd5b60008083516020850186885af13d6000803e80801561025a573d6000f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906110e55750333014155b1561110357604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b83398151915280546001600160a01b03858116600160501b818102600160501b600160f01b031985161790945560405193909204169182907fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c90600090a360405163064acaab60e11b81526001600160a01b03851690630c95955690611198908690869060040161260f565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b5050505050505050565b600f60f81b60608060008080836111e5611b97565b97989097965046955030945091925090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112305750333014155b8015611241575061123f6106b8565b155b1561125f57604051637046c88d60e01b815260040160405180910390fd5b600080825160208401855af43d6000803e80801561025a573d6000f35b604051631aab3f0d60e11b8152306004820152600060248201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190612891565b905090565b610ba7838383611bd3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906113575750333014155b1561137557604051637046c88d60e01b815260040160405180910390fd5b600080516020612a1b833981519152805460e09290921c69ffffffffffffffffffff19909216919091176401000000004265ffffffffffff1602179055565b600080516020612a1b83398151915254604051639ea9bd5960e01b815260009160501c906001600160a01b03821690639ea9bd59906113fb908890889088906004016125c8565b6020604051808303816000875af115801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906125ed565b95945050505050565b6000806000611454611b97565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818601528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c0909201905280519101209392505050565b600080600080516020612a1b8339815191525460501c9050600080826001600160a01b031663333daf9260e01b89888860405160240161150c939291906128c0565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093525161154e928b918e91016128da565b60408051601f19818403018152908290526115689161290e565b600060405180830381855afa9150503d80600081146115a3576040519150601f19603f3d011682016040523d82523d6000602084013e6115a8565b606091505b5091509150816116245760405162461bcd60e51b815260206004820152603860248201527f4b65726e656c3a3a5f76616c69646174655369676e61747572653a206661696c60448201527f656420746f2076616c6964617465207369676e61747572650000000000000000606482015260840160405180910390fd5b808060200190518101906116389190612891565b9998505050505050505050565b600060a082901c65ffffffffffff16828115600019810161166a5765ffffffffffff92505b508360d01c92509193909250565b60008061168485612691565b905061169461014086018661292a565b6116a2916004908290612639565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140820152600080516020612a1b83398151915254604051633a871cdd60e01b815260509190911c906001600160a01b03821690633a871cdd906117239085908990899060040161279f565b6020604051808303816000875af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117669190612891565b9695505050505050565b6000803681611783602460108789612639565b61178c91612970565b60601c9350605860006117a2826038898b612639565b6117ab9161299e565b828101929091508801816117c460208501858b8d612639565b6117cd9161299e565b60001c925060208401935060006118b77f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee96417660001b8d8d8d60049060249261181693929190612639565b61181f9161299e565b60001c8e8e60249060389261183693929190612639565b61183f91612970565b60601c87876040516118529291906129bc565b60405190819003812061189c95949392916020019485526001600160e01b031993909316602085015260408401919091526001600160a01b03166060830152608082015260a00190565b60405160208183030381529060405280519060200120611c67565b90506119076118db3083848f8f8b908b8d01926118d693929190612639565b6114ca565b8c8c6004906024926118ef93929190612639565b6118f89161299e565b6001600160a01b031916611ad9565b97508385019450848b019650848a03955060405180608001604052808c8c600490600a9261193793929190612639565b611940916129cc565b60d01c65ffffffffffff1681526020018c8c600a9060109261196493929190612639565b61196d916129cc565b60d01c65ffffffffffff1681526020018c8c60249060389261199193929190612639565b61199a91612970565b60601c6001600160a01b031681526020018c8c6010906024926119bf93929190612639565b6119c891612970565b60601c90526000805160206129fb8339815191526001600160e01b03198e166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176bffffffffffffffffffffffff16600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b8152908a1690630c95955690611a99908690869060040161260f565b600060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b50505050505050505093509350935093565b600081830160601b8260601b81148460601b8214176001600160a01b0384861816151760018114611b0d5760019250611b8f565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b86169081611b525765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611b70575065ffffffffffff60a01b5b808218908211021880611b89575065ffffffffffff60a01b5b92909217915b505092915050565b604080518082018252600681526512d95c9b995b60d21b60208083019190915282518084019093526005835264302e322e3360d81b9083015291565b600080516020612a1b8339815191525460501c6001600160a01b03811615611c0d5760405162dc149f60e41b815260040160405180910390fd5b600080516020612a1b8339815191528054600160501b600160f01b031916600160501b6001600160a01b0387169081029190911790915560405163064acaab60e11b8152630c95955690611198908690869060040161260f565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416611d5a5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60005b83811015611d9a578181015183820152602001611d82565b50506000910152565b60008151808452611dbb816020860160208601611d7f565b601f01601f19169290920160200192915050565b6020815260006108d26020830184611da3565b6001600160a01b0381168114611df757600080fd5b50565b8035611e0581611de2565b919050565b60008083601f840112611e1c57600080fd5b5081356001600160401b03811115611e3357600080fd5b602083019150836020828501011115611e4b57600080fd5b9250929050565b600080600080600060808688031215611e6a57600080fd5b8535611e7581611de2565b94506020860135611e8581611de2565b93506040860135925060608601356001600160401b03811115611ea757600080fd5b611eb388828901611e0a565b969995985093965092949392505050565b600080600060408486031215611ed957600080fd5b8335925060208401356001600160401b03811115611ef657600080fd5b611f0286828701611e0a565b9497909650939450505050565b80356001600160e01b031981168114611e0557600080fd5b65ffffffffffff81168114611df757600080fd5b600080600080600080600060c0888a031215611f5657600080fd5b611f5f88611f0f565b96506020880135611f6f81611de2565b95506040880135611f7f81611de2565b94506060880135611f8f81611f27565b93506080880135611f9f81611f27565b925060a08801356001600160401b03811115611fba57600080fd5b611fc68a828b01611e0a565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561201157612011611fd9565b60405290565b60405161016081016001600160401b038111828210171561201157612011611fd9565b604051601f8201601f191681016001600160401b038111828210171561206257612062611fd9565b604052919050565b600082601f83011261207b57600080fd5b81356001600160401b0381111561209457612094611fd9565b6120a7601f8201601f191660200161203a565b8181528460208386010111156120bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156120ec57600080fd5b82356001600160401b038082111561210357600080fd5b818501915085601f83011261211757600080fd5b81358181111561212957612129611fd9565b8060051b61213885820161203a565b918252838101850191858101908984111561215257600080fd5b86860192505b83831015611638578235858111156121705760008081fd5b86016060818c03601f19018113156121885760008081fd5b612190611fef565b8983013561219d81611de2565b81526040838101358b8301529183013591888311156121bc5760008081fd5b6121ca8e8c8587010161206a565b90820152845250509186019190860190612158565b6000602082840312156121f157600080fd5b81356108d281611de2565b60008060006060848603121561221157600080fd5b83356001600160401b0381111561222757600080fd5b8401610160818703121561223a57600080fd5b95602085013595506040909401359392505050565b60006020828403121561226157600080fd5b81356001600160c01b03811681146108d257600080fd5b60006020828403121561228a57600080fd5b6108d282611f0f565b600080600080608085870312156122a957600080fd5b84356122b481611de2565b93506020850135925060408501356001600160401b038111156122d657600080fd5b6122e28782880161206a565b9250506060850135600281106122f757600080fd5b939692955090935050565b60008060006040848603121561231757600080fd5b833561232281611de2565b925060208401356001600160401b03811115611ef657600080fd5b60ff60f81b881681526000602060e08184015261235d60e084018a611da3565b838103604085015261236f818a611da3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156123c1578351835292840192918401916001016123a5565b50909c9b505050505050505050505050565b600080604083850312156123e657600080fd5b82356123f181611de2565b915060208301356001600160401b0381111561240c57600080fd5b6124188582860161206a565b9150509250929050565b60008083601f84011261243457600080fd5b5081356001600160401b0381111561244b57600080fd5b6020830191508360208260051b8501011115611e4b57600080fd5b60008060008060008060008060a0898b03121561248257600080fd5b883561248d81611de2565b9750602089013561249d81611de2565b965060408901356001600160401b03808211156124b957600080fd5b6124c58c838d01612422565b909850965060608b01359150808211156124de57600080fd5b6124ea8c838d01612422565b909650945060808b013591508082111561250357600080fd5b506125108b828c01611e0a565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561253d57600080fd5b863561254881611de2565b9550602087013561255881611de2565b9450604087013593506060870135925060808701356001600160401b0381111561258157600080fd5b61258d89828a01611e0a565b979a9699509497509295939492505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061143e908301848661259f565b6000602082840312156125ff57600080fd5b815180151581146108d257600080fd5b602081526000610ad360208301848661259f565b634e487b7160e01b600052603260045260246000fd5b6000808585111561264957600080fd5b8386111561265657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611b8f5760049490940360031b84901b1690921692915050565b600061016082360312156126a457600080fd5b6126ac612017565b6126b583611dfa565b81526020830135602082015260408301356001600160401b03808211156126db57600080fd5b6126e73683870161206a565b6040840152606085013591508082111561270057600080fd5b61270c3683870161206a565b60608401526080850135608084015260a085013560a084015260c085013560c084015260e085013560e0840152610100915081850135828401526101209150818501358181111561275c57600080fd5b6127683682880161206a565b83850152506101409150818501358181111561278357600080fd5b61278f3682880161206a565b8385015250505080915050919050565b606081526127b96060820185516001600160a01b03169052565b60208401516080820152600060408501516101608060a08501526127e16101c0850183611da3565b91506060870151605f19808685030160c08701526127ff8483611da3565b9350608089015160e087015260a08901519150610100828188015260c08a01519250610120838189015260e08b0151935061014084818a0152828c0151868a0152818c0151955083898803016101808a015261285b8787611da3565b9650808c0151955050505080868503016101a0870152505061287d8282611da3565b602085019690965250505060400152919050565b6000602082840312156128a357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260406020820152600061143e60408301848661259f565b600084516128ec818460208901611d7f565b919091019283525060601b6001600160601b0319166020820152603401919050565b60008251612920818460208701611d7f565b9190910192915050565b6000808335601e1984360301811261294157600080fd5b8301803591506001600160401b0382111561295b57600080fd5b602001915036819003821315611e4b57600080fd5b6001600160601b03198135818116916014851015611b8f5760149490940360031b84901b1690921692915050565b80356020831015610fee57600019602084900360031b1b1692915050565b8183823760009101908152919050565b6001600160d01b03198135818116916006851015611b8f5760069490940360031b84901b169092169291505056fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd8439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd90000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789", + "nonce": "0x1db" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionIndex": "0x5", + "blockHash": "0x646d03a5c531523d64b9ab9b5850c6acd8e2bf288af463682ba20fee3db0bbd3", + "blockNumber": "0x2bfa041", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x2d5257", + "gasUsed": "0x24e274", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x000000000000000000000000000000000000000000000000002846178c2af7e000000000000000000000000000000000000000000000000002871cce0617f7890000000000000000000000000000000000000000000023ad78b1a2609c9b5ec9000000000000000000000000000000000000000000000000025ed6b679ecffa90000000000000000000000000000000000000000000023ad78d9e87828c656a9", + "blockHash": "0x646d03a5c531523d64b9ab9b5850c6acd8e2bf288af463682ba20fee3db0bbd3", + "blockNumber": "0x2bfa041", + "transactionHash": "0x98cccb650873fecf2ce04c1c7c631814d4be62760bc179f425742be214a4bfd5", + "transactionIndex": "0x5", + "logIndex": "0x12", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x11785e867" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708379708, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707331759.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707331759.json new file mode 100644 index 00000000..1d1a4c10 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707331759.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x5e79C26A829e0b11b6cC2D2358551CE1a9f0e32B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x26cec4", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611e71806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063c4a5240911610059578063c4a524091461031f578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b66bd1d2146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f0366004611586565b6103a3565b005b34801561010357600080fd5b506101176101123660046115c8565b6103f6565b6040519081526020015b60405180910390f35b610117610138366004611614565b61089a565b34801561014957600080fd5b506101bb610158366004611690565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f36600461174a565b610d65565b34801561023057600080fd5b5061024461023f366004611586565b6111fe565b6040516101219b9a99989796959493929190611941565b34801561026757600080fd5b5061029c6102763660046119d8565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca366004611586565b6112f9565b6102e26102dd3660046119f5565b611328565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d3660046119d8565b60006020819052908152604090205481565b34801561032b57600080fd5b5061011761033a36600461174a565b611365565b34801561034b57600080fd5b5061011761035a366004611a31565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611a6a565b6113b3565b6100f561039e366004611a83565b61141f565b60008060008060003660003660003660006103be8d8d6111fe565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d65565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611a9e565b61043791611ac8565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611afd565b61057f928290611a9e565b61058891611b10565b60601c845260003661059b603482611afd565b906105a7601436611afd565b926105b493929190611a9e565b6105bd91611ac8565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611b43565b9261065c93929190611a9e565b61066591611b10565b60601c036106f85760008484886060015160146106829190611b43565b90896060015160346106949190611b43565b926106a193929190611a9e565b6106aa91611ac8565b60001c90508484886060015160346106c29190611b43565b6106cd928290611a9e565b90935091506106dd816034611b43565b876060018181516106ee9190611b43565b90525061070e9050565b606086015161070990808587611a9e565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611b56565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611ba1565b90506107b4888261147f565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611a9e565b6040518663ffffffff1660e01b815260040161083e959493929190611bba565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611ba1565b905061088b868261147f565b955050505050505b9392505050565b6000336108aa60208601866119d8565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611bf3565b61092491602091600091611a9e565b61092d91611ac8565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099e57503360008181526003602090815260408083205485845260018352818420948452939091529020546001600160801b03600160801b90920482169116115b156109ad576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf25760a082901c60011615610a835760008481526002602090815260408083209483529381528382203383529052919091205490610a3d565b366000610a91836034611b43565b610a9f6101408c018c611bf3565b905010158015610aea57506001600160a01b038416610ac26101408c018c611bf3565b8590610acf826014611b43565b92610adc93929190611a9e565b610ae591611b10565b60601c145b15610c14576000610aff6101408c018c611bf3565b610b0a866014611b43565b90610b16876034611b43565b92610b2393929190611a9e565b610b2c91611ac8565b905080610b3a856034611b43565b610b449190611b43565b610b526101408d018d611bf3565b90501015610bb55760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc36101408c018c611bf3565b610bce866034611b43565b9083610bdb886034611b43565b610be59190611b43565b92610bf293929190611a9e565b9093509150610c02816034611b43565b610c0c9085611b43565b935050610c34565b610c226101408b018b611bf3565b610c2f9185918291611a9e565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c73959493929190611c3a565b6020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190611ba1565b9050610cc2888261147f565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3d92505050565b60408301516000906001600160a01b0316638e0125d233878b610d196101408f018f611bf3565b610d269189908290611a9e565b6040518663ffffffff1660e01b8152600401610d46959493929190611bba565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dbc5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b336000908152600360205260409020546001600160801b038c8116911614610e1d5760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e328c8c8c8c8c8c8c8c8c8c8c611365565b9050600160a01b6001600160a01b03198c1601610e5c573360009081526020819052604090208190555b60005b86811015610f2657610e8f888883818110610e7c57610e7c611d7d565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eb057610eb0611d7d565b9050602002810190610ec29190611bf3565b6040518563ffffffff1660e01b8152600401610ee19493929190611d93565b600060405180830381600087803b158015610efb57600080fd5b505af1158015610f0f573d6000803e3d6000fd5b505050508080610f1e90611dc5565b915050610e5f565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f5990339085908a908a90600401611d93565b600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b50505050600087876000818110610fa057610fa0611d7d565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111b55788888281811061114257611142611d7d565b905060200201356002600085815260200190815260200160002060008b8b60018661116d9190611afd565b81811061117c5761117c611d7d565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111ad81611dc5565b915050611128565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261122393929190611a9e565b61122c91611dde565b60801c9a508c8c601090601c9261124593929190611a9e565b61124e91611e15565b99508c8c601c9060229261126493929190611a9e565b61126d91611e43565b60d01c97508c8c60229060289261128693929190611a9e565b61128f91611e43565b60d01c96508c8c602890603c926112a893929190611a9e565b6112b191611b10565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b60208190036113135761130f61038b8284611ac8565b5050565b61130f6113208284611dde565b60801c61141f565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008b8b8b8b8b8b8b8b8b8b8b60405160200161138c9b9a99989796959493929190611941565b6040516020818303038152906040528051906020012090509b9a5050505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec9101611414565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114b35760019250611535565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816114f85765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611516575065ffffffffffff60a01b5b80821890821102188061152f575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261154f57600080fd5b50813567ffffffffffffffff81111561156757600080fd5b60208301915083602082850101111561157f57600080fd5b9250929050565b6000806020838503121561159957600080fd5b823567ffffffffffffffff8111156115b057600080fd5b6115bc8582860161153d565b90969095509350505050565b6000806000604084860312156115dd57600080fd5b83359250602084013567ffffffffffffffff8111156115fb57600080fd5b6116078682870161153d565b9497909650939450505050565b60008060006060848603121561162957600080fd5b833567ffffffffffffffff81111561164057600080fd5b8401610160818703121561165357600080fd5b95602085013595506040909401359392505050565b6001600160a01b038116811461167d57600080fd5b50565b803561168b81611668565b919050565b600080604083850312156116a357600080fd5b8235915060208301356116b581611668565b809150509250929050565b80356001600160801b038116811461168b57600080fd5b80356001600160a01b03198116811461168b57600080fd5b803565ffffffffffff8116811461168b57600080fd5b60008083601f84011261171757600080fd5b50813567ffffffffffffffff81111561172f57600080fd5b6020830191508360208260051b850101111561157f57600080fd5b60008060008060008060008060008060006101008c8e03121561176c57600080fd5b6117758c6116c0565b9a5061178360208d016116d7565b995061179160408d01611680565b985061179f60608d016116ef565b97506117ad60808d016116ef565b965067ffffffffffffffff8060a08e013511156117c957600080fd5b6117d98e60a08f01358f01611705565b909750955060c08d01358110156117ef57600080fd5b6117ff8e60c08f01358f0161153d565b909550935060e08d013581101561181557600080fd5b506118268d60e08e01358e01611705565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b8581101561186a5781358752958201959082019060010161184e565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118b557600080fd5b830160208101925035905067ffffffffffffffff8111156118d557600080fd5b80360382131561157f57600080fd5b81835260006020808501808196508560051b810191508460005b87811015611934578284038952611915828861189e565b611920868284611875565b9a87019a95505050908401906001016118fe565b5091979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a0820181905260009061199c838201898b61183e565b905082810360c08401526119b1818789611875565b905082810360e08401526119c68185876118e4565b9e9d5050505050505050505050505050565b6000602082840312156119ea57600080fd5b813561089381611668565b600080600060408486031215611a0a57600080fd5b8335611a1581611668565b9250602084013567ffffffffffffffff8111156115fb57600080fd5b600080600060608486031215611a4657600080fd5b83359250602084013591506040840135611a5f81611668565b809150509250925092565b600060208284031215611a7c57600080fd5b5035919050565b600060208284031215611a9557600080fd5b610893826116c0565b60008085851115611aae57600080fd5b83861115611abb57600080fd5b5050820193919092039150565b80356020831015611ae157600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611ae157611ae1611ae7565b6bffffffffffffffffffffffff1981358181169160148510156115355760149490940360031b84901b1690921692915050565b80820180821115611ae157611ae1611ae7565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611b9460c083018486611875565b9998505050505050505050565b600060208284031215611bb357600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611be8608083018486611875565b979650505050505050565b6000808335601e19843603018112611c0a57600080fd5b83018035915067ffffffffffffffff821115611c2557600080fd5b60200191503681900382131561157f57600080fd5b6001600160a01b038616815260208101859052608060408201819052611c72908201611c6586611680565b6001600160a01b03169052565b602084013560a08201526000611c8b604086018661189e565b6101608060c0860152611ca36101e086018385611875565b9250611cb2606089018961189e565b9250607f19808786030160e0880152611ccc858584611875565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611d15838c018c61189e565b9550935081888703016101a0890152611d2f868686611875565b9550611d3d818c018c61189e565b955093505080878603016101c08801525050611d5a838383611875565b925050508281036060840152611d71818587611875565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611dbb606083018486611875565b9695505050505050565b600060018201611dd757611dd7611ae7565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156115355760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561153557600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156115355760069490940360031b84901b169092169291505056", + "nonce": "0x95c6" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE2", + "contractName": "ECDSASigner", + "contractAddress": "0xF9E712F44A360ED8820aD624e41164f74a5a7456", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9397d", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610680806100206000396000f3fe60806040526004361061003f5760003560e01c806367249d69146100445780637a7c6a4f146100a75780638e0125d2146100d5578063e9b51de5146100e8575b600080fd5b34801561005057600080fd5b5061008a61005f366004610498565b600060208181529381526040808220855292815282812090935282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100b357600080fd5b506100c76100c236600461051d565b6100fd565b60405190815260200161009e565b6100c76100e336600461051d565b6101e3565b6100fb6100f6366004610585565b610277565b005b3360009081526020818152604080832087845282528083206001600160a01b03898116855292528220541661014d5760405162461bcd60e51b8152600401610144906105df565b60405180910390fd5b600061019184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089939250506103c09050565b336000908152602081815260408083208a845282528083206001600160a01b038c81168552925290912054919250908116908216036101d45760009150506101da565b60019150505b95945050505050565b3360009081526020818152604080832087845282528083206001600160a01b03898116855292528220541661022a5760405162461bcd60e51b8152600401610144906105df565b600061019184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061027192508991506104519050565b906103c0565b3360009081526020818152604080832086845282528083206001600160a01b03888116855292529091205416156102ff5760405162461bcd60e51b815260206004820152602660248201527f45434453415369676e65723a206b65726e656c20616c726561647920726567696044820152651cdd195c995960d21b6064820152608401610144565b6014811461035b5760405162461bcd60e51b815260206004820152602360248201527f45434453415369676e65723a20696e76616c6964207369676e6572206164647260448201526265737360e81b6064820152608401610144565b600061036a6014828486610621565b6103739161064b565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942080546001600160a01b03191660609490941c93909317909255505050565b60405160019083600052602083015160405260408351036103fc57604083015160ff81901c601b016020526001600160ff1b0316606052610422565b604183510361041d57606083015160001a6020526040830151606052610422565b600091505b6020600160806000855afa5191503d61044357638baa579f6000526004601cfd5b600060605260405292915050565b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b80356001600160a01b038116811461049357600080fd5b919050565b6000806000606084860312156104ad57600080fd5b6104b68461047c565b9250602084013591506104cb6040850161047c565b90509250925092565b60008083601f8401126104e657600080fd5b50813567ffffffffffffffff8111156104fe57600080fd5b60208301915083602082850101111561051657600080fd5b9250929050565b60008060008060006080868803121561053557600080fd5b61053e8661047c565b94506020860135935060408601359250606086013567ffffffffffffffff81111561056857600080fd5b610574888289016104d4565b969995985093965092949392505050565b6000806000806060858703121561059b57600080fd5b6105a48561047c565b935060208501359250604085013567ffffffffffffffff8111156105c757600080fd5b6105d3878288016104d4565b95989497509550505050565b60208082526022908201527f45434453415369676e65723a206b65726e656c206e6f74207265676973746572604082015261195960f21b606082015260800190565b6000808585111561063157600080fd5b8386111561063e57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156106785780818660140360031b1b83161692505b50509291505056", + "nonce": "0x95c7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE2", + "contractName": "GasPolicy", + "contractAddress": "0x62868E950Efbb336DCFf033598Ee5E602f0a93cD", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x98ba5", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610737806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae0146100435780632a730c3f14610058578063c92ce351146100ee578063ecfcd9301461010f575b600080fd5b61005661005136600461041f565b610137565b005b34801561006457600080fd5b506100bb61007336600461047b565b60006020818152938152604080822085529281528281209093528252902080546001909101546001600160801b03821691600160801b900460ff16906001600160a01b031683565b604080516001600160801b03909416845291151560208401526001600160a01b0316908201526060015b60405180910390f35b6101016100fc3660046104bd565b6101f0565b6040519081526020016100e5565b34801561011b57600080fd5b5061010161012a36600461054d565b6000979650505050505050565b60008080610147848601866105d3565b604080516060810182526001600160801b03948516815292151560208085019182526001600160a01b039384168584019081523360009081528083528481209d81529c8252838d209d85168d529c905299209151825499511515600160801b0270ffffffffffffffffffffffffffffffffff19909a16931692909217979097178755965160019096018054969097166001600160a01b0319909616959095179095555050505050565b60008060e0850135608086013561020f60a088013560c089013561063a565b610219919061063a565b6102239190610653565b336000908152602081815260408083208a845282528083206001600160a01b038c168452909152902054909150600160801b900460ff1615610301573360009081526020818152604080832089845282528083206001600160a01b038b8116855292529091206001015416158015906102f257503360009081526020818152604080832089845282528083206001600160a01b038b81168552925290912060010154166102d461012087018761066a565b6102e3916014916000916106b1565b6102ec916106db565b60601c14155b156103015760019150506103b5565b3360009081526020818152604080832089845282528083206001600160a01b038b1684529091529020546001600160801b0390811690821611156103495760019150506103b5565b3360009081526020818152604080832089845282528083206001600160a01b038b1684529091528120805483929061038b9084906001600160801b0316610710565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060009150505b95945050505050565b6001600160a01b03811681146103d357600080fd5b50565b60008083601f8401126103e857600080fd5b50813567ffffffffffffffff81111561040057600080fd5b60208301915083602082850101111561041857600080fd5b9250929050565b6000806000806060858703121561043557600080fd5b8435610440816103be565b935060208501359250604085013567ffffffffffffffff81111561046357600080fd5b61046f878288016103d6565b95989497509550505050565b60008060006060848603121561049057600080fd5b833561049b816103be565b92506020840135915060408401356104b2816103be565b809150509250925092565b6000806000806000608086880312156104d557600080fd5b85356104e0816103be565b945060208601359350604086013567ffffffffffffffff8082111561050457600080fd5b90870190610160828a03121561051957600080fd5b9093506060870135908082111561052f57600080fd5b5061053c888289016103d6565b969995985093965092949392505050565b600080600080600080600060c0888a03121561056857600080fd5b8735610573816103be565b96506020880135610583816103be565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156105b457600080fd5b6105c08a828b016103d6565b989b979a50959850939692959293505050565b6000806000606084860312156105e857600080fd5b83356001600160801b03811681146105ff57600080fd5b92506020840135801515811461061457600080fd5b915060408401356104b2816103be565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064d5761064d610624565b92915050565b808202811582820484141761064d5761064d610624565b6000808335601e1984360301811261068157600080fd5b83018035915067ffffffffffffffff82111561069c57600080fd5b60200191503681900382131561041857600080fd5b600080858511156106c157600080fd5b838611156106ce57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156107085780818660140360031b1b83161692505b505092915050565b6001600160801b0382811682821603908082111561073057610730610624565b509291505056", + "nonce": "0x95c8" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1707331759, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707331808.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707331808.json new file mode 100644 index 00000000..44b87a3f --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707331808.json @@ -0,0 +1,73 @@ +{ + "transactions": [ + { + "hash": "0xed09bc17bbe34f24b0b6bd1ed893d748335663d42b6e61623999772f0617bf66", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x5e79C26A829e0b11b6cC2D2358551CE1a9f0e32B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x26cec4", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611e71806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063c4a5240911610059578063c4a524091461031f578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b66bd1d2146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f0366004611586565b6103a3565b005b34801561010357600080fd5b506101176101123660046115c8565b6103f6565b6040519081526020015b60405180910390f35b610117610138366004611614565b61089a565b34801561014957600080fd5b506101bb610158366004611690565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f36600461174a565b610d65565b34801561023057600080fd5b5061024461023f366004611586565b6111fe565b6040516101219b9a99989796959493929190611941565b34801561026757600080fd5b5061029c6102763660046119d8565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca366004611586565b6112f9565b6102e26102dd3660046119f5565b611328565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d3660046119d8565b60006020819052908152604090205481565b34801561032b57600080fd5b5061011761033a36600461174a565b611365565b34801561034b57600080fd5b5061011761035a366004611a31565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611a6a565b6113b3565b6100f561039e366004611a83565b61141f565b60008060008060003660003660003660006103be8d8d6111fe565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d65565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611a9e565b61043791611ac8565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611afd565b61057f928290611a9e565b61058891611b10565b60601c845260003661059b603482611afd565b906105a7601436611afd565b926105b493929190611a9e565b6105bd91611ac8565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611b43565b9261065c93929190611a9e565b61066591611b10565b60601c036106f85760008484886060015160146106829190611b43565b90896060015160346106949190611b43565b926106a193929190611a9e565b6106aa91611ac8565b60001c90508484886060015160346106c29190611b43565b6106cd928290611a9e565b90935091506106dd816034611b43565b876060018181516106ee9190611b43565b90525061070e9050565b606086015161070990808587611a9e565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611b56565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611ba1565b90506107b4888261147f565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611a9e565b6040518663ffffffff1660e01b815260040161083e959493929190611bba565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611ba1565b905061088b868261147f565b955050505050505b9392505050565b6000336108aa60208601866119d8565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611bf3565b61092491602091600091611a9e565b61092d91611ac8565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099e57503360008181526003602090815260408083205485845260018352818420948452939091529020546001600160801b03600160801b90920482169116115b156109ad576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf25760a082901c60011615610a835760008481526002602090815260408083209483529381528382203383529052919091205490610a3d565b366000610a91836034611b43565b610a9f6101408c018c611bf3565b905010158015610aea57506001600160a01b038416610ac26101408c018c611bf3565b8590610acf826014611b43565b92610adc93929190611a9e565b610ae591611b10565b60601c145b15610c14576000610aff6101408c018c611bf3565b610b0a866014611b43565b90610b16876034611b43565b92610b2393929190611a9e565b610b2c91611ac8565b905080610b3a856034611b43565b610b449190611b43565b610b526101408d018d611bf3565b90501015610bb55760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc36101408c018c611bf3565b610bce866034611b43565b9083610bdb886034611b43565b610be59190611b43565b92610bf293929190611a9e565b9093509150610c02816034611b43565b610c0c9085611b43565b935050610c34565b610c226101408b018b611bf3565b610c2f9185918291611a9e565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c73959493929190611c3a565b6020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190611ba1565b9050610cc2888261147f565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3d92505050565b60408301516000906001600160a01b0316638e0125d233878b610d196101408f018f611bf3565b610d269189908290611a9e565b6040518663ffffffff1660e01b8152600401610d46959493929190611bba565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dbc5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b336000908152600360205260409020546001600160801b038c8116911614610e1d5760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e328c8c8c8c8c8c8c8c8c8c8c611365565b9050600160a01b6001600160a01b03198c1601610e5c573360009081526020819052604090208190555b60005b86811015610f2657610e8f888883818110610e7c57610e7c611d7d565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eb057610eb0611d7d565b9050602002810190610ec29190611bf3565b6040518563ffffffff1660e01b8152600401610ee19493929190611d93565b600060405180830381600087803b158015610efb57600080fd5b505af1158015610f0f573d6000803e3d6000fd5b505050508080610f1e90611dc5565b915050610e5f565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f5990339085908a908a90600401611d93565b600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b50505050600087876000818110610fa057610fa0611d7d565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111b55788888281811061114257611142611d7d565b905060200201356002600085815260200190815260200160002060008b8b60018661116d9190611afd565b81811061117c5761117c611d7d565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111ad81611dc5565b915050611128565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261122393929190611a9e565b61122c91611dde565b60801c9a508c8c601090601c9261124593929190611a9e565b61124e91611e15565b99508c8c601c9060229261126493929190611a9e565b61126d91611e43565b60d01c97508c8c60229060289261128693929190611a9e565b61128f91611e43565b60d01c96508c8c602890603c926112a893929190611a9e565b6112b191611b10565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b60208190036113135761130f61038b8284611ac8565b5050565b61130f6113208284611dde565b60801c61141f565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008b8b8b8b8b8b8b8b8b8b8b60405160200161138c9b9a99989796959493929190611941565b6040516020818303038152906040528051906020012090509b9a5050505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec9101611414565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114b35760019250611535565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816114f85765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611516575065ffffffffffff60a01b5b80821890821102188061152f575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261154f57600080fd5b50813567ffffffffffffffff81111561156757600080fd5b60208301915083602082850101111561157f57600080fd5b9250929050565b6000806020838503121561159957600080fd5b823567ffffffffffffffff8111156115b057600080fd5b6115bc8582860161153d565b90969095509350505050565b6000806000604084860312156115dd57600080fd5b83359250602084013567ffffffffffffffff8111156115fb57600080fd5b6116078682870161153d565b9497909650939450505050565b60008060006060848603121561162957600080fd5b833567ffffffffffffffff81111561164057600080fd5b8401610160818703121561165357600080fd5b95602085013595506040909401359392505050565b6001600160a01b038116811461167d57600080fd5b50565b803561168b81611668565b919050565b600080604083850312156116a357600080fd5b8235915060208301356116b581611668565b809150509250929050565b80356001600160801b038116811461168b57600080fd5b80356001600160a01b03198116811461168b57600080fd5b803565ffffffffffff8116811461168b57600080fd5b60008083601f84011261171757600080fd5b50813567ffffffffffffffff81111561172f57600080fd5b6020830191508360208260051b850101111561157f57600080fd5b60008060008060008060008060008060006101008c8e03121561176c57600080fd5b6117758c6116c0565b9a5061178360208d016116d7565b995061179160408d01611680565b985061179f60608d016116ef565b97506117ad60808d016116ef565b965067ffffffffffffffff8060a08e013511156117c957600080fd5b6117d98e60a08f01358f01611705565b909750955060c08d01358110156117ef57600080fd5b6117ff8e60c08f01358f0161153d565b909550935060e08d013581101561181557600080fd5b506118268d60e08e01358e01611705565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b8581101561186a5781358752958201959082019060010161184e565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118b557600080fd5b830160208101925035905067ffffffffffffffff8111156118d557600080fd5b80360382131561157f57600080fd5b81835260006020808501808196508560051b810191508460005b87811015611934578284038952611915828861189e565b611920868284611875565b9a87019a95505050908401906001016118fe565b5091979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a0820181905260009061199c838201898b61183e565b905082810360c08401526119b1818789611875565b905082810360e08401526119c68185876118e4565b9e9d5050505050505050505050505050565b6000602082840312156119ea57600080fd5b813561089381611668565b600080600060408486031215611a0a57600080fd5b8335611a1581611668565b9250602084013567ffffffffffffffff8111156115fb57600080fd5b600080600060608486031215611a4657600080fd5b83359250602084013591506040840135611a5f81611668565b809150509250925092565b600060208284031215611a7c57600080fd5b5035919050565b600060208284031215611a9557600080fd5b610893826116c0565b60008085851115611aae57600080fd5b83861115611abb57600080fd5b5050820193919092039150565b80356020831015611ae157600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611ae157611ae1611ae7565b6bffffffffffffffffffffffff1981358181169160148510156115355760149490940360031b84901b1690921692915050565b80820180821115611ae157611ae1611ae7565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611b9460c083018486611875565b9998505050505050505050565b600060208284031215611bb357600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611be8608083018486611875565b979650505050505050565b6000808335601e19843603018112611c0a57600080fd5b83018035915067ffffffffffffffff821115611c2557600080fd5b60200191503681900382131561157f57600080fd5b6001600160a01b038616815260208101859052608060408201819052611c72908201611c6586611680565b6001600160a01b03169052565b602084013560a08201526000611c8b604086018661189e565b6101608060c0860152611ca36101e086018385611875565b9250611cb2606089018961189e565b9250607f19808786030160e0880152611ccc858584611875565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611d15838c018c61189e565b9550935081888703016101a0890152611d2f868686611875565b9550611d3d818c018c61189e565b955093505080878603016101c08801525050611d5a838383611875565b925050508281036060840152611d71818587611875565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611dbb606083018486611875565b9695505050505050565b600060018201611dd757611dd7611ae7565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156115355760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561153557600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156115355760069490940360031b84901b169092169291505056", + "nonce": "0x1cf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5bfabf0d17e1fc24556b66786feb048a874a4768864a231b2f77004dbcad66ae", + "transactionType": "CREATE2", + "contractName": "ECDSASigner", + "contractAddress": "0xF9E712F44A360ED8820aD624e41164f74a5a7456", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9397d", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610680806100206000396000f3fe60806040526004361061003f5760003560e01c806367249d69146100445780637a7c6a4f146100a75780638e0125d2146100d5578063e9b51de5146100e8575b600080fd5b34801561005057600080fd5b5061008a61005f366004610498565b600060208181529381526040808220855292815282812090935282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100b357600080fd5b506100c76100c236600461051d565b6100fd565b60405190815260200161009e565b6100c76100e336600461051d565b6101e3565b6100fb6100f6366004610585565b610277565b005b3360009081526020818152604080832087845282528083206001600160a01b03898116855292528220541661014d5760405162461bcd60e51b8152600401610144906105df565b60405180910390fd5b600061019184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089939250506103c09050565b336000908152602081815260408083208a845282528083206001600160a01b038c81168552925290912054919250908116908216036101d45760009150506101da565b60019150505b95945050505050565b3360009081526020818152604080832087845282528083206001600160a01b03898116855292528220541661022a5760405162461bcd60e51b8152600401610144906105df565b600061019184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061027192508991506104519050565b906103c0565b3360009081526020818152604080832086845282528083206001600160a01b03888116855292529091205416156102ff5760405162461bcd60e51b815260206004820152602660248201527f45434453415369676e65723a206b65726e656c20616c726561647920726567696044820152651cdd195c995960d21b6064820152608401610144565b6014811461035b5760405162461bcd60e51b815260206004820152602360248201527f45434453415369676e65723a20696e76616c6964207369676e6572206164647260448201526265737360e81b6064820152608401610144565b600061036a6014828486610621565b6103739161064b565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942080546001600160a01b03191660609490941c93909317909255505050565b60405160019083600052602083015160405260408351036103fc57604083015160ff81901c601b016020526001600160ff1b0316606052610422565b604183510361041d57606083015160001a6020526040830151606052610422565b600091505b6020600160806000855afa5191503d61044357638baa579f6000526004601cfd5b600060605260405292915050565b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b80356001600160a01b038116811461049357600080fd5b919050565b6000806000606084860312156104ad57600080fd5b6104b68461047c565b9250602084013591506104cb6040850161047c565b90509250925092565b60008083601f8401126104e657600080fd5b50813567ffffffffffffffff8111156104fe57600080fd5b60208301915083602082850101111561051657600080fd5b9250929050565b60008060008060006080868803121561053557600080fd5b61053e8661047c565b94506020860135935060408601359250606086013567ffffffffffffffff81111561056857600080fd5b610574888289016104d4565b969995985093965092949392505050565b6000806000806060858703121561059b57600080fd5b6105a48561047c565b935060208501359250604085013567ffffffffffffffff8111156105c757600080fd5b6105d3878288016104d4565b95989497509550505050565b60208082526022908201527f45434453415369676e65723a206b65726e656c206e6f74207265676973746572604082015261195960f21b606082015260800190565b6000808585111561063157600080fd5b8386111561063e57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156106785780818660140360031b1b83161692505b50509291505056", + "nonce": "0x1d0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa41af2cba175bc10e156a9457ee1fccfb5deb6a61f5fffb60c4757131054fab1", + "transactionType": "CREATE2", + "contractName": "GasPolicy", + "contractAddress": "0x62868E950Efbb336DCFf033598Ee5E602f0a93cD", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x98ba5", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610737806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae0146100435780632a730c3f14610058578063c92ce351146100ee578063ecfcd9301461010f575b600080fd5b61005661005136600461041f565b610137565b005b34801561006457600080fd5b506100bb61007336600461047b565b60006020818152938152604080822085529281528281209093528252902080546001909101546001600160801b03821691600160801b900460ff16906001600160a01b031683565b604080516001600160801b03909416845291151560208401526001600160a01b0316908201526060015b60405180910390f35b6101016100fc3660046104bd565b6101f0565b6040519081526020016100e5565b34801561011b57600080fd5b5061010161012a36600461054d565b6000979650505050505050565b60008080610147848601866105d3565b604080516060810182526001600160801b03948516815292151560208085019182526001600160a01b039384168584019081523360009081528083528481209d81529c8252838d209d85168d529c905299209151825499511515600160801b0270ffffffffffffffffffffffffffffffffff19909a16931692909217979097178755965160019096018054969097166001600160a01b0319909616959095179095555050505050565b60008060e0850135608086013561020f60a088013560c089013561063a565b610219919061063a565b6102239190610653565b336000908152602081815260408083208a845282528083206001600160a01b038c168452909152902054909150600160801b900460ff1615610301573360009081526020818152604080832089845282528083206001600160a01b038b8116855292529091206001015416158015906102f257503360009081526020818152604080832089845282528083206001600160a01b038b81168552925290912060010154166102d461012087018761066a565b6102e3916014916000916106b1565b6102ec916106db565b60601c14155b156103015760019150506103b5565b3360009081526020818152604080832089845282528083206001600160a01b038b1684529091529020546001600160801b0390811690821611156103495760019150506103b5565b3360009081526020818152604080832089845282528083206001600160a01b038b1684529091528120805483929061038b9084906001600160801b0316610710565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060009150505b95945050505050565b6001600160a01b03811681146103d357600080fd5b50565b60008083601f8401126103e857600080fd5b50813567ffffffffffffffff81111561040057600080fd5b60208301915083602082850101111561041857600080fd5b9250929050565b6000806000806060858703121561043557600080fd5b8435610440816103be565b935060208501359250604085013567ffffffffffffffff81111561046357600080fd5b61046f878288016103d6565b95989497509550505050565b60008060006060848603121561049057600080fd5b833561049b816103be565b92506020840135915060408401356104b2816103be565b809150509250925092565b6000806000806000608086880312156104d557600080fd5b85356104e0816103be565b945060208601359350604086013567ffffffffffffffff8082111561050457600080fd5b90870190610160828a03121561051957600080fd5b9093506060870135908082111561052f57600080fd5b5061053c888289016103d6565b969995985093965092949392505050565b600080600080600080600060c0888a03121561056857600080fd5b8735610573816103be565b96506020880135610583816103be565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156105b457600080fd5b6105c08a828b016103d6565b989b979a50959850939692959293505050565b6000806000606084860312156105e857600080fd5b83356001600160801b03811681146105ff57600080fd5b92506020840135801515811461061457600080fd5b915060408401356104b2816103be565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064d5761064d610624565b92915050565b808202811582820484141761064d5761064d610624565b6000808335601e1984360301811261068157600080fd5b83018035915067ffffffffffffffff82111561069c57600080fd5b60200191503681900382131561041857600080fd5b600080858511156106c157600080fd5b838611156106ce57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156107085780818660140360031b1b83161692505b505092915050565b6001600160801b0382811682821603908082111561073057610730610624565b509291505056", + "nonce": "0x1d1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xed09bc17bbe34f24b0b6bd1ed893d748335663d42b6e61623999772f0617bf66", + "0x5bfabf0d17e1fc24556b66786feb048a874a4768864a231b2f77004dbcad66ae", + "0xa41af2cba175bc10e156a9457ee1fccfb5deb6a61f5fffb60c4757131054fab1" + ], + "returns": {}, + "timestamp": 1707331808, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707331815.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707331815.json new file mode 100644 index 00000000..422ef6ac --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707331815.json @@ -0,0 +1,169 @@ +{ + "transactions": [ + { + "hash": "0xed09bc17bbe34f24b0b6bd1ed893d748335663d42b6e61623999772f0617bf66", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x5e79C26A829e0b11b6cC2D2358551CE1a9f0e32B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x26cec4", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611e71806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063c4a5240911610059578063c4a524091461031f578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b66bd1d2146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f0366004611586565b6103a3565b005b34801561010357600080fd5b506101176101123660046115c8565b6103f6565b6040519081526020015b60405180910390f35b610117610138366004611614565b61089a565b34801561014957600080fd5b506101bb610158366004611690565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f36600461174a565b610d65565b34801561023057600080fd5b5061024461023f366004611586565b6111fe565b6040516101219b9a99989796959493929190611941565b34801561026757600080fd5b5061029c6102763660046119d8565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca366004611586565b6112f9565b6102e26102dd3660046119f5565b611328565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d3660046119d8565b60006020819052908152604090205481565b34801561032b57600080fd5b5061011761033a36600461174a565b611365565b34801561034b57600080fd5b5061011761035a366004611a31565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611a6a565b6113b3565b6100f561039e366004611a83565b61141f565b60008060008060003660003660003660006103be8d8d6111fe565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d65565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611a9e565b61043791611ac8565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611afd565b61057f928290611a9e565b61058891611b10565b60601c845260003661059b603482611afd565b906105a7601436611afd565b926105b493929190611a9e565b6105bd91611ac8565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611b43565b9261065c93929190611a9e565b61066591611b10565b60601c036106f85760008484886060015160146106829190611b43565b90896060015160346106949190611b43565b926106a193929190611a9e565b6106aa91611ac8565b60001c90508484886060015160346106c29190611b43565b6106cd928290611a9e565b90935091506106dd816034611b43565b876060018181516106ee9190611b43565b90525061070e9050565b606086015161070990808587611a9e565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611b56565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611ba1565b90506107b4888261147f565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611a9e565b6040518663ffffffff1660e01b815260040161083e959493929190611bba565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611ba1565b905061088b868261147f565b955050505050505b9392505050565b6000336108aa60208601866119d8565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611bf3565b61092491602091600091611a9e565b61092d91611ac8565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099e57503360008181526003602090815260408083205485845260018352818420948452939091529020546001600160801b03600160801b90920482169116115b156109ad576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf25760a082901c60011615610a835760008481526002602090815260408083209483529381528382203383529052919091205490610a3d565b366000610a91836034611b43565b610a9f6101408c018c611bf3565b905010158015610aea57506001600160a01b038416610ac26101408c018c611bf3565b8590610acf826014611b43565b92610adc93929190611a9e565b610ae591611b10565b60601c145b15610c14576000610aff6101408c018c611bf3565b610b0a866014611b43565b90610b16876034611b43565b92610b2393929190611a9e565b610b2c91611ac8565b905080610b3a856034611b43565b610b449190611b43565b610b526101408d018d611bf3565b90501015610bb55760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc36101408c018c611bf3565b610bce866034611b43565b9083610bdb886034611b43565b610be59190611b43565b92610bf293929190611a9e565b9093509150610c02816034611b43565b610c0c9085611b43565b935050610c34565b610c226101408b018b611bf3565b610c2f9185918291611a9e565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c73959493929190611c3a565b6020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190611ba1565b9050610cc2888261147f565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3d92505050565b60408301516000906001600160a01b0316638e0125d233878b610d196101408f018f611bf3565b610d269189908290611a9e565b6040518663ffffffff1660e01b8152600401610d46959493929190611bba565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dbc5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b336000908152600360205260409020546001600160801b038c8116911614610e1d5760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e328c8c8c8c8c8c8c8c8c8c8c611365565b9050600160a01b6001600160a01b03198c1601610e5c573360009081526020819052604090208190555b60005b86811015610f2657610e8f888883818110610e7c57610e7c611d7d565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eb057610eb0611d7d565b9050602002810190610ec29190611bf3565b6040518563ffffffff1660e01b8152600401610ee19493929190611d93565b600060405180830381600087803b158015610efb57600080fd5b505af1158015610f0f573d6000803e3d6000fd5b505050508080610f1e90611dc5565b915050610e5f565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f5990339085908a908a90600401611d93565b600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b50505050600087876000818110610fa057610fa0611d7d565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111b55788888281811061114257611142611d7d565b905060200201356002600085815260200190815260200160002060008b8b60018661116d9190611afd565b81811061117c5761117c611d7d565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111ad81611dc5565b915050611128565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261122393929190611a9e565b61122c91611dde565b60801c9a508c8c601090601c9261124593929190611a9e565b61124e91611e15565b99508c8c601c9060229261126493929190611a9e565b61126d91611e43565b60d01c97508c8c60229060289261128693929190611a9e565b61128f91611e43565b60d01c96508c8c602890603c926112a893929190611a9e565b6112b191611b10565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b60208190036113135761130f61038b8284611ac8565b5050565b61130f6113208284611dde565b60801c61141f565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008b8b8b8b8b8b8b8b8b8b8b60405160200161138c9b9a99989796959493929190611941565b6040516020818303038152906040528051906020012090509b9a5050505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec9101611414565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114b35760019250611535565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816114f85765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611516575065ffffffffffff60a01b5b80821890821102188061152f575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261154f57600080fd5b50813567ffffffffffffffff81111561156757600080fd5b60208301915083602082850101111561157f57600080fd5b9250929050565b6000806020838503121561159957600080fd5b823567ffffffffffffffff8111156115b057600080fd5b6115bc8582860161153d565b90969095509350505050565b6000806000604084860312156115dd57600080fd5b83359250602084013567ffffffffffffffff8111156115fb57600080fd5b6116078682870161153d565b9497909650939450505050565b60008060006060848603121561162957600080fd5b833567ffffffffffffffff81111561164057600080fd5b8401610160818703121561165357600080fd5b95602085013595506040909401359392505050565b6001600160a01b038116811461167d57600080fd5b50565b803561168b81611668565b919050565b600080604083850312156116a357600080fd5b8235915060208301356116b581611668565b809150509250929050565b80356001600160801b038116811461168b57600080fd5b80356001600160a01b03198116811461168b57600080fd5b803565ffffffffffff8116811461168b57600080fd5b60008083601f84011261171757600080fd5b50813567ffffffffffffffff81111561172f57600080fd5b6020830191508360208260051b850101111561157f57600080fd5b60008060008060008060008060008060006101008c8e03121561176c57600080fd5b6117758c6116c0565b9a5061178360208d016116d7565b995061179160408d01611680565b985061179f60608d016116ef565b97506117ad60808d016116ef565b965067ffffffffffffffff8060a08e013511156117c957600080fd5b6117d98e60a08f01358f01611705565b909750955060c08d01358110156117ef57600080fd5b6117ff8e60c08f01358f0161153d565b909550935060e08d013581101561181557600080fd5b506118268d60e08e01358e01611705565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b8581101561186a5781358752958201959082019060010161184e565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118b557600080fd5b830160208101925035905067ffffffffffffffff8111156118d557600080fd5b80360382131561157f57600080fd5b81835260006020808501808196508560051b810191508460005b87811015611934578284038952611915828861189e565b611920868284611875565b9a87019a95505050908401906001016118fe565b5091979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a0820181905260009061199c838201898b61183e565b905082810360c08401526119b1818789611875565b905082810360e08401526119c68185876118e4565b9e9d5050505050505050505050505050565b6000602082840312156119ea57600080fd5b813561089381611668565b600080600060408486031215611a0a57600080fd5b8335611a1581611668565b9250602084013567ffffffffffffffff8111156115fb57600080fd5b600080600060608486031215611a4657600080fd5b83359250602084013591506040840135611a5f81611668565b809150509250925092565b600060208284031215611a7c57600080fd5b5035919050565b600060208284031215611a9557600080fd5b610893826116c0565b60008085851115611aae57600080fd5b83861115611abb57600080fd5b5050820193919092039150565b80356020831015611ae157600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611ae157611ae1611ae7565b6bffffffffffffffffffffffff1981358181169160148510156115355760149490940360031b84901b1690921692915050565b80820180821115611ae157611ae1611ae7565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611b9460c083018486611875565b9998505050505050505050565b600060208284031215611bb357600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611be8608083018486611875565b979650505050505050565b6000808335601e19843603018112611c0a57600080fd5b83018035915067ffffffffffffffff821115611c2557600080fd5b60200191503681900382131561157f57600080fd5b6001600160a01b038616815260208101859052608060408201819052611c72908201611c6586611680565b6001600160a01b03169052565b602084013560a08201526000611c8b604086018661189e565b6101608060c0860152611ca36101e086018385611875565b9250611cb2606089018961189e565b9250607f19808786030160e0880152611ccc858584611875565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611d15838c018c61189e565b9550935081888703016101a0890152611d2f868686611875565b9550611d3d818c018c61189e565b955093505080878603016101c08801525050611d5a838383611875565b925050508281036060840152611d71818587611875565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611dbb606083018486611875565b9695505050505050565b600060018201611dd757611dd7611ae7565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156115355760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561153557600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156115355760069490940360031b84901b169092169291505056", + "nonce": "0x1cf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5bfabf0d17e1fc24556b66786feb048a874a4768864a231b2f77004dbcad66ae", + "transactionType": "CREATE2", + "contractName": "ECDSASigner", + "contractAddress": "0xF9E712F44A360ED8820aD624e41164f74a5a7456", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9397d", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610680806100206000396000f3fe60806040526004361061003f5760003560e01c806367249d69146100445780637a7c6a4f146100a75780638e0125d2146100d5578063e9b51de5146100e8575b600080fd5b34801561005057600080fd5b5061008a61005f366004610498565b600060208181529381526040808220855292815282812090935282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100b357600080fd5b506100c76100c236600461051d565b6100fd565b60405190815260200161009e565b6100c76100e336600461051d565b6101e3565b6100fb6100f6366004610585565b610277565b005b3360009081526020818152604080832087845282528083206001600160a01b03898116855292528220541661014d5760405162461bcd60e51b8152600401610144906105df565b60405180910390fd5b600061019184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089939250506103c09050565b336000908152602081815260408083208a845282528083206001600160a01b038c81168552925290912054919250908116908216036101d45760009150506101da565b60019150505b95945050505050565b3360009081526020818152604080832087845282528083206001600160a01b03898116855292528220541661022a5760405162461bcd60e51b8152600401610144906105df565b600061019184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061027192508991506104519050565b906103c0565b3360009081526020818152604080832086845282528083206001600160a01b03888116855292529091205416156102ff5760405162461bcd60e51b815260206004820152602660248201527f45434453415369676e65723a206b65726e656c20616c726561647920726567696044820152651cdd195c995960d21b6064820152608401610144565b6014811461035b5760405162461bcd60e51b815260206004820152602360248201527f45434453415369676e65723a20696e76616c6964207369676e6572206164647260448201526265737360e81b6064820152608401610144565b600061036a6014828486610621565b6103739161064b565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942080546001600160a01b03191660609490941c93909317909255505050565b60405160019083600052602083015160405260408351036103fc57604083015160ff81901c601b016020526001600160ff1b0316606052610422565b604183510361041d57606083015160001a6020526040830151606052610422565b600091505b6020600160806000855afa5191503d61044357638baa579f6000526004601cfd5b600060605260405292915050565b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b80356001600160a01b038116811461049357600080fd5b919050565b6000806000606084860312156104ad57600080fd5b6104b68461047c565b9250602084013591506104cb6040850161047c565b90509250925092565b60008083601f8401126104e657600080fd5b50813567ffffffffffffffff8111156104fe57600080fd5b60208301915083602082850101111561051657600080fd5b9250929050565b60008060008060006080868803121561053557600080fd5b61053e8661047c565b94506020860135935060408601359250606086013567ffffffffffffffff81111561056857600080fd5b610574888289016104d4565b969995985093965092949392505050565b6000806000806060858703121561059b57600080fd5b6105a48561047c565b935060208501359250604085013567ffffffffffffffff8111156105c757600080fd5b6105d3878288016104d4565b95989497509550505050565b60208082526022908201527f45434453415369676e65723a206b65726e656c206e6f74207265676973746572604082015261195960f21b606082015260800190565b6000808585111561063157600080fd5b8386111561063e57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156106785780818660140360031b1b83161692505b50509291505056", + "nonce": "0x1d0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa41af2cba175bc10e156a9457ee1fccfb5deb6a61f5fffb60c4757131054fab1", + "transactionType": "CREATE2", + "contractName": "GasPolicy", + "contractAddress": "0x62868E950Efbb336DCFf033598Ee5E602f0a93cD", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x98ba5", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610737806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae0146100435780632a730c3f14610058578063c92ce351146100ee578063ecfcd9301461010f575b600080fd5b61005661005136600461041f565b610137565b005b34801561006457600080fd5b506100bb61007336600461047b565b60006020818152938152604080822085529281528281209093528252902080546001909101546001600160801b03821691600160801b900460ff16906001600160a01b031683565b604080516001600160801b03909416845291151560208401526001600160a01b0316908201526060015b60405180910390f35b6101016100fc3660046104bd565b6101f0565b6040519081526020016100e5565b34801561011b57600080fd5b5061010161012a36600461054d565b6000979650505050505050565b60008080610147848601866105d3565b604080516060810182526001600160801b03948516815292151560208085019182526001600160a01b039384168584019081523360009081528083528481209d81529c8252838d209d85168d529c905299209151825499511515600160801b0270ffffffffffffffffffffffffffffffffff19909a16931692909217979097178755965160019096018054969097166001600160a01b0319909616959095179095555050505050565b60008060e0850135608086013561020f60a088013560c089013561063a565b610219919061063a565b6102239190610653565b336000908152602081815260408083208a845282528083206001600160a01b038c168452909152902054909150600160801b900460ff1615610301573360009081526020818152604080832089845282528083206001600160a01b038b8116855292529091206001015416158015906102f257503360009081526020818152604080832089845282528083206001600160a01b038b81168552925290912060010154166102d461012087018761066a565b6102e3916014916000916106b1565b6102ec916106db565b60601c14155b156103015760019150506103b5565b3360009081526020818152604080832089845282528083206001600160a01b038b1684529091529020546001600160801b0390811690821611156103495760019150506103b5565b3360009081526020818152604080832089845282528083206001600160a01b038b1684529091528120805483929061038b9084906001600160801b0316610710565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060009150505b95945050505050565b6001600160a01b03811681146103d357600080fd5b50565b60008083601f8401126103e857600080fd5b50813567ffffffffffffffff81111561040057600080fd5b60208301915083602082850101111561041857600080fd5b9250929050565b6000806000806060858703121561043557600080fd5b8435610440816103be565b935060208501359250604085013567ffffffffffffffff81111561046357600080fd5b61046f878288016103d6565b95989497509550505050565b60008060006060848603121561049057600080fd5b833561049b816103be565b92506020840135915060408401356104b2816103be565b809150509250925092565b6000806000806000608086880312156104d557600080fd5b85356104e0816103be565b945060208601359350604086013567ffffffffffffffff8082111561050457600080fd5b90870190610160828a03121561051957600080fd5b9093506060870135908082111561052f57600080fd5b5061053c888289016103d6565b969995985093965092949392505050565b600080600080600080600060c0888a03121561056857600080fd5b8735610573816103be565b96506020880135610583816103be565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156105b457600080fd5b6105c08a828b016103d6565b989b979a50959850939692959293505050565b6000806000606084860312156105e857600080fd5b83356001600160801b03811681146105ff57600080fd5b92506020840135801515811461061457600080fd5b915060408401356104b2816103be565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064d5761064d610624565b92915050565b808202811582820484141761064d5761064d610624565b6000808335601e1984360301811261068157600080fd5b83018035915067ffffffffffffffff82111561069c57600080fd5b60200191503681900382131561041857600080fd5b600080858511156106c157600080fd5b838611156106ce57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156107085780818660140360031b1b83161692505b505092915050565b6001600160801b0382811682821603908082111561073057610730610624565b509291505056", + "nonce": "0x1d1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xed09bc17bbe34f24b0b6bd1ed893d748335663d42b6e61623999772f0617bf66", + "transactionIndex": "0x2", + "blockHash": "0xa19406951cf2263998ddea3b542c3f265d40484fdbbc7c305babf392e284d932", + "blockNumber": "0x2b8bf8e", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1b4f83", + "gasUsed": "0x1a8aeb", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x0000000000000000000000000000000000000000000000000009451901f92500000000000000000000000000000000000000000000000000033c939ef81c6c02000000000000000000000000000000000000000000000611489903de08baec2000000000000000000000000000000000000000000000000003334e85f623470200000000000000000000000000000000000000000000061148a248f70ab41120", + "blockHash": "0xa19406951cf2263998ddea3b542c3f265d40484fdbbc7c305babf392e284d932", + "blockNumber": "0x2b8bf8e", + "transactionHash": "0xed09bc17bbe34f24b0b6bd1ed893d748335663d42b6e61623999772f0617bf66", + "transactionIndex": "0x2", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000020000000000000002000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x59682f10" + }, + { + "transactionHash": "0x5bfabf0d17e1fc24556b66786feb048a874a4768864a231b2f77004dbcad66ae", + "transactionIndex": "0x3", + "blockHash": "0xa19406951cf2263998ddea3b542c3f265d40484fdbbc7c305babf392e284d932", + "blockNumber": "0x2b8bf8e", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x219e9f", + "gasUsed": "0x64f1c", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x0000000000000000000000000000000000000000000000000002341207e6240000000000000000000000000000000000000000000000000003334e85f47a985200000000000000000000000000000000000000000000061148a248f70ab4112000000000000000000000000000000000000000000000000003311a73ec94745200000000000000000000000000000000000000000000061148a47d09129a3520", + "blockHash": "0xa19406951cf2263998ddea3b542c3f265d40484fdbbc7c305babf392e284d932", + "blockNumber": "0x2b8bf8e", + "transactionHash": "0x5bfabf0d17e1fc24556b66786feb048a874a4768864a231b2f77004dbcad66ae", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000020000000000000002000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x59682f10" + }, + { + "transactionHash": "0xa41af2cba175bc10e156a9457ee1fccfb5deb6a61f5fffb60c4757131054fab1", + "transactionIndex": "0x4", + "blockHash": "0xa19406951cf2263998ddea3b542c3f265d40484fdbbc7c305babf392e284d932", + "blockNumber": "0x2b8bf8e", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x28883d", + "gasUsed": "0x6e99e", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x00000000000000000000000000000000000000000000000000026a081b14020000000000000000000000000000000000000000000000000003311a73ec2f829200000000000000000000000000000000000000000000061148a47d09129a3520000000000000000000000000000000000000000000000000032eb06bd11b809200000000000000000000000000000000000000000000061148a6e7112dae3720", + "blockHash": "0xa19406951cf2263998ddea3b542c3f265d40484fdbbc7c305babf392e284d932", + "blockNumber": "0x2b8bf8e", + "transactionHash": "0xa41af2cba175bc10e156a9457ee1fccfb5deb6a61f5fffb60c4757131054fab1", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000020000000000000002000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x59682f10" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1707331815, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707430304.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707430304.json new file mode 100644 index 00000000..8f9f6689 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707430304.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0x9c18252cd4aefca54f68714e67f3b848ba9ba75a4edd2571524844192e146951", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x68F21b955dC9b2C24f738419CD9277eBfCa1Deb0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x274b89", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611ed6806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063c4a5240911610059578063c4a524091461031f578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b66bd1d2146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f03660046115c2565b6103a3565b005b34801561010357600080fd5b50610117610112366004611604565b6103f6565b6040519081526020015b60405180910390f35b610117610138366004611650565b61089a565b34801561014957600080fd5b506101bb6101583660046116cc565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f366004611786565b610d63565b34801561023057600080fd5b5061024461023f3660046115c2565b61123a565b6040516101219b9a99989796959493929190611980565b34801561026757600080fd5b5061029c610276366004611a17565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca3660046115c2565b611335565b6102e26102dd366004611a34565b611364565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d366004611a17565b60006020819052908152604090205481565b34801561032b57600080fd5b5061011761033a366004611786565b6113a1565b34801561034b57600080fd5b5061011761035a366004611a70565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611aa9565b6113ef565b6100f561039e366004611ac2565b61145b565b60008060008060003660003660003660006103be8d8d61123a565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d63565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611add565b61043791611b07565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611b3c565b61057f928290611add565b61058891611b4f565b60601c845260003661059b603482611b3c565b906105a7601436611b3c565b926105b493929190611add565b6105bd91611b07565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611b82565b9261065c93929190611add565b61066591611b4f565b60601c036106f85760008484886060015160146106829190611b82565b90896060015160346106949190611b82565b926106a193929190611add565b6106aa91611b07565b60001c90508484886060015160346106c29190611b82565b6106cd928290611add565b90935091506106dd816034611b82565b876060018181516106ee9190611b82565b90525061070e9050565b606086015161070990808587611add565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611b95565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611be0565b90506107b488826114bb565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611add565b6040518663ffffffff1660e01b815260040161083e959493929190611bf9565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611be0565b905061088b86826114bb565b955050505050505b9392505050565b6000336108aa6020860186611a17565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611c32565b61092491602091600091611add565b61092d91611b07565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099c575060008181526001602090815260408083203384528252808320546003909252909120546001600160801b03918216600160801b909104909116115b156109ab576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf05760a082901c60011615610a815760008481526002602090815260408083209483529381528382203383529052919091205490610a3b565b366000610a8f836034611b82565b610a9d6101408c018c611c32565b905010158015610ae857506001600160a01b038416610ac06101408c018c611c32565b8590610acd826014611b82565b92610ada93929190611add565b610ae391611b4f565b60601c145b15610c12576000610afd6101408c018c611c32565b610b08866014611b82565b90610b14876034611b82565b92610b2193929190611add565b610b2a91611b07565b905080610b38856034611b82565b610b429190611b82565b610b506101408d018d611c32565b90501015610bb35760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc16101408c018c611c32565b610bcc866034611b82565b9083610bd9886034611b82565b610be39190611b82565b92610bf093929190611add565b9093509150610c00816034611b82565b610c0a9085611b82565b935050610c32565b610c206101408b018b611c32565b610c2d9185918291611add565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c71959493929190611c79565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611be0565b9050610cc088826114bb565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3b92505050565b60408301516000906001600160a01b0316638e0125d233878b610d176101408f018f611c32565b610d249189908290611add565b6040518663ffffffff1660e01b8152600401610d44959493929190611bf9565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dba5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b33600090815260036020526040812080546001600160801b031691610dde83611dbc565b91906101000a8154816001600160801b0302191690836001600160801b031602179055506001600160801b03168b6001600160801b031614610e595760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e6e8c8c8c8c8c8c8c8c8c8c8c6113a1565b9050600160a01b6001600160a01b03198c1601610e98573360009081526020819052604090208190555b60005b86811015610f6257610ecb888883818110610eb857610eb8611de2565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eec57610eec611de2565b9050602002810190610efe9190611c32565b6040518563ffffffff1660e01b8152600401610f1d9493929190611df8565b600060405180830381600087803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b505050508080610f5a90611e2a565b915050610e9b565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f9590339085908a908a90600401611df8565b600060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b50505050600087876000818110610fdc57610fdc611de2565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111f15788888281811061117e5761117e611de2565b905060200201356002600085815260200190815260200160002060008b8b6001866111a99190611b3c565b8181106111b8576111b8611de2565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111e981611e2a565b915050611164565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261125f93929190611add565b61126891611e43565b60801c9a508c8c601090601c9261128193929190611add565b61128a91611e7a565b99508c8c601c906022926112a093929190611add565b6112a991611ea8565b60d01c97508c8c6022906028926112c293929190611add565b6112cb91611ea8565b60d01c96508c8c602890603c926112e493929190611add565b6112ed91611b4f565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b602081900361134f5761134b61038b8284611b07565b5050565b61134b61135c8284611e43565b60801c61145b565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008b8b8b8b8b8b8b8b8b8b8b6040516020016113c89b9a99989796959493929190611980565b6040516020818303038152906040528051906020012090509b9a5050505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec9101611450565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114ef5760019250611571565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816115345765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611552575065ffffffffffff60a01b5b80821890821102188061156b575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261158b57600080fd5b50813567ffffffffffffffff8111156115a357600080fd5b6020830191508360208285010111156115bb57600080fd5b9250929050565b600080602083850312156115d557600080fd5b823567ffffffffffffffff8111156115ec57600080fd5b6115f885828601611579565b90969095509350505050565b60008060006040848603121561161957600080fd5b83359250602084013567ffffffffffffffff81111561163757600080fd5b61164386828701611579565b9497909650939450505050565b60008060006060848603121561166557600080fd5b833567ffffffffffffffff81111561167c57600080fd5b8401610160818703121561168f57600080fd5b95602085013595506040909401359392505050565b6001600160a01b03811681146116b957600080fd5b50565b80356116c7816116a4565b919050565b600080604083850312156116df57600080fd5b8235915060208301356116f1816116a4565b809150509250929050565b80356001600160801b03811681146116c757600080fd5b80356001600160a01b0319811681146116c757600080fd5b803565ffffffffffff811681146116c757600080fd5b60008083601f84011261175357600080fd5b50813567ffffffffffffffff81111561176b57600080fd5b6020830191508360208260051b85010111156115bb57600080fd5b60008060008060008060008060008060006101008c8e0312156117a857600080fd5b6117b18c6116fc565b9a506117bf60208d01611713565b99506117cd60408d016116bc565b98506117db60608d0161172b565b97506117e960808d0161172b565b965067ffffffffffffffff8060a08e0135111561180557600080fd5b6118158e60a08f01358f01611741565b909750955060c08d013581101561182b57600080fd5b61183b8e60c08f01358f01611579565b909550935060e08d013581101561185157600080fd5b506118628d60e08e01358e01611741565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b858110156118a65781358752958201959082019060010161188a565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118f157600080fd5b830160208101925035905067ffffffffffffffff81111561191157600080fd5b8036038213156115bb57600080fd5b60008383855260208086019550808560051b8301018460005b8781101561197357848303601f1901895261195482886118da565b61195f8582846118b1565b9a86019a9450505090830190600101611939565b5090979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a082018190526000906119db838201898b61187a565b905082810360c08401526119f08187896118b1565b905082810360e0840152611a05818587611920565b9e9d5050505050505050505050505050565b600060208284031215611a2957600080fd5b8135610893816116a4565b600080600060408486031215611a4957600080fd5b8335611a54816116a4565b9250602084013567ffffffffffffffff81111561163757600080fd5b600080600060608486031215611a8557600080fd5b83359250602084013591506040840135611a9e816116a4565b809150509250925092565b600060208284031215611abb57600080fd5b5035919050565b600060208284031215611ad457600080fd5b610893826116fc565b60008085851115611aed57600080fd5b83861115611afa57600080fd5b5050820193919092039150565b80356020831015611b2057600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611b2057611b20611b26565b6bffffffffffffffffffffffff1981358181169160148510156115715760149490940360031b84901b1690921692915050565b80820180821115611b2057611b20611b26565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611bd360c0830184866118b1565b9998505050505050505050565b600060208284031215611bf257600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611c276080830184866118b1565b979650505050505050565b6000808335601e19843603018112611c4957600080fd5b83018035915067ffffffffffffffff821115611c6457600080fd5b6020019150368190038213156115bb57600080fd5b6001600160a01b038616815260208101859052608060408201819052611cb1908201611ca4866116bc565b6001600160a01b03169052565b602084013560a08201526000611cca60408601866118da565b6101608060c0860152611ce26101e0860183856118b1565b9250611cf160608901896118da565b9250607f19808786030160e0880152611d0b8585846118b1565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611d54838c018c6118da565b9550935081888703016101a0890152611d6e8686866118b1565b9550611d7c818c018c6118da565b955093505080878603016101c08801525050611d998383836118b1565b925050508281036060840152611db08185876118b1565b98975050505050505050565b60006001600160801b03808316818103611dd857611dd8611b26565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611e206060830184866118b1565b9695505050505050565b600060018201611e3c57611e3c611b26565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156115715760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561157157600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156115715760069490940360031b84901b169092169291505056", + "nonce": "0x1d2" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x9c18252cd4aefca54f68714e67f3b848ba9ba75a4edd2571524844192e146951" + ], + "returns": {}, + "timestamp": 1707430304, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707430395.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707430395.json new file mode 100644 index 00000000..29d452b4 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707430395.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0x9c18252cd4aefca54f68714e67f3b848ba9ba75a4edd2571524844192e146951", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x68F21b955dC9b2C24f738419CD9277eBfCa1Deb0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x274b89", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611ed6806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063c4a5240911610059578063c4a524091461031f578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b66bd1d2146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f03660046115c2565b6103a3565b005b34801561010357600080fd5b50610117610112366004611604565b6103f6565b6040519081526020015b60405180910390f35b610117610138366004611650565b61089a565b34801561014957600080fd5b506101bb6101583660046116cc565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f366004611786565b610d63565b34801561023057600080fd5b5061024461023f3660046115c2565b61123a565b6040516101219b9a99989796959493929190611980565b34801561026757600080fd5b5061029c610276366004611a17565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca3660046115c2565b611335565b6102e26102dd366004611a34565b611364565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d366004611a17565b60006020819052908152604090205481565b34801561032b57600080fd5b5061011761033a366004611786565b6113a1565b34801561034b57600080fd5b5061011761035a366004611a70565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611aa9565b6113ef565b6100f561039e366004611ac2565b61145b565b60008060008060003660003660003660006103be8d8d61123a565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d63565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611add565b61043791611b07565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611b3c565b61057f928290611add565b61058891611b4f565b60601c845260003661059b603482611b3c565b906105a7601436611b3c565b926105b493929190611add565b6105bd91611b07565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611b82565b9261065c93929190611add565b61066591611b4f565b60601c036106f85760008484886060015160146106829190611b82565b90896060015160346106949190611b82565b926106a193929190611add565b6106aa91611b07565b60001c90508484886060015160346106c29190611b82565b6106cd928290611add565b90935091506106dd816034611b82565b876060018181516106ee9190611b82565b90525061070e9050565b606086015161070990808587611add565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611b95565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611be0565b90506107b488826114bb565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611add565b6040518663ffffffff1660e01b815260040161083e959493929190611bf9565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611be0565b905061088b86826114bb565b955050505050505b9392505050565b6000336108aa6020860186611a17565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611c32565b61092491602091600091611add565b61092d91611b07565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099c575060008181526001602090815260408083203384528252808320546003909252909120546001600160801b03918216600160801b909104909116115b156109ab576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf05760a082901c60011615610a815760008481526002602090815260408083209483529381528382203383529052919091205490610a3b565b366000610a8f836034611b82565b610a9d6101408c018c611c32565b905010158015610ae857506001600160a01b038416610ac06101408c018c611c32565b8590610acd826014611b82565b92610ada93929190611add565b610ae391611b4f565b60601c145b15610c12576000610afd6101408c018c611c32565b610b08866014611b82565b90610b14876034611b82565b92610b2193929190611add565b610b2a91611b07565b905080610b38856034611b82565b610b429190611b82565b610b506101408d018d611c32565b90501015610bb35760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc16101408c018c611c32565b610bcc866034611b82565b9083610bd9886034611b82565b610be39190611b82565b92610bf093929190611add565b9093509150610c00816034611b82565b610c0a9085611b82565b935050610c32565b610c206101408b018b611c32565b610c2d9185918291611add565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c71959493929190611c79565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611be0565b9050610cc088826114bb565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3b92505050565b60408301516000906001600160a01b0316638e0125d233878b610d176101408f018f611c32565b610d249189908290611add565b6040518663ffffffff1660e01b8152600401610d44959493929190611bf9565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dba5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b33600090815260036020526040812080546001600160801b031691610dde83611dbc565b91906101000a8154816001600160801b0302191690836001600160801b031602179055506001600160801b03168b6001600160801b031614610e595760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e6e8c8c8c8c8c8c8c8c8c8c8c6113a1565b9050600160a01b6001600160a01b03198c1601610e98573360009081526020819052604090208190555b60005b86811015610f6257610ecb888883818110610eb857610eb8611de2565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eec57610eec611de2565b9050602002810190610efe9190611c32565b6040518563ffffffff1660e01b8152600401610f1d9493929190611df8565b600060405180830381600087803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b505050508080610f5a90611e2a565b915050610e9b565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f9590339085908a908a90600401611df8565b600060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b50505050600087876000818110610fdc57610fdc611de2565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111f15788888281811061117e5761117e611de2565b905060200201356002600085815260200190815260200160002060008b8b6001866111a99190611b3c565b8181106111b8576111b8611de2565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111e981611e2a565b915050611164565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261125f93929190611add565b61126891611e43565b60801c9a508c8c601090601c9261128193929190611add565b61128a91611e7a565b99508c8c601c906022926112a093929190611add565b6112a991611ea8565b60d01c97508c8c6022906028926112c293929190611add565b6112cb91611ea8565b60d01c96508c8c602890603c926112e493929190611add565b6112ed91611b4f565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b602081900361134f5761134b61038b8284611b07565b5050565b61134b61135c8284611e43565b60801c61145b565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008b8b8b8b8b8b8b8b8b8b8b6040516020016113c89b9a99989796959493929190611980565b6040516020818303038152906040528051906020012090509b9a5050505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec9101611450565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114ef5760019250611571565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816115345765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611552575065ffffffffffff60a01b5b80821890821102188061156b575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261158b57600080fd5b50813567ffffffffffffffff8111156115a357600080fd5b6020830191508360208285010111156115bb57600080fd5b9250929050565b600080602083850312156115d557600080fd5b823567ffffffffffffffff8111156115ec57600080fd5b6115f885828601611579565b90969095509350505050565b60008060006040848603121561161957600080fd5b83359250602084013567ffffffffffffffff81111561163757600080fd5b61164386828701611579565b9497909650939450505050565b60008060006060848603121561166557600080fd5b833567ffffffffffffffff81111561167c57600080fd5b8401610160818703121561168f57600080fd5b95602085013595506040909401359392505050565b6001600160a01b03811681146116b957600080fd5b50565b80356116c7816116a4565b919050565b600080604083850312156116df57600080fd5b8235915060208301356116f1816116a4565b809150509250929050565b80356001600160801b03811681146116c757600080fd5b80356001600160a01b0319811681146116c757600080fd5b803565ffffffffffff811681146116c757600080fd5b60008083601f84011261175357600080fd5b50813567ffffffffffffffff81111561176b57600080fd5b6020830191508360208260051b85010111156115bb57600080fd5b60008060008060008060008060008060006101008c8e0312156117a857600080fd5b6117b18c6116fc565b9a506117bf60208d01611713565b99506117cd60408d016116bc565b98506117db60608d0161172b565b97506117e960808d0161172b565b965067ffffffffffffffff8060a08e0135111561180557600080fd5b6118158e60a08f01358f01611741565b909750955060c08d013581101561182b57600080fd5b61183b8e60c08f01358f01611579565b909550935060e08d013581101561185157600080fd5b506118628d60e08e01358e01611741565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b858110156118a65781358752958201959082019060010161188a565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118f157600080fd5b830160208101925035905067ffffffffffffffff81111561191157600080fd5b8036038213156115bb57600080fd5b60008383855260208086019550808560051b8301018460005b8781101561197357848303601f1901895261195482886118da565b61195f8582846118b1565b9a86019a9450505090830190600101611939565b5090979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a082018190526000906119db838201898b61187a565b905082810360c08401526119f08187896118b1565b905082810360e0840152611a05818587611920565b9e9d5050505050505050505050505050565b600060208284031215611a2957600080fd5b8135610893816116a4565b600080600060408486031215611a4957600080fd5b8335611a54816116a4565b9250602084013567ffffffffffffffff81111561163757600080fd5b600080600060608486031215611a8557600080fd5b83359250602084013591506040840135611a9e816116a4565b809150509250925092565b600060208284031215611abb57600080fd5b5035919050565b600060208284031215611ad457600080fd5b610893826116fc565b60008085851115611aed57600080fd5b83861115611afa57600080fd5b5050820193919092039150565b80356020831015611b2057600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611b2057611b20611b26565b6bffffffffffffffffffffffff1981358181169160148510156115715760149490940360031b84901b1690921692915050565b80820180821115611b2057611b20611b26565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611bd360c0830184866118b1565b9998505050505050505050565b600060208284031215611bf257600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611c276080830184866118b1565b979650505050505050565b6000808335601e19843603018112611c4957600080fd5b83018035915067ffffffffffffffff821115611c6457600080fd5b6020019150368190038213156115bb57600080fd5b6001600160a01b038616815260208101859052608060408201819052611cb1908201611ca4866116bc565b6001600160a01b03169052565b602084013560a08201526000611cca60408601866118da565b6101608060c0860152611ce26101e0860183856118b1565b9250611cf160608901896118da565b9250607f19808786030160e0880152611d0b8585846118b1565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611d54838c018c6118da565b9550935081888703016101a0890152611d6e8686866118b1565b9550611d7c818c018c6118da565b955093505080878603016101c08801525050611d998383836118b1565b925050508281036060840152611db08185876118b1565b98975050505050505050565b60006001600160801b03808316818103611dd857611dd8611b26565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611e206060830184866118b1565b9695505050505050565b600060018201611e3c57611e3c611b26565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156115715760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561157157600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156115715760069490940360031b84901b169092169291505056", + "nonce": "0x1d2" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x9c18252cd4aefca54f68714e67f3b848ba9ba75a4edd2571524844192e146951", + "transactionIndex": "0x2c", + "blockHash": "0x34dcc4dbe5b09f39c365780863972b4df38b515c0dd7151bd5fc13eee0c051f8", + "blockNumber": "0x2b96880", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0xdcd222", + "gasUsed": "0x1ae041", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000c275dc8be39f50d12f66b6a63629c39da5bae5bd" + ], + "data": "0x000000000000000000000000000000000000000000000000000962e6a293ef00000000000000000000000000000000000000000000000000032eb06bd0ace6b200000000000000000000000000000000000000000000142c191f474a6dbe64a000000000000000000000000000000000000000000000000003254d852e18f7b200000000000000000000000000000000000000000000142c1928aa31105253a0", + "blockHash": "0x34dcc4dbe5b09f39c365780863972b4df38b515c0dd7151bd5fc13eee0c051f8", + "blockNumber": "0x2b96880", + "transactionHash": "0x9c18252cd4aefca54f68714e67f3b848ba9ba75a4edd2571524844192e146951", + "transactionIndex": "0x2c", + "logIndex": "0xa3", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000002000000000000000000000000000000000000000000000000000800000000000000000040100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000040000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x59682f0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1707430395, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707439892.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707439892.json new file mode 100644 index 00000000..ad20254e --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707439892.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0xac55704b236879e66bd05cb7d6a3f5d0c29fecbe0b33abecf3d353e6a27f80bd", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x965Bea0f8b65aABD1F5148F64654BbAAfB9d2Efa", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x28ffa2", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50612037806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063b66bd1d211610059578063b66bd1d214610312578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b52e2c7a146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f03660046115be565b6103a3565b005b34801561010357600080fd5b50610117610112366004611600565b6103f6565b6040519081526020015b60405180910390f35b61011761013836600461164c565b61089a565b34801561014957600080fd5b506101bb6101583660046116c8565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f366004611782565b610d63565b34801561023057600080fd5b5061024461023f3660046115be565b611239565b6040516101219b9a9998979695949392919061197c565b34801561026757600080fd5b5061029c610276366004611a13565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca3660046115be565b611334565b6102e26102dd366004611a30565b611363565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d366004611a6c565b6113a0565b34801561031e57600080fd5b5061011761032d366004611a13565b60006020819052908152604090205481565b34801561034b57600080fd5b5061011761035a366004611b4d565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611b86565b6113eb565b6100f561039e366004611b9f565b611457565b60008060008060003660003660003660006103be8d8d611239565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d63565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611bba565b61043791611be4565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611c19565b61057f928290611bba565b61058891611c2c565b60601c845260003661059b603482611c19565b906105a7601436611c19565b926105b493929190611bba565b6105bd91611be4565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611c5f565b9261065c93929190611bba565b61066591611c2c565b60601c036106f85760008484886060015160146106829190611c5f565b90896060015160346106949190611c5f565b926106a193929190611bba565b6106aa91611be4565b60001c90508484886060015160346106c29190611c5f565b6106cd928290611bba565b90935091506106dd816034611c5f565b876060018181516106ee9190611c5f565b90525061070e9050565b606086015161070990808587611bba565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611c72565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611cbd565b90506107b488826114b7565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611bba565b6040518663ffffffff1660e01b815260040161083e959493929190611cd6565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611cbd565b905061088b86826114b7565b955050505050505b9392505050565b6000336108aa6020860186611a13565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611d0f565b61092491602091600091611bba565b61092d91611be4565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099c575060008181526001602090815260408083203384528252808320546003909252909120546001600160801b03918216600160801b909104909116115b156109ab576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf05760a082901c60011615610a815760008481526002602090815260408083209483529381528382203383529052919091205490610a3b565b366000610a8f836034611c5f565b610a9d6101408c018c611d0f565b905010158015610ae857506001600160a01b038416610ac06101408c018c611d0f565b8590610acd826014611c5f565b92610ada93929190611bba565b610ae391611c2c565b60601c145b15610c12576000610afd6101408c018c611d0f565b610b08866014611c5f565b90610b14876034611c5f565b92610b2193929190611bba565b610b2a91611be4565b905080610b38856034611c5f565b610b429190611c5f565b610b506101408d018d611d0f565b90501015610bb35760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc16101408c018c611d0f565b610bcc866034611c5f565b9083610bd9886034611c5f565b610be39190611c5f565b92610bf093929190611bba565b9093509150610c00816034611c5f565b610c0a9085611c5f565b935050610c32565b610c206101408b018b611d0f565b610c2d9185918291611bba565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c71959493929190611d56565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611cbd565b9050610cc088826114b7565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3b92505050565b60408301516000906001600160a01b0316638e0125d233878b610d176101408f018f611d0f565b610d249189908290611bba565b6040518663ffffffff1660e01b8152600401610d44959493929190611cd6565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dba5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b33600090815260036020526040812080546001600160801b031691610dde83611e99565b91906101000a8154816001600160801b0302191690836001600160801b031602179055506001600160801b03168b6001600160801b031614610e595760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e6d8b8b8b8b8b8b8b8b8b8b6113a0565b9050600160a01b6001600160a01b03198c1601610e97573360009081526020819052604090208190555b60005b86811015610f6157610eca888883818110610eb757610eb7611ebf565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eeb57610eeb611ebf565b9050602002810190610efd9190611d0f565b6040518563ffffffff1660e01b8152600401610f1c9493929190611ed5565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b505050508080610f5990611f07565b915050610e9a565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f9490339085908a908a90600401611ed5565b600060405180830381600087803b158015610fae57600080fd5b505af1158015610fc2573d6000803e3d6000fd5b50505050600087876000818110610fdb57610fdb611ebf565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111f05788888281811061117d5761117d611ebf565b905060200201356002600085815260200190815260200160002060008b8b6001866111a89190611c19565b8181106111b7576111b7611ebf565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111e881611f07565b915050611163565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261125e93929190611bba565b61126791611f20565b60801c9a508c8c601090601c9261128093929190611bba565b61128991611f57565b99508c8c601c9060229261129f93929190611bba565b6112a891611f85565b60d01c97508c8c6022906028926112c193929190611bba565b6112ca91611f85565b60d01c96508c8c602890603c926112e393929190611bba565b6112ec91611c2c565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b602081900361134e5761134a61038b8284611be4565b5050565b61134a61135b8284611f20565b60801c611457565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008a8a8a8a8a8a8a8a8a8a6040516020016113c59a99989796959493929190611fb3565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec910161144c565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114eb576001925061156d565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816115305765ffffffffffff60a01b91505b5065ffffffffffff60a01b85168061154e575065ffffffffffff60a01b5b808218908211021880611567575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261158757600080fd5b50813567ffffffffffffffff81111561159f57600080fd5b6020830191508360208285010111156115b757600080fd5b9250929050565b600080602083850312156115d157600080fd5b823567ffffffffffffffff8111156115e857600080fd5b6115f485828601611575565b90969095509350505050565b60008060006040848603121561161557600080fd5b83359250602084013567ffffffffffffffff81111561163357600080fd5b61163f86828701611575565b9497909650939450505050565b60008060006060848603121561166157600080fd5b833567ffffffffffffffff81111561167857600080fd5b8401610160818703121561168b57600080fd5b95602085013595506040909401359392505050565b6001600160a01b03811681146116b557600080fd5b50565b80356116c3816116a0565b919050565b600080604083850312156116db57600080fd5b8235915060208301356116ed816116a0565b809150509250929050565b80356001600160801b03811681146116c357600080fd5b80356001600160a01b0319811681146116c357600080fd5b803565ffffffffffff811681146116c357600080fd5b60008083601f84011261174f57600080fd5b50813567ffffffffffffffff81111561176757600080fd5b6020830191508360208260051b85010111156115b757600080fd5b60008060008060008060008060008060006101008c8e0312156117a457600080fd5b6117ad8c6116f8565b9a506117bb60208d0161170f565b99506117c960408d016116b8565b98506117d760608d01611727565b97506117e560808d01611727565b965067ffffffffffffffff8060a08e0135111561180157600080fd5b6118118e60a08f01358f0161173d565b909750955060c08d013581101561182757600080fd5b6118378e60c08f01358f01611575565b909550935060e08d013581101561184d57600080fd5b5061185e8d60e08e01358e0161173d565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b858110156118a257813587529582019590820190600101611886565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118ed57600080fd5b830160208101925035905067ffffffffffffffff81111561190d57600080fd5b8036038213156115b757600080fd5b60008383855260208086019550808560051b8301018460005b8781101561196f57848303601f1901895261195082886118d6565b61195b8582846118ad565b9a86019a9450505090830190600101611935565b5090979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a082018190526000906119d7838201898b611876565b905082810360c08401526119ec8187896118ad565b905082810360e0840152611a0181858761191c565b9e9d5050505050505050505050505050565b600060208284031215611a2557600080fd5b8135610893816116a0565b600080600060408486031215611a4557600080fd5b8335611a50816116a0565b9250602084013567ffffffffffffffff81111561163357600080fd5b60008060008060008060008060008060e08b8d031215611a8b57600080fd5b611a948b61170f565b995060208b0135611aa4816116a0565b9850611ab260408c01611727565b9750611ac060608c01611727565b965060808b013567ffffffffffffffff80821115611add57600080fd5b611ae98e838f0161173d565b909850965060a08d0135915080821115611b0257600080fd5b611b0e8e838f01611575565b909650945060c08d0135915080821115611b2757600080fd5b50611b348d828e0161173d565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215611b6257600080fd5b83359250602084013591506040840135611b7b816116a0565b809150509250925092565b600060208284031215611b9857600080fd5b5035919050565b600060208284031215611bb157600080fd5b610893826116f8565b60008085851115611bca57600080fd5b83861115611bd757600080fd5b5050820193919092039150565b80356020831015611bfd57600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611bfd57611bfd611c03565b6bffffffffffffffffffffffff19813581811691601485101561156d5760149490940360031b84901b1690921692915050565b80820180821115611bfd57611bfd611c03565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611cb060c0830184866118ad565b9998505050505050505050565b600060208284031215611ccf57600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611d046080830184866118ad565b979650505050505050565b6000808335601e19843603018112611d2657600080fd5b83018035915067ffffffffffffffff821115611d4157600080fd5b6020019150368190038213156115b757600080fd5b6001600160a01b038616815260208101859052608060408201819052611d8e908201611d81866116b8565b6001600160a01b03169052565b602084013560a08201526000611da760408601866118d6565b6101608060c0860152611dbf6101e0860183856118ad565b9250611dce60608901896118d6565b9250607f19808786030160e0880152611de88585846118ad565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611e31838c018c6118d6565b9550935081888703016101a0890152611e4b8686866118ad565b9550611e59818c018c6118d6565b955093505080878603016101c08801525050611e768383836118ad565b925050508281036060840152611e8d8185876118ad565b98975050505050505050565b60006001600160801b03808316818103611eb557611eb5611c03565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611efd6060830184866118ad565b9695505050505050565b600060018201611f1957611f19611c03565b5060010190565b6fffffffffffffffffffffffffffffffff19813581811691601085101561156d5760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561156d57600c9490940360031b84901b1690921692915050565b6001600160d01b0319813581811691600685101561156d5760069490940360031b84901b1690921692915050565b6001600160a01b03198b1681526001600160a01b038a16602082015265ffffffffffff89811660408301528816606082015260e060808201819052600090611ffe908301888a611876565b82810360a08401526120118187896118ad565b905082810360c084015261202681858761191c565b9d9c5050505050505050505050505056", + "nonce": "0x1d3" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xac55704b236879e66bd05cb7d6a3f5d0c29fecbe0b33abecf3d353e6a27f80bd" + ], + "returns": {}, + "timestamp": 1707439892, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707439906.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707439906.json new file mode 100644 index 00000000..b2e434f5 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707439906.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0xac55704b236879e66bd05cb7d6a3f5d0c29fecbe0b33abecf3d353e6a27f80bd", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0x965Bea0f8b65aABD1F5148F64654BbAAfB9d2Efa", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x28ffa2", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50612037806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063b66bd1d211610059578063b66bd1d214610312578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b52e2c7a146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f03660046115be565b6103a3565b005b34801561010357600080fd5b50610117610112366004611600565b6103f6565b6040519081526020015b60405180910390f35b61011761013836600461164c565b61089a565b34801561014957600080fd5b506101bb6101583660046116c8565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f366004611782565b610d63565b34801561023057600080fd5b5061024461023f3660046115be565b611239565b6040516101219b9a9998979695949392919061197c565b34801561026757600080fd5b5061029c610276366004611a13565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca3660046115be565b611334565b6102e26102dd366004611a30565b611363565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d366004611a6c565b6113a0565b34801561031e57600080fd5b5061011761032d366004611a13565b60006020819052908152604090205481565b34801561034b57600080fd5b5061011761035a366004611b4d565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611b86565b6113eb565b6100f561039e366004611b9f565b611457565b60008060008060003660003660003660006103be8d8d611239565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d63565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611bba565b61043791611be4565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611c19565b61057f928290611bba565b61058891611c2c565b60601c845260003661059b603482611c19565b906105a7601436611c19565b926105b493929190611bba565b6105bd91611be4565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611c5f565b9261065c93929190611bba565b61066591611c2c565b60601c036106f85760008484886060015160146106829190611c5f565b90896060015160346106949190611c5f565b926106a193929190611bba565b6106aa91611be4565b60001c90508484886060015160346106c29190611c5f565b6106cd928290611bba565b90935091506106dd816034611c5f565b876060018181516106ee9190611c5f565b90525061070e9050565b606086015161070990808587611bba565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611c72565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611cbd565b90506107b488826114b7565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611bba565b6040518663ffffffff1660e01b815260040161083e959493929190611cd6565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611cbd565b905061088b86826114b7565b955050505050505b9392505050565b6000336108aa6020860186611a13565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611d0f565b61092491602091600091611bba565b61092d91611be4565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099c575060008181526001602090815260408083203384528252808320546003909252909120546001600160801b03918216600160801b909104909116115b156109ab576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf05760a082901c60011615610a815760008481526002602090815260408083209483529381528382203383529052919091205490610a3b565b366000610a8f836034611c5f565b610a9d6101408c018c611d0f565b905010158015610ae857506001600160a01b038416610ac06101408c018c611d0f565b8590610acd826014611c5f565b92610ada93929190611bba565b610ae391611c2c565b60601c145b15610c12576000610afd6101408c018c611d0f565b610b08866014611c5f565b90610b14876034611c5f565b92610b2193929190611bba565b610b2a91611be4565b905080610b38856034611c5f565b610b429190611c5f565b610b506101408d018d611d0f565b90501015610bb35760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc16101408c018c611d0f565b610bcc866034611c5f565b9083610bd9886034611c5f565b610be39190611c5f565b92610bf093929190611bba565b9093509150610c00816034611c5f565b610c0a9085611c5f565b935050610c32565b610c206101408b018b611d0f565b610c2d9185918291611bba565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c71959493929190611d56565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611cbd565b9050610cc088826114b7565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3b92505050565b60408301516000906001600160a01b0316638e0125d233878b610d176101408f018f611d0f565b610d249189908290611bba565b6040518663ffffffff1660e01b8152600401610d44959493929190611cd6565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dba5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b33600090815260036020526040812080546001600160801b031691610dde83611e99565b91906101000a8154816001600160801b0302191690836001600160801b031602179055506001600160801b03168b6001600160801b031614610e595760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b6000610e6d8b8b8b8b8b8b8b8b8b8b6113a0565b9050600160a01b6001600160a01b03198c1601610e97573360009081526020819052604090208190555b60005b86811015610f6157610eca888883818110610eb757610eb7611ebf565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03384878786818110610eeb57610eeb611ebf565b9050602002810190610efd9190611d0f565b6040518563ffffffff1660e01b8152600401610f1c9493929190611ed5565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b505050508080610f5990611f07565b915050610e9a565b5060405163e9b51de560e01b81526001600160a01b038b169063e9b51de590610f9490339085908a908a90600401611ed5565b600060405180830381600087803b158015610fae57600080fd5b505af1158015610fc2573d6000803e3d6000fd5b50505050600087876000818110610fdb57610fdb611ebf565b9050602002013590506040518060c001604052808e6001600160801b031681526020018d6001600160a01b03191681526020018c6001600160a01b031681526020018281526020018b65ffffffffffff1681526020018a65ffffffffffff16815250600160008481526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b878110156111f05788888281811061117d5761117d611ebf565b905060200201356002600085815260200190815260200160002060008b8b6001866111a89190611c19565b8181106111b7576111b7611ebf565b602090810292909201358352508181019290925260409081016000908120338252909252902055806111e881611f07565b915050611163565b5060408051338152602081018490527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a150505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261125e93929190611bba565b61126791611f20565b60801c9a508c8c601090601c9261128093929190611bba565b61128991611f57565b99508c8c601c9060229261129f93929190611bba565b6112a891611f85565b60d01c97508c8c6022906028926112c193929190611bba565b6112ca91611f85565b60d01c96508c8c602890603c926112e393929190611bba565b6112ec91611c2c565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b602081900361134e5761134a61038b8284611be4565b5050565b61134a61135b8284611f20565b60801c611457565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008a8a8a8a8a8a8a8a8a8a6040516020016113c59a99989796959493929190611fb3565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec910161144c565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146114eb576001925061156d565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816115305765ffffffffffff60a01b91505b5065ffffffffffff60a01b85168061154e575065ffffffffffff60a01b5b808218908211021880611567575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261158757600080fd5b50813567ffffffffffffffff81111561159f57600080fd5b6020830191508360208285010111156115b757600080fd5b9250929050565b600080602083850312156115d157600080fd5b823567ffffffffffffffff8111156115e857600080fd5b6115f485828601611575565b90969095509350505050565b60008060006040848603121561161557600080fd5b83359250602084013567ffffffffffffffff81111561163357600080fd5b61163f86828701611575565b9497909650939450505050565b60008060006060848603121561166157600080fd5b833567ffffffffffffffff81111561167857600080fd5b8401610160818703121561168b57600080fd5b95602085013595506040909401359392505050565b6001600160a01b03811681146116b557600080fd5b50565b80356116c3816116a0565b919050565b600080604083850312156116db57600080fd5b8235915060208301356116ed816116a0565b809150509250929050565b80356001600160801b03811681146116c357600080fd5b80356001600160a01b0319811681146116c357600080fd5b803565ffffffffffff811681146116c357600080fd5b60008083601f84011261174f57600080fd5b50813567ffffffffffffffff81111561176757600080fd5b6020830191508360208260051b85010111156115b757600080fd5b60008060008060008060008060008060006101008c8e0312156117a457600080fd5b6117ad8c6116f8565b9a506117bb60208d0161170f565b99506117c960408d016116b8565b98506117d760608d01611727565b97506117e560808d01611727565b965067ffffffffffffffff8060a08e0135111561180157600080fd5b6118118e60a08f01358f0161173d565b909750955060c08d013581101561182757600080fd5b6118378e60c08f01358f01611575565b909550935060e08d013581101561184d57600080fd5b5061185e8d60e08e01358e0161173d565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b858110156118a257813587529582019590820190600101611886565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126118ed57600080fd5b830160208101925035905067ffffffffffffffff81111561190d57600080fd5b8036038213156115b757600080fd5b60008383855260208086019550808560051b8301018460005b8781101561196f57848303601f1901895261195082886118d6565b61195b8582846118ad565b9a86019a9450505090830190600101611935565b5090979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a082018190526000906119d7838201898b611876565b905082810360c08401526119ec8187896118ad565b905082810360e0840152611a0181858761191c565b9e9d5050505050505050505050505050565b600060208284031215611a2557600080fd5b8135610893816116a0565b600080600060408486031215611a4557600080fd5b8335611a50816116a0565b9250602084013567ffffffffffffffff81111561163357600080fd5b60008060008060008060008060008060e08b8d031215611a8b57600080fd5b611a948b61170f565b995060208b0135611aa4816116a0565b9850611ab260408c01611727565b9750611ac060608c01611727565b965060808b013567ffffffffffffffff80821115611add57600080fd5b611ae98e838f0161173d565b909850965060a08d0135915080821115611b0257600080fd5b611b0e8e838f01611575565b909650945060c08d0135915080821115611b2757600080fd5b50611b348d828e0161173d565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215611b6257600080fd5b83359250602084013591506040840135611b7b816116a0565b809150509250925092565b600060208284031215611b9857600080fd5b5035919050565b600060208284031215611bb157600080fd5b610893826116f8565b60008085851115611bca57600080fd5b83861115611bd757600080fd5b5050820193919092039150565b80356020831015611bfd57600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611bfd57611bfd611c03565b6bffffffffffffffffffffffff19813581811691601485101561156d5760149490940360031b84901b1690921692915050565b80820180821115611bfd57611bfd611c03565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611cb060c0830184866118ad565b9998505050505050505050565b600060208284031215611ccf57600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611d046080830184866118ad565b979650505050505050565b6000808335601e19843603018112611d2657600080fd5b83018035915067ffffffffffffffff821115611d4157600080fd5b6020019150368190038213156115b757600080fd5b6001600160a01b038616815260208101859052608060408201819052611d8e908201611d81866116b8565b6001600160a01b03169052565b602084013560a08201526000611da760408601866118d6565b6101608060c0860152611dbf6101e0860183856118ad565b9250611dce60608901896118d6565b9250607f19808786030160e0880152611de88585846118ad565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611e31838c018c6118d6565b9550935081888703016101a0890152611e4b8686866118ad565b9550611e59818c018c6118d6565b955093505080878603016101c08801525050611e768383836118ad565b925050508281036060840152611e8d8185876118ad565b98975050505050505050565b60006001600160801b03808316818103611eb557611eb5611c03565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000611efd6060830184866118ad565b9695505050505050565b600060018201611f1957611f19611c03565b5060010190565b6fffffffffffffffffffffffffffffffff19813581811691601085101561156d5760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561156d57600c9490940360031b84901b1690921692915050565b6001600160d01b0319813581811691600685101561156d5760069490940360031b84901b1690921692915050565b6001600160a01b03198b1681526001600160a01b038a16602082015265ffffffffffff89811660408301528816606082015260e060808201819052600090611ffe908301888a611876565b82810360a08401526120118187896118ad565b905082810360c084015261202681858761191c565b9d9c5050505050505050505050505056", + "nonce": "0x1d3" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xac55704b236879e66bd05cb7d6a3f5d0c29fecbe0b33abecf3d353e6a27f80bd", + "transactionIndex": "0x2", + "blockHash": "0xd71ebcaea257f41ffeffc4fae5f415c93e2dbe517fabc5570dcc82ffc5582e3c", + "blockNumber": "0x2b97895", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1df13d", + "gasUsed": "0x1c0a87", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x00000000000000000000000022b64229c41429a023549fdab3385893b579327a" + ], + "data": "0x00000000000000000000000000000000000000000000000000126dcebd16268200000000000000000000000000000000000000000000000003254d852c85d3e3000000000000000000000000000000000000000000000060f7789dc7f78a88900000000000000000000000000000000000000000000000000312dfb66f6fad61000000000000000000000000000000000000000000000060f78b0b96b4a0af12", + "blockHash": "0xd71ebcaea257f41ffeffc4fae5f415c93e2dbe517fabc5570dcc82ffc5582e3c", + "blockNumber": "0x2b97895", + "transactionHash": "0xac55704b236879e66bd05cb7d6a3f5d0c29fecbe0b33abecf3d353e6a27f80bd", + "transactionIndex": "0x2", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000200000000000000000000000000000000000000000010000000000200000000000000000000000000000000000000000000000000000002000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0xa83efbfe" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1707439906, + "chain": 80001, + "multi": false, + "commit": "60e1432" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707741950.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707741950.json new file mode 100644 index 00000000..81917f1a --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707741950.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0x7d2de72251685ec4f433d6479f844c3c688ae894be1a06def804adfb55afc9c6", + "transactionType": "CREATE2", + "contractName": "MerklePolicy", + "contractAddress": "0xb808D75B5ACf6B5513eb816d3980C733ae6Be468", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x146081", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061107f806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae014610043578063c92ce35114610058578063ecfcd9301461007d578063f2a108001461009d575b600080fd5b6100566100513660046109f7565b6100da565b005b61006b610066366004610a51565b61012a565b60405190815260200160405180910390f35b34801561008957600080fd5b5061006b610098366004610adf565b6102ad565b3480156100a957600080fd5b5061006b6100b8366004610b61565b6000602081815293815260408082208552928152828120909352825290205481565b60006100e96020828486610b9d565b6100f291610bc7565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942092909255505050565b6000368161013b6060870187610be6565b336000908152602081815260408083208c845282528083206001600160a01b038e1684529091528120549294509092506101786004828587610b9d565b61018191610c2d565b90506001600160e01b03198116635194544760e01b14806101b257506001600160e01b0319811663b68df16d60e01b145b1561021257863587016020808901358901908101903560006101d88689898787876102bb565b9050801561020157604051633b755d2d60e21b8152600160048201526024015b60405180910390fd5b6000985050505050505050506102a4565b636581952160e11b6001600160e01b031982160161028857863587016020818101913590898101358a0190810190356000610252878a8a888888886104ed565b9050801561027657604051633b755d2d60e21b8152600160048201526024016101f8565b600099505050505050505050506102a4565b604051633b755d2d60e21b8152600060048201526024016101f8565b95945050505050565b60005b979650505050505050565b600080635194544760e01b6102d3600483898b610b9d565b6102dc91610c2d565b6001600160e01b03191614905060006102f86020870187610c5d565b6001600160a01b0316148061033a57506103156020860186610c5d565b6001600160a01b031661032c60246010898b610b9d565b61033591610c78565b60601c145b6103565760405162461bcd60e51b81526004016101f890610cab565b801561039b57604085013561036f60446024898b610b9d565b61037891610bc7565b11156103965760405162461bcd60e51b81526004016101f890610cef565b61041b565b60016103ad60a0870160808801610d5d565b60018111156103be576103be610d38565b1461041b5760405162461bcd60e51b815260206004820152602760248201527f53657373696f6e4b657956616c696461746f723a206f7065726174696f6e206d6044820152660d2e6dac2e8c6d60cb1b60648201526084016101f8565b366000808361042b57602461042e565b60445b808b01358b01602481019450600401359250905061044d83838a6106c7565b6104695760405162461bcd60e51b81526004016101f890610d78565b6104cd878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040518f92506104b291508c90602001610e68565b60405160208183030381529060405280519060200120610950565b6104de5760019450505050506104e3565b505050505b9695505050505050565b6000600487810135880160248101910135825b818110156106b9573683838381811061051b5761051b610f28565b905060200281019061052d9190610f3e565b90503689898481811061054257610542610f28565b90506020028101906105549190610f5e565b905060006105656020830183610c5d565b6001600160a01b031614806105a357506105826020820182610c5d565b6001600160a01b03166105986020840184610c5d565b6001600160a01b0316145b6105bf5760405162461bcd60e51b81526004016101f890610cab565b6040810135602083013511156105e75760405162461bcd60e51b81526004016101f890610cef565b6105fd6105f76040840184610be6565b836106c7565b6106195760405162461bcd60e51b81526004016101f890610d78565b61069288888581811061062e5761062e610f28565b90506020028101906106409190610f74565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508e836040516020016104b29190610e68565b6106a4576001955050505050506102b0565b505080806106b190610fd4565b915050610500565b505050979650505050505050565b60006106d96040830160208401610fed565b6001600160e01b0319166106f1600460008688610b9d565b6106fa91610c2d565b6001600160e01b0319161461071157506000610949565b60005b6107216060840184611008565b905081101561094357366107386060850185611008565b8381811061074857610748610f28565b60600291909101915060009050868661076384356004611051565b9061077085356004611051565b61077b906020611051565b9261078893929190610b9d565b61079191610bc7565b905060006107a56040840160208501611064565b60058111156107b6576107b6610d38565b1480156107c7575081604001358114155b156107d85760009350505050610949565b60016107ea6040840160208501611064565b60058111156107fb576107fb610d38565b14801561080c575081604001358111155b1561081d5760009350505050610949565b600261082f6040840160208501611064565b600581111561084057610840610d38565b148015610851575081604001358110155b156108625760009350505050610949565b60036108746040840160208501611064565b600581111561088557610885610d38565b1480156108955750816040013581105b156108a65760009350505050610949565b60046108b86040840160208501611064565b60058111156108c9576108c9610d38565b1480156108d95750816040013581115b156108ea5760009350505050610949565b60056108fc6040840160208501611064565b600581111561090d5761090d610d38565b14801561091d5750816040013581145b1561092e5760009350505050610949565b5050808061093b90610fd4565b915050610714565b50600190505b9392505050565b600083511561098b5760208401845160051b81015b8151841160051b9384528151602094851852604060002093909101908082106109655750505b5014919050565b80356001600160a01b03811681146109a957600080fd5b919050565b60008083601f8401126109c057600080fd5b50813567ffffffffffffffff8111156109d857600080fd5b6020830191508360208285010111156109f057600080fd5b9250929050565b60008060008060608587031215610a0d57600080fd5b610a1685610992565b935060208501359250604085013567ffffffffffffffff811115610a3957600080fd5b610a45878288016109ae565b95989497509550505050565b600080600080600060808688031215610a6957600080fd5b610a7286610992565b945060208601359350604086013567ffffffffffffffff80821115610a9657600080fd5b90870190610160828a031215610aab57600080fd5b90935060608701359080821115610ac157600080fd5b50610ace888289016109ae565b969995985093965092949392505050565b600080600080600080600060c0888a031215610afa57600080fd5b610b0388610992565b9650610b1160208901610992565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115610b4257600080fd5b610b4e8a828b016109ae565b989b979a50959850939692959293505050565b600080600060608486031215610b7657600080fd5b610b7f84610992565b925060208401359150610b9460408501610992565b90509250925092565b60008085851115610bad57600080fd5b83861115610bba57600080fd5b5050820193919092039150565b80356020831015610be057600019602084900360031b1b165b92915050565b6000808335601e19843603018112610bfd57600080fd5b83018035915067ffffffffffffffff821115610c1857600080fd5b6020019150368190038213156109f057600080fd5b6001600160e01b03198135818116916004851015610c555780818660040360031b1b83161692505b505092915050565b600060208284031215610c6f57600080fd5b61094982610992565b6bffffffffffffffffffffffff198135818116916014851015610c555760149490940360031b84901b1690921692915050565b60208082526024908201527f53657373696f6e4b657956616c696461746f723a20746172676574206d69736d6040820152630c2e8c6d60e31b606082015260800190565b60208082526029908201527f53657373696f6e4b657956616c696461746f723a2076616c7565206c696d697460408201526808195e18d95959195960ba1b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b8035600281106109a957600080fd5b600060208284031215610d6f57600080fd5b61094982610d4e565b60208082526033908201527f53657373696f6e4b657956616c696461746f723a207065726d697373696f6e206040820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b606082015260800190565b80356001600160e01b0319811681146109a957600080fd5b8035600681106109a957600080fd5b8183526000602080850194508260005b85811015610e495781358752610e19838301610de3565b60068110610e2957610e29610d38565b878401526040828101359088015260609687019690910190600101610e02565b509495945050505050565b60028110610e6457610e64610d38565b9052565b602081526001600160a01b03610e7d83610992565b16602082015263ffffffff60e01b610e9760208401610dcb565b1660408201526040820135606082015260006060830135601e19843603018112610ec057600080fd5b830160208101903567ffffffffffffffff811115610edd57600080fd5b606081023603821315610eef57600080fd5b60a06080850152610f0460c085018284610df2565b915050610f1360808501610d4e565b610f2060a0850182610e54565b509392505050565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112610f5457600080fd5b9190910192915050565b60008235609e19833603018112610f5457600080fd5b6000808335601e19843603018112610f8b57600080fd5b83018035915067ffffffffffffffff821115610fa657600080fd5b6020019150600581901b36038213156109f057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610fe657610fe6610fbe565b5060010190565b600060208284031215610fff57600080fd5b61094982610dcb565b6000808335601e1984360301811261101f57600080fd5b83018035915067ffffffffffffffff82111561103a57600080fd5b60200191506060810236038213156109f057600080fd5b80820180821115610be057610be0610fbe565b60006020828403121561107657600080fd5b61094982610de356", + "nonce": "0x1d4" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x7d2de72251685ec4f433d6479f844c3c688ae894be1a06def804adfb55afc9c6" + ], + "returns": {}, + "timestamp": 1707741950, + "chain": 80001, + "multi": false, + "commit": "1bc0841" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707741957.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707741957.json new file mode 100644 index 00000000..37e1304e --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707741957.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0x7d2de72251685ec4f433d6479f844c3c688ae894be1a06def804adfb55afc9c6", + "transactionType": "CREATE2", + "contractName": "MerklePolicy", + "contractAddress": "0xb808D75B5ACf6B5513eb816d3980C733ae6Be468", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x146081", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061107f806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae014610043578063c92ce35114610058578063ecfcd9301461007d578063f2a108001461009d575b600080fd5b6100566100513660046109f7565b6100da565b005b61006b610066366004610a51565b61012a565b60405190815260200160405180910390f35b34801561008957600080fd5b5061006b610098366004610adf565b6102ad565b3480156100a957600080fd5b5061006b6100b8366004610b61565b6000602081815293815260408082208552928152828120909352825290205481565b60006100e96020828486610b9d565b6100f291610bc7565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942092909255505050565b6000368161013b6060870187610be6565b336000908152602081815260408083208c845282528083206001600160a01b038e1684529091528120549294509092506101786004828587610b9d565b61018191610c2d565b90506001600160e01b03198116635194544760e01b14806101b257506001600160e01b0319811663b68df16d60e01b145b1561021257863587016020808901358901908101903560006101d88689898787876102bb565b9050801561020157604051633b755d2d60e21b8152600160048201526024015b60405180910390fd5b6000985050505050505050506102a4565b636581952160e11b6001600160e01b031982160161028857863587016020818101913590898101358a0190810190356000610252878a8a888888886104ed565b9050801561027657604051633b755d2d60e21b8152600160048201526024016101f8565b600099505050505050505050506102a4565b604051633b755d2d60e21b8152600060048201526024016101f8565b95945050505050565b60005b979650505050505050565b600080635194544760e01b6102d3600483898b610b9d565b6102dc91610c2d565b6001600160e01b03191614905060006102f86020870187610c5d565b6001600160a01b0316148061033a57506103156020860186610c5d565b6001600160a01b031661032c60246010898b610b9d565b61033591610c78565b60601c145b6103565760405162461bcd60e51b81526004016101f890610cab565b801561039b57604085013561036f60446024898b610b9d565b61037891610bc7565b11156103965760405162461bcd60e51b81526004016101f890610cef565b61041b565b60016103ad60a0870160808801610d5d565b60018111156103be576103be610d38565b1461041b5760405162461bcd60e51b815260206004820152602760248201527f53657373696f6e4b657956616c696461746f723a206f7065726174696f6e206d6044820152660d2e6dac2e8c6d60cb1b60648201526084016101f8565b366000808361042b57602461042e565b60445b808b01358b01602481019450600401359250905061044d83838a6106c7565b6104695760405162461bcd60e51b81526004016101f890610d78565b6104cd878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040518f92506104b291508c90602001610e68565b60405160208183030381529060405280519060200120610950565b6104de5760019450505050506104e3565b505050505b9695505050505050565b6000600487810135880160248101910135825b818110156106b9573683838381811061051b5761051b610f28565b905060200281019061052d9190610f3e565b90503689898481811061054257610542610f28565b90506020028101906105549190610f5e565b905060006105656020830183610c5d565b6001600160a01b031614806105a357506105826020820182610c5d565b6001600160a01b03166105986020840184610c5d565b6001600160a01b0316145b6105bf5760405162461bcd60e51b81526004016101f890610cab565b6040810135602083013511156105e75760405162461bcd60e51b81526004016101f890610cef565b6105fd6105f76040840184610be6565b836106c7565b6106195760405162461bcd60e51b81526004016101f890610d78565b61069288888581811061062e5761062e610f28565b90506020028101906106409190610f74565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508e836040516020016104b29190610e68565b6106a4576001955050505050506102b0565b505080806106b190610fd4565b915050610500565b505050979650505050505050565b60006106d96040830160208401610fed565b6001600160e01b0319166106f1600460008688610b9d565b6106fa91610c2d565b6001600160e01b0319161461071157506000610949565b60005b6107216060840184611008565b905081101561094357366107386060850185611008565b8381811061074857610748610f28565b60600291909101915060009050868661076384356004611051565b9061077085356004611051565b61077b906020611051565b9261078893929190610b9d565b61079191610bc7565b905060006107a56040840160208501611064565b60058111156107b6576107b6610d38565b1480156107c7575081604001358114155b156107d85760009350505050610949565b60016107ea6040840160208501611064565b60058111156107fb576107fb610d38565b14801561080c575081604001358111155b1561081d5760009350505050610949565b600261082f6040840160208501611064565b600581111561084057610840610d38565b148015610851575081604001358110155b156108625760009350505050610949565b60036108746040840160208501611064565b600581111561088557610885610d38565b1480156108955750816040013581105b156108a65760009350505050610949565b60046108b86040840160208501611064565b60058111156108c9576108c9610d38565b1480156108d95750816040013581115b156108ea5760009350505050610949565b60056108fc6040840160208501611064565b600581111561090d5761090d610d38565b14801561091d5750816040013581145b1561092e5760009350505050610949565b5050808061093b90610fd4565b915050610714565b50600190505b9392505050565b600083511561098b5760208401845160051b81015b8151841160051b9384528151602094851852604060002093909101908082106109655750505b5014919050565b80356001600160a01b03811681146109a957600080fd5b919050565b60008083601f8401126109c057600080fd5b50813567ffffffffffffffff8111156109d857600080fd5b6020830191508360208285010111156109f057600080fd5b9250929050565b60008060008060608587031215610a0d57600080fd5b610a1685610992565b935060208501359250604085013567ffffffffffffffff811115610a3957600080fd5b610a45878288016109ae565b95989497509550505050565b600080600080600060808688031215610a6957600080fd5b610a7286610992565b945060208601359350604086013567ffffffffffffffff80821115610a9657600080fd5b90870190610160828a031215610aab57600080fd5b90935060608701359080821115610ac157600080fd5b50610ace888289016109ae565b969995985093965092949392505050565b600080600080600080600060c0888a031215610afa57600080fd5b610b0388610992565b9650610b1160208901610992565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115610b4257600080fd5b610b4e8a828b016109ae565b989b979a50959850939692959293505050565b600080600060608486031215610b7657600080fd5b610b7f84610992565b925060208401359150610b9460408501610992565b90509250925092565b60008085851115610bad57600080fd5b83861115610bba57600080fd5b5050820193919092039150565b80356020831015610be057600019602084900360031b1b165b92915050565b6000808335601e19843603018112610bfd57600080fd5b83018035915067ffffffffffffffff821115610c1857600080fd5b6020019150368190038213156109f057600080fd5b6001600160e01b03198135818116916004851015610c555780818660040360031b1b83161692505b505092915050565b600060208284031215610c6f57600080fd5b61094982610992565b6bffffffffffffffffffffffff198135818116916014851015610c555760149490940360031b84901b1690921692915050565b60208082526024908201527f53657373696f6e4b657956616c696461746f723a20746172676574206d69736d6040820152630c2e8c6d60e31b606082015260800190565b60208082526029908201527f53657373696f6e4b657956616c696461746f723a2076616c7565206c696d697460408201526808195e18d95959195960ba1b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b8035600281106109a957600080fd5b600060208284031215610d6f57600080fd5b61094982610d4e565b60208082526033908201527f53657373696f6e4b657956616c696461746f723a207065726d697373696f6e206040820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b606082015260800190565b80356001600160e01b0319811681146109a957600080fd5b8035600681106109a957600080fd5b8183526000602080850194508260005b85811015610e495781358752610e19838301610de3565b60068110610e2957610e29610d38565b878401526040828101359088015260609687019690910190600101610e02565b509495945050505050565b60028110610e6457610e64610d38565b9052565b602081526001600160a01b03610e7d83610992565b16602082015263ffffffff60e01b610e9760208401610dcb565b1660408201526040820135606082015260006060830135601e19843603018112610ec057600080fd5b830160208101903567ffffffffffffffff811115610edd57600080fd5b606081023603821315610eef57600080fd5b60a06080850152610f0460c085018284610df2565b915050610f1360808501610d4e565b610f2060a0850182610e54565b509392505050565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112610f5457600080fd5b9190910192915050565b60008235609e19833603018112610f5457600080fd5b6000808335601e19843603018112610f8b57600080fd5b83018035915067ffffffffffffffff821115610fa657600080fd5b6020019150600581901b36038213156109f057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610fe657610fe6610fbe565b5060010190565b600060208284031215610fff57600080fd5b61094982610dcb565b6000808335601e1984360301811261101f57600080fd5b83018035915067ffffffffffffffff82111561103a57600080fd5b60200191506060810236038213156109f057600080fd5b80820180821115610be057610be0610fbe565b60006020828403121561107657600080fd5b61094982610de356", + "nonce": "0x1d4" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x7d2de72251685ec4f433d6479f844c3c688ae894be1a06def804adfb55afc9c6", + "transactionIndex": "0x2", + "blockHash": "0x51981d91608b9c200c0543c6fc34f6ccaf102e0ab0fdcca6ecda0e50341ce937", + "blockNumber": "0x2bb5ecf", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1221f2", + "gasUsed": "0xec1b2", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x0000000000000000000000000000000000000000000000000005275847dfae000000000000000000000000000000000000000000000000000312dfbb15c6ccf10000000000000000000000000000000000000000000023945322b694fe94e60b000000000000000000000000000000000000000000000000030db862cde71ef10000000000000000000000000000000000000000000023945327dded4674940b", + "blockHash": "0x51981d91608b9c200c0543c6fc34f6ccaf102e0ab0fdcca6ecda0e50341ce937", + "blockNumber": "0x2bb5ecf", + "transactionHash": "0x7d2de72251685ec4f433d6479f844c3c688ae894be1a06def804adfb55afc9c6", + "transactionIndex": "0x2", + "logIndex": "0x8", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x59682f0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1707741957, + "chain": 80001, + "multi": false, + "commit": "1bc0841" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707822518.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707822518.json new file mode 100644 index 00000000..6cbbab04 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707822518.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0xafc9cb887a29150932f5e25c421edb3170b0a8d998368bf85c20d6c9877781eb", + "transactionType": "CREATE2", + "contractName": "SignaturePolicy", + "contractAddress": "0x60e9a007782EB649B291608dCa9E74Aaa966D122", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x80a90", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061058c806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae014610043578063466a35f214610058578063c92ce351146100ad578063ecfcd930146100d4575b600080fd5b6100566100513660046102ce565b6100f4565b005b34801561006457600080fd5b50610098610073366004610328565b6000602081815293815260408082208552928152828120909352825290205460ff1681565b60405190151581526020015b60405180910390f35b6100c66100bb366004610364565b600095945050505050565b6040519081526020016100a4565b3480156100e057600080fd5b506100c66100ef3660046103f2565b61021d565b60006101028284018461048a565b905060005b81518110156102155760006001600160a01b031682828151811061012d5761012d61054f565b60200260200101516001600160a01b031603610178576000858152602081815260408083206001600160a01b038a16845282528083209091529020805460ff19166001179055610203565b600160008087815260200190815260200160002060008484815181106101a0576101a061054f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061020d81610565565b915050610107565b505050505050565b6000858152602081815260408083206001600160a01b03808b168552908352818420908b16845290915281205460ff161561025a5750600061025e565b5060015b979650505050505050565b80356001600160a01b038116811461028057600080fd5b919050565b60008083601f84011261029757600080fd5b50813567ffffffffffffffff8111156102af57600080fd5b6020830191508360208285010111156102c757600080fd5b9250929050565b600080600080606085870312156102e457600080fd5b6102ed85610269565b935060208501359250604085013567ffffffffffffffff81111561031057600080fd5b61031c87828801610285565b95989497509550505050565b60008060006060848603121561033d57600080fd5b8335925061034d60208501610269565b915061035b60408501610269565b90509250925092565b60008060008060006080868803121561037c57600080fd5b61038586610269565b945060208601359350604086013567ffffffffffffffff808211156103a957600080fd5b90870190610160828a0312156103be57600080fd5b909350606087013590808211156103d457600080fd5b506103e188828901610285565b969995985093965092949392505050565b600080600080600080600060c0888a03121561040d57600080fd5b61041688610269565b965061042460208901610269565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561045557600080fd5b6104618a828b01610285565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561049d57600080fd5b823567ffffffffffffffff808211156104b557600080fd5b818501915085601f8301126104c957600080fd5b8135818111156104db576104db610474565b8060051b604051601f19603f8301168101818110858211171561050057610500610474565b60405291825284820192508381018501918883111561051e57600080fd5b938501935b828510156105435761053485610269565b84529385019392850192610523565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161058557634e487b7160e01b600052601160045260246000fd5b506001019056", + "nonce": "0x1d5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xafc9cb887a29150932f5e25c421edb3170b0a8d998368bf85c20d6c9877781eb" + ], + "returns": {}, + "timestamp": 1707822518, + "chain": 80001, + "multi": false, + "commit": "1d02052" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1707822525.json b/broadcast/DeployModularPermission.s.sol/80001/run-1707822525.json new file mode 100644 index 00000000..b9c6e7d1 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1707822525.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0xafc9cb887a29150932f5e25c421edb3170b0a8d998368bf85c20d6c9877781eb", + "transactionType": "CREATE2", + "contractName": "SignaturePolicy", + "contractAddress": "0x60e9a007782EB649B291608dCa9E74Aaa966D122", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x80a90", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061058c806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae014610043578063466a35f214610058578063c92ce351146100ad578063ecfcd930146100d4575b600080fd5b6100566100513660046102ce565b6100f4565b005b34801561006457600080fd5b50610098610073366004610328565b6000602081815293815260408082208552928152828120909352825290205460ff1681565b60405190151581526020015b60405180910390f35b6100c66100bb366004610364565b600095945050505050565b6040519081526020016100a4565b3480156100e057600080fd5b506100c66100ef3660046103f2565b61021d565b60006101028284018461048a565b905060005b81518110156102155760006001600160a01b031682828151811061012d5761012d61054f565b60200260200101516001600160a01b031603610178576000858152602081815260408083206001600160a01b038a16845282528083209091529020805460ff19166001179055610203565b600160008087815260200190815260200160002060008484815181106101a0576101a061054f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061020d81610565565b915050610107565b505050505050565b6000858152602081815260408083206001600160a01b03808b168552908352818420908b16845290915281205460ff161561025a5750600061025e565b5060015b979650505050505050565b80356001600160a01b038116811461028057600080fd5b919050565b60008083601f84011261029757600080fd5b50813567ffffffffffffffff8111156102af57600080fd5b6020830191508360208285010111156102c757600080fd5b9250929050565b600080600080606085870312156102e457600080fd5b6102ed85610269565b935060208501359250604085013567ffffffffffffffff81111561031057600080fd5b61031c87828801610285565b95989497509550505050565b60008060006060848603121561033d57600080fd5b8335925061034d60208501610269565b915061035b60408501610269565b90509250925092565b60008060008060006080868803121561037c57600080fd5b61038586610269565b945060208601359350604086013567ffffffffffffffff808211156103a957600080fd5b90870190610160828a0312156103be57600080fd5b909350606087013590808211156103d457600080fd5b506103e188828901610285565b969995985093965092949392505050565b600080600080600080600060c0888a03121561040d57600080fd5b61041688610269565b965061042460208901610269565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561045557600080fd5b6104618a828b01610285565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561049d57600080fd5b823567ffffffffffffffff808211156104b557600080fd5b818501915085601f8301126104c957600080fd5b8135818111156104db576104db610474565b8060051b604051601f19603f8301168101818110858211171561050057610500610474565b60405291825284820192508381018501918883111561051e57600080fd5b938501935b828510156105435761053485610269565b84529385019392850192610523565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161058557634e487b7160e01b600052601160045260246000fd5b506001019056", + "nonce": "0x1d5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xafc9cb887a29150932f5e25c421edb3170b0a8d998368bf85c20d6c9877781eb", + "transactionIndex": "0x2", + "blockHash": "0xde9e19ccd546c800277af8effd96cbe24640ed08591c3ac968bd8d0d5e2433b8", + "blockNumber": "0x2bbe632", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1259af", + "gasUsed": "0x57fed", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000c275dc8be39f50d12f66b6a63629c39da5bae5bd" + ], + "data": "0x0000000000000000000000000000000000000000000000000002e1918fc7c40e000000000000000000000000000000000000000000000000030db870c5511d83000000000000000000000000000000000000000000001436667fd2243f7a0a55000000000000000000000000000000000000000000000000030ad6df358959750000000000000000000000000000000000000000000014366682b3b5cf41ce63", + "blockHash": "0xde9e19ccd546c800277af8effd96cbe24640ed08591c3ac968bd8d0d5e2433b8", + "blockNumber": "0x2bbe632", + "transactionHash": "0xafc9cb887a29150932f5e25c421edb3170b0a8d998368bf85c20d6c9877781eb", + "transactionIndex": "0x2", + "logIndex": "0x7", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000002000000000000000000000000000000000000000000000000000800000000000000000040100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000040000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x861c4696" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1707822525, + "chain": 80001, + "multi": false, + "commit": "1d02052" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1708112110.json b/broadcast/DeployModularPermission.s.sol/80001/run-1708112110.json new file mode 100644 index 00000000..2c82f2e1 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1708112110.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0x89e6d563669543b286e9a46b28a735c7fffe00a561b93a88e0a853dda955ccfb", + "transactionType": "CREATE2", + "contractName": "SudoPolicy", + "contractAddress": "0x9262C3A894328f9036Aa7a3f0f2cE8CF684ad20f", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x3f7cc", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610270806100206000396000f3fe6080604052600436106100335760003560e01c8062282ae014610038578063c92ce3511461004e578063ecfcd93014610079575b600080fd5b61004c610046366004610106565b50505050565b005b61006761005c366004610160565b600095945050505050565b60405190815260200160405180910390f35b34801561008557600080fd5b506100676100943660046101ee565b6000979650505050505050565b80356001600160a01b03811681146100b857600080fd5b919050565b60008083601f8401126100cf57600080fd5b50813567ffffffffffffffff8111156100e757600080fd5b6020830191508360208285010111156100ff57600080fd5b9250929050565b6000806000806060858703121561011c57600080fd5b610125856100a1565b935060208501359250604085013567ffffffffffffffff81111561014857600080fd5b610154878288016100bd565b95989497509550505050565b60008060008060006080868803121561017857600080fd5b610181866100a1565b945060208601359350604086013567ffffffffffffffff808211156101a557600080fd5b90870190610160828a0312156101ba57600080fd5b909350606087013590808211156101d057600080fd5b506101dd888289016100bd565b969995985093965092949392505050565b600080600080600080600060c0888a03121561020957600080fd5b610212886100a1565b9650610220602089016100a1565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561025157600080fd5b61025d8a828b016100bd565b989b979a5095985093969295929350505056", + "nonce": "0x1d8" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x89e6d563669543b286e9a46b28a735c7fffe00a561b93a88e0a853dda955ccfb" + ], + "returns": {}, + "timestamp": 1708112110, + "chain": 80001, + "multi": false, + "commit": "c6d2eff" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1708112117.json b/broadcast/DeployModularPermission.s.sol/80001/run-1708112117.json new file mode 100644 index 00000000..af2b7e09 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1708112117.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0x89e6d563669543b286e9a46b28a735c7fffe00a561b93a88e0a853dda955ccfb", + "transactionType": "CREATE2", + "contractName": "SudoPolicy", + "contractAddress": "0x9262C3A894328f9036Aa7a3f0f2cE8CF684ad20f", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x3f7cc", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610270806100206000396000f3fe6080604052600436106100335760003560e01c8062282ae014610038578063c92ce3511461004e578063ecfcd93014610079575b600080fd5b61004c610046366004610106565b50505050565b005b61006761005c366004610160565b600095945050505050565b60405190815260200160405180910390f35b34801561008557600080fd5b506100676100943660046101ee565b6000979650505050505050565b80356001600160a01b03811681146100b857600080fd5b919050565b60008083601f8401126100cf57600080fd5b50813567ffffffffffffffff8111156100e757600080fd5b6020830191508360208285010111156100ff57600080fd5b9250929050565b6000806000806060858703121561011c57600080fd5b610125856100a1565b935060208501359250604085013567ffffffffffffffff81111561014857600080fd5b610154878288016100bd565b95989497509550505050565b60008060008060006080868803121561017857600080fd5b610181866100a1565b945060208601359350604086013567ffffffffffffffff808211156101a557600080fd5b90870190610160828a0312156101ba57600080fd5b909350606087013590808211156101d057600080fd5b506101dd888289016100bd565b969995985093965092949392505050565b600080600080600080600060c0888a03121561020957600080fd5b610212886100a1565b9650610220602089016100a1565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561025157600080fd5b61025d8a828b016100bd565b989b979a5095985093969295929350505056", + "nonce": "0x1d8" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x89e6d563669543b286e9a46b28a735c7fffe00a561b93a88e0a853dda955ccfb", + "transactionIndex": "0x3", + "blockHash": "0x9e7b7d9ca8c172613bfc0fa847fb7d588487008d1b7b7c1e5de7658bd07f7700", + "blockNumber": "0x2bdc57c", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x11750a", + "gasUsed": "0x2df96", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000be188d6641e8b680743a4815dfa0f6208038960f" + ], + "data": "0x000000000000000000000000000000000000000000000000000100e681fc8a0000000000000000000000000000000000000000000000000002b49b1af88c2ced00000000000000000000000000000000000000000000365882a68791112f118100000000000000000000000000000000000000000000000002b39a34768fa2ed00000000000000000000000000000000000000000000365882a78877932b9b81", + "blockHash": "0x9e7b7d9ca8c172613bfc0fa847fb7d588487008d1b7b7c1e5de7658bd07f7700", + "blockNumber": "0x2bdc57c", + "transactionHash": "0x89e6d563669543b286e9a46b28a735c7fffe00a561b93a88e0a853dda955ccfb", + "transactionIndex": "0x3", + "logIndex": "0x8", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000004000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000080000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100040000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x59682f0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708112117, + "chain": 80001, + "multi": false, + "commit": "c6d2eff" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1708376910.json b/broadcast/DeployModularPermission.s.sol/80001/run-1708376910.json new file mode 100644 index 00000000..6a75149c --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1708376910.json @@ -0,0 +1,53 @@ +{ + "transactions": [ + { + "hash": "0x2493846e40436f02051522cde3a043de4ccbae1b9cadd8c40995e1b7a5847f4b", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0xfdDE9a26b6c3B7ca4b52C5f010d5B9Fb67e09E5A", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2a44f3", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061213e806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063b66bd1d211610059578063b66bd1d214610312578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b52e2c7a146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f03660046116a1565b6103a3565b005b34801561010357600080fd5b506101176101123660046116e3565b6103f6565b6040519081526020015b60405180910390f35b61011761013836600461172f565b61089a565b34801561014957600080fd5b506101bb6101583660046117ab565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f366004611865565b610d63565b34801561023057600080fd5b5061024461023f3660046116a1565b61131c565b6040516101219b9a99989796959493929190611a5c565b34801561026757600080fd5b5061029c610276366004611af3565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca3660046116a1565b611417565b6102e26102dd366004611b10565b611446565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d366004611b4c565b611483565b34801561031e57600080fd5b5061011761032d366004611af3565b60006020819052908152604090205481565b34801561034b57600080fd5b5061011761035a366004611c2d565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611c66565b6114ce565b6100f561039e366004611c7f565b61153a565b60008060008060003660003660003660006103be8d8d61131c565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d63565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611c9a565b61043791611cc4565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611cf9565b61057f928290611c9a565b61058891611d0c565b60601c845260003661059b603482611cf9565b906105a7601436611cf9565b926105b493929190611c9a565b6105bd91611cc4565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611d3f565b9261065c93929190611c9a565b61066591611d0c565b60601c036106f85760008484886060015160146106829190611d3f565b90896060015160346106949190611d3f565b926106a193929190611c9a565b6106aa91611cc4565b60001c90508484886060015160346106c29190611d3f565b6106cd928290611c9a565b90935091506106dd816034611d3f565b876060018181516106ee9190611d3f565b90525061070e9050565b606086015161070990808587611c9a565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611d52565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611d9d565b90506107b4888261159a565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611c9a565b6040518663ffffffff1660e01b815260040161083e959493929190611db6565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611d9d565b905061088b868261159a565b955050505050505b9392505050565b6000336108aa6020860186611af3565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611def565b61092491602091600091611c9a565b61092d91611cc4565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099c575060008181526001602090815260408083203384528252808320546003909252909120546001600160801b03918216600160801b909104909116115b156109ab576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf05760a082901c60011615610a815760008481526002602090815260408083209483529381528382203383529052919091205490610a3b565b366000610a8f836034611d3f565b610a9d6101408c018c611def565b905010158015610ae857506001600160a01b038416610ac06101408c018c611def565b8590610acd826014611d3f565b92610ada93929190611c9a565b610ae391611d0c565b60601c145b15610c12576000610afd6101408c018c611def565b610b08866014611d3f565b90610b14876034611d3f565b92610b2193929190611c9a565b610b2a91611cc4565b905080610b38856034611d3f565b610b429190611d3f565b610b506101408d018d611def565b90501015610bb35760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc16101408c018c611def565b610bcc866034611d3f565b9083610bd9886034611d3f565b610be39190611d3f565b92610bf093929190611c9a565b9093509150610c00816034611d3f565b610c0a9085611d3f565b935050610c32565b610c206101408b018b611def565b610c2d9185918291611c9a565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c71959493929190611e36565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611d9d565b9050610cc0888261159a565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3b92505050565b60408301516000906001600160a01b0316638e0125d233878b610d176101408f018f611def565b610d249189908290611c9a565b6040518663ffffffff1660e01b8152600401610d44959493929190611db6565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dba5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b336000908152600360205260409020546001600160801b038c811691161480610e17575033600090815260036020526040902054610e02906001600160801b03166001611f79565b6001600160801b03168b6001600160801b0316145b610e5a5760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b33600090815260036020526040812080546001600160801b031691610e7e83611fa0565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550506000610eb78b8b8b8b8b8b8b8b8b8b611483565b9050600160a01b6001600160a01b03198c1601610ee1573360009081526020819052604090208190555b8a60005b87811015610fd557610f15898983818110610f0257610f02611fc6565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03385888886818110610f3657610f36611fc6565b9050602002810190610f489190611def565b6040518563ffffffff1660e01b8152600401610f679493929190611fdc565b600060405180830381600087803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b505050506000610fbd8a8a84818110610fb057610fb0611fc6565b9050602002013560a01c90565b92909216915080610fcd8161200e565b915050610ee5565b5060405163e9b51de560e01b81526001600160a01b038c169063e9b51de59061100890339086908b908b90600401611fdc565b600060405180830381600087803b15801561102257600080fd5b505af1158015611036573d6000803e3d6000fd5b5050505060008888600081811061104f5761104f611fc6565b60200291909101359150506001600160a01b03198216156110c65760405162461bcd60e51b815260206004820152602b60248201527f6572726f72203a207065726d697373696f6e20666c616720657863656564732060448201526a706f6c69637920666c616760a81b60648201526084016108fc565b6040518060c001604052808f6001600160801b031681526020018e6001600160a01b03191681526020018d6001600160a01b031681526020018281526020018c65ffffffffffff1681526020018b65ffffffffffff16815250600160008581526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b888110156112d25789898281811061125f5761125f611fc6565b905060200201356002600086815260200190815260200160002060008c8c60018661128a9190611cf9565b81811061129957611299611fc6565b602090810292909201358352508181019290925260409081016000908120338252909252902055806112ca8161200e565b915050611245565b5060408051338152602081018590527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a15050505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261134193929190611c9a565b61134a91612027565b60801c9a508c8c601090601c9261136393929190611c9a565b61136c9161205e565b99508c8c601c9060229261138293929190611c9a565b61138b9161208c565b60d01c97508c8c6022906028926113a493929190611c9a565b6113ad9161208c565b60d01c96508c8c602890603c926113c693929190611c9a565b6113cf91611d0c565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b60208190036114315761142d61038b8284611cc4565b5050565b61142d61143e8284612027565b60801c61153a565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008a8a8a8a8a8a8a8a8a8a6040516020016114a89a999897969594939291906120ba565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec910161152f565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146115ce5760019250611650565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816116135765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611631575065ffffffffffff60a01b5b80821890821102188061164a575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261166a57600080fd5b50813567ffffffffffffffff81111561168257600080fd5b60208301915083602082850101111561169a57600080fd5b9250929050565b600080602083850312156116b457600080fd5b823567ffffffffffffffff8111156116cb57600080fd5b6116d785828601611658565b90969095509350505050565b6000806000604084860312156116f857600080fd5b83359250602084013567ffffffffffffffff81111561171657600080fd5b61172286828701611658565b9497909650939450505050565b60008060006060848603121561174457600080fd5b833567ffffffffffffffff81111561175b57600080fd5b8401610160818703121561176e57600080fd5b95602085013595506040909401359392505050565b6001600160a01b038116811461179857600080fd5b50565b80356117a681611783565b919050565b600080604083850312156117be57600080fd5b8235915060208301356117d081611783565b809150509250929050565b80356001600160801b03811681146117a657600080fd5b80356001600160a01b0319811681146117a657600080fd5b803565ffffffffffff811681146117a657600080fd5b60008083601f84011261183257600080fd5b50813567ffffffffffffffff81111561184a57600080fd5b6020830191508360208260051b850101111561169a57600080fd5b60008060008060008060008060008060006101008c8e03121561188757600080fd5b6118908c6117db565b9a5061189e60208d016117f2565b99506118ac60408d0161179b565b98506118ba60608d0161180a565b97506118c860808d0161180a565b965067ffffffffffffffff8060a08e013511156118e457600080fd5b6118f48e60a08f01358f01611820565b909750955060c08d013581101561190a57600080fd5b61191a8e60c08f01358f01611658565b909550935060e08d013581101561193057600080fd5b506119418d60e08e01358e01611820565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b8581101561198557813587529582019590820190600101611969565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126119d057600080fd5b830160208101925035905067ffffffffffffffff8111156119f057600080fd5b80360382131561169a57600080fd5b81835260006020808501808196508560051b810191508460005b87811015611a4f578284038952611a3082886119b9565b611a3b868284611990565b9a87019a9550505090840190600101611a19565b5091979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a08201819052600090611ab7838201898b611959565b905082810360c0840152611acc818789611990565b905082810360e0840152611ae18185876119ff565b9e9d5050505050505050505050505050565b600060208284031215611b0557600080fd5b813561089381611783565b600080600060408486031215611b2557600080fd5b8335611b3081611783565b9250602084013567ffffffffffffffff81111561171657600080fd5b60008060008060008060008060008060e08b8d031215611b6b57600080fd5b611b748b6117f2565b995060208b0135611b8481611783565b9850611b9260408c0161180a565b9750611ba060608c0161180a565b965060808b013567ffffffffffffffff80821115611bbd57600080fd5b611bc98e838f01611820565b909850965060a08d0135915080821115611be257600080fd5b611bee8e838f01611658565b909650945060c08d0135915080821115611c0757600080fd5b50611c148d828e01611820565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215611c4257600080fd5b83359250602084013591506040840135611c5b81611783565b809150509250925092565b600060208284031215611c7857600080fd5b5035919050565b600060208284031215611c9157600080fd5b610893826117db565b60008085851115611caa57600080fd5b83861115611cb757600080fd5b5050820193919092039150565b80356020831015611cdd57600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611cdd57611cdd611ce3565b6bffffffffffffffffffffffff1981358181169160148510156116505760149490940360031b84901b1690921692915050565b80820180821115611cdd57611cdd611ce3565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611d9060c083018486611990565b9998505050505050505050565b600060208284031215611daf57600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611de4608083018486611990565b979650505050505050565b6000808335601e19843603018112611e0657600080fd5b83018035915067ffffffffffffffff821115611e2157600080fd5b60200191503681900382131561169a57600080fd5b6001600160a01b038616815260208101859052608060408201819052611e6e908201611e618661179b565b6001600160a01b03169052565b602084013560a08201526000611e8760408601866119b9565b6101608060c0860152611e9f6101e086018385611990565b9250611eae60608901896119b9565b9250607f19808786030160e0880152611ec8858584611990565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611f11838c018c6119b9565b9550935081888703016101a0890152611f2b868686611990565b9550611f39818c018c6119b9565b955093505080878603016101c08801525050611f56838383611990565b925050508281036060840152611f6d818587611990565b98975050505050505050565b6001600160801b03818116838216019080821115611f9957611f99611ce3565b5092915050565b60006001600160801b03808316818103611fbc57611fbc611ce3565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000612004606083018486611990565b9695505050505050565b60006001820161202057612020611ce3565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156116505760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561165057600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156116505760069490940360031b84901b1690921692915050565b6001600160a01b03198b1681526001600160a01b038a16602082015265ffffffffffff89811660408301528816606082015260e060808201819052600090612105908301888a611959565b82810360a0840152612118818789611990565b905082810360c084015261212d8185876119ff565b9d9c5050505050505050505050505056", + "nonce": "0x1d9" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xacb6b9d3cefa73943e48b34dea77c6744a47ebef09d1b943b53e0927175c3790", + "transactionType": "CREATE2", + "contractName": "SignaturePolicy", + "contractAddress": "0xdb5F74349Dd2FB2A09eEc2C6A39e77B68ca2852C", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x7d529", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b506105c0806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae014610043578063bd89752f14610058578063c92ce351146100b6578063ecfcd930146100dd575b600080fd5b6100566100513660046102f1565b6100fd565b005b34801561006457600080fd5b506100a161007336600461034b565b6000602081815294815260408082208652938152838120855291825282822090935291825290205460ff1681565b60405190151581526020015b60405180910390f35b6100cf6100c4366004610398565b600095945050505050565b6040519081526020016100ad565b3480156100e957600080fd5b506100cf6100f8366004610426565b610237565b600061010b828401846104be565b905060005b815181101561022f5760006001600160a01b031682828151811061013657610136610583565b60200260200101516001600160a01b03160361018a573360009081526020818152604080832088845282528083206001600160a01b038a16845282528083209091529020805460ff1916600117905561021d565b3360009081526020818152604080832088845290915281208351600192908590859081106101ba576101ba610583565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061022781610599565b915050610110565b505050505050565b3360009081526020818152604080832088845282528083206001600160a01b038a81168552908352818420908b16845290915281205460ff161561027d57506000610281565b5060015b979650505050505050565b80356001600160a01b03811681146102a357600080fd5b919050565b60008083601f8401126102ba57600080fd5b50813567ffffffffffffffff8111156102d257600080fd5b6020830191508360208285010111156102ea57600080fd5b9250929050565b6000806000806060858703121561030757600080fd5b6103108561028c565b935060208501359250604085013567ffffffffffffffff81111561033357600080fd5b61033f878288016102a8565b95989497509550505050565b6000806000806080858703121561036157600080fd5b61036a8561028c565b93506020850135925061037f6040860161028c565b915061038d6060860161028c565b905092959194509250565b6000806000806000608086880312156103b057600080fd5b6103b98661028c565b945060208601359350604086013567ffffffffffffffff808211156103dd57600080fd5b90870190610160828a0312156103f257600080fd5b9093506060870135908082111561040857600080fd5b50610415888289016102a8565b969995985093965092949392505050565b600080600080600080600060c0888a03121561044157600080fd5b61044a8861028c565b96506104586020890161028c565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561048957600080fd5b6104958a828b016102a8565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156104d157600080fd5b823567ffffffffffffffff808211156104e957600080fd5b818501915085601f8301126104fd57600080fd5b81358181111561050f5761050f6104a8565b8060051b604051601f19603f83011681018181108582111715610534576105346104a8565b60405291825284820192508381018501918883111561055257600080fd5b938501935b82851015610577576105688561028c565b84529385019392850192610557565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016105b957634e487b7160e01b600052601160045260246000fd5b506001019056", + "nonce": "0x1da" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x2493846e40436f02051522cde3a043de4ccbae1b9cadd8c40995e1b7a5847f4b", + "0xacb6b9d3cefa73943e48b34dea77c6744a47ebef09d1b943b53e0927175c3790" + ], + "returns": {}, + "timestamp": 1708376910, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1708376917.json b/broadcast/DeployModularPermission.s.sol/80001/run-1708376917.json new file mode 100644 index 00000000..f2adf578 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1708376917.json @@ -0,0 +1,117 @@ +{ + "transactions": [ + { + "hash": "0x2493846e40436f02051522cde3a043de4ccbae1b9cadd8c40995e1b7a5847f4b", + "transactionType": "CREATE2", + "contractName": "ModularPermissionValidator", + "contractAddress": "0xfdDE9a26b6c3B7ca4b52C5f010d5B9Fb67e09E5A", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2a44f3", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061213e806100206000396000f3fe6080604052600436106100dd5760003560e01c80638fc925aa1161007f578063b66bd1d211610059578063b66bd1d214610312578063d4085e811461033f578063e89005c71461037d578063ee87c2951461039057600080fd5b80638fc925aa146102bc5780639ea9bd59146102cf578063b52e2c7a146102f257600080fd5b80633ec50c6c116100bb5780633ec50c6c1461013d578063511079bc1461021157806365b8de2e146102245780637ecebe001461025b57600080fd5b80630c959556146100e2578063333daf92146100f75780633a871cdd1461012a575b600080fd5b6100f56100f03660046116a1565b6103a3565b005b34801561010357600080fd5b506101176101123660046116e3565b6103f6565b6040519081526020015b60405180910390f35b61011761013836600461172f565b61089a565b34801561014957600080fd5b506101bb6101583660046117ab565b6001602081815260009384526040808520909152918352912080549181015460028201546003909201546001600160801b03841693600160801b900460a01b926001600160a01b03909216919065ffffffffffff80821691600160301b90041686565b604080516001600160801b0390971687526001600160a01b031990951660208701526001600160a01b0390931693850193909352606084015265ffffffffffff91821660808401521660a082015260c001610121565b6100f561021f366004611865565b610d63565b34801561023057600080fd5b5061024461023f3660046116a1565b61131c565b6040516101219b9a99989796959493929190611a5c565b34801561026757600080fd5b5061029c610276366004611af3565b6003602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610121565b6100f56102ca3660046116a1565b611417565b6102e26102dd366004611b10565b611446565b6040519015158152602001610121565b3480156102fe57600080fd5b5061011761030d366004611b4c565b611483565b34801561031e57600080fd5b5061011761032d366004611af3565b60006020819052908152604090205481565b34801561034b57600080fd5b5061011761035a366004611c2d565b600260209081526000938452604080852082529284528284209052825290205481565b6100f561038b366004611c66565b6114ce565b6100f561039e366004611c7f565b61153a565b60008060008060003660003660003660006103be8d8d61131c565b9a509a509a509a509a509a509a509a509a509a509a506103e78b8b8b8b8b8b8b8b8b8b8b610d63565b50505050505050505050505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905261042e602060008587611c9a565b61043791611cc4565b602080830182905260009182526001815260408083203384528252808320546003909252909120546001600160801b03918216600160801b90910490911611806104aa575060208181015160009081526001825260408082203383529092522054600160801b900460a01b600160a11b16155b156104b9576001915050610893565b6020818101516000908152600180835260408083203384528452808320815160c08101835281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682880152938201546001600160a01b0316928101929092526002810154606080840191825260039092015465ffffffffffff808216608080870191909152600160301b9092041694840194909452908601849052519185019190915291860190601f1986019036610574601482611cf9565b61057f928290611c9a565b61058891611d0c565b60601c845260003661059b603482611cf9565b906105a7601436611cf9565b926105b493929190611c9a565b6105bd91611cc4565b60408501525b60808401516001600160a01b0316156107ec57608084015160a11c60011615610618576020808501516000908152600282526040808220608088018051845290845281832033845290935290205490526105c3565b36600061062f86608001516001600160a01b031690565b60608701516001600160a01b03919091169085908561064f826014611d3f565b9261065c93929190611c9a565b61066591611d0c565b60601c036106f85760008484886060015160146106829190611d3f565b90896060015160346106949190611d3f565b926106a193929190611c9a565b6106aa91611cc4565b60001c90508484886060015160346106c29190611d3f565b6106cd928290611c9a565b90935091506106dd816034611d3f565b876060018181516106ee9190611d3f565b90525061070e9050565b606086015161070990808587611c9a565b915091505b600061072487608001516001600160a01b031690565b6001600160a01b031663ecfcd9303389600001518a602001518f8c6040015189896040518863ffffffff1660e01b81526004016107679796959493929190611d52565b602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190611d9d565b90506107b4888261159a565b602080890151600090815260028252604080822060808c0180518452908452818320338452909352902054905297506105c392505050565b600083604001516001600160a01b0316637a7c6a4f3387602001518c87878b6060015190809261081e93929190611c9a565b6040518663ffffffff1660e01b815260040161083e959493929190611db6565b602060405180830381865afa15801561085b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087f9190611d9d565b905061088b868261159a565b955050505050505b9392505050565b6000336108aa6020860186611af3565b6001600160a01b0316146109055760405162461bcd60e51b815260206004820152601960248201527f73656e646572206d757374206265206d73672e73656e6465720000000000000060448201526064015b60405180910390fd5b6000610915610140860186611def565b61092491602091600091611c9a565b61092d91611cc4565b6000818152600160209081526040808320338452909152902054909150600160801b900460a01b600160a01b16158061099c575060008181526001602090815260408083203384528252808320546003909252909120546001600160801b03918216600160801b909104909116115b156109ab576001915050610893565b6000818152600160208181526040808420338552825292839020835160c08101855281546001600160801b0381168252600160801b900460a090811b6001600160a01b03191682850152938201546001600160a01b03169481019490945260028101546060850181905260039091015465ffffffffffff8082166080870152600160301b90910416928401929092525b6001600160a01b03821615610cf05760a082901c60011615610a815760008481526002602090815260408083209483529381528382203383529052919091205490610a3b565b366000610a8f836034611d3f565b610a9d6101408c018c611def565b905010158015610ae857506001600160a01b038416610ac06101408c018c611def565b8590610acd826014611d3f565b92610ada93929190611c9a565b610ae391611d0c565b60601c145b15610c12576000610afd6101408c018c611def565b610b08866014611d3f565b90610b14876034611d3f565b92610b2193929190611c9a565b610b2a91611cc4565b905080610b38856034611d3f565b610b429190611d3f565b610b506101408d018d611def565b90501015610bb35760405162461bcd60e51b815260206004820152602a60248201527f706f6c69637944617461206c656e6774682065786365656473207369676e61746044820152690eae4ca40d8cadccee8d60b31b60648201526084016108fc565b610bc16101408c018c611def565b610bcc866034611d3f565b9083610bd9886034611d3f565b610be39190611d3f565b92610bf093929190611c9a565b9093509150610c00816034611d3f565b610c0a9085611d3f565b935050610c32565b610c206101408b018b611def565b610c2d9185918291611c9a565b915091505b60006001600160a01b0385166001600160a01b031663c92ce35133898e87876040518663ffffffff1660e01b8152600401610c71959493929190611e36565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611d9d565b9050610cc0888261159a565b600088815260026020908152604080832098835297815287822033835290529590952054949750610a3b92505050565b60408301516000906001600160a01b0316638e0125d233878b610d176101408f018f611def565b610d249189908290611c9a565b6040518663ffffffff1660e01b8152600401610d44959493929190611db6565b6020604051808303816000875af115801561085b573d6000803e3d6000fd5b6001600160a01b03198a16610dba5760405162461bcd60e51b815260206004820152601860248201527f666c61672073686f756c64206e6f7420626520656d707479000000000000000060448201526064016108fc565b336000908152600360205260409020546001600160801b038c811691161480610e17575033600090815260036020526040902054610e02906001600160801b03166001611f79565b6001600160801b03168b6001600160801b0316145b610e5a5760405162461bcd60e51b81526020600482015260146024820152731b9bdb98d9481cda1bdd5b19081899481b995e1d60621b60448201526064016108fc565b33600090815260036020526040812080546001600160801b031691610e7e83611fa0565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550506000610eb78b8b8b8b8b8b8b8b8b8b611483565b9050600160a01b6001600160a01b03198c1601610ee1573360009081526020819052604090208190555b8a60005b87811015610fd557610f15898983818110610f0257610f02611fc6565b905060200201356001600160a01b031690565b6001600160a01b031662282ae03385888886818110610f3657610f36611fc6565b9050602002810190610f489190611def565b6040518563ffffffff1660e01b8152600401610f679493929190611fdc565b600060405180830381600087803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b505050506000610fbd8a8a84818110610fb057610fb0611fc6565b9050602002013560a01c90565b92909216915080610fcd8161200e565b915050610ee5565b5060405163e9b51de560e01b81526001600160a01b038c169063e9b51de59061100890339086908b908b90600401611fdc565b600060405180830381600087803b15801561102257600080fd5b505af1158015611036573d6000803e3d6000fd5b5050505060008888600081811061104f5761104f611fc6565b60200291909101359150506001600160a01b03198216156110c65760405162461bcd60e51b815260206004820152602b60248201527f6572726f72203a207065726d697373696f6e20666c616720657863656564732060448201526a706f6c69637920666c616760a81b60648201526084016108fc565b6040518060c001604052808f6001600160801b031681526020018e6001600160a01b03191681526020018d6001600160a01b031681526020018281526020018c65ffffffffffff1681526020018b65ffffffffffff16815250600160008581526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816bffffffffffffffffffffffff021916908360a01c021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816002015560808201518160030160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160030160066101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050506000600190505b888110156112d25789898281811061125f5761125f611fc6565b905060200201356002600086815260200190815260200160002060008c8c60018661128a9190611cf9565b81811061129957611299611fc6565b602090810292909201358352508181019290925260409081016000908120338252909252902055806112ca8161200e565b915050611245565b5060408051338152602081018590527fab0f2b94c33903f7ed343b1bcc3baca5e69eb7d007b8c8207232012f6cffef0e910160405180910390a15050505050505050505050505050565b60008060008060003660003660003660008c8c60009060109261134193929190611c9a565b61134a91612027565b60801c9a508c8c601090601c9261136393929190611c9a565b61136c9161205e565b99508c8c601c9060229261138293929190611c9a565b61138b9161208c565b60d01c97508c8c6022906028926113a493929190611c9a565b6113ad9161208c565b60d01c96508c8c602890603c926113c693929190611c9a565b6113cf91611d0c565b9a9d999c60609b909b1c9b5096999598605c603c8089013589018281019b50810135995081890135890180830199908201359850607c81013501918201965001359350915050565b60208190036114315761142d61038b8284611cc4565b5050565b61142d61143e8284612027565b60801c61153a565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60448201526000906064016108fc565b60008a8a8a8a8a8a8a8a8a8a6040516020016114a89a999897969594939291906120ba565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6000818152600160209081526040808320338085529083529281902080546bffffffffffffffffffffffff60801b1916905580519283529082018390527f789770131846de4d1f28418f0f957cdf4fcabe5eccf70067083e20ecece69a3491015b60405180910390a150565b3360008181526003602090815260409182902080546001600160801b03908116600160801b918716918202179091558251938452908301527f22cd1acb7e7a306800a1b2c0ca9b0280187bbc00b7fbf55d38ad6cbf73082aec910161152f565b600081830160601b8260601b81148460601b8214176001600160a01b03848618161517600181146115ce5760019250611650565b6001600160d01b031980851690861681811881831102188686176001600160a01b031617935065ffffffffffff60a01b861690816116135765ffffffffffff60a01b91505b5065ffffffffffff60a01b851680611631575065ffffffffffff60a01b5b80821890821102188061164a575065ffffffffffff60a01b5b92909217915b505092915050565b60008083601f84011261166a57600080fd5b50813567ffffffffffffffff81111561168257600080fd5b60208301915083602082850101111561169a57600080fd5b9250929050565b600080602083850312156116b457600080fd5b823567ffffffffffffffff8111156116cb57600080fd5b6116d785828601611658565b90969095509350505050565b6000806000604084860312156116f857600080fd5b83359250602084013567ffffffffffffffff81111561171657600080fd5b61172286828701611658565b9497909650939450505050565b60008060006060848603121561174457600080fd5b833567ffffffffffffffff81111561175b57600080fd5b8401610160818703121561176e57600080fd5b95602085013595506040909401359392505050565b6001600160a01b038116811461179857600080fd5b50565b80356117a681611783565b919050565b600080604083850312156117be57600080fd5b8235915060208301356117d081611783565b809150509250929050565b80356001600160801b03811681146117a657600080fd5b80356001600160a01b0319811681146117a657600080fd5b803565ffffffffffff811681146117a657600080fd5b60008083601f84011261183257600080fd5b50813567ffffffffffffffff81111561184a57600080fd5b6020830191508360208260051b850101111561169a57600080fd5b60008060008060008060008060008060006101008c8e03121561188757600080fd5b6118908c6117db565b9a5061189e60208d016117f2565b99506118ac60408d0161179b565b98506118ba60608d0161180a565b97506118c860808d0161180a565b965067ffffffffffffffff8060a08e013511156118e457600080fd5b6118f48e60a08f01358f01611820565b909750955060c08d013581101561190a57600080fd5b61191a8e60c08f01358f01611658565b909550935060e08d013581101561193057600080fd5b506119418d60e08e01358e01611820565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b8581101561198557813587529582019590820190600101611969565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126119d057600080fd5b830160208101925035905067ffffffffffffffff8111156119f057600080fd5b80360382131561169a57600080fd5b81835260006020808501808196508560051b810191508460005b87811015611a4f578284038952611a3082886119b9565b611a3b868284611990565b9a87019a9550505090840190600101611a19565b5091979650505050505050565b6001600160801b038c1681526001600160a01b03198b1660208201526001600160a01b038a16604082015265ffffffffffff89811660608301528816608082015261010060a08201819052600090611ab7838201898b611959565b905082810360c0840152611acc818789611990565b905082810360e0840152611ae18185876119ff565b9e9d5050505050505050505050505050565b600060208284031215611b0557600080fd5b813561089381611783565b600080600060408486031215611b2557600080fd5b8335611b3081611783565b9250602084013567ffffffffffffffff81111561171657600080fd5b60008060008060008060008060008060e08b8d031215611b6b57600080fd5b611b748b6117f2565b995060208b0135611b8481611783565b9850611b9260408c0161180a565b9750611ba060608c0161180a565b965060808b013567ffffffffffffffff80821115611bbd57600080fd5b611bc98e838f01611820565b909850965060a08d0135915080821115611be257600080fd5b611bee8e838f01611658565b909650945060c08d0135915080821115611c0757600080fd5b50611c148d828e01611820565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215611c4257600080fd5b83359250602084013591506040840135611c5b81611783565b809150509250925092565b600060208284031215611c7857600080fd5b5035919050565b600060208284031215611c9157600080fd5b610893826117db565b60008085851115611caa57600080fd5b83861115611cb757600080fd5b5050820193919092039150565b80356020831015611cdd57600019602084900360031b1b165b92915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611cdd57611cdd611ce3565b6bffffffffffffffffffffffff1981358181169160148510156116505760149490940360031b84901b1690921692915050565b80820180821115611cdd57611cdd611ce3565b600060018060a01b03808a16835280891660208401525086604083015285606083015284608083015260c060a0830152611d9060c083018486611990565b9998505050505050505050565b600060208284031215611daf57600080fd5b5051919050565b60018060a01b0386168152846020820152836040820152608060608201526000611de4608083018486611990565b979650505050505050565b6000808335601e19843603018112611e0657600080fd5b83018035915067ffffffffffffffff821115611e2157600080fd5b60200191503681900382131561169a57600080fd5b6001600160a01b038616815260208101859052608060408201819052611e6e908201611e618661179b565b6001600160a01b03169052565b602084013560a08201526000611e8760408601866119b9565b6101608060c0860152611e9f6101e086018385611990565b9250611eae60608901896119b9565b9250607f19808786030160e0880152611ec8858584611990565b9450610100935060808a013584880152610120915060a08a01358288015261014060c08b01358189015260e08b013584890152848b0135610180890152611f11838c018c6119b9565b9550935081888703016101a0890152611f2b868686611990565b9550611f39818c018c6119b9565b955093505080878603016101c08801525050611f56838383611990565b925050508281036060840152611f6d818587611990565b98975050505050505050565b6001600160801b03818116838216019080821115611f9957611f99611ce3565b5092915050565b60006001600160801b03808316818103611fbc57611fbc611ce3565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b0385168152836020820152606060408201526000612004606083018486611990565b9695505050505050565b60006001820161202057612020611ce3565b5060010190565b6fffffffffffffffffffffffffffffffff1981358181169160108510156116505760109490940360031b84901b1690921692915050565b6001600160a01b0319813581811691600c85101561165057600c9490940360031b84901b1690921692915050565b6001600160d01b031981358181169160068510156116505760069490940360031b84901b1690921692915050565b6001600160a01b03198b1681526001600160a01b038a16602082015265ffffffffffff89811660408301528816606082015260e060808201819052600090612105908301888a611959565b82810360a0840152612118818789611990565b905082810360c084015261212d8185876119ff565b9d9c5050505050505050505050505056", + "nonce": "0x1d9" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xacb6b9d3cefa73943e48b34dea77c6744a47ebef09d1b943b53e0927175c3790", + "transactionType": "CREATE2", + "contractName": "SignaturePolicy", + "contractAddress": "0xdb5F74349Dd2FB2A09eEc2C6A39e77B68ca2852C", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x7d529", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b506105c0806100206000396000f3fe60806040526004361061003e5760003560e01c8062282ae014610043578063bd89752f14610058578063c92ce351146100b6578063ecfcd930146100dd575b600080fd5b6100566100513660046102f1565b6100fd565b005b34801561006457600080fd5b506100a161007336600461034b565b6000602081815294815260408082208652938152838120855291825282822090935291825290205460ff1681565b60405190151581526020015b60405180910390f35b6100cf6100c4366004610398565b600095945050505050565b6040519081526020016100ad565b3480156100e957600080fd5b506100cf6100f8366004610426565b610237565b600061010b828401846104be565b905060005b815181101561022f5760006001600160a01b031682828151811061013657610136610583565b60200260200101516001600160a01b03160361018a573360009081526020818152604080832088845282528083206001600160a01b038a16845282528083209091529020805460ff1916600117905561021d565b3360009081526020818152604080832088845290915281208351600192908590859081106101ba576101ba610583565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061022781610599565b915050610110565b505050505050565b3360009081526020818152604080832088845282528083206001600160a01b038a81168552908352818420908b16845290915281205460ff161561027d57506000610281565b5060015b979650505050505050565b80356001600160a01b03811681146102a357600080fd5b919050565b60008083601f8401126102ba57600080fd5b50813567ffffffffffffffff8111156102d257600080fd5b6020830191508360208285010111156102ea57600080fd5b9250929050565b6000806000806060858703121561030757600080fd5b6103108561028c565b935060208501359250604085013567ffffffffffffffff81111561033357600080fd5b61033f878288016102a8565b95989497509550505050565b6000806000806080858703121561036157600080fd5b61036a8561028c565b93506020850135925061037f6040860161028c565b915061038d6060860161028c565b905092959194509250565b6000806000806000608086880312156103b057600080fd5b6103b98661028c565b945060208601359350604086013567ffffffffffffffff808211156103dd57600080fd5b90870190610160828a0312156103f257600080fd5b9093506060870135908082111561040857600080fd5b50610415888289016102a8565b969995985093965092949392505050565b600080600080600080600060c0888a03121561044157600080fd5b61044a8861028c565b96506104586020890161028c565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561048957600080fd5b6104958a828b016102a8565b989b979a50959850939692959293505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156104d157600080fd5b823567ffffffffffffffff808211156104e957600080fd5b818501915085601f8301126104fd57600080fd5b81358181111561050f5761050f6104a8565b8060051b604051601f19603f83011681018181108582111715610534576105346104a8565b60405291825284820192508381018501918883111561055257600080fd5b938501935b82851015610577576105688561028c565b84529385019392850192610557565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016105b957634e487b7160e01b600052601160045260246000fd5b506001019056", + "nonce": "0x1da" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x2493846e40436f02051522cde3a043de4ccbae1b9cadd8c40995e1b7a5847f4b", + "transactionIndex": "0x1", + "blockHash": "0xfd0f9244799d12c47e27e4d722a9baa399eff8f3172ff96cdaabb373ac3d84a1", + "blockNumber": "0x2bf9b5b", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1e6361", + "gasUsed": "0x1ce907", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000cfef2a3dc244ef7d0fb93c45e762d671445c4569" + ], + "data": "0x0000000000000000000000000000000000000000000000000025315a3e903c3d00000000000000000000000000000000000000000000000002b39a3b72883523000000000000000000000000000000000000000000000186d106828989afc7bd000000000000000000000000000000000000000000000000028e68e133f7f8e6000000000000000000000000000000000000000000000186d12bb3e3c84003fa", + "blockHash": "0xfd0f9244799d12c47e27e4d722a9baa399eff8f3172ff96cdaabb373ac3d84a1", + "blockNumber": "0x2bf9b5b", + "transactionHash": "0x2493846e40436f02051522cde3a043de4ccbae1b9cadd8c40995e1b7a5847f4b", + "transactionIndex": "0x1", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000020100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000040000100000", + "type": "0x0", + "effectiveGasPrice": "0x1495773aa" + }, + { + "transactionHash": "0xacb6b9d3cefa73943e48b34dea77c6744a47ebef09d1b943b53e0927175c3790", + "transactionIndex": "0x2", + "blockHash": "0xfd0f9244799d12c47e27e4d722a9baa399eff8f3172ff96cdaabb373ac3d84a1", + "blockNumber": "0x2bf9b5b", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x240f73", + "gasUsed": "0x5ac12", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x000000000000000000000000cfef2a3dc244ef7d0fb93c45e762d671445c4569" + ], + "data": "0x00000000000000000000000000000000000000000000000000074c132bd944e6000000000000000000000000000000000000000000000000028e68e13246517d000000000000000000000000000000000000000000000186d12bb3e3c84003fa00000000000000000000000000000000000000000000000002871cce066d0c97000000000000000000000000000000000000000000000186d132fff6f41948e0", + "blockHash": "0xfd0f9244799d12c47e27e4d722a9baa399eff8f3172ff96cdaabb373ac3d84a1", + "blockNumber": "0x2bf9b5b", + "transactionHash": "0xacb6b9d3cefa73943e48b34dea77c6744a47ebef09d1b943b53e0927175c3790", + "transactionIndex": "0x2", + "logIndex": "0x4", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000020100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000040000100000", + "type": "0x0", + "effectiveGasPrice": "0x1495773aa" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708376917, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1708453269.json b/broadcast/DeployModularPermission.s.sol/80001/run-1708453269.json new file mode 100644 index 00000000..e35e1066 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1708453269.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionType": "CREATE2", + "contractName": "ECDSASigner", + "contractAddress": "0x5569b550050F6537D9ac3329001be7F4C6659Cb0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9a6bf", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061074e806100206000396000f3fe60806040526004361061003f5760003560e01c806367249d69146100445780637a7c6a4f146100a75780638e0125d2146100d5578063e9b51de5146100e8575b600080fd5b34801561005057600080fd5b5061008a61005f366004610566565b600060208181529381526040808220855292815282812090935282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100b357600080fd5b506100c76100c23660046105eb565b6100fd565b60405190815260200161009e565b6100c76100e33660046105eb565b610261565b6100fb6100f6366004610653565b610345565b005b3360009081526020818152604080832087845282528083206001600160a01b0389811685529252822054168061014e5760405162461bcd60e51b8152600401610145906106ad565b60405180910390fd5b806001600160a01b031661019a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9392505061048e9050565b6001600160a01b0316036101b2576000915050610258565b60006101e3866020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061022986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061048e9050565b9050826001600160a01b0316816001600160a01b0316036102505760009350505050610258565b600193505050505b95945050505050565b3360009081526020818152604080832087845282528083206001600160a01b0389811685529252822054166102a85760405162461bcd60e51b8152600401610145906106ad565b60006102f584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ef925089915061051f9050565b9061048e565b336000908152602081815260408083208a845282528083206001600160a01b038c8116855292529091205491925090811690821603610338576000915050610258565b5060019695505050505050565b3360009081526020818152604080832086845282528083206001600160a01b03888116855292529091205416156103cd5760405162461bcd60e51b815260206004820152602660248201527f45434453415369676e65723a206b65726e656c20616c726561647920726567696044820152651cdd195c995960d21b6064820152608401610145565b601481146104295760405162461bcd60e51b815260206004820152602360248201527f45434453415369676e65723a20696e76616c6964207369676e6572206164647260448201526265737360e81b6064820152608401610145565b600061043860148284866106ef565b61044191610719565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942080546001600160a01b03191660609490941c93909317909255505050565b60405160019083600052602083015160405260408351036104ca57604083015160ff81901c601b016020526001600160ff1b03166060526104f0565b60418351036104eb57606083015160001a60205260408301516060526104f0565b600091505b6020600160806000855afa5191503d61051157638baa579f6000526004601cfd5b600060605260405292915050565b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b80356001600160a01b038116811461056157600080fd5b919050565b60008060006060848603121561057b57600080fd5b6105848461054a565b9250602084013591506105996040850161054a565b90509250925092565b60008083601f8401126105b457600080fd5b50813567ffffffffffffffff8111156105cc57600080fd5b6020830191508360208285010111156105e457600080fd5b9250929050565b60008060008060006080868803121561060357600080fd5b61060c8661054a565b94506020860135935060408601359250606086013567ffffffffffffffff81111561063657600080fd5b610642888289016105a2565b969995985093965092949392505050565b6000806000806060858703121561066957600080fd5b6106728561054a565b935060208501359250604085013567ffffffffffffffff81111561069557600080fd5b6106a1878288016105a2565b95989497509550505050565b60208082526022908201527f45434453415369676e65723a206b65726e656c206e6f74207265676973746572604082015261195960f21b606082015260800190565b600080858511156106ff57600080fd5b8386111561070c57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156107465780818660140360031b1b83161692505b50509291505056", + "nonce": "0x1dc" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18" + ], + "returns": {}, + "timestamp": 1708453269, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-1708453276.json b/broadcast/DeployModularPermission.s.sol/80001/run-1708453276.json new file mode 100644 index 00000000..bba56a29 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-1708453276.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionType": "CREATE2", + "contractName": "ECDSASigner", + "contractAddress": "0x5569b550050F6537D9ac3329001be7F4C6659Cb0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9a6bf", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061074e806100206000396000f3fe60806040526004361061003f5760003560e01c806367249d69146100445780637a7c6a4f146100a75780638e0125d2146100d5578063e9b51de5146100e8575b600080fd5b34801561005057600080fd5b5061008a61005f366004610566565b600060208181529381526040808220855292815282812090935282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100b357600080fd5b506100c76100c23660046105eb565b6100fd565b60405190815260200161009e565b6100c76100e33660046105eb565b610261565b6100fb6100f6366004610653565b610345565b005b3360009081526020818152604080832087845282528083206001600160a01b0389811685529252822054168061014e5760405162461bcd60e51b8152600401610145906106ad565b60405180910390fd5b806001600160a01b031661019a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9392505061048e9050565b6001600160a01b0316036101b2576000915050610258565b60006101e3866020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061022986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061048e9050565b9050826001600160a01b0316816001600160a01b0316036102505760009350505050610258565b600193505050505b95945050505050565b3360009081526020818152604080832087845282528083206001600160a01b0389811685529252822054166102a85760405162461bcd60e51b8152600401610145906106ad565b60006102f584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ef925089915061051f9050565b9061048e565b336000908152602081815260408083208a845282528083206001600160a01b038c8116855292529091205491925090811690821603610338576000915050610258565b5060019695505050505050565b3360009081526020818152604080832086845282528083206001600160a01b03888116855292529091205416156103cd5760405162461bcd60e51b815260206004820152602660248201527f45434453415369676e65723a206b65726e656c20616c726561647920726567696044820152651cdd195c995960d21b6064820152608401610145565b601481146104295760405162461bcd60e51b815260206004820152602360248201527f45434453415369676e65723a20696e76616c6964207369676e6572206164647260448201526265737360e81b6064820152608401610145565b600061043860148284866106ef565b61044191610719565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942080546001600160a01b03191660609490941c93909317909255505050565b60405160019083600052602083015160405260408351036104ca57604083015160ff81901c601b016020526001600160ff1b03166060526104f0565b60418351036104eb57606083015160001a60205260408301516060526104f0565b600091505b6020600160806000855afa5191503d61051157638baa579f6000526004601cfd5b600060605260405292915050565b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b80356001600160a01b038116811461056157600080fd5b919050565b60008060006060848603121561057b57600080fd5b6105848461054a565b9250602084013591506105996040850161054a565b90509250925092565b60008083601f8401126105b457600080fd5b50813567ffffffffffffffff8111156105cc57600080fd5b6020830191508360208285010111156105e457600080fd5b9250929050565b60008060008060006080868803121561060357600080fd5b61060c8661054a565b94506020860135935060408601359250606086013567ffffffffffffffff81111561063657600080fd5b610642888289016105a2565b969995985093965092949392505050565b6000806000806060858703121561066957600080fd5b6106728561054a565b935060208501359250604085013567ffffffffffffffff81111561069557600080fd5b6106a1878288016105a2565b95989497509550505050565b60208082526022908201527f45434453415369676e65723a206b65726e656c206e6f74207265676973746572604082015261195960f21b606082015260800190565b600080858511156106ff57600080fd5b8386111561070c57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156107465780818660140360031b1b83161692505b50509291505056", + "nonce": "0x1dc" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionIndex": "0x1", + "blockHash": "0xfabf9a00e6b3fd459d70aaccea2ec5114c2f5137ae56e47163240afba173bb69", + "blockNumber": "0x2c024a3", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x836a4", + "gasUsed": "0x6fd3f", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x000000000000000000000000000000000000000000000000002847570687177a000000000000000000000000000000000000000000000000025ed6b677c3badd000000000000000000000000000000000000000000000676b39435257e8230fb00000000000000000000000000000000000000000000000002368f5f713ca363000000000000000000000000000000000000000000000676b3bc7c7c85094875", + "blockHash": "0xfabf9a00e6b3fd459d70aaccea2ec5114c2f5137ae56e47163240afba173bb69", + "blockNumber": "0x2c024a3", + "transactionHash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000020000000000000002000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x5c350d816" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708453276, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/broadcast/DeployModularPermission.s.sol/80001/run-latest.json b/broadcast/DeployModularPermission.s.sol/80001/run-latest.json new file mode 100644 index 00000000..bba56a29 --- /dev/null +++ b/broadcast/DeployModularPermission.s.sol/80001/run-latest.json @@ -0,0 +1,65 @@ +{ + "transactions": [ + { + "hash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionType": "CREATE2", + "contractName": "ECDSASigner", + "contractAddress": "0x5569b550050F6537D9ac3329001be7F4C6659Cb0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xa02cddfa44b8c01b4257f54ac1c43f75801e8175", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9a6bf", + "value": "0x0", + "data": "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061074e806100206000396000f3fe60806040526004361061003f5760003560e01c806367249d69146100445780637a7c6a4f146100a75780638e0125d2146100d5578063e9b51de5146100e8575b600080fd5b34801561005057600080fd5b5061008a61005f366004610566565b600060208181529381526040808220855292815282812090935282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100b357600080fd5b506100c76100c23660046105eb565b6100fd565b60405190815260200161009e565b6100c76100e33660046105eb565b610261565b6100fb6100f6366004610653565b610345565b005b3360009081526020818152604080832087845282528083206001600160a01b0389811685529252822054168061014e5760405162461bcd60e51b8152600401610145906106ad565b60405180910390fd5b806001600160a01b031661019a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9392505061048e9050565b6001600160a01b0316036101b2576000915050610258565b60006101e3866020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061022986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061048e9050565b9050826001600160a01b0316816001600160a01b0316036102505760009350505050610258565b600193505050505b95945050505050565b3360009081526020818152604080832087845282528083206001600160a01b0389811685529252822054166102a85760405162461bcd60e51b8152600401610145906106ad565b60006102f584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ef925089915061051f9050565b9061048e565b336000908152602081815260408083208a845282528083206001600160a01b038c8116855292529091205491925090811690821603610338576000915050610258565b5060019695505050505050565b3360009081526020818152604080832086845282528083206001600160a01b03888116855292529091205416156103cd5760405162461bcd60e51b815260206004820152602660248201527f45434453415369676e65723a206b65726e656c20616c726561647920726567696044820152651cdd195c995960d21b6064820152608401610145565b601481146104295760405162461bcd60e51b815260206004820152602360248201527f45434453415369676e65723a20696e76616c6964207369676e6572206164647260448201526265737360e81b6064820152608401610145565b600061043860148284866106ef565b61044191610719565b336000908152602081815260408083209783529681528682206001600160a01b03989098168252969096529390942080546001600160a01b03191660609490941c93909317909255505050565b60405160019083600052602083015160405260408351036104ca57604083015160ff81901c601b016020526001600160ff1b03166060526104f0565b60418351036104eb57606083015160001a60205260408301516060526104f0565b600091505b6020600160806000855afa5191503d61051157638baa579f6000526004601cfd5b600060605260405292915050565b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b80356001600160a01b038116811461056157600080fd5b919050565b60008060006060848603121561057b57600080fd5b6105848461054a565b9250602084013591506105996040850161054a565b90509250925092565b60008083601f8401126105b457600080fd5b50813567ffffffffffffffff8111156105cc57600080fd5b6020830191508360208285010111156105e457600080fd5b9250929050565b60008060008060006080868803121561060357600080fd5b61060c8661054a565b94506020860135935060408601359250606086013567ffffffffffffffff81111561063657600080fd5b610642888289016105a2565b969995985093965092949392505050565b6000806000806060858703121561066957600080fd5b6106728561054a565b935060208501359250604085013567ffffffffffffffff81111561069557600080fd5b6106a1878288016105a2565b95989497509550505050565b60208082526022908201527f45434453415369676e65723a206b65726e656c206e6f74207265676973746572604082015261195960f21b606082015260800190565b600080858511156106ff57600080fd5b8386111561070c57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156107465780818660140360031b1b83161692505b50509291505056", + "nonce": "0x1dc" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionIndex": "0x1", + "blockHash": "0xfabf9a00e6b3fd459d70aaccea2ec5114c2f5137ae56e47163240afba173bb69", + "blockNumber": "0x2c024a3", + "from": "0xA02CDdFa44B8C01b4257F54ac1c43F75801E8175", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x836a4", + "gasUsed": "0x6fd3f", + "contractAddress": null, + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000a02cddfa44b8c01b4257f54ac1c43f75801e8175", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x000000000000000000000000000000000000000000000000002847570687177a000000000000000000000000000000000000000000000000025ed6b677c3badd000000000000000000000000000000000000000000000676b39435257e8230fb00000000000000000000000000000000000000000000000002368f5f713ca363000000000000000000000000000000000000000000000676b3bc7c7c85094875", + "blockHash": "0xfabf9a00e6b3fd459d70aaccea2ec5114c2f5137ae56e47163240afba173bb69", + "blockNumber": "0x2c024a3", + "transactionHash": "0xb43feb372e43cfdeb632df85d5996b631baf9bd6a07747beafbdb79b6e14ba18", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000020000000000000002000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000020000000080000040000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000008000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000100000", + "type": "0x0", + "effectiveGasPrice": "0x5c350d816" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1708453276, + "chain": 80001, + "multi": false, + "commit": "525f3f4" +} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 9757adcd..1ea2a0fe 100644 --- a/foundry.toml +++ b/foundry.toml @@ -10,7 +10,7 @@ optimize = true via-ir = false runs = 1000000 -[profile.deploy] +[profile.optimized] via-ir = true [fuzz] diff --git a/gas/gas_report.sh b/gas/gas_report.sh index 81f88e9f..e6c4d854 100755 --- a/gas/gas_report.sh +++ b/gas/gas_report.sh @@ -1,3 +1,3 @@ forge build -forge test --gas-report --match-path test/foundry/KernelECDSA.t.sol > gas/ecdsa/report.txt -forge test --gas-report --match-path test/foundry/KernelLiteECDSA.t.sol > gas/ecdsa/report-lite.txt +FOUNDRY_PROFILE=optimized forge test --gas-report --match-path test/foundry/KernelECDSA.t.sol > gas/ecdsa/report.txt +FOUNDRY_PROFILE=optimized forge test --gas-report --match-path test/foundry/KernelLiteECDSA.t.sol > gas/ecdsa/report-lite.txt diff --git a/index.ts b/index.ts deleted file mode 100644 index c9f6f047..00000000 --- a/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './types' diff --git a/lib/p256-verifier b/lib/p256-verifier new file mode 160000 index 00000000..29475ae3 --- /dev/null +++ b/lib/p256-verifier @@ -0,0 +1 @@ +Subproject commit 29475ae300ec95d98d5c7cc34c094846f0aa2dcd diff --git a/remappings.txt b/remappings.txt index 55b13aad..db0b91c6 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,4 +1,5 @@ ds-test/=lib/forge-std/lib/ds-test/src/ forge-std/=lib/forge-std/src/ solady/=lib/solady/src/ +I4337/=lib/I4337/src/ FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/ \ No newline at end of file diff --git a/script/DeployModularPermission.s.sol b/script/DeployModularPermission.s.sol new file mode 100644 index 00000000..839d909d --- /dev/null +++ b/script/DeployModularPermission.s.sol @@ -0,0 +1,74 @@ +pragma solidity ^0.8.0; + +import "src/validator/modularPermission/ModularPermissionValidator.sol"; +import "src/validator/modularPermission/signers/ECDSASigner.sol"; +import "src/validator/modularPermission/policies/GasPolicy.sol"; +import "src/validator/modularPermission/policies/SignaturePolicy.sol"; +import "src/validator/modularPermission/policies/SudoPolicy.sol"; +import {MerklePolicy} from "src/validator/modularPermission/policies/MerklePolicy.sol"; +import "forge-std/Script.sol"; +import "forge-std/console.sol"; + +contract DeployModularPermission is Script { + address constant EXPECTED_MODULAR_PERMISSION_ADDRESS = 0xfdDE9a26b6c3B7ca4b52C5f010d5B9Fb67e09E5A; + address constant EXPECTED_ECDSA_SIGNER_ADDRESS = 0x5569b550050F6537D9ac3329001be7F4C6659Cb0; + address constant EXPECTED_GAS_POLICY_ADDRESS = 0x62868E950Efbb336DCFf033598Ee5E602f0a93cD; + address constant EXPECTED_MERKLE_POLICY_ADDRESS = 0xb808D75B5ACf6B5513eb816d3980C733ae6Be468; + address constant EXPECTED_SIGNATURE_POLICY_ADDRESS = 0xdb5F74349Dd2FB2A09eEc2C6A39e77B68ca2852C; + address constant EXPECTED_SUDO_POLICY_ADDRESS = 0x9262C3A894328f9036Aa7a3f0f2cE8CF684ad20f; + + function run() public { + uint256 key = vm.envUint("TESTNET_DEPLOYER_PRIVATE_KEY"); + vm.startBroadcast(key); + + if (EXPECTED_MODULAR_PERMISSION_ADDRESS.code.length == 0) { + console.log("deploying ModularPermissionValidator"); + ModularPermissionValidator validator = new ModularPermissionValidator{salt: 0}(); + console.log("validator address: %s", address(validator)); + } else { + console.log("validator address: %s", address(EXPECTED_MODULAR_PERMISSION_ADDRESS)); + } + + if (EXPECTED_ECDSA_SIGNER_ADDRESS.code.length == 0) { + console.log("deploying ECDSASigner"); + ECDSASigner ecdsaSigner = new ECDSASigner{salt: 0}(); + console.log("ecdsaSigner address: %s", address(ecdsaSigner)); + } else { + console.log("ecdsaSigner address: %s", address(EXPECTED_ECDSA_SIGNER_ADDRESS)); + } + + if (EXPECTED_GAS_POLICY_ADDRESS.code.length == 0) { + console.log("deploying GasPolicy"); + GasPolicy gasPolicy = new GasPolicy{salt: 0}(); + console.log("gasPolicy address: %s", address(gasPolicy)); + } else { + console.log("gasPolicy address: %s", address(EXPECTED_GAS_POLICY_ADDRESS)); + } + + if (EXPECTED_MERKLE_POLICY_ADDRESS.code.length == 0) { + console.log("deploying MerklePolicy"); + MerklePolicy merklePolicy = new MerklePolicy{salt: 0}(); + console.log("merklePolicy address: %s", address(merklePolicy)); + } else { + console.log("merklePolicy address: %s", address(EXPECTED_MERKLE_POLICY_ADDRESS)); + } + + if (EXPECTED_SIGNATURE_POLICY_ADDRESS.code.length == 0) { + console.log("deploying SignaturePolicy"); + SignaturePolicy signturePolicy = new SignaturePolicy{salt: 0}(); + console.log("signturePolicy address: %s", address(signturePolicy)); + } else { + console.log("signturePolicy address: %s", address(EXPECTED_SIGNATURE_POLICY_ADDRESS)); + } + + if (EXPECTED_SUDO_POLICY_ADDRESS.code.length == 0) { + console.log("deploying SudoPolicy"); + SudoPolicy sudoPolicy = new SudoPolicy{salt: 0}(); + console.log("sudoPolicy address: %s", address(sudoPolicy)); + } else { + console.log("sudoPolicy address: %s", address(EXPECTED_SUDO_POLICY_ADDRESS)); + } + + vm.stopBroadcast(); + } +} diff --git a/script/postpack-contracts-package.sh b/script/postpack-contracts-package.sh deleted file mode 100755 index b034efc6..00000000 --- a/script/postpack-contracts-package.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -xe -#echo postpack for "contracts" package -rm -rf artifacts-selected types dist - diff --git a/script/prepack-contracts-package.sh b/script/prepack-contracts-package.sh deleted file mode 100755 index 2d46f0fc..00000000 --- a/script/prepack-contracts-package.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -xe -#echo prepack for "contracts" package - -npx hardhat clean -npx hardhat compile - - -rm -rf artifacts-selected types dist - -mkdir -p artifacts-selected -cp `find ./artifacts/src ./artifacts/lib -type f | grep -v -E 'Test|dbg|bls|IOracle'` artifacts-selected -npx typechain --target ethers-v5 --out-dir types artifacts-selected/** -npx tsc index.ts -d --outDir dist diff --git a/src/Kernel.sol b/src/Kernel.sol index 890214c1..f2e7c2ba 100644 --- a/src/Kernel.sol +++ b/src/Kernel.sol @@ -31,7 +31,7 @@ contract Kernel is EIP712, Compatibility, KernelStorage { bytes32 internal constant EIP712_DOMAIN_TYPEHASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f; - /// @dev Current kernel name and version, todo: Need to expose getter for this variables? + /// @dev Current kernel name and version string public constant name = KERNEL_NAME; string public constant version = KERNEL_VERSION; @@ -246,7 +246,7 @@ contract Kernel is EIP712, Compatibility, KernelStorage { ) ); validationData = _intersectValidationData( - _validateSignature(enableDigest, signature[cursor:cursor + length]), + _validateSignature(address(this), enableDigest, enableDigest, signature[cursor:cursor + length]), ValidationData.wrap( uint256(bytes32(signature[4:36])) & 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 @@ -271,7 +271,7 @@ contract Kernel is EIP712, Compatibility, KernelStorage { /// @param hash The hash of the data that was signed /// @param signature The signature to be validated function validateSignature(bytes32 hash, bytes calldata signature) public view returns (ValidationData) { - return _validateSignature(hash, signature); + return _validateSignature(msg.sender, hash, hash, signature); } /// @dev Get the current name & version of the kernel, used for the EIP-712 domain separator @@ -306,7 +306,7 @@ contract Kernel is EIP712, Compatibility, KernelStorage { // Recreate the signed message hash with the correct domain separator bytes32 signedMessageHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, hash)); - ValidationData validationData = validateSignature(signedMessageHash, signature); + ValidationData validationData = _validateSignature(msg.sender, signedMessageHash, hash, signature); (ValidAfter validAfter, ValidUntil validUntil, address result) = parseValidationData(validationData); // Check if the signature is valid within the specified time frame and the result is successful @@ -324,7 +324,7 @@ contract Kernel is EIP712, Compatibility, KernelStorage { /// @dev Check if the current caller is authorized or no to perform the call /// @return True if the caller is authorized, otherwise false - function _checkCaller() internal view returns (bool) { + function _checkCaller() internal returns (bool) { if (_validCaller(msg.sender, msg.data)) { return true; } @@ -366,7 +366,7 @@ contract Kernel is EIP712, Compatibility, KernelStorage { /// @param _hash The hash of the data that was signed /// @param _signature The signature to be validated /// @return The magic value 0x1626ba7e if the signature is valid, otherwise returns 0xffffffff. - function _validateSignature(bytes32 _hash, bytes calldata _signature) + function _validateSignature(address _requestor, bytes32 _hash, bytes32 _rawHash, bytes calldata _signature) internal view virtual @@ -376,14 +376,23 @@ contract Kernel is EIP712, Compatibility, KernelStorage { assembly { validator := shr(80, sload(KERNEL_STORAGE_SLOT_1)) } - return IKernelValidator(validator).validateSignature(_hash, _signature); + // 20 bytes added at the end of the signature to store the address of the caller + (bool success, bytes memory res) = validator.staticcall( + abi.encodePacked( + abi.encodeWithSelector(IKernelValidator.validateSignature.selector, _hash, _signature), + _rawHash, + _requestor + ) + ); + require(success, "Kernel::_validateSignature: failed to validate signature"); + return abi.decode(res, (ValidationData)); } /// @dev Check if the given caller is valid for the given data /// @param _caller The caller to be checked /// @param _data The data to be checked /// @return True if the caller is valid, otherwise false - function _validCaller(address _caller, bytes calldata _data) internal view virtual returns (bool) { + function _validCaller(address _caller, bytes calldata _data) internal virtual returns (bool) { address validator; assembly { // Load the validator from the storage slot diff --git a/src/common/Types.sol b/src/common/Types.sol index 027c96c7..81ef36f4 100644 --- a/src/common/Types.sol +++ b/src/common/Types.sol @@ -12,6 +12,16 @@ function packValidationData(ValidAfter validAfter, ValidUntil validUntil) pure r ); } +function packValidationData(address aggregator, ValidAfter validAfter, ValidUntil validUntil) + pure + returns (ValidationData) +{ + return ValidationData.wrap( + uint256(ValidAfter.unwrap(validAfter)) << 208 | uint256(ValidUntil.unwrap(validUntil)) << 160 + | uint160(aggregator) + ); +} + function parseValidationData(ValidationData validationData) pure returns (ValidAfter validAfter, ValidUntil validUntil, address result) diff --git a/src/interfaces/IKernelValidator.sol b/src/interfaces/IKernelValidator.sol index 4544c92b..df7e0db0 100644 --- a/src/interfaces/IKernelValidator.sol +++ b/src/interfaces/IKernelValidator.sol @@ -18,7 +18,7 @@ interface IKernelValidator { function validateSignature(bytes32 hash, bytes calldata signature) external view returns (ValidationData); - function validCaller(address caller, bytes calldata data) external view returns (bool); + function validCaller(address caller, bytes calldata data) external payable returns (bool); } // 3 modes diff --git a/src/lite/KernelLiteECDSA.sol b/src/lite/KernelLiteECDSA.sol index 4f3a1a6f..ee42efe1 100644 --- a/src/lite/KernelLiteECDSA.sol +++ b/src/lite/KernelLiteECDSA.sol @@ -70,7 +70,7 @@ contract KernelLiteECDSA is Kernel { } /// @dev Validate a signature - function _validateSignature(bytes32 _hash, bytes calldata _signature) + function _validateSignature(address, /*_requestor*/ bytes32 _hash, bytes32, /*_rawHash*/ bytes calldata _signature) internal view override diff --git a/src/mock/TestValidator.sol b/src/mock/TestValidator.sol index dad5d27e..48cb5f32 100644 --- a/src/mock/TestValidator.sol +++ b/src/mock/TestValidator.sol @@ -49,7 +49,7 @@ contract TestValidator is IKernelValidator { emit TestDisable(_data); } - function validCaller(address _caller, bytes calldata) external view override returns (bool) { + function validCaller(address _caller, bytes calldata) external payable override returns (bool) { return _caller == caller[msg.sender]; } } diff --git a/src/utils/KernelHelper.sol b/src/utils/KernelHelper.sol index c3d0fe3e..6c6d3e47 100644 --- a/src/utils/KernelHelper.sol +++ b/src/utils/KernelHelper.sol @@ -9,12 +9,21 @@ function _intersectValidationData(ValidationData a, ValidationData b) pure retur // xor(a,b) == shows only matching bits // and(xor(a,b), 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff) == filters out the validAfter and validUntil bits // if the result is not zero, then aggregator part is not matching - switch iszero(and(xor(a, b), 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff)) + // validCase : + // a == 0 || b == 0 || xor(a,b) == 0 + // invalidCase : + // a mul b != 0 && xor(a,b) != 0 + let sum := shl(96, add(a, b)) + switch or( + iszero(and(xor(a, b), 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff)), + or(eq(sum, shl(96, a)), eq(sum, shl(96, b))) + ) case 1 { + validationData := and(or(a, b), 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff) // validAfter - let a_vd := and(0xffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff, a) - let b_vd := and(0xffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff, b) - validationData := xor(a_vd, mul(xor(a_vd, b_vd), gt(b_vd, a_vd))) + let a_vd := and(0xffffffffffff0000000000000000000000000000000000000000000000000000, a) + let b_vd := and(0xffffffffffff0000000000000000000000000000000000000000000000000000, b) + validationData := or(validationData, xor(a_vd, mul(xor(a_vd, b_vd), gt(b_vd, a_vd)))) // validUntil a_vd := and(0x000000000000ffffffffffff0000000000000000000000000000000000000000, a) if iszero(a_vd) { a_vd := 0x000000000000ffffffffffff0000000000000000000000000000000000000000 } diff --git a/src/utils/KernelTestBase.sol b/src/utils/KernelTestBase.sol index 8411c6bc..6c48b09f 100644 --- a/src/utils/KernelTestBase.sol +++ b/src/utils/KernelTestBase.sol @@ -205,14 +205,18 @@ abstract contract KernelTestBase is Test { ) ); bytes memory sig = signHash(digest); + vm.startPrank(makeAddr("app")); assertEq(kernel.isValidSignature(hash, sig), Kernel.isValidSignature.selector); assertEq(kernel2.isValidSignature(hash, sig), bytes4(0xffffffff)); + vm.stopPrank(); } function test_fail_validate_wrongsignature() external virtual { bytes32 hash = keccak256(abi.encodePacked("hello world")); bytes memory sig = getWrongSignature(hash); + vm.startPrank(makeAddr("app")); assertEq(kernel.isValidSignature(hash, sig), bytes4(0xffffffff)); + vm.stopPrank(); } function test_fail_validate_not_activate() external virtual { @@ -225,12 +229,14 @@ abstract contract KernelTestBase is Test { vm.warp(100000); + vm.startPrank(makeAddr("app")); bytes32 hash = keccak256(abi.encodePacked("hello world")); assertEq(kernel.isValidSignature(hash, ""), bytes4(0xffffffff)); newDefaultValidator.setData(true, uint48(block.timestamp + 1000), uint48(0)); assertEq(kernel.isValidSignature(hash, ""), bytes4(0xffffffff)); newDefaultValidator.setData(true, uint48(0), uint48(block.timestamp - 1000)); assertEq(kernel.isValidSignature(hash, ""), bytes4(0xffffffff)); + vm.stopPrank(); } function test_should_emit_event_on_receive() external { diff --git a/src/validator/ECDSATypedValidator.sol b/src/validator/ECDSATypedValidator.sol index f2dea0c3..cb23106c 100644 --- a/src/validator/ECDSATypedValidator.sol +++ b/src/validator/ECDSATypedValidator.sol @@ -110,7 +110,7 @@ contract ECDSATypedValidator is IKernelValidator, EIP712 { } /// @dev Check if the caller is a valid signer for this kernel account - function validCaller(address _caller, bytes calldata) external view override returns (bool) { + function validCaller(address _caller, bytes calldata) external payable override returns (bool) { return ecdsaValidatorStorage[msg.sender].owner == _caller; } diff --git a/src/validator/ECDSAValidator.sol b/src/validator/ECDSAValidator.sol index 9eeabf6e..131b9ba1 100644 --- a/src/validator/ECDSAValidator.sol +++ b/src/validator/ECDSAValidator.sol @@ -57,7 +57,7 @@ contract ECDSAValidator is IKernelValidator { return ValidationData.wrap(0); } - function validCaller(address _caller, bytes calldata) external view override returns (bool) { + function validCaller(address _caller, bytes calldata) external payable override returns (bool) { return ecdsaValidatorStorage[msg.sender].owner == _caller; } } diff --git a/src/validator/ERC165SessionKeyValidator.sol b/src/validator/ERC165SessionKeyValidator.sol index ecb56c45..bd29f6f5 100644 --- a/src/validator/ERC165SessionKeyValidator.sol +++ b/src/validator/ERC165SessionKeyValidator.sol @@ -62,7 +62,7 @@ contract ERC165SessionKeyValidator is IKernelValidator { return packValidationData(sessionKey.validAfter, sessionKey.validUntil); } - function validCaller(address, bytes calldata) external pure override returns (bool) { + function validCaller(address, bytes calldata) external payable override returns (bool) { revert NotImplemented(); } } diff --git a/src/validator/KillSwitchValidator.sol b/src/validator/KillSwitchValidator.sol index 7df15d91..70f1d816 100644 --- a/src/validator/KillSwitchValidator.sol +++ b/src/validator/KillSwitchValidator.sol @@ -79,7 +79,7 @@ contract KillSwitchValidator is IKernelValidator { } } - function validCaller(address, bytes calldata) external pure override returns (bool) { + function validCaller(address, bytes calldata) external payable override returns (bool) { revert NotImplemented(); } } diff --git a/src/validator/SessionKeyValidator.sol b/src/validator/SessionKeyValidator.sol index 8021a452..7b7fc60d 100644 --- a/src/validator/SessionKeyValidator.sol +++ b/src/validator/SessionKeyValidator.sol @@ -32,7 +32,9 @@ contract SessionKeyValidator is IKernelValidator { function invalidateNonce(uint128 nonce) public { require(nonce > nonces[msg.sender].invalidNonce, "SessionKeyValidator: invalid nonce"); nonces[msg.sender].invalidNonce = nonce; - nonces[msg.sender].lastNonce = nonce; + if (nonces[msg.sender].lastNonce < nonce) { + nonces[msg.sender].lastNonce = nonce; + } } function disable(bytes calldata _data) external payable { @@ -299,7 +301,7 @@ contract SessionKeyValidator is IKernelValidator { return true; } - function validCaller(address, bytes calldata) external pure returns (bool) { + function validCaller(address, bytes calldata) external payable returns (bool) { revert NotImplemented(); } diff --git a/src/validator/WeightedECDSAValidator.sol b/src/validator/WeightedECDSAValidator.sol index 345eed2c..d495b945 100644 --- a/src/validator/WeightedECDSAValidator.sol +++ b/src/validator/WeightedECDSAValidator.sol @@ -250,7 +250,7 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { passed = approvals >= strg.threshold; } - function validCaller(address, bytes calldata) external pure override returns (bool) { + function validCaller(address, bytes calldata) external payable override returns (bool) { return false; } diff --git a/src/validator/modularPermission/IPolicy.sol b/src/validator/modularPermission/IPolicy.sol new file mode 100644 index 00000000..a57b8148 --- /dev/null +++ b/src/validator/modularPermission/IPolicy.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.8.0; + +import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; +import {UserOperation} from "I4337/interfaces/UserOperation.sol"; + +interface IPolicy { + function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) external payable; + function checkUserOpPolicy( + address kernel, + bytes32 permissionId, + UserOperation calldata userOp, + bytes calldata proofAndSig + ) external payable returns (ValidationData); + function validateSignature( + address kernel, + address caller, + bytes32 permissionId, + bytes32 messageHash, + bytes32 rawHash, + bytes calldata signature + ) external view returns (ValidationData); +} diff --git a/src/validator/modularPermission/ISigner.sol b/src/validator/modularPermission/ISigner.sol new file mode 100644 index 00000000..885cc8ed --- /dev/null +++ b/src/validator/modularPermission/ISigner.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.8.0; + +import {ValidationData} from "src/common/Types.sol"; +import {ValidAfter, ValidUntil, packValidationData} from "src/common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; + +interface ISigner { + function registerSigner(address kernel, bytes32 permissionId, bytes calldata signerData) external payable; + function validateUserOp(address kernel, bytes32 permissionId, bytes32 userOpHash, bytes calldata signature) + external + payable + returns (ValidationData); + function validateSignature(address kernel, bytes32 permissionId, bytes32 messageHash, bytes calldata signature) + external + view + returns (ValidationData); +} diff --git a/src/validator/modularPermission/ModularPermissionValidator.sol b/src/validator/modularPermission/ModularPermissionValidator.sol new file mode 100644 index 00000000..7602b6c2 --- /dev/null +++ b/src/validator/modularPermission/ModularPermissionValidator.sol @@ -0,0 +1,280 @@ +pragma solidity ^0.8.0; + +import {UserOperation} from "I4337/interfaces/UserOperation.sol"; +import {ValidationData, ValidAfter, ValidUntil} from "src/common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; +import {IKernelValidator} from "src/interfaces/IKernelValidator.sol"; +import {ISigner} from "./ISigner.sol"; +import {IPolicy} from "./IPolicy.sol"; +import {_intersectValidationData} from "src/utils/KernelHelper.sol"; +import {PolicyConfig, PolicyConfigLib, toFlag, MAX_FLAG} from "./PolicyConfig.sol"; +import "forge-std/console.sol"; + +struct Permission { + uint128 nonce; + bytes12 flag; // flag represents what permission can do + ISigner signer; + PolicyConfig firstPolicy; + ValidAfter validAfter; + ValidUntil validUntil; +} + +struct Nonce { + uint128 lastNonce; + uint128 revoked; +} + +/// @title ModularPermissionValidator +/// @notice Validator that allows to register and revoke permissions +/// @dev modular architecture to allow composable permission system +contract ModularPermissionValidator is IKernelValidator { + mapping(address => bytes32) public priorityPermission; + mapping(bytes32 permissionId => mapping(address kernel => Permission)) public permissions; + mapping(bytes32 permissionId => mapping(PolicyConfig policy => mapping(address kernel => PolicyConfig))) public + nextPolicy; + mapping(address kernel => Nonce) public nonces; + + event PermissionRegistered(address kernel, bytes32 permissionId); + event PermissionRevoked(address kernel, bytes32 permissionId); + event NonceRevoked(address kernel, uint256 nonce); + + function getPermissionId( + bytes12 flag, + ISigner signer, + ValidAfter validAfter, + ValidUntil validUntil, + PolicyConfig[] calldata _policyConfig, + bytes calldata signerData, + bytes[] calldata policyData + ) public pure returns (bytes32) { + return keccak256( + abi.encode( + flag, + signer, + ValidAfter.unwrap(validAfter), + ValidUntil.unwrap(validUntil), + _policyConfig, + signerData, + policyData + ) + ); + } + + function parseData(bytes calldata data) + public + pure + returns ( + uint128 nonce, + bytes12 flag, + ISigner signer, + ValidAfter validAfter, + ValidUntil validUntil, + PolicyConfig[] calldata policies, + bytes calldata signerData, + bytes[] calldata policyData + ) + { + nonce = uint128(bytes16(data[0:16])); + flag = bytes12(data[16:28]); + validAfter = ValidAfter.wrap(uint48(bytes6(data[28:34]))); + validUntil = ValidUntil.wrap(uint48(bytes6(data[34:40]))); + signer = ISigner(address(bytes20(data[40:60]))); + assembly { + let offset := add(data.offset, 60) + policies.offset := add(add(offset, 32), calldataload(offset)) + policies.length := calldataload(sub(policies.offset, 32)) + signerData.offset := add(add(offset, 32), calldataload(add(offset, 32))) + signerData.length := calldataload(sub(signerData.offset, 32)) + policyData.offset := add(add(offset, 32), calldataload(add(offset, 64))) + policyData.length := calldataload(sub(policyData.offset, 32)) + } + } + + function enable(bytes calldata data) external payable { + ( + uint128 nonce, + bytes12 flag, + ISigner signer, + ValidAfter validAfter, + ValidUntil validUntil, + PolicyConfig[] calldata policies, + bytes calldata signerData, + bytes[] calldata policyData + ) = parseData(data); + registerPermission(nonce, flag, signer, validAfter, validUntil, policies, signerData, policyData); + } + + function registerPermission( + uint128 nonce, + bytes12 flag, + ISigner signer, + ValidAfter validAfter, + ValidUntil validUntil, + PolicyConfig[] calldata policy, + bytes calldata signerData, + bytes[] calldata policyData + ) public payable { + require(flag != toFlag(0), "flag should not be empty"); + require( + nonce == nonces[msg.sender].lastNonce || nonce == nonces[msg.sender].lastNonce + 1, "nonce should be next" + ); + nonces[msg.sender].lastNonce++; + bytes32 permissionId = getPermissionId(flag, signer, validAfter, validUntil, policy, signerData, policyData); + if (flag == MAX_FLAG) { + priorityPermission[msg.sender] = permissionId; + } + + bytes12 maxFlag = flag; + for (uint256 i = 0; i < policy.length; i++) { + //TODO make sure address of the policy is sorted + PolicyConfigLib.getAddress(policy[i]).registerPolicy(msg.sender, permissionId, policyData[i]); + // NOTE: flag for policy is inverted version of flag for permission; + bytes12 currentFlag = PolicyConfigLib.getFlags(policy[i]); + // turn off flags that are used, + // meaning that remaining maxFlag will indicate the permissions that are not used on this permission + maxFlag = currentFlag & maxFlag; + } + signer.registerSigner(msg.sender, permissionId, signerData); + + PolicyConfig firstPolicy = policy[0]; // NOTE : policy should not be empty array + require(maxFlag == bytes12(0), "error : permission flag exceeds policy flag"); + permissions[permissionId][msg.sender] = Permission(nonce, flag, signer, firstPolicy, validAfter, validUntil); + for (uint256 i = 1; i < policy.length; i++) { + nextPolicy[permissionId][policy[i - 1]][msg.sender] = policy[i]; + } + emit PermissionRegistered(msg.sender, permissionId); + } + + function disable(bytes calldata data) external payable { + if (data.length == 32) { + revokePermission(bytes32(data)); + } else { + revokePermission(uint128(bytes16(data))); + } + } + + function revokePermission(bytes32 permissionId) public payable { + permissions[permissionId][msg.sender].flag = toFlag(0); // NOTE: making flag == 0 makes it invalid + emit PermissionRevoked(msg.sender, permissionId); + } + + function revokePermission(uint128 nonce) public payable { + nonces[msg.sender].revoked = nonce; + emit NonceRevoked(msg.sender, nonce); + } + + function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) + external + payable + returns (ValidationData validationData) + { + require(_userOp.sender == msg.sender, "sender must be msg.sender"); + bytes32 permissionId = bytes32(_userOp.signature[0:32]); + if ( + permissions[permissionId][msg.sender].flag & toFlag(1) == toFlag(0) + || nonces[msg.sender].revoked > permissions[permissionId][msg.sender].nonce + ) { + return SIG_VALIDATION_FAILED; + } + Permission memory permission = permissions[permissionId][msg.sender]; + PolicyConfig policy = permission.firstPolicy; + uint256 cursor = 32; + while (address(PolicyConfigLib.getAddress(policy)) != address(0)) { + if (PolicyConfigLib.skipOnValidateUserOp(policy)) { + policy = nextPolicy[permissionId][policy][msg.sender]; + continue; + } + bytes calldata policyData; + if ( + _userOp.signature.length >= cursor + 52 + && address(bytes20(_userOp.signature[cursor:cursor + 20])) + == address(PolicyConfigLib.getAddress(policy)) + ) { + // only when policy address is same as the one in signature + uint256 length = uint256(bytes32(_userOp.signature[cursor + 20:cursor + 52])); + require(_userOp.signature.length >= cursor + 52 + length, "policyData length exceeds signature length"); + policyData = _userOp.signature[cursor + 52:cursor + 52 + length]; // [policyAddress, policyDataLength, policyData] + cursor += 52 + length; + } else { + policyData = _userOp.signature[cursor:cursor]; + } + ValidationData policyValidation = + PolicyConfigLib.getAddress(policy).checkUserOpPolicy(msg.sender, permissionId, _userOp, policyData); + validationData = _intersectValidationData(validationData, policyValidation); + policy = nextPolicy[permissionId][policy][msg.sender]; + } + ValidationData signatureValidation = + permission.signer.validateUserOp(msg.sender, permissionId, _userOpHash, _userOp.signature[cursor:]); + validationData = _intersectValidationData(validationData, signatureValidation); + } + + function validCaller(address caller, bytes calldata data) external payable override returns (bool) { + revert("not implemented"); + } + + struct ValidationSigMemory { + address caller; + bytes32 permissionId; + bytes32 rawHash; + uint256 cursor; + PolicyConfig policy; + } + + function validateSignature(bytes32 hash, bytes calldata signature) + external + view + override + returns (ValidationData validationData) + { + ValidationSigMemory memory sigMemory; + sigMemory.permissionId = bytes32(signature[0:32]); + if ( + nonces[msg.sender].revoked > permissions[sigMemory.permissionId][msg.sender].nonce + || permissions[sigMemory.permissionId][msg.sender].flag & toFlag(2) == toFlag(0) + ) { + return SIG_VALIDATION_FAILED; + } + Permission memory permission = permissions[sigMemory.permissionId][msg.sender]; + // signature should be packed with + // (permissionId, [proof || signature]) + // (permissionId, [ (policyAddress) + (policyProof) || signature] + bytes calldata proofAndSignature; //) = abi.decode(signature[32:], (bytes, bytes)); + assembly { + proofAndSignature.offset := add(signature.offset, 32) + proofAndSignature.length := sub(signature.length, 32) + } + + sigMemory.cursor = 0; + sigMemory.policy = permission.firstPolicy; + sigMemory.caller = address(bytes20(msg.data[msg.data.length - 20:])); + sigMemory.rawHash = bytes32(msg.data[msg.data.length - 52:msg.data.length - 20]); + while (address(PolicyConfigLib.getAddress(sigMemory.policy)) != address(0)) { + if (PolicyConfigLib.skipOnValidateSignature(sigMemory.policy)) { + sigMemory.policy = nextPolicy[sigMemory.permissionId][sigMemory.policy][msg.sender]; + continue; + } + bytes calldata policyData; + if ( + address(bytes20(proofAndSignature[sigMemory.cursor:sigMemory.cursor + 20])) + == address(PolicyConfigLib.getAddress(sigMemory.policy)) + ) { + // only when policy address is same as the one in signature + uint256 length = uint256(bytes32(proofAndSignature[sigMemory.cursor + 20:sigMemory.cursor + 52])); + policyData = proofAndSignature[sigMemory.cursor + 52:]; // [policyAddress, policyDataLength, policyData] + sigMemory.cursor += 52 + length; + } else { + policyData = proofAndSignature[sigMemory.cursor:sigMemory.cursor]; + // not move cursor here + } + ValidationData policyValidation = PolicyConfigLib.getAddress(sigMemory.policy).validateSignature( + msg.sender, sigMemory.caller, sigMemory.permissionId, hash, sigMemory.rawHash, policyData + ); + validationData = _intersectValidationData(validationData, policyValidation); + sigMemory.policy = nextPolicy[sigMemory.permissionId][sigMemory.policy][msg.sender]; + } + ValidationData signatureValidation = permission.signer.validateSignature( + msg.sender, sigMemory.permissionId, hash, proofAndSignature[sigMemory.cursor:] + ); + validationData = _intersectValidationData(validationData, signatureValidation); + } +} diff --git a/src/validator/modularPermission/PolicyConfig.sol b/src/validator/modularPermission/PolicyConfig.sol new file mode 100644 index 00000000..8f4f89cc --- /dev/null +++ b/src/validator/modularPermission/PolicyConfig.sol @@ -0,0 +1,67 @@ +pragma solidity ^0.8.0; + +import "./IPolicy.sol"; + +type PolicyConfig is bytes32; + +function toFlag(uint256 x) pure returns (bytes12) { + return bytes12(bytes32(x << 160)); +} + +function toPermissionFlag(uint256 x) pure returns(bytes12) { + bytes12 ret = bytes12(bytes32(x << 160)); + assembly { + ret := not(ret) + } + return ret; +} + +bytes12 constant MAX_FLAG = 0xffffffffffffffffffffffff; +// PolicyData is a 32 bytes array that contains the address of the policy +// [flags(12 bytes), address(20 bytes)] +// flags is 96 bits that contains the following information +// from last to first bit +// 1 bit : not for validatUserOp +// 1 bit : not for validateSignature +// 1 bit : not for validateCaller + +library PolicyConfigLib { + function pack(IPolicy addr, bytes12 flag) internal pure returns (PolicyConfig data) { + assembly { + data := or(addr, flag) + } + } + + function getAddress(PolicyConfig data) internal pure returns (IPolicy policy) { + assembly { + policy := and(data, 0xffffffffffffffffffffffffffffffffffffffff) + } + } + + function getFlags(PolicyConfig data) internal pure returns (bytes12 flags) { + assembly { + flags := shr(160, data) + } + } + + function skipOnValidateUserOp(PolicyConfig data) internal pure returns (bool result) { + assembly { + let flags := shr(160, data) + result := and(flags, 0x1) + } + } + + function skipOnValidateSignature(PolicyConfig data) internal pure returns (bool result) { + assembly { + let flags := shr(161, data) + result := and(flags, 0x1) + } + } + + function skipOnValidateCaller(PolicyConfig data) internal pure returns (bool result) { + assembly { + let flags := shr(162, data) + result := and(flags, 0x1) + } + } +} diff --git a/src/validator/modularPermission/mock/MockPolicy.sol b/src/validator/modularPermission/mock/MockPolicy.sol new file mode 100644 index 00000000..7b3384f2 --- /dev/null +++ b/src/validator/modularPermission/mock/MockPolicy.sol @@ -0,0 +1,49 @@ +pragma solidity ^0.8.0; + +import {UserOperation} from "I4337/interfaces/UserOperation.sol"; +import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; +import {IPolicy} from "../IPolicy.sol"; + +contract MockPolicy is IPolicy { + ValidationData public validationData; + mapping(bytes32 => uint256) public count; + bytes public policyData; + bool public revertOnSignature; + + function mock(uint48 validAfter, uint48 validUntil, bool success, bool revertOnSig) external { + validationData = success + ? packValidationData(ValidAfter.wrap(validAfter), ValidUntil.wrap(validUntil)) + : SIG_VALIDATION_FAILED; + revertOnSignature = revertOnSig; + } + + function registerPolicy(address, bytes32, bytes calldata data) external payable override { + // do nothing + policyData = data; + } + + function checkUserOpPolicy(address, bytes32 permissionId, UserOperation calldata, bytes calldata) + external + payable + override + returns (ValidationData) + { + count[permissionId]++; + return validationData; + } + + function validateSignature( + address kernel, + address caller, + bytes32 permissionId, + bytes32 messageHash, + bytes32 rawHash, + bytes calldata signature + ) external view override returns (ValidationData) { + if (revertOnSignature) { + revert("MockPolicy: signature validation failed"); + } + return validationData; + } +} diff --git a/src/validator/modularPermission/mock/MockRequestor.sol b/src/validator/modularPermission/mock/MockRequestor.sol new file mode 100644 index 00000000..d6b4872a --- /dev/null +++ b/src/validator/modularPermission/mock/MockRequestor.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.8.0; + +interface KernelERC1271 { + function isValidSignature(bytes32 hash, bytes calldata signature) external view returns (bytes4); +} + +contract MockRequestor { + function verifySignature(address kernel, bytes32 hash, bytes calldata signature) external payable returns (bool) { + return KernelERC1271(kernel).isValidSignature(hash, signature) == 0x1626ba7e; + } +} diff --git a/src/validator/modularPermission/mock/MockSigner.sol b/src/validator/modularPermission/mock/MockSigner.sol new file mode 100644 index 00000000..f323b8c2 --- /dev/null +++ b/src/validator/modularPermission/mock/MockSigner.sol @@ -0,0 +1,42 @@ +pragma solidity ^0.8.0; + +import {UserOperation} from "I4337/interfaces/UserOperation.sol"; +import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; +import {ISigner} from "../ISigner.sol"; + +contract MockSigner is ISigner { + ValidationData public validationData; + mapping(bytes32 => uint256) public count; + bytes public signerData; + + function mock(uint48 validAfter, uint48 validUntil, bool success) external { + validationData = success + ? packValidationData(ValidAfter.wrap(validAfter), ValidUntil.wrap(validUntil)) + : SIG_VALIDATION_FAILED; + } + + function registerSigner(address, bytes32, bytes calldata data) external payable override { + // do nothing + signerData = data; + } + + function validateUserOp(address, bytes32 permissionId, bytes32, bytes calldata) + external + payable + override + returns (ValidationData) + { + count[permissionId]++; + return validationData; + } + + function validateSignature(address, bytes32, bytes32, bytes calldata) + external + view + override + returns (ValidationData) + { + return validationData; + } +} diff --git a/src/validator/modularPermission/policies/EIP712Policy.sol b/src/validator/modularPermission/policies/EIP712Policy.sol new file mode 100644 index 00000000..f23836ed --- /dev/null +++ b/src/validator/modularPermission/policies/EIP712Policy.sol @@ -0,0 +1,131 @@ +pragma solidity ^0.8.0; + +import "../IPolicy.sol"; + +// does not support nested parameters, +// only allow checking, +// 1. domain separator +// 2. typeHash +// 3. encodeData => only allows 32 bytes of parameter in encodeData, if you are dealing with dynamic value, you need to pass in the keccak256 hash of the value +struct EncodeDataRule { + uint32 index; + bytes32 value; + ParamRule rule; +} + +struct AllowedEIP712Params { + bytes32 domainSeparator; + bytes32 typeHash; + EncodeDataRule encodeDataRule; +} + +enum ParamRule { + NA, + Equal, + NotEqual, + GreaterThan, + GreaterThanOrEqual, + LessThan, + LessThanOrEqual +} + +contract EIP712Policy is IPolicy { + mapping( + bytes32 permissionId => mapping(address permissionValidator => mapping(address kernel => AllowedEIP712Params)) + ) public eip712Param; + mapping( + bytes32 permissionId + => mapping( + address permissionValidator => mapping(bytes32 encodeData => mapping(address kernel => EncodeDataRule)) + ) + ) public nextEncodeData; + + function registerPolicy(address _kernel, bytes32 _permissionId, bytes calldata _data) external payable override { + bytes32 domainSeparator = bytes32(_data[0:32]); + bytes32 typeHash = bytes32(_data[32:64]); + uint32 index = uint32(bytes4(_data[64:68])); + ParamRule rule = ParamRule(uint8(bytes1(_data[68]))); + bytes32 encodeData = bytes32(_data[69:101]); + uint256 cursor = 101; + EncodeDataRule memory encodeDataRule = EncodeDataRule(index, encodeData, rule); + eip712Param[_permissionId][msg.sender][_kernel] = AllowedEIP712Params(domainSeparator, typeHash, encodeDataRule); + while (cursor <= _data.length - 37) { + index = uint32(bytes4(_data[cursor:cursor + 4])); + rule = ParamRule(uint8(bytes1(_data[cursor + 4]))); + bytes32 nextEncodeParam = bytes32(_data[cursor + 5:cursor + 37]); + nextEncodeData[_permissionId][msg.sender][encodeData][_kernel] = + EncodeDataRule(index, nextEncodeParam, rule); + cursor += 37; + } + } + + function checkUserOpPolicy( + address _kernel, + bytes32 _permissionId, + UserOperation calldata _userOp, + bytes calldata _policyProof + ) external payable override returns (ValidationData) { + // do nothing on userOp validation + return ValidationData.wrap(0); + } + + function validateSignature( + address _kernel, + address _caller, + bytes32 _permissionId, + bytes32 _messageHash, + bytes32 _rawHash, + bytes calldata _signature + ) external view override returns (ValidationData) { + AllowedEIP712Params memory allowedEIP712Params = eip712Param[_permissionId][msg.sender][_kernel]; + bytes32[] memory encodedData = new bytes32[](uint32(bytes4(_signature[64:68]))); + uint256 cursor = 68; + for (uint32 i = 0; i < encodedData.length; i++) { + encodedData[i] = bytes32(_signature[cursor:cursor + 32]); + cursor += 32; + } + { + bytes32 domainSeparator = bytes32(_signature[0:32]); + bytes32 typeHash = bytes32(_signature[32:64]); + if ( + allowedEIP712Params.domainSeparator | domainSeparator != domainSeparator + || allowedEIP712Params.typeHash | typeHash != typeHash + ) { + return SIG_VALIDATION_FAILED; + } + bytes32 structHash = keccak256(abi.encodePacked(typeHash, encodedData)); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); + require(digest == _rawHash, "digest != _rawHash"); + } + EncodeDataRule memory encodeDataRule = allowedEIP712Params.encodeDataRule; + while (encodeDataRule.rule != ParamRule.NA) { + if (encodeDataRule.rule == ParamRule.Equal) { + if (encodedData[encodeDataRule.index] != encodeDataRule.value) { + return SIG_VALIDATION_FAILED; + } + } else if (encodeDataRule.rule == ParamRule.NotEqual) { + if (encodedData[encodeDataRule.index] == encodeDataRule.value) { + return SIG_VALIDATION_FAILED; + } + } else if (encodeDataRule.rule == ParamRule.GreaterThan) { + if (encodedData[encodeDataRule.index] <= encodeDataRule.value) { + return SIG_VALIDATION_FAILED; + } + } else if (encodeDataRule.rule == ParamRule.GreaterThanOrEqual) { + if (encodedData[encodeDataRule.index] < encodeDataRule.value) { + return SIG_VALIDATION_FAILED; + } + } else if (encodeDataRule.rule == ParamRule.LessThan) { + if (encodedData[encodeDataRule.index] >= encodeDataRule.value) { + return SIG_VALIDATION_FAILED; + } + } else if (encodeDataRule.rule == ParamRule.LessThanOrEqual) { + if (encodedData[encodeDataRule.index] > encodeDataRule.value) { + return SIG_VALIDATION_FAILED; + } + } + encodeDataRule = nextEncodeData[_permissionId][_caller][encodeDataRule.value][_kernel]; + } + return ValidationData.wrap(0); + } +} diff --git a/src/validator/modularPermission/policies/ExecutePolicy.sol b/src/validator/modularPermission/policies/ExecutePolicy.sol new file mode 100644 index 00000000..4ca7f917 --- /dev/null +++ b/src/validator/modularPermission/policies/ExecutePolicy.sol @@ -0,0 +1,50 @@ +pragma solidity ^0.8.0; + +import "../IPolicy.sol"; + +struct ExecutionConfig { + uint48 interval; + uint48 count; + ValidAfter startAt; +} + +contract ExecutePolicy is IPolicy { + mapping(address permissionValidator => mapping(bytes32 permissionId => mapping(address kernel => ExecutionConfig))) + public executionConfigs; + + function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) + external + payable + override + { + uint48 delay = uint48(bytes6(policyData[0:6])); + uint48 count = uint48(bytes6(policyData[6:12])); + uint48 startAt = uint48(bytes6(policyData[12:18])); + executionConfigs[msg.sender][permissionId][kernel] = ExecutionConfig(delay, count, ValidAfter.wrap(startAt)); + } + + function checkUserOpPolicy(address kernel, bytes32 permissionId, UserOperation calldata, bytes calldata) + external + payable + override + returns (ValidationData) + { + ExecutionConfig memory config = executionConfigs[msg.sender][permissionId][kernel]; + if (config.count == 0) { + return SIG_VALIDATION_FAILED; + } + executionConfigs[msg.sender][permissionId][kernel].count = config.count - 1; + executionConfigs[msg.sender][permissionId][kernel].startAt = + ValidAfter.wrap(ValidAfter.unwrap(config.startAt) + config.interval); + return packValidationData(config.startAt, ValidUntil.wrap(0)); + } + + function validateSignature(address, address, bytes32, bytes32, bytes32, bytes calldata) + external + view + override + returns (ValidationData) + { + return ValidationData.wrap(0); + } +} diff --git a/src/validator/modularPermission/policies/GasPolicy.sol b/src/validator/modularPermission/policies/GasPolicy.sol new file mode 100644 index 00000000..8d0cbeaa --- /dev/null +++ b/src/validator/modularPermission/policies/GasPolicy.sol @@ -0,0 +1,58 @@ +pragma solidity ^0.8.0; + +import {UserOperation} from "I4337/interfaces/UserOperation.sol"; +import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; +import {IPolicy} from "../IPolicy.sol"; + +contract GasPolicy is IPolicy { + struct GasPolicyConfig { + uint128 allowed; + bool enforcePaymaster; + address allowedPaymaster; + } + + mapping(address permissionValidator => mapping(bytes32 permissionId => mapping(address kernel => GasPolicyConfig))) + public gasPolicyConfig; + + function registerPolicy(address kernel, bytes32 permissionId, bytes calldata data) external payable override { + (uint128 allowed, bool enforcePaymaster, address allowedPaymaster) = abi.decode(data, (uint128, bool, address)); + gasPolicyConfig[msg.sender][permissionId][kernel] = GasPolicyConfig(allowed, enforcePaymaster, allowedPaymaster); + } + + function checkUserOpPolicy(address kernel, bytes32 permissionId, UserOperation calldata userOp, bytes calldata) + external + payable + override + returns (ValidationData) + { + uint128 maxAmount = uint128( + (userOp.preVerificationGas + userOp.verificationGasLimit + userOp.callGasLimit) * userOp.maxFeePerGas + ); + if (gasPolicyConfig[msg.sender][permissionId][kernel].enforcePaymaster) { + if ( + gasPolicyConfig[msg.sender][permissionId][kernel].allowedPaymaster != address(0) + && address(bytes20(userOp.paymasterAndData[0:20])) + != gasPolicyConfig[msg.sender][permissionId][kernel].allowedPaymaster + ) { + return SIG_VALIDATION_FAILED; + } + } + if (maxAmount > gasPolicyConfig[msg.sender][permissionId][kernel].allowed) { + return SIG_VALIDATION_FAILED; + } + gasPolicyConfig[msg.sender][permissionId][kernel].allowed -= maxAmount; + return ValidationData.wrap(0); + } + + function validateSignature( + address kernel, + address caller, + bytes32 permissionId, + bytes32 messageHash, + bytes32 rawHash, + bytes calldata signature + ) external view override returns (ValidationData) { + return ValidationData.wrap(0); + } +} diff --git a/src/validator/modularPermission/policies/MerklePolicy.sol b/src/validator/modularPermission/policies/MerklePolicy.sol new file mode 100644 index 00000000..796714a6 --- /dev/null +++ b/src/validator/modularPermission/policies/MerklePolicy.sol @@ -0,0 +1,180 @@ +pragma solidity ^0.8.0; + +import "../IPolicy.sol"; +import {Kernel} from "../../../Kernel.sol"; +import {ParamCondition, Operation} from "../../../common/Enums.sol"; +import {Call} from "../../../common/Structs.sol"; +import {MerkleProofLib} from "solady/utils/MerkleProofLib.sol"; + +struct Permission { + address target; + bytes4 sig; + uint256 valueLimit; + ParamRule[] rules; + Operation operation; +} + +struct ParamRule { + uint256 offset; + ParamCondition condition; + bytes32 param; +} + +contract MerklePolicy is IPolicy { + error MerklePolicyError(uint256 code); // todo: should policy revert instead of returning SIG_VALIDATION_FAILED? + + mapping(address permissionValidator => mapping(bytes32 => mapping(address => bytes32))) public merkleRoot; + + function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) external payable { + bytes32 root = bytes32(policyData[0:32]); + merkleRoot[msg.sender][permissionId][kernel] = root; + } + + function checkUserOpPolicy( + address kernel, + bytes32 permissionId, + UserOperation calldata userOp, + bytes calldata proof + ) external payable returns (ValidationData) { + bytes calldata callData = userOp.callData; + bytes32 root = merkleRoot[msg.sender][permissionId][kernel]; + bytes4 sig = bytes4(callData[0:4]); + if (sig == Kernel.execute.selector || sig == Kernel.executeDelegateCall.selector) { + (Permission calldata permission, bytes32[] calldata merkleProof) = _getPermission(proof); + bool verifyFailed = _verifyParam(root, callData, permission, merkleProof); + if (verifyFailed) { + revert MerklePolicyError(1); // merkle proof verification failed + } + return ValidationData.wrap(0); + } else if (sig == Kernel.executeBatch.selector) { + Permission[] calldata permissions = _getPermissions(proof); + bytes32[][] calldata merkleProof = _getProofs(proof); + bool verifyFailed = _verifyParams(root, callData, permissions, merkleProof); + if (verifyFailed) { + revert MerklePolicyError(1); // merkle proof verification failed + } + return ValidationData.wrap(0); + } else { + revert MerklePolicyError(0); // unknown selector + } + } + + function _verifyParams( + bytes32 root, + bytes calldata callData, + Permission[] calldata _permissions, + bytes32[][] calldata _merkleProof + ) internal pure returns (bool verifyFailed) { + Call[] calldata calls; + assembly { + calls.offset := add(add(callData.offset, 0x24), calldataload(add(callData.offset, 4))) + calls.length := calldataload(add(add(callData.offset, 4), calldataload(add(callData.offset, 4)))) + } + uint256 i = 0; + for (i = 0; i < calls.length; i++) { + Call calldata call = calls[i]; + Permission calldata permission = _permissions[i]; + require( + permission.target == address(0) || call.to == permission.target, "SessionKeyValidator: target mismatch" + ); + require(uint256(bytes32(call.value)) <= permission.valueLimit, "SessionKeyValidator: value limit exceeded"); + require(verifyPermission(call.data, permission), "SessionKeyValidator: permission verification failed"); + if (!MerkleProofLib.verify(_merkleProof[i], root, keccak256(abi.encode(permission)))) { + return true; + } + } + } + + // to parse batch execute permissions + function _getPermissions(bytes calldata _sig) internal pure returns (Permission[] calldata permissions) { + assembly { + permissions.offset := add(add(_sig.offset, 0x20), calldataload(_sig.offset)) + permissions.length := calldataload(add(_sig.offset, calldataload(_sig.offset))) + } + } + + function _getProofs(bytes calldata _sig) internal pure returns (bytes32[][] calldata proofs) { + assembly { + proofs.length := calldataload(add(_sig.offset, calldataload(add(_sig.offset, 0x20)))) + proofs.offset := add(add(_sig.offset, 0x20), calldataload(add(_sig.offset, 0x20))) + } + } + + // to parse single execute permission + function _getPermission(bytes calldata _sig) + internal + pure + returns (Permission calldata permission, bytes32[] calldata merkleProof) + { + assembly { + permission := add(_sig.offset, calldataload(_sig.offset)) + merkleProof.length := calldataload(add(_sig.offset, calldataload(add(_sig.offset, 0x20)))) + merkleProof.offset := add(add(_sig.offset, 0x20), calldataload(add(_sig.offset, 0x20))) + } + } + + function _verifyParam( + bytes32 root, + bytes calldata callData, + Permission calldata _permission, + bytes32[] calldata _merkleProof + ) internal pure returns (bool verifyFailed) { + bool isExecute = bytes4(callData[0:4]) == Kernel.execute.selector; + require( + _permission.target == address(0) || address(bytes20(callData[16:36])) == _permission.target, + "SessionKeyValidator: target mismatch" + ); + if (isExecute) { + require( + uint256(bytes32(callData[36:68])) <= _permission.valueLimit, "SessionKeyValidator: value limit exceeded" + ); + } else { + require(_permission.operation == Operation.DelegateCall, "SessionKeyValidator: operation mismatch"); + } + bytes calldata data; + uint8 dataParamOffset = isExecute ? 0x44 : 0x24; + assembly { + let dataOffset := add(add(callData.offset, 0x04), calldataload(add(callData.offset, dataParamOffset))) + let length := calldataload(dataOffset) + data.offset := add(dataOffset, 32) + data.length := length + } + require(verifyPermission(data, _permission), "SessionKeyValidator: permission verification failed"); + if (!MerkleProofLib.verify(_merkleProof, root, keccak256(abi.encode(_permission)))) { + return true; + } + } + + function verifyPermission(bytes calldata data, Permission calldata permission) internal pure returns (bool) { + if (bytes4(data[0:4]) != permission.sig) return false; + for (uint256 i = 0; i < permission.rules.length; i++) { + ParamRule calldata rule = permission.rules[i]; + bytes32 param = bytes32(data[4 + rule.offset:4 + rule.offset + 32]); + if (rule.condition == ParamCondition.EQUAL && param != rule.param) { + return false; + } else if (rule.condition == ParamCondition.GREATER_THAN && param <= rule.param) { + return false; + } else if (rule.condition == ParamCondition.LESS_THAN && param >= rule.param) { + return false; + } else if (rule.condition == ParamCondition.GREATER_THAN_OR_EQUAL && param < rule.param) { + return false; + } else if (rule.condition == ParamCondition.LESS_THAN_OR_EQUAL && param > rule.param) { + return false; + } else if (rule.condition == ParamCondition.NOT_EQUAL && param == rule.param) { + return false; + } + } + return true; + } + + function validateSignature( + address kernel, + address caller, + bytes32 permissionId, + bytes32 messageHash, + bytes32 rawHash, + bytes calldata signature + ) external view returns (ValidationData) { + return ValidationData.wrap(0); + } +} diff --git a/src/validator/modularPermission/policies/SignaturePolicy.sol b/src/validator/modularPermission/policies/SignaturePolicy.sol new file mode 100644 index 00000000..c4f1b16c --- /dev/null +++ b/src/validator/modularPermission/policies/SignaturePolicy.sol @@ -0,0 +1,45 @@ +pragma solidity ^0.8.0; + +import "../IPolicy.sol"; + +contract SignaturePolicy is IPolicy { + mapping( + address permissionValidator + => mapping(bytes32 permissionId => mapping(address requestor => mapping(address kernel => bool))) + ) public allowedRequestor; + + function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) external payable { + address[] memory callers = abi.decode(policyData, (address[])); + for (uint256 i = 0; i < callers.length; i++) { + if (callers[i] == address(0)) { + allowedRequestor[msg.sender][permissionId][kernel][kernel] = true; + } else { + allowedRequestor[msg.sender][permissionId][callers[i]][kernel] = true; + } + } + } + + function checkUserOpPolicy( + address kernel, + bytes32 permissionId, + UserOperation calldata userOp, + bytes calldata policyProof + ) external payable override returns (ValidationData) { + // do nothing on userOp validation + return ValidationData.wrap(0); + } + + function validateSignature( + address kernel, + address caller, + bytes32 permissionId, + bytes32 messageHash, + bytes32 rawHash, + bytes calldata signature + ) external view override returns (ValidationData) { + if (allowedRequestor[msg.sender][permissionId][caller][kernel]) { + return ValidationData.wrap(0); + } + return SIG_VALIDATION_FAILED; + } +} diff --git a/src/validator/modularPermission/policies/SudoPolicy.sol b/src/validator/modularPermission/policies/SudoPolicy.sol new file mode 100644 index 00000000..f3125de6 --- /dev/null +++ b/src/validator/modularPermission/policies/SudoPolicy.sol @@ -0,0 +1,29 @@ +pragma solidity ^0.8.0; + +import {UserOperation} from "I4337/interfaces/UserOperation.sol"; +import {ValidationData} from "src/common/Types.sol"; +import {IPolicy} from "../IPolicy.sol"; + +contract SudoPolicy is IPolicy { + function registerPolicy(address kernel, bytes32 permissionId, bytes calldata data) external payable override {} + + function checkUserOpPolicy(address kernel, bytes32 permissionId, UserOperation calldata userOp, bytes calldata) + external + payable + override + returns (ValidationData) + { + return ValidationData.wrap(0); + } + + function validateSignature( + address kernel, + address caller, + bytes32 permissionId, + bytes32 messageHash, + bytes32 rawHash, + bytes calldata signature + ) external view override returns (ValidationData) { + return ValidationData.wrap(0); + } +} diff --git a/src/validator/modularPermission/signers/ECDSASigner.sol b/src/validator/modularPermission/signers/ECDSASigner.sol new file mode 100644 index 00000000..f617b9d8 --- /dev/null +++ b/src/validator/modularPermission/signers/ECDSASigner.sol @@ -0,0 +1,52 @@ +pragma solidity ^0.8.0; + +import {ECDSA} from "solady/utils/ECDSA.sol"; +import {ISigner} from "../ISigner.sol"; +import {ValidationData} from "../../../common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "../../../common/Constants.sol"; + +contract ECDSASigner is ISigner { + using ECDSA for bytes32; + + mapping(address caller => mapping(bytes32 permissionId => mapping(address kernel => address))) public signer; + + function registerSigner(address kernel, bytes32 permissionId, bytes calldata data) external payable override { + require(signer[msg.sender][permissionId][kernel] == address(0), "ECDSASigner: kernel already registered"); + require(data.length == 20, "ECDSASigner: invalid signer address"); + address signerAddress = address(bytes20(data[0:20])); + signer[msg.sender][permissionId][kernel] = signerAddress; + } + + function validateUserOp(address kernel, bytes32 permissionId, bytes32 userOpHash, bytes calldata signature) + external + payable + override + returns (ValidationData) + { + require(signer[msg.sender][permissionId][kernel] != address(0), "ECDSASigner: kernel not registered"); + address recovered = ECDSA.toEthSignedMessageHash(userOpHash).recover(signature); + if (recovered == signer[msg.sender][permissionId][kernel]) { + return ValidationData.wrap(0); + } + return SIG_VALIDATION_FAILED; + } + + function validateSignature(address kernel, bytes32 permissionId, bytes32 messageHash, bytes calldata signature) + external + view + override + returns (ValidationData) + { + address signerAddress = signer[msg.sender][permissionId][kernel]; + require(signerAddress != address(0), "ECDSASigner: kernel not registered"); + if (messageHash.recover(signature) == signerAddress) { + return ValidationData.wrap(0); + } + bytes32 ethHash = ECDSA.toEthSignedMessageHash(messageHash); + address recovered = ethHash.recover(signature); + if (recovered == signerAddress) { + return ValidationData.wrap(0); + } + return SIG_VALIDATION_FAILED; + } +} diff --git a/src/validator/modularPermission/signers/WebAuthnSigner.sol b/src/validator/modularPermission/signers/WebAuthnSigner.sol new file mode 100644 index 00000000..011088fe --- /dev/null +++ b/src/validator/modularPermission/signers/WebAuthnSigner.sol @@ -0,0 +1,82 @@ +pragma solidity ^0.8.0; + +import {WebAuthn} from "p256-verifier/WebAuthn.sol"; +import {ISigner} from "../ISigner.sol"; +import {ValidationData} from "../../../common/Types.sol"; +import {SIG_VALIDATION_FAILED} from "../../../common/Constants.sol"; + +struct WebAuthnValidatorData { + uint256 x; + uint256 y; +} + +contract WebAuthnSigner is ISigner { + mapping(address caller => mapping(bytes32 permissionId => mapping(address kernel => WebAuthnValidatorData))) public + webAuthnValidatorStorage; + + function registerSigner(address kernel, bytes32 permissionId, bytes calldata data) external payable override { + WebAuthnValidatorData memory pubKey = abi.decode(data, (WebAuthnValidatorData)); + require( + webAuthnValidatorStorage[msg.sender][permissionId][kernel].x == 0 + && webAuthnValidatorStorage[msg.sender][permissionId][kernel].y == 0, + "WebAuthnSigner: kernel already registered" + ); + require(pubKey.x != 0 && pubKey.y != 0, "WebAuthnSigner: invalid public key"); + webAuthnValidatorStorage[msg.sender][permissionId][kernel] = pubKey; + } + + function validateUserOp(address kernel, bytes32 permissionId, bytes32 userOpHash, bytes calldata signature) + external + payable + override + returns (ValidationData) + { + return _verifySignature(kernel, permissionId, userOpHash, signature); + } + + function validateSignature(address kernel, bytes32 permissionId, bytes32 messageHash, bytes calldata signature) + external + view + override + returns (ValidationData) + { + return _verifySignature(kernel, permissionId, messageHash, signature); + } + + function _verifySignature(address sender, bytes32 permissionId, bytes32 hash, bytes calldata signature) + private + view + returns (ValidationData) + { + ( + bytes memory authenticatorData, + string memory clientDataJSON, + uint256 challengeLocation, + uint256 responseTypeLocation, + uint256 r, + uint256 s + ) = abi.decode(signature, (bytes, string, uint256, uint256, uint256, uint256)); + + WebAuthnValidatorData memory pubKey = webAuthnValidatorStorage[msg.sender][permissionId][sender]; + require(pubKey.x != 0 && pubKey.y != 0, "WebAuthnSigner: kernel not registered"); + + bool isValid = WebAuthn.verifySignature( + abi.encodePacked(hash), + authenticatorData, + true, // TODO: check if this needs to be true always + clientDataJSON, + challengeLocation, + responseTypeLocation, + r, + s, + pubKey.x, + pubKey.y + ); + + if (isValid) { + return ValidationData.wrap(0); + } + + return SIG_VALIDATION_FAILED; + } +} diff --git a/test/foundry/KernelECDSA.t.sol b/test/foundry/KernelECDSA.t.sol index 4ebe58ca..8322e9ad 100644 --- a/test/foundry/KernelECDSA.t.sol +++ b/test/foundry/KernelECDSA.t.sol @@ -78,8 +78,8 @@ contract KernelECDSATest is KernelTestBase { ) ); performUserOperationWithSig(op); - (address owner) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); - assertEq(owner, address(0xdeadbeef), "owner should be 0xdeadbeef"); + (address owner_) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); + assertEq(owner_, address(0xdeadbeef), "owner should be 0xdeadbeef"); } function test_default_validator_disable() external override { @@ -93,7 +93,7 @@ contract KernelECDSATest is KernelTestBase { ) ); performUserOperationWithSig(op); - (address owner) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); - assertEq(owner, address(0), "owner should be 0"); + (address owner_) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); + assertEq(owner_, address(0), "owner should be 0"); } } diff --git a/test/foundry/KernelHelper.t.sol b/test/foundry/KernelHelper.t.sol index 83c44a0c..7a3fca8e 100644 --- a/test/foundry/KernelHelper.t.sol +++ b/test/foundry/KernelHelper.t.sol @@ -27,4 +27,40 @@ contract KernelHelperTest is Test { ); assertEq(ValidationData.unwrap(c), ValidationData.unwrap(expected)); } + + function testIntersectWithAggregator( + address aggregatorA, + ValidAfter validAfterA, + ValidUntil validUntilA, + address aggregatorB, + ValidAfter validAfterB, + ValidUntil validUntilB + ) external { + if (ValidUntil.unwrap(validUntilB) == 0) { + validUntilB = ValidUntil.wrap(0xffffffffffff); + } + if (ValidUntil.unwrap(validUntilA) == 0) { + validUntilA = ValidUntil.wrap(0xffffffffffff); + } + ValidationData a = packValidationData(aggregatorA, validAfterA, validUntilA); + ValidationData b = packValidationData(aggregatorB, validAfterB, validUntilB); + ValidationData c = _intersectValidationData(a, b); + + address expectedAggregator = aggregatorA == address(0) + ? aggregatorB + : aggregatorA == aggregatorB || aggregatorB == address(0) ? aggregatorA : address(1); + console.log("expectedAggregator", expectedAggregator); + // a : b + // 0 : 0 => 0 + // 0 : 1 => 1 + // 1 : 0 => 1 + // 1 : 1 => 1 + // X : 0 => X + // X : 1 => 1 + // 0 : X => X + // 1 : X => 1 + (ValidAfter vf, ValidUntil vu, address res) = parseValidationData(c); + console.log("res", res); + assertEq(res, expectedAggregator); + } } diff --git a/test/foundry/validator/KernelECDSATyped.t.sol b/test/foundry/validator/KernelECDSATyped.t.sol index 4fd6bf44..905c7757 100644 --- a/test/foundry/validator/KernelECDSATyped.t.sol +++ b/test/foundry/validator/KernelECDSATyped.t.sol @@ -82,8 +82,8 @@ contract KernelECDSATypedTest is KernelTestBase { ) ); performUserOperationWithSig(op); - address owner = ecdsaTypedValidator.getOwner(address(kernel)); - assertEq(owner, address(0xdeadbeef), "owner should be 0xdeadbeef"); + address owner_ = ecdsaTypedValidator.getOwner(address(kernel)); + assertEq(owner_, address(0xdeadbeef), "owner should be 0xdeadbeef"); } function test_default_validator_disable() external override { @@ -97,8 +97,8 @@ contract KernelECDSATypedTest is KernelTestBase { ) ); performUserOperationWithSig(op); - address owner = ecdsaTypedValidator.getOwner(address(kernel)); - assertEq(owner, address(0), "owner should be 0"); + address owner_ = ecdsaTypedValidator.getOwner(address(kernel)); + assertEq(owner_, address(0), "owner should be 0"); } /* -------------------------------------------------------------------------- */ @@ -115,7 +115,7 @@ contract KernelECDSATypedTest is KernelTestBase { returns (bytes memory) { // Get the kernel private key owner address - address owner = vm.addr(_privateKey); + address owner_ = vm.addr(_privateKey); // Get the user op hash bytes32 userOpHash = _entryPoint.getUserOpHash(_op); @@ -124,7 +124,7 @@ contract KernelECDSATypedTest is KernelTestBase { bytes32 domainSeparator = ecdsaTypedValidator.getDomainSeperator(); bytes32 typedMsgHash = keccak256( abi.encodePacked( - "\x19\x01", domainSeparator, keccak256(abi.encode(USER_OP_TYPEHASH, owner, _op.sender, userOpHash)) + "\x19\x01", domainSeparator, keccak256(abi.encode(USER_OP_TYPEHASH, owner_, _op.sender, userOpHash)) ) ); (uint8 v, bytes32 r, bytes32 s) = vm.sign(_privateKey, typedMsgHash); diff --git a/test/foundry/validator/modularPermission/ModularPermission.t.sol b/test/foundry/validator/modularPermission/ModularPermission.t.sol new file mode 100644 index 00000000..4f90216d --- /dev/null +++ b/test/foundry/validator/modularPermission/ModularPermission.t.sol @@ -0,0 +1,729 @@ +pragma solidity ^0.8.0; + +import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; +import {IKernel} from "src/interfaces/IKernel.sol"; +import {Kernel} from "src/Kernel.sol"; +import {IKernelValidator} from "src/interfaces/IKernelValidator.sol"; +import {Operation} from "src/common/Enums.sol"; +import {toPermissionFlag} from "src/validator/modularPermission/PolicyConfig.sol"; +import "src/validator/modularPermission/ModularPermissionValidator.sol"; +import "src/validator/modularPermission/signers/ECDSASigner.sol"; +import "src/validator/modularPermission/mock/MockPolicy.sol"; +import "src/validator/modularPermission/mock/MockSigner.sol"; +import "src/validator/modularPermission/policies/EIP712Policy.sol"; +import "forge-std/Test.sol"; +import {KernelTestBase} from "src/utils/KernelTestBase.sol"; +import {TestExecutor} from "src/mock/TestExecutor.sol"; +import {TestValidator} from "src/mock/TestValidator.sol"; +import {KernelStorage} from "src/abstract/KernelStorage.sol"; +import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; +import {SignaturePolicy} from "src/validator/modularPermission/policies/SignaturePolicy.sol"; +import {EIP712} from "solady/utils/EIP712.sol"; +import {KERNEL_NAME, KERNEL_VERSION} from "src/common/Constants.sol"; + +using ERC4337Utils for IEntryPoint; + +contract ModularPermissionE2ETest is KernelTestBase { + ECDSASigner signer; + MockPolicy mockPolicy; + SignaturePolicy signaturePolicy; + address[] allowedCaller; + + function setUp() public virtual { + _initialize(); + defaultValidator = new ModularPermissionValidator(); + signer = new ECDSASigner(); + mockPolicy = new MockPolicy(); + signaturePolicy = new SignaturePolicy(); + allowedCaller = new address[](2); + allowedCaller[0] = makeAddr("app"); + allowedCaller[1] = address(0); + _setAddress(); + _setExecutionDetail(); + } + + function test_ignore() external {} + + function getPermissionId() internal view returns (bytes32) { + PolicyConfig[] memory p = new PolicyConfig[](2); + p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); + p[1] = PolicyConfigLib.pack(IPolicy(address(signaturePolicy)), toFlag(1)); + bytes[] memory pd = new bytes[](2); + pd[0] = abi.encodePacked("policy data 1"); + pd[1] = abi.encode(allowedCaller); + + return ModularPermissionValidator(address(defaultValidator)).getPermissionId( + MAX_FLAG, signer, ValidAfter.wrap(0), ValidUntil.wrap(0), p, abi.encodePacked(owner), pd + ); + } + + function _setExecutionDetail() internal virtual override { + executionDetail.executor = address(new TestExecutor()); + executionSig = TestExecutor.doNothing.selector; + executionDetail.validator = new TestValidator(); + } + + function getEnableData() internal view virtual override returns (bytes memory) { + return ""; + } + + function getValidatorSignature(UserOperation memory) internal view virtual override returns (bytes memory) { + return ""; + } + + function getOwners() internal view override returns (address[] memory) { + address[] memory owners = new address[](1); + owners[0] = owner; + return owners; + } + + function getInitializeData() internal view override returns (bytes memory) { + bytes memory sd = abi.encodePacked(owner); + PolicyConfig[] memory p = new PolicyConfig[](2); + p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); + p[1] = PolicyConfigLib.pack(IPolicy(address(signaturePolicy)), toFlag(1)); + bytes[] memory pd = new bytes[](2); + pd[0] = abi.encodePacked("policy data 1"); + pd[1] = abi.encode(allowedCaller); + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + MAX_FLAG, + uint48(0), //`validAfter + uint48(0), // validUntil + address(signer) + ), // signer + abi.encode(p, sd, pd) + ); + + return abi.encodeWithSelector(KernelStorage.initialize.selector, defaultValidator, data); + } + + function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { + return abi.encodePacked(bytes4(0x00000000), getPermissionId(), entryPoint.signUserOpHash(vm, ownerKey, op)); + } + + function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { + return abi.encodePacked(bytes4(0x00000000), getPermissionId(), entryPoint.signUserOpHash(vm, ownerKey + 1, op)); + } + + function signHash(bytes32 hash) internal view override returns (bytes memory) { + (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, hash); + return abi.encodePacked(getPermissionId(), r, s, v); + } + + function signHashWithoutPermissionId(bytes32 hash) internal view returns (bytes memory) { + (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, hash); + return abi.encodePacked(r, s, v); + } + + function getWrongSignature(bytes32 hash) internal view override returns (bytes memory) { + (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey + 1, hash); + return abi.encodePacked(getPermissionId(), r, s, v); + } + + struct MData { + address kernel; + ValidUntil until; + bytes sd; + EIP712Policy eip712; + PolicyConfig[] p; + bytes32 domainSeparator; + bytes32 typeHash; + bytes32 encodeData; + bytes32 digest; + bytes[] pd; + } + + struct ModularPermissionConfig { + uint128 nonce; + bytes12 flag; + ISigner signer; + ValidAfter validAfter; + ValidUntil validUntil; + PolicyConfig firstPolicy; + } + + function test_sessionKey_signature() external { + MData memory d; + d.kernel = address(kernel); + d.until = ValidUntil.wrap(uint48(block.timestamp + 100)); + d.sd = abi.encodePacked(owner); + d.eip712 = new EIP712Policy(); + d.p = new PolicyConfig[](1); + d.p[0] = PolicyConfigLib.pack(d.eip712, toFlag(1)); // skip on userOp + + d.domainSeparator = keccak256("DOMAIN_SEPARATOR"); + d.typeHash = keccak256("TypeHash(bytes32 encodeData)"); + d.encodeData = bytes32(uint256(0xdeadbeef)); + d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, d.encodeData))); + d.pd = new bytes[](1); + d.pd[0] = abi.encodePacked(d.domainSeparator, d.typeHash, bytes4(0), uint8(ParamRule.Equal), d.encodeData); + bytes32 permissionId = ModularPermissionValidator(address(defaultValidator)).getPermissionId( + toPermissionFlag(1), //flag + signer, + ValidAfter.wrap(1), + d.until, + d.p, + d.sd, + d.pd + ); + + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(1), // nonce + toPermissionFlag(1), //flag + uint48(1), //`validAfter + d.until, // validUntil + address(signer) + ), // signer + abi.encode(d.p, d.sd, d.pd) + ); + vm.startPrank(d.kernel); + defaultValidator.enable(data); + vm.stopPrank(); + ModularPermissionConfig memory config; + + (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = + ModularPermissionValidator(address(defaultValidator)).permissions(permissionId, d.kernel); + assertEq(config.nonce, uint128(1)); + assertEq(config.flag, toPermissionFlag(1)); + assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(d.until)); + assertEq(address(config.signer), address(signer)); + bytes32 wrappedDigest = keccak256( + abi.encodePacked( + "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), d.digest + ) + ); + + bytes4 res = kernel.isValidSignature( + d.digest, + abi.encodePacked( + permissionId, + d.eip712, + uint256(100), + d.domainSeparator, + d.typeHash, + uint32(1), + uint256(d.encodeData), // you should put all data here + signHashWithoutPermissionId(wrappedDigest) + ) + ); + assertEq(res, Kernel.isValidSignature.selector); + } + + function test_sessionKey_signature_greater_than() external { + MData memory d; + d.kernel = address(kernel); + d.until = ValidUntil.wrap(uint48(block.timestamp + 100)); + d.sd = abi.encodePacked(owner); + d.eip712 = new EIP712Policy(); + d.p = new PolicyConfig[](1); + d.p[0] = PolicyConfigLib.pack(d.eip712, toFlag(1)); // skip on userOp + + d.domainSeparator = keccak256("DOMAIN_SEPARATOR"); + d.typeHash = keccak256("TypeHash(bytes32 encodeData)"); + d.encodeData = bytes32(uint256(0xdeadbeef)); + d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, uint256(d.encodeData) + 1))); + d.pd = new bytes[](1); + d.pd[0] = abi.encodePacked(d.domainSeparator, d.typeHash, bytes4(0), uint8(ParamRule.GreaterThan), d.encodeData); + bytes32 permissionId = ModularPermissionValidator(address(defaultValidator)).getPermissionId( + toPermissionFlag(1), //flag + signer, + ValidAfter.wrap(1), + d.until, + d.p, + d.sd, + d.pd + ); + + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(1), // nonce + toPermissionFlag(1), //flag + uint48(1), //`validAfter + d.until, // validUntil + address(signer) + ), // signer + abi.encode(d.p, d.sd, d.pd) + ); + vm.startPrank(d.kernel); + defaultValidator.enable(data); + vm.stopPrank(); + ModularPermissionConfig memory config; + + (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = + ModularPermissionValidator(address(defaultValidator)).permissions(permissionId, d.kernel); + assertEq(config.nonce, uint128(1)); + assertEq(config.flag, toPermissionFlag(1)); + assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(d.until)); + assertEq(address(config.signer), address(signer)); + bytes32 wrappedDigest = keccak256( + abi.encodePacked( + "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), d.digest + ) + ); + + bytes4 res = kernel.isValidSignature( + d.digest, + abi.encodePacked( + permissionId, + d.eip712, + uint256(100), + d.domainSeparator, + d.typeHash, + uint32(1), + uint256(d.encodeData) + 1, // you should put all data here + signHashWithoutPermissionId(wrappedDigest) + ) + ); + assertEq(res, Kernel.isValidSignature.selector); + } + + function test_default_validator_enable() external override { + UserOperation memory op = buildUserOperation( + abi.encodeWithSelector( + IKernel.execute.selector, + address(defaultValidator), + 0, + abi.encodeWithSelector(IKernelValidator.enable.selector, abi.encodePacked(address(0xdeadbeef))), + Operation.Call + ) + ); + bytes memory sd = abi.encodePacked(owner); + PolicyConfig[] memory p = new PolicyConfig[](1); + p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); + bytes[] memory pd = new bytes[](1); + pd[0] = abi.encodePacked("policy data 2"); + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + MAX_FLAG, //flag + uint48(0), //`validAfter + uint48(0), // validUntil + address(signer) + ), // signer + abi.encode(p, sd, pd) + ); + performUserOperationWithSig(op); + } + + function test_default_validator_disable() external override { + UserOperation memory op = buildUserOperation( + abi.encodeWithSelector( + IKernel.execute.selector, + address(defaultValidator), + 0, + abi.encodeWithSelector(IKernelValidator.disable.selector, abi.encodePacked(getPermissionId())), + Operation.Call + ) + ); + performUserOperationWithSig(op); + } + + function test_external_call_execute_success() external override { + vm.skip(true); + } + + function test_external_call_default() external override { + vm.skip(true); + } + + function test_external_call_execute_delegatecall_success() external override { + vm.skip(true); + } + + function test_external_call_batch_execute_success() external override { + vm.skip(true); + } + + function test_external_call_execution() external override { + vm.skip(true); + } +} + +contract ModularPermissionUnitTest is Test { + ModularPermissionValidator validator; + + MockSigner mockSigner; + MockPolicy mockPolicy; + + function setUp() external { + validator = new ModularPermissionValidator(); + mockPolicy = new MockPolicy(); + mockSigner = new MockSigner(); + } + + function testParseData() external { + uint48 until = uint48(block.timestamp + 100); + bytes memory sd = abi.encodePacked("hello world"); + PolicyConfig[] memory p = new PolicyConfig[](2); + p[0] = PolicyConfigLib.pack(IPolicy(address(0xdeadbeef)), toFlag(0)); + p[1] = PolicyConfigLib.pack(IPolicy(address(0xcafecafe)), toFlag(0)); + bytes[] memory pd = new bytes[](2); + pd[0] = abi.encodePacked("policy data 1"); + pd[1] = abi.encodePacked("policy data 2"); + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + MAX_FLAG, //flag + uint48(1), //`validAfter + until, // validUntil + address(0xdead) + ), // signer + abi.encode(p, sd, pd) + ); + ( + uint128 nonce, + bytes12 flag, + ISigner signer, + ValidAfter validAfter, + ValidUntil validUntil, + PolicyConfig[] memory policies, + bytes memory signerData, + bytes[] memory policyData + ) = validator.parseData(data); + assertEq(nonce, uint128(0)); + assertEq(flag, MAX_FLAG); + assertEq(ValidAfter.unwrap(validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(validUntil), until); + assertEq(address(signer), address(0xdead)); + assertEq(address(PolicyConfigLib.getAddress(policies[0])), address(0xdeadbeef)); + assertEq(address(PolicyConfigLib.getAddress(policies[1])), address(0xcafecafe)); + assertEq(signerData, abi.encodePacked("hello world")); + assertEq(policyData[0], abi.encodePacked("policy data 1")); + assertEq(policyData[1], abi.encodePacked("policy data 2")); + } + + function testRegister() external { + uint48 until = uint48(block.timestamp + 100); + bytes memory sd = abi.encodePacked("hello signer"); + PolicyConfig[] memory p = new PolicyConfig[](1); + p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); + bytes[] memory pd = new bytes[](1); + pd[0] = abi.encodePacked("hello policy"); + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + MAX_FLAG, //flag + uint48(1), //`validAfter + until, // validUntil + address(mockSigner) + ), // signer + abi.encode(p, sd, pd) + ); + validator.enable(data); + } + + struct ModularPermissionConfig { + uint128 nonce; + bytes12 flag; + ISigner signer; + ValidAfter validAfter; + ValidUntil validUntil; + PolicyConfig firstPolicy; + } + + function testValidateUserOpSkip() external { + address kernel = makeAddr("Kernel"); + ValidUntil until = ValidUntil.wrap(uint48(block.timestamp + 100)); + bytes memory sd = abi.encodePacked("hello signer"); + MockPolicy skipPolicy = new MockPolicy(); + PolicyConfig[] memory p = new PolicyConfig[](2); + p[0] = PolicyConfigLib.pack(mockPolicy, toFlag(0)); + p[1] = PolicyConfigLib.pack(skipPolicy, toFlag(1)); // skip + + bytes[] memory pd = new bytes[](2); + pd[0] = abi.encodePacked("hello policy"); + pd[1] = abi.encodePacked("hello policy 2"); + bytes32 permissionId = validator.getPermissionId( + toPermissionFlag(0), //flag + mockSigner, + ValidAfter.wrap(1), + until, + p, + sd, + pd + ); + + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + toPermissionFlag(0), //flag + uint48(1), //`validAfter + until, // validUntil + address(mockSigner) + ), // signer + abi.encode(p, sd, pd) + ); + vm.startPrank(kernel); + validator.enable(data); + vm.stopPrank(); + + ModularPermissionConfig memory config; + + (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = + validator.permissions(permissionId, kernel); + assertEq(config.nonce, uint128(0)); + assertEq(config.flag, toPermissionFlag(0)); + assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(until)); + assertEq(address(config.signer), address(mockSigner)); + assertEq(address(PolicyConfigLib.getAddress(config.firstPolicy)), address(mockPolicy)); + + assertEq(mockSigner.signerData(), sd); + assertEq(mockPolicy.policyData(), pd[0]); + UserOperation memory op; + op.sender = kernel; + op.signature = abi.encodePacked(permissionId); + vm.startPrank(kernel); + validator.validateUserOp(op, keccak256(abi.encodePacked("hello")), 0); + vm.stopPrank(); + + assertEq(mockSigner.count(permissionId), 1); + assertEq(mockPolicy.count(permissionId), 1); + assertEq(skipPolicy.count(permissionId), 0); + } + + struct MData { + address kernel; + ValidUntil until; + bytes sd; + EIP712Policy eip712; + PolicyConfig[] p; + bytes32 domainSeparator; + bytes32 typeHash; + bytes32 encodeData; + bytes32 digest; + bytes[] pd; + } + + function testValidateSignature() external { + MData memory d; + d.kernel = makeAddr("Kernel"); + d.until = ValidUntil.wrap(uint48(block.timestamp + 100)); + d.sd = abi.encodePacked("hello signer"); + d.eip712 = new EIP712Policy(); + d.p = new PolicyConfig[](1); + d.p[0] = PolicyConfigLib.pack(d.eip712, toFlag(1)); // skip on userOp + + d.domainSeparator = keccak256("DOMAIN_SEPARATOR"); + d.typeHash = keccak256("TypeHash(bytes32 encodeData)"); + d.encodeData = bytes32(uint256(0xdeadbeef)); + d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, d.encodeData))); + d.pd = new bytes[](1); + d.pd[0] = abi.encodePacked(d.domainSeparator, d.typeHash, bytes4(0), uint8(ParamRule.Equal), d.encodeData); + bytes32 permissionId = validator.getPermissionId( + toPermissionFlag(1), //flag + mockSigner, + ValidAfter.wrap(1), + d.until, + d.p, + d.sd, + d.pd + ); + + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + toPermissionFlag(1), //flag + uint48(1), //`validAfter + d.until, // validUntil + address(mockSigner) + ), // signer + abi.encode(d.p, d.sd, d.pd) + ); + vm.startPrank(d.kernel); + validator.enable(data); + vm.stopPrank(); + + ModularPermissionConfig memory config; + + (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = + validator.permissions(permissionId, d.kernel); + assertEq(config.nonce, uint128(0)); + assertEq(config.flag, toPermissionFlag(1)); + assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(d.until)); + assertEq(address(config.signer), address(mockSigner)); + + UserOperation memory op; + op.sender = d.kernel; + op.signature = abi.encodePacked(permissionId); + vm.startPrank(d.kernel); + (bool success, bytes memory ret) = address(validator).call( + abi.encodePacked( + abi.encodeWithSelector( + ModularPermissionValidator.validateSignature.selector, + d.digest, + abi.encodePacked( + permissionId, d.eip712, uint256(100), d.domainSeparator, d.typeHash, uint32(1), d.encodeData + ) + ), + d.digest, + makeAddr("app") + ) + ); + require(address(uint160(bytes20(bytes32(ret) << 96))) == address(0)); + require(success); + vm.stopPrank(); + vm.startPrank(d.kernel); + d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, uint256(d.encodeData) + 1))); + (success, ret) = address(validator).call( + abi.encodePacked( + abi.encodeWithSelector( + ModularPermissionValidator.validateSignature.selector, + d.digest, + abi.encodePacked( + permissionId, + d.eip712, + uint256(100), + d.domainSeparator, + d.typeHash, + uint32(1), + uint256(d.encodeData) + 1 + ) + ), + d.digest, + makeAddr("app") + ) + ); + require(address(uint160(bytes20(bytes32(ret) << 96))) == address(1)); + require(success); + vm.stopPrank(); + } + + function testValidateSignatureSkip() external { + address kernel = makeAddr("Kernel"); + ValidUntil until = ValidUntil.wrap(uint48(block.timestamp + 100)); + bytes memory sd = abi.encodePacked("hello signer"); + MockPolicy skipPolicy = new MockPolicy(); + PolicyConfig[] memory p = new PolicyConfig[](2); + p[0] = PolicyConfigLib.pack(mockPolicy, toFlag(0)); + p[1] = PolicyConfigLib.pack(skipPolicy, toFlag(2)); // skip on signature + skipPolicy.mock(0, 0, true, true); + + bytes[] memory pd = new bytes[](2); + pd[0] = abi.encodePacked("hello policy"); + pd[1] = abi.encodePacked("hello policy 2"); + bytes32 permissionId = validator.getPermissionId( + MAX_FLAG, //flag + mockSigner, + ValidAfter.wrap(1), + until, + p, + sd, + pd + ); + + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + MAX_FLAG, //flag + uint48(1), //`validAfter + until, // validUntil + address(mockSigner) + ), // signer + abi.encode(p, sd, pd) + ); + vm.startPrank(kernel); + validator.enable(data); + vm.stopPrank(); + + ModularPermissionConfig memory config; + + (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = + validator.permissions(permissionId, kernel); + assertEq(config.nonce, uint128(0)); + assertEq(config.flag, MAX_FLAG); + assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(until)); + assertEq(address(config.signer), address(mockSigner)); + assertEq(address(PolicyConfigLib.getAddress(config.firstPolicy)), address(mockPolicy)); + + assertEq(mockSigner.signerData(), sd); + assertEq(mockPolicy.policyData(), pd[0]); + UserOperation memory op; + op.sender = kernel; + op.signature = abi.encodePacked(permissionId); + vm.startPrank(kernel); + vm.expectRevert(); + validator.validateSignature(keccak256(abi.encodePacked("hello")), ""); + vm.stopPrank(); + } + + function testValidateUserOp() external { + address kernel = makeAddr("Kernel"); + ValidUntil until = ValidUntil.wrap(uint48(block.timestamp + 100)); + bytes memory sd = abi.encodePacked("hello signer"); + PolicyConfig[] memory p = new PolicyConfig[](1); + p[0] = PolicyConfigLib.pack(mockPolicy, toFlag(0)); + bytes[] memory pd = new bytes[](1); + pd[0] = abi.encodePacked("hello policy"); + bytes32 permissionId = validator.getPermissionId( + MAX_FLAG, //flag + mockSigner, + ValidAfter.wrap(1), + until, + p, + sd, + pd + ); + + bytes memory data = abi.encodePacked( + abi.encodePacked( + uint128(0), // nonce + MAX_FLAG, //flag + uint48(1), //`validAfter + until, // validUntil + address(mockSigner) + ), // signer + abi.encode(p, sd, pd) + ); + vm.startPrank(kernel); + validator.enable(data); + vm.stopPrank(); + + ( + uint128 nonce, + bytes12 flag, + ISigner signer, + PolicyConfig firstPolicy, + ValidAfter validAfter, + ValidUntil validUntil + ) = validator.permissions(permissionId, kernel); + assertEq(nonce, uint128(0)); + assertEq(flag, MAX_FLAG); + assertEq(ValidAfter.unwrap(validAfter), uint48(1)); + assertEq(ValidUntil.unwrap(validUntil), ValidUntil.unwrap(until)); + assertEq(address(signer), address(mockSigner)); + assertEq(address(PolicyConfigLib.getAddress(firstPolicy)), address(mockPolicy)); + + assertEq(mockSigner.signerData(), sd); + assertEq(mockPolicy.policyData(), pd[0]); + UserOperation memory op; + op.sender = kernel; + op.signature = abi.encodePacked(permissionId); + vm.startPrank(kernel); + validator.validateUserOp(op, keccak256(abi.encodePacked("hello")), 0); + vm.stopPrank(); + + assertEq(mockSigner.count(permissionId), 1); + assertEq(mockPolicy.count(permissionId), 1); + } +} + +function _hashTypedData(bytes32 domain, bytes32 structHash) pure returns (bytes32 digest) { + /// @solidity memory-safe-assembly + assembly { + // Compute the digest. + mstore(0x00, 0x1901000000000000) // Store "\x19\x01". + mstore(0x1a, domain) // Store the domain separator. + mstore(0x3a, structHash) // Store the struct hash. + digest := keccak256(0x18, 0x42) + // Restore the part of the free memory slot that was overwritten. + mstore(0x3a, 0) + } +} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 574e785c..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "module": "commonjs", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "resolveJsonModule": true - } -}