@latticexyz/world-modules 2.0.4 → 2.0.5-main-d02efd80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mud.config.d.ts +7 -7
- package/dist/mud.config.js +1 -1
- package/dist/mud.config.js.map +1 -1
- package/out/AccessControlLib.sol/AccessControlLib.json +1 -1
- package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
- package/out/Allowances.sol/Allowances.json +1 -1
- package/out/ArrayLib.sol/ArrayLib.json +1 -1
- package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
- package/out/Balances.sol/Balances.json +1 -1
- package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
- package/out/CallWithSignatureModule.t.sol/Unstable_CallWithSignatureModuleTest.json +1 -0
- package/out/CallWithSignatureNonces.sol/CallWithSignatureNonces.json +1 -0
- package/out/CallboundDelegationControl.sol/CallboundDelegationControl.json +1 -1
- package/out/CallboundDelegations.sol/CallboundDelegations.json +1 -1
- package/out/DelegationControlMock.sol/DelegationControlMock.json +1 -1
- package/out/ECDSA.sol/ECDSA.json +1 -1
- package/out/ERC20.t.sol/ERC20Test.json +1 -1
- package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
- package/out/ERC20Module.sol/ERC20Module.json +1 -1
- package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.json +1 -1
- package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
- package/out/ERC20System.sol/ERC20System.json +1 -1
- package/out/ERC721.t.sol/ERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/ERC721Test.json +1 -1
- package/out/ERC721.t.sol/ERC721TokenReceiver.json +1 -1
- package/out/ERC721.t.sol/NonERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/RevertingERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/WrongReturnDataERC721Recipient.json +1 -1
- package/out/ERC721Metadata.sol/ERC721Metadata.json +1 -1
- package/out/ERC721Module.sol/ERC721Module.json +1 -1
- package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.json +1 -1
- package/out/ERC721Registry.sol/ERC721Registry.json +1 -1
- package/out/ERC721System.sol/ERC721System.json +1 -1
- package/out/EchoSubscriber.sol/EchoSubscriber.json +1 -1
- package/out/GasReporter.sol/GasReporter.json +1 -1
- package/out/IERC20.sol/IERC20.json +1 -1
- package/out/IERC20Errors.sol/IERC20Errors.json +1 -1
- package/out/IERC20Events.sol/IERC20Events.json +1 -1
- package/out/IERC20Mintable.sol/IERC20Mintable.json +1 -1
- package/out/IERC721.sol/IERC721.json +1 -1
- package/out/IERC721Errors.sol/IERC721Errors.json +1 -1
- package/out/IERC721Events.sol/IERC721Events.json +1 -1
- package/out/IERC721Metadata.sol/IERC721Metadata.json +1 -1
- package/out/IERC721Mintable.sol/IERC721Mintable.json +1 -1
- package/out/IERC721Receiver.sol/IERC721Receiver.json +1 -1
- package/out/InitModule.sol/InitModule.json +1 -1
- package/out/KeysInTable.sol/KeysInTable.json +1 -1
- package/out/KeysInTableHook.sol/KeysInTableHook.json +1 -1
- package/out/KeysInTableModule.sol/KeysInTableModule.json +1 -1
- package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.json +1 -1
- package/out/KeysWithValue.sol/KeysWithValue.json +1 -1
- package/out/KeysWithValueHook.sol/KeysWithValueHook.json +1 -1
- package/out/KeysWithValueModule.sol/KeysWithValueModule.json +1 -1
- package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.json +1 -1
- package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
- package/out/OperatorApproval.sol/OperatorApproval.json +1 -1
- package/out/Owners.sol/Owners.json +1 -1
- package/out/Puppet.sol/Puppet.json +1 -1
- package/out/PuppetDelegationControl.sol/PuppetDelegationControl.json +1 -1
- package/out/PuppetFactorySystem.sol/PuppetFactorySystem.json +1 -1
- package/out/PuppetMaster.sol/PuppetMaster.json +1 -1
- package/out/PuppetModule.sol/PuppetModule.json +1 -1
- package/out/PuppetModule.t.sol/PuppetModuleTest.json +1 -1
- package/out/PuppetModule.t.sol/PuppetTestSystem.json +1 -1
- package/out/PuppetRegistry.sol/PuppetRegistry.json +1 -1
- package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -1
- package/out/RevertSubscriber.sol/RevertSubscriber.json +1 -1
- package/out/StandardDelegationsModule.sol/StandardDelegationsModule.json +1 -1
- package/out/StandardDelegationsModule.t.sol/StandardDelegationsModuleTest.json +1 -1
- package/out/StdError.sol/stdError.json +1 -1
- package/out/StoreRead.sol/StoreRead.json +1 -1
- package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
- package/out/System.sol/System.json +1 -1
- package/out/SystemSwitch.sol/SystemSwitch.json +1 -1
- package/out/SystemSwitch.t.sol/EchoSystem.json +1 -1
- package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
- package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.json +1 -1
- package/out/SystemboundDelegations.sol/SystemboundDelegations.json +1 -1
- package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.json +1 -1
- package/out/TimeboundDelegations.sol/TimeboundDelegations.json +1 -1
- package/out/TokenApproval.sol/TokenApproval.json +1 -1
- package/out/TokenURI.sol/TokenURI.json +1 -1
- package/out/TotalSupply.sol/TotalSupply.json +1 -1
- package/out/UniqueEntity.sol/UniqueEntity.json +1 -1
- package/out/UniqueEntityModule.sol/UniqueEntityModule.json +1 -1
- package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
- package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
- package/out/UniqueEntitySystem.sol/UniqueEntitySystem.json +1 -1
- package/out/Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.json +1 -0
- package/out/{Unstable_DelegationWithSignatureSystem.sol/Unstable_DelegationWithSignatureSystem.abi.json → Unstable_CallWithSignatureSystem.sol/Unstable_CallWithSignatureSystem.abi.json} +12 -27
- package/out/{Unstable_DelegationWithSignatureSystem.sol/Unstable_DelegationWithSignatureSystem.abi.json.d.ts → Unstable_CallWithSignatureSystem.sol/Unstable_CallWithSignatureSystem.abi.json.d.ts} +12 -27
- package/out/Unstable_CallWithSignatureSystem.sol/Unstable_CallWithSignatureSystem.json +1 -0
- package/out/UsedKeysIndex.sol/UsedKeysIndex.json +1 -1
- package/out/World.sol/World.json +1 -1
- package/out/World.t.sol/EchoSystemHook.json +1 -1
- package/out/World.t.sol/PayableFallbackSystem.json +1 -1
- package/out/World.t.sol/RevertSystemHook.json +1 -1
- package/out/World.t.sol/WorldTest.json +1 -1
- package/out/World.t.sol/WorldTestSystem.json +1 -1
- package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
- package/out/query.t.sol/QueryTest.json +1 -1
- package/out/test.sol/DSTest.json +1 -1
- package/package.json +8 -8
- package/src/index.sol +1 -1
- package/src/modules/delegation/{Unstable_DelegationWithSignatureModule.sol → Unstable_CallWithSignatureModule.sol} +8 -9
- package/src/modules/delegation/Unstable_CallWithSignatureSystem.sol +46 -0
- package/src/modules/delegation/getSignedMessageHash.sol +12 -18
- package/src/modules/delegation/tables/{UserDelegationNonces.sol → CallWithSignatureNonces.sol} +26 -26
- package/out/DelegationWithSignatureModule.t.sol/Unstable_DelegationWithSignatureModuleTest.json +0 -1
- package/out/IUnstable_DelegationWithSignatureSystem.sol/IUnstable_DelegationWithSignatureSystem.abi.json +0 -46
- package/out/IUnstable_DelegationWithSignatureSystem.sol/IUnstable_DelegationWithSignatureSystem.abi.json.d.ts +0 -46
- package/out/IUnstable_DelegationWithSignatureSystem.sol/IUnstable_DelegationWithSignatureSystem.json +0 -1
- package/out/Unstable_DelegationWithSignatureModule.sol/Unstable_DelegationWithSignatureModule.json +0 -1
- package/out/Unstable_DelegationWithSignatureSystem.sol/Unstable_DelegationWithSignatureSystem.json +0 -1
- package/out/UserDelegationNonces.sol/UserDelegationNonces.json +0 -1
- package/src/interfaces/IUnstable_DelegationWithSignatureSystem.sol +0 -23
- package/src/modules/delegation/Unstable_DelegationWithSignatureSystem.sol +0 -47
- /package/out/{DelegationWithSignatureModule.t.sol/Unstable_DelegationWithSignatureModuleTest.abi.json → CallWithSignatureModule.t.sol/Unstable_CallWithSignatureModuleTest.abi.json} +0 -0
- /package/out/{DelegationWithSignatureModule.t.sol/Unstable_DelegationWithSignatureModuleTest.abi.json.d.ts → CallWithSignatureModule.t.sol/Unstable_CallWithSignatureModuleTest.abi.json.d.ts} +0 -0
- /package/out/{UserDelegationNonces.sol/UserDelegationNonces.abi.json → CallWithSignatureNonces.sol/CallWithSignatureNonces.abi.json} +0 -0
- /package/out/{Unstable_DelegationWithSignatureModule.sol/Unstable_DelegationWithSignatureModule.abi.json → Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.abi.json} +0 -0
- /package/out/{Unstable_DelegationWithSignatureModule.sol/Unstable_DelegationWithSignatureModule.abi.json.d.ts → Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.abi.json.d.ts} +0 -0
package/out/test.sol/DSTest.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102728061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;1572:26;;;-1:-1:-1;;1572:26:114;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:223;;172:22;154:41;;142:2;127:18;1819:584:114;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:114;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:223;;;2221:17:114;470:18:223;;;463:34;2196:43:114;;;;;;;;;353:18:223;;;2196:43:114;;;-1:-1:-1;;1671:64:114;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:114:o;508:322:223:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:223;768:16;;793:13;;;-1:-1:-1;768:16:223;;508:322;-1:-1:-1;508:322:223:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:223:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:223:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"node_modules/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":114}
|
1
|
+
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102728061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;1572:26;;;-1:-1:-1;;1572:26:114;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:222;;172:22;154:41;;142:2;127:18;1819:584:114;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:114;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:222;;;2221:17:114;470:18:222;;;463:34;2196:43:114;;;;;;;;;353:18:222;;;2196:43:114;;;-1:-1:-1;;1671:64:114;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:114:o;508:322:222:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:222;768:16;;793:13;;;-1:-1:-1;768:16:222;;508:322;-1:-1:-1;508:322:222:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:222:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:222:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"node_modules/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":114}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@latticexyz/world-modules",
|
3
|
-
"version": "2.0.
|
3
|
+
"version": "2.0.5-main-d02efd80",
|
4
4
|
"description": "World modules",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -15,11 +15,11 @@
|
|
15
15
|
},
|
16
16
|
"dependencies": {
|
17
17
|
"zod": "^3.21.4",
|
18
|
-
"@latticexyz/common": "2.0.
|
19
|
-
"@latticexyz/config": "2.0.
|
20
|
-
"@latticexyz/schema-type": "2.0.
|
21
|
-
"@latticexyz/store": "2.0.
|
22
|
-
"@latticexyz/world": "2.0.
|
18
|
+
"@latticexyz/common": "2.0.5-main-d02efd80",
|
19
|
+
"@latticexyz/config": "2.0.5-main-d02efd80",
|
20
|
+
"@latticexyz/schema-type": "2.0.5-main-d02efd80",
|
21
|
+
"@latticexyz/store": "2.0.5-main-d02efd80",
|
22
|
+
"@latticexyz/world": "2.0.5-main-d02efd80"
|
23
23
|
},
|
24
24
|
"devDependencies": {
|
25
25
|
"@types/ejs": "^3.1.1",
|
@@ -34,8 +34,8 @@
|
|
34
34
|
"tsup": "^6.7.0",
|
35
35
|
"tsx": "^3.12.6",
|
36
36
|
"vitest": "0.34.6",
|
37
|
-
"@latticexyz/abi-ts": "2.0.
|
38
|
-
"@latticexyz/gas-report": "2.0.
|
37
|
+
"@latticexyz/abi-ts": "2.0.5-main-d02efd80",
|
38
|
+
"@latticexyz/gas-report": "2.0.5-main-d02efd80"
|
39
39
|
},
|
40
40
|
"publishConfig": {
|
41
41
|
"access": "public"
|
package/src/index.sol
CHANGED
@@ -22,4 +22,4 @@ import { Owners } from "./modules/erc721-puppet/tables/Owners.sol";
|
|
22
22
|
import { TokenApproval } from "./modules/erc721-puppet/tables/TokenApproval.sol";
|
23
23
|
import { OperatorApproval } from "./modules/erc721-puppet/tables/OperatorApproval.sol";
|
24
24
|
import { ERC721Registry } from "./modules/erc721-puppet/tables/ERC721Registry.sol";
|
25
|
-
import {
|
25
|
+
import { CallWithSignatureNonces } from "./modules/delegation/tables/CallWithSignatureNonces.sol";
|
@@ -6,14 +6,13 @@ import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.
|
|
6
6
|
import { Module } from "@latticexyz/world/src/Module.sol";
|
7
7
|
import { revertWithBytes } from "@latticexyz/world/src/revertWithBytes.sol";
|
8
8
|
|
9
|
-
import {
|
10
|
-
import {
|
9
|
+
import { CallWithSignatureNonces } from "./tables/CallWithSignatureNonces.sol";
|
10
|
+
import { Unstable_CallWithSignatureSystem } from "./Unstable_CallWithSignatureSystem.sol";
|
11
11
|
|
12
12
|
import { DELEGATION_SYSTEM_ID } from "./constants.sol";
|
13
13
|
|
14
|
-
contract
|
15
|
-
|
16
|
-
new Unstable_DelegationWithSignatureSystem();
|
14
|
+
contract Unstable_CallWithSignatureModule is Module {
|
15
|
+
Unstable_CallWithSignatureSystem private immutable callWithSignatureSystem = new Unstable_CallWithSignatureSystem();
|
17
16
|
|
18
17
|
function installRoot(bytes memory encodedArgs) public {
|
19
18
|
requireNotInstalled(__self, encodedArgs);
|
@@ -21,11 +20,11 @@ contract Unstable_DelegationWithSignatureModule is Module {
|
|
21
20
|
IBaseWorld world = IBaseWorld(_world());
|
22
21
|
|
23
22
|
// Register table
|
24
|
-
|
23
|
+
CallWithSignatureNonces._register();
|
25
24
|
|
26
25
|
// Register system
|
27
26
|
(bool success, bytes memory data) = address(world).delegatecall(
|
28
|
-
abi.encodeCall(world.registerSystem, (DELEGATION_SYSTEM_ID,
|
27
|
+
abi.encodeCall(world.registerSystem, (DELEGATION_SYSTEM_ID, callWithSignatureSystem, true))
|
29
28
|
);
|
30
29
|
if (!success) revertWithBytes(data);
|
31
30
|
|
@@ -35,8 +34,8 @@ contract Unstable_DelegationWithSignatureModule is Module {
|
|
35
34
|
world.registerRootFunctionSelector,
|
36
35
|
(
|
37
36
|
DELEGATION_SYSTEM_ID,
|
38
|
-
"
|
39
|
-
"
|
37
|
+
"callWithSignature(address,bytes32,bytes,bytes)",
|
38
|
+
"callWithSignature(address,bytes32,bytes,bytes)"
|
40
39
|
)
|
41
40
|
)
|
42
41
|
);
|
@@ -0,0 +1,46 @@
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
2
|
+
pragma solidity >=0.8.24;
|
3
|
+
|
4
|
+
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
5
|
+
import { System } from "@latticexyz/world/src/System.sol";
|
6
|
+
import { SystemCall } from "@latticexyz/world/src/SystemCall.sol";
|
7
|
+
import { createDelegation } from "@latticexyz/world/src/modules/init/implementations/createDelegation.sol";
|
8
|
+
|
9
|
+
import { CallWithSignatureNonces } from "./tables/CallWithSignatureNonces.sol";
|
10
|
+
import { getSignedMessageHash } from "./getSignedMessageHash.sol";
|
11
|
+
import { ECDSA } from "./ECDSA.sol";
|
12
|
+
|
13
|
+
contract Unstable_CallWithSignatureSystem is System {
|
14
|
+
/**
|
15
|
+
* @dev Mismatched signature.
|
16
|
+
*/
|
17
|
+
error InvalidSignature(address signer);
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @notice Calls a system with a given system ID using the given signature.
|
21
|
+
* @param signer The address on whose behalf the system is called.
|
22
|
+
* @param systemId The ID of the system to be called.
|
23
|
+
* @param callData The ABI data for the system call.
|
24
|
+
* @param signature The EIP712 signature.
|
25
|
+
* @return Return data from the system call.
|
26
|
+
*/
|
27
|
+
function callWithSignature(
|
28
|
+
address signer,
|
29
|
+
ResourceId systemId,
|
30
|
+
bytes memory callData,
|
31
|
+
bytes memory signature
|
32
|
+
) external payable returns (bytes memory) {
|
33
|
+
uint256 nonce = CallWithSignatureNonces.get(signer);
|
34
|
+
bytes32 hash = getSignedMessageHash(signer, systemId, callData, nonce, _world());
|
35
|
+
|
36
|
+
// If the message was not signed by the delegator or is invalid, revert
|
37
|
+
address recoveredSigner = ECDSA.recover(hash, signature);
|
38
|
+
if (recoveredSigner != signer) {
|
39
|
+
revert InvalidSignature(recoveredSigner);
|
40
|
+
}
|
41
|
+
|
42
|
+
CallWithSignatureNonces.set(signer, nonce + 1);
|
43
|
+
|
44
|
+
return SystemCall.callWithHooksOrRevert(signer, systemId, callData, _msgValue());
|
45
|
+
}
|
46
|
+
}
|
@@ -3,27 +3,23 @@ pragma solidity >=0.8.24;
|
|
3
3
|
|
4
4
|
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
bytes32 constant DELEGATION_TYPEHASH = keccak256(
|
9
|
-
"Delegation(address delegatee,bytes32 delegationControlId,bytes initCallData,address delegator,uint256 nonce)"
|
10
|
-
);
|
6
|
+
bytes32 constant CALL_TYPEHASH = keccak256("Call(address signer,bytes32 systemId,bytes callData,uint256 nonce)");
|
11
7
|
|
12
8
|
/**
|
13
9
|
* @notice Generate the message hash for a given delegation signature.
|
14
|
-
*
|
15
|
-
* @
|
16
|
-
* @param
|
17
|
-
* @param
|
18
|
-
* @param
|
19
|
-
* @param nonce The nonce of the
|
10
|
+
* For EIP712 signatures https://eips.ethereum.org/EIPS/eip-712
|
11
|
+
* @dev We include the signer address to prevent generating a signature that recovers to a random address that didn't sign the message.
|
12
|
+
* @param signer The address on whose behalf the system is called.
|
13
|
+
* @param systemId The ID of the system to be called.
|
14
|
+
* @param callData The ABI data for the system call.
|
15
|
+
* @param nonce The nonce of the signer
|
20
16
|
* @param worldAddress The world address
|
17
|
+
* @return Return the message hash.
|
21
18
|
*/
|
22
19
|
function getSignedMessageHash(
|
23
|
-
address
|
24
|
-
ResourceId
|
25
|
-
bytes memory
|
26
|
-
address delegator,
|
20
|
+
address signer,
|
21
|
+
ResourceId systemId,
|
22
|
+
bytes memory callData,
|
27
23
|
uint256 nonce,
|
28
24
|
address worldAddress
|
29
25
|
) view returns (bytes32) {
|
@@ -36,9 +32,7 @@ function getSignedMessageHash(
|
|
36
32
|
abi.encodePacked(
|
37
33
|
"\x19\x01",
|
38
34
|
domainSeperator,
|
39
|
-
keccak256(
|
40
|
-
abi.encode(DELEGATION_TYPEHASH, delegatee, delegationControlId, keccak256(initCallData), delegator, nonce)
|
41
|
-
)
|
35
|
+
keccak256(abi.encode(CALL_TYPEHASH, signer, systemId, keccak256(callData), nonce))
|
42
36
|
)
|
43
37
|
);
|
44
38
|
}
|
package/src/modules/delegation/tables/{UserDelegationNonces.sol → CallWithSignatureNonces.sol}
RENAMED
@@ -16,9 +16,9 @@ import { Schema } from "@latticexyz/store/src/Schema.sol";
|
|
16
16
|
import { EncodedLengths, EncodedLengthsLib } from "@latticexyz/store/src/EncodedLengths.sol";
|
17
17
|
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
18
18
|
|
19
|
-
library
|
20
|
-
// Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "
|
21
|
-
ResourceId constant _tableId = ResourceId.wrap(
|
19
|
+
library CallWithSignatureNonces {
|
20
|
+
// Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "CallWithSignatur", typeId: RESOURCE_TABLE });`
|
21
|
+
ResourceId constant _tableId = ResourceId.wrap(0x7462000000000000000000000000000043616c6c576974685369676e61747572);
|
22
22
|
|
23
23
|
FieldLayout constant _fieldLayout =
|
24
24
|
FieldLayout.wrap(0x0020010020000000000000000000000000000000000000000000000000000000);
|
@@ -34,7 +34,7 @@ library UserDelegationNonces {
|
|
34
34
|
*/
|
35
35
|
function getKeyNames() internal pure returns (string[] memory keyNames) {
|
36
36
|
keyNames = new string[](1);
|
37
|
-
keyNames[0] = "
|
37
|
+
keyNames[0] = "signer";
|
38
38
|
}
|
39
39
|
|
40
40
|
/**
|
@@ -63,9 +63,9 @@ library UserDelegationNonces {
|
|
63
63
|
/**
|
64
64
|
* @notice Get nonce.
|
65
65
|
*/
|
66
|
-
function getNonce(address
|
66
|
+
function getNonce(address signer) internal view returns (uint256 nonce) {
|
67
67
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
68
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
68
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
69
69
|
|
70
70
|
bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
|
71
71
|
return (uint256(bytes32(_blob)));
|
@@ -74,9 +74,9 @@ library UserDelegationNonces {
|
|
74
74
|
/**
|
75
75
|
* @notice Get nonce.
|
76
76
|
*/
|
77
|
-
function _getNonce(address
|
77
|
+
function _getNonce(address signer) internal view returns (uint256 nonce) {
|
78
78
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
79
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
79
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
80
80
|
|
81
81
|
bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
|
82
82
|
return (uint256(bytes32(_blob)));
|
@@ -85,9 +85,9 @@ library UserDelegationNonces {
|
|
85
85
|
/**
|
86
86
|
* @notice Get nonce.
|
87
87
|
*/
|
88
|
-
function get(address
|
88
|
+
function get(address signer) internal view returns (uint256 nonce) {
|
89
89
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
90
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
90
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
91
91
|
|
92
92
|
bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
|
93
93
|
return (uint256(bytes32(_blob)));
|
@@ -96,9 +96,9 @@ library UserDelegationNonces {
|
|
96
96
|
/**
|
97
97
|
* @notice Get nonce.
|
98
98
|
*/
|
99
|
-
function _get(address
|
99
|
+
function _get(address signer) internal view returns (uint256 nonce) {
|
100
100
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
101
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
101
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
102
102
|
|
103
103
|
bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
|
104
104
|
return (uint256(bytes32(_blob)));
|
@@ -107,9 +107,9 @@ library UserDelegationNonces {
|
|
107
107
|
/**
|
108
108
|
* @notice Set nonce.
|
109
109
|
*/
|
110
|
-
function setNonce(address
|
110
|
+
function setNonce(address signer, uint256 nonce) internal {
|
111
111
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
112
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
112
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
113
113
|
|
114
114
|
StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
|
115
115
|
}
|
@@ -117,9 +117,9 @@ library UserDelegationNonces {
|
|
117
117
|
/**
|
118
118
|
* @notice Set nonce.
|
119
119
|
*/
|
120
|
-
function _setNonce(address
|
120
|
+
function _setNonce(address signer, uint256 nonce) internal {
|
121
121
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
122
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
122
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
123
123
|
|
124
124
|
StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
|
125
125
|
}
|
@@ -127,9 +127,9 @@ library UserDelegationNonces {
|
|
127
127
|
/**
|
128
128
|
* @notice Set nonce.
|
129
129
|
*/
|
130
|
-
function set(address
|
130
|
+
function set(address signer, uint256 nonce) internal {
|
131
131
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
132
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
132
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
133
133
|
|
134
134
|
StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
|
135
135
|
}
|
@@ -137,9 +137,9 @@ library UserDelegationNonces {
|
|
137
137
|
/**
|
138
138
|
* @notice Set nonce.
|
139
139
|
*/
|
140
|
-
function _set(address
|
140
|
+
function _set(address signer, uint256 nonce) internal {
|
141
141
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
142
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
142
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
143
143
|
|
144
144
|
StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
|
145
145
|
}
|
@@ -147,9 +147,9 @@ library UserDelegationNonces {
|
|
147
147
|
/**
|
148
148
|
* @notice Delete all data for given keys.
|
149
149
|
*/
|
150
|
-
function deleteRecord(address
|
150
|
+
function deleteRecord(address signer) internal {
|
151
151
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
152
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
152
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
153
153
|
|
154
154
|
StoreSwitch.deleteRecord(_tableId, _keyTuple);
|
155
155
|
}
|
@@ -157,9 +157,9 @@ library UserDelegationNonces {
|
|
157
157
|
/**
|
158
158
|
* @notice Delete all data for given keys.
|
159
159
|
*/
|
160
|
-
function _deleteRecord(address
|
160
|
+
function _deleteRecord(address signer) internal {
|
161
161
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
162
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
162
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
163
163
|
|
164
164
|
StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout);
|
165
165
|
}
|
@@ -190,9 +190,9 @@ library UserDelegationNonces {
|
|
190
190
|
/**
|
191
191
|
* @notice Encode keys as a bytes32 array using this table's field layout.
|
192
192
|
*/
|
193
|
-
function encodeKeyTuple(address
|
193
|
+
function encodeKeyTuple(address signer) internal pure returns (bytes32[] memory) {
|
194
194
|
bytes32[] memory _keyTuple = new bytes32[](1);
|
195
|
-
_keyTuple[0] = bytes32(uint256(uint160(
|
195
|
+
_keyTuple[0] = bytes32(uint256(uint160(signer)));
|
196
196
|
|
197
197
|
return _keyTuple;
|
198
198
|
}
|