@latticexyz/world-module-erc20 2.2.20-b7901812d4035faa3ec9bb75f31ffe7af398bdf2 → 2.2.21-041031d271b62a7f41f7c6dc0098c1c0ae222bd5
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/README.md +11 -39
- package/out/AccessControl.sol/AccessControl.json +1 -1
- package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json +1 -1
- package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json.d.ts +1 -1
- package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
- package/out/Allowances.sol/Allowances.json +1 -1
- package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json +1 -1
- package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json.d.ts +1 -1
- package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
- package/out/Balances.sol/Balances.json +1 -1
- package/out/Base.sol/CommonBase.json +1 -1
- package/out/Base.sol/ScriptBase.json +1 -1
- package/out/Base.sol/TestBase.json +1 -1
- package/out/BatchCallSystem.sol/BatchCallSystem.abi.json +1 -1
- package/out/BatchCallSystem.sol/BatchCallSystem.abi.json.d.ts +1 -1
- package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
- package/out/Bytes.sol/Bytes.json +1 -1
- package/out/Constants.sol/ERC20TableNames.json +1 -1
- package/out/Constants.sol/ModuleConstants.json +1 -1
- package/out/Constants.sol/PausableTableNames.json +1 -1
- package/out/DecodeSlice.sol/DecodeSlice.json +1 -1
- package/out/Delegation.sol/Delegation.json +1 -1
- package/out/ERC165Checker.sol/ERC165Checker.json +1 -1
- package/out/ERC20BaseTest.t.sol/ERC20BehaviorTest.abi.json +331 -0
- package/out/ERC20BaseTest.t.sol/ERC20BehaviorTest.abi.json.d.ts +331 -0
- package/out/ERC20BaseTest.t.sol/ERC20BehaviorTest.json +1 -1
- package/out/{ERC20Burnable.t.sol/ERC20BurnableWithWorldTest.abi.json → ERC20BaseTest.t.sol/ERC20Test.abi.json} +324 -7
- package/out/{ERC20Burnable.t.sol/ERC20BurnableWithWorldTest.abi.json.d.ts → ERC20BaseTest.t.sol/ERC20Test.abi.json.d.ts} +324 -7
- package/out/ERC20BaseTest.t.sol/ERC20Test.json +1 -0
- package/out/ERC20BaseTest.t.sol/MockERC20Base.abi.json +93 -198
- package/out/ERC20BaseTest.t.sol/MockERC20Base.abi.json.d.ts +93 -198
- package/out/ERC20BaseTest.t.sol/MockERC20Base.json +1 -1
- package/out/ERC20Burnable.sol/ERC20Burnable.abi.json +75 -235
- package/out/ERC20Burnable.sol/ERC20Burnable.abi.json.d.ts +75 -235
- package/out/ERC20Burnable.sol/ERC20Burnable.json +1 -1
- package/out/ERC20Burnable.t.sol/ERC20BurnableTest.abi.json +331 -0
- package/out/ERC20Burnable.t.sol/ERC20BurnableTest.abi.json.d.ts +331 -0
- package/out/ERC20Burnable.t.sol/ERC20BurnableTest.json +1 -1
- package/out/{ERC20BaseTest.t.sol/MockERC20WithInternalStore.abi.json → ERC20Burnable.t.sol/MockERC20Burnable.abi.json} +124 -198
- package/out/{ERC20BaseTest.t.sol/MockERC20WithInternalStore.abi.json.d.ts → ERC20Burnable.t.sol/MockERC20Burnable.abi.json.d.ts} +124 -198
- package/out/ERC20Burnable.t.sol/MockERC20Burnable.json +1 -0
- package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
- package/out/ERC20Module.sol/ERC20Module.abi.json +3 -3
- package/out/ERC20Module.sol/ERC20Module.abi.json.d.ts +3 -3
- package/out/ERC20Module.sol/ERC20Module.json +1 -1
- package/out/ERC20Module.sol/ERC20ModuleLib.json +1 -0
- package/out/ERC20Module.t.sol/ERC20ModuleTest.json +1 -1
- package/out/ERC20Module.t.sol/TestConstants.json +1 -1
- package/out/ERC20Pausable.sol/ERC20Pausable.abi.json +76 -236
- package/out/ERC20Pausable.sol/ERC20Pausable.abi.json.d.ts +76 -236
- package/out/ERC20Pausable.sol/ERC20Pausable.json +1 -1
- package/out/ERC20Pausable.t.sol/{ERC20PausableWithWorldTest.abi.json → ERC20PausableTest.abi.json} +324 -0
- package/out/ERC20Pausable.t.sol/{ERC20PausableWithWorldTest.abi.json.d.ts → ERC20PausableTest.abi.json.d.ts} +324 -0
- package/out/ERC20Pausable.t.sol/ERC20PausableTest.json +1 -0
- package/out/ERC20Pausable.t.sol/MockERC20Pausable.abi.json +130 -199
- package/out/ERC20Pausable.t.sol/MockERC20Pausable.abi.json.d.ts +130 -199
- package/out/ERC20Pausable.t.sol/MockERC20Pausable.json +1 -1
- package/out/{ERC20Pausable.t.sol/MockERC20WithInternalStorePausable.abi.json → ERC20PausableBurnable.sol/ERC20PausableBurnable.abi.json} +163 -209
- package/out/{ERC20Pausable.t.sol/MockERC20WithInternalStorePausable.abi.json.d.ts → ERC20PausableBurnable.sol/ERC20PausableBurnable.abi.json.d.ts} +163 -209
- package/out/ERC20PausableBurnable.sol/ERC20PausableBurnable.json +1 -0
- package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
- package/out/EncodeArray.sol/EncodeArray.json +1 -1
- package/out/EncodedLengths.sol/EncodedLengthsInstance.json +1 -1
- package/out/EncodedLengths.sol/EncodedLengthsLib.json +1 -1
- package/out/FieldLayout.sol/FieldLayoutInstance.json +1 -1
- package/out/FieldLayout.sol/FieldLayoutLib.json +1 -1
- package/out/FunctionSelectors.sol/FunctionSelectors.json +1 -1
- package/out/FunctionSignatures.sol/FunctionSignatures.json +1 -1
- package/out/GasReporter.sol/GasReporter.json +1 -1
- package/out/Hook.sol/HookInstance.json +1 -1
- package/out/Hook.sol/HookLib.json +1 -1
- package/out/Hooks.sol/Hooks.json +1 -1
- package/out/IAccessManagementSystem.sol/IAccessManagementSystem.json +1 -1
- package/out/IBalanceTransferSystem.sol/IBalanceTransferSystem.json +1 -1
- package/out/IBaseWorld.sol/IBaseWorld.json +1 -1
- package/out/IBatchCallSystem.sol/IBatchCallSystem.json +1 -1
- package/out/IDelegationControl.sol/IDelegationControl.json +1 -1
- package/out/IERC165.sol/IERC165.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/IERC20Metadata.sol/IERC20Metadata.json +1 -1
- package/out/IEncodedLengthsErrors.sol/IEncodedLengthsErrors.json +1 -1
- package/out/IFieldLayoutErrors.sol/IFieldLayoutErrors.json +1 -1
- package/out/IModule.sol/IModule.json +1 -1
- package/out/IModuleErrors.sol/IModuleErrors.json +1 -1
- package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +1 -1
- package/out/IMulticall3.sol/IMulticall3.json +1 -1
- package/out/IRegistrationSystem.sol/IRegistrationSystem.json +1 -1
- package/out/ISchemaErrors.sol/ISchemaErrors.json +1 -1
- package/out/ISliceErrors.sol/ISliceErrors.json +1 -1
- package/out/IStore.sol/IStore.json +1 -1
- package/out/IStoreErrors.sol/IStoreErrors.json +1 -1
- package/out/IStoreEvents.sol/IStoreEvents.json +1 -1
- package/out/IStoreHook.sol/IStoreHook.json +1 -1
- package/out/IStoreKernel.sol/IStoreKernel.json +1 -1
- package/out/IStoreRead.sol/IStoreRead.json +1 -1
- package/out/IStoreRegistration.sol/IStoreRegistration.json +1 -1
- package/out/IStoreWrite.sol/IStoreWrite.json +1 -1
- package/out/ISystemHook.sol/ISystemHook.json +1 -1
- package/out/IWorldContextConsumer.sol/IWorldContextConsumer.json +1 -1
- package/out/IWorldErrors.sol/IWorldErrors.json +1 -1
- package/out/IWorldEvents.sol/IWorldEvents.json +1 -1
- package/out/IWorldKernel.sol/IWorldCall.json +1 -1
- package/out/IWorldKernel.sol/IWorldKernel.json +1 -1
- package/out/IWorldKernel.sol/IWorldModuleInstallation.json +1 -1
- package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +1 -1
- package/out/InitModule.sol/InitModule.abi.json +3 -3
- package/out/InitModule.sol/InitModule.abi.json.d.ts +3 -3
- package/out/InitModule.sol/InitModule.json +1 -1
- package/out/InitModuleAddress.sol/InitModuleAddress.json +1 -1
- package/out/InstalledModules.sol/InstalledModules.json +1 -1
- package/out/LimitedCallContext.sol/LimitedCallContext.json +1 -1
- package/out/MUDERC20.sol/MUDERC20.abi.json +75 -235
- package/out/MUDERC20.sol/MUDERC20.abi.json.d.ts +75 -235
- package/out/MUDERC20.sol/MUDERC20.json +1 -1
- package/out/Memory.sol/Memory.json +1 -1
- package/out/Module.sol/Module.abi.json +1 -1
- package/out/Module.sol/Module.abi.json.d.ts +1 -1
- package/out/Module.sol/Module.json +1 -1
- package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json +1 -1
- package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json.d.ts +1 -1
- package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
- package/out/NamespaceDelegationControl.sol/NamespaceDelegationControl.json +1 -1
- package/out/NamespaceOwner.sol/NamespaceOwner.json +1 -1
- package/out/Owner.sol/Owner.json +1 -1
- package/out/Pausable.sol/Pausable.abi.json +64 -276
- package/out/Pausable.sol/Pausable.abi.json.d.ts +64 -276
- package/out/Pausable.sol/Pausable.json +1 -1
- package/out/Paused.sol/Paused.json +1 -1
- package/out/RegistrationSystem.sol/RegistrationSystem.abi.json +1 -1
- package/out/RegistrationSystem.sol/RegistrationSystem.abi.json.d.ts +1 -1
- package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -1
- package/out/ResourceAccess.sol/ResourceAccess.json +1 -1
- package/out/ResourceId.sol/ResourceIdInstance.json +1 -1
- package/out/ResourceId.sol/ResourceIdLib.json +1 -1
- package/out/ResourceIds.sol/ResourceIds.json +1 -1
- package/out/Schema.sol/SchemaInstance.json +1 -1
- package/out/Schema.sol/SchemaLib.json +1 -1
- package/out/Slice.sol/SliceInstance.json +1 -1
- package/out/Slice.sol/SliceLib.json +1 -1
- package/out/StdAssertions.sol/StdAssertions.json +1 -1
- package/out/StdChains.sol/StdChains.json +1 -1
- package/out/StdCheats.sol/StdCheats.json +1 -1
- package/out/StdCheats.sol/StdCheatsSafe.json +1 -1
- package/out/StdError.sol/stdError.json +1 -1
- package/out/StdInvariant.sol/StdInvariant.json +1 -1
- package/out/StdJson.sol/stdJson.json +1 -1
- package/out/StdMath.sol/stdMath.json +1 -1
- package/out/StdStorage.sol/stdStorage.json +1 -1
- package/out/StdStorage.sol/stdStorageSafe.json +1 -1
- package/out/StdStyle.sol/StdStyle.json +1 -1
- package/out/StdUtils.sol/StdUtils.json +1 -1
- package/out/Storage.sol/Storage.json +1 -1
- package/out/StoreCore.sol/StoreCore.json +1 -1
- package/out/StoreCore.sol/StoreCoreInternal.json +1 -1
- package/out/StoreHooks.sol/StoreHooks.json +1 -1
- package/out/StoreKernel.sol/StoreKernel.json +1 -1
- package/out/StoreRead.sol/StoreRead.json +1 -1
- package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json +1 -1
- package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json.d.ts +1 -1
- package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
- package/out/StoreSwitch.sol/StoreSwitch.json +1 -1
- package/out/System.sol/System.abi.json +1 -1
- package/out/System.sol/System.abi.json.d.ts +1 -1
- package/out/System.sol/System.json +1 -1
- package/out/SystemCall.sol/SystemCall.json +1 -1
- package/out/SystemHooks.sol/SystemHooks.json +1 -1
- package/out/SystemRegistry.sol/SystemRegistry.json +1 -1
- package/out/Systems.sol/Systems.json +1 -1
- package/out/Tables.sol/Tables.json +1 -1
- package/out/Test.sol/Test.json +1 -1
- package/out/TightCoder.sol/TightCoder.json +1 -1
- package/out/TotalSupply.sol/TotalSupply.json +1 -1
- package/out/UserDelegationControl.sol/UserDelegationControl.json +1 -1
- package/out/Vm.sol/Vm.json +1 -1
- package/out/Vm.sol/VmSafe.json +1 -1
- package/out/World.sol/World.json +1 -1
- package/out/WorldConsumer.sol/WorldConsumer.abi.json +140 -0
- package/out/WorldConsumer.sol/WorldConsumer.abi.json.d.ts +142 -0
- package/out/WorldConsumer.sol/WorldConsumer.json +1 -0
- package/out/WorldContext.sol/WorldContextConsumer.abi.json +1 -1
- package/out/WorldContext.sol/WorldContextConsumer.abi.json.d.ts +1 -1
- package/out/WorldContext.sol/WorldContextConsumer.json +1 -1
- package/out/WorldContext.sol/WorldContextConsumerLib.json +1 -1
- package/out/WorldContext.sol/WorldContextProviderLib.json +1 -1
- package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json +1 -1
- package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json.d.ts +1 -1
- package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
- package/out/WorldResourceId.sol/WorldResourceIdInstance.json +1 -1
- package/out/WorldResourceId.sol/WorldResourceIdLib.json +1 -1
- package/out/build-info/5dec426f2d87057b9b49f18296a28057.json +1 -0
- package/out/console.sol/console.json +1 -1
- package/out/console2.sol/console2.json +1 -1
- package/out/constants.sol/LayoutOffsets.json +1 -1
- package/out/safeconsole.sol/safeconsole.json +1 -1
- package/out/src/IERC165.sol/IERC165.json +1 -1
- package/out/tables/Balances.sol/Balances.json +1 -1
- package/out/test.sol/DSTest.json +1 -1
- package/package.json +8 -8
- package/src/examples/ERC20PausableBurnable.sol +55 -0
- package/src/experimental/Constants.sol +0 -4
- package/src/experimental/ERC20Module.sol +47 -14
- package/src/experimental/ERC20Pausable.sol +3 -0
- package/src/experimental/MUDERC20.sol +28 -32
- package/src/experimental/Pausable.sol +18 -17
- package/out/Constants.sol/OwnableTableNames.abi.json +0 -1
- package/out/Constants.sol/OwnableTableNames.json +0 -1
- package/out/Context.sol/Context.abi.json +0 -15
- package/out/Context.sol/Context.abi.json.d.ts +0 -17
- package/out/Context.sol/Context.json +0 -1
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreBehaviorTest.abi.json +0 -949
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreBehaviorTest.abi.json.d.ts +0 -951
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreBehaviorTest.json +0 -1
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreTest.abi.json +0 -949
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreTest.abi.json.d.ts +0 -951
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreTest.json +0 -1
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldBehaviorTest.abi.json +0 -956
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldBehaviorTest.abi.json.d.ts +0 -958
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldBehaviorTest.json +0 -1
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldTest.abi.json +0 -956
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldTest.abi.json.d.ts +0 -958
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldTest.json +0 -1
- package/out/ERC20BaseTest.t.sol/MockERC20WithInternalStore.json +0 -1
- package/out/ERC20BaseTest.t.sol/MockERC20WithWorld.abi.json +0 -839
- package/out/ERC20BaseTest.t.sol/MockERC20WithWorld.abi.json.d.ts +0 -841
- package/out/ERC20BaseTest.t.sol/MockERC20WithWorld.json +0 -1
- package/out/ERC20BaseTest.t.sol/TestConstants.abi.json +0 -1
- package/out/ERC20BaseTest.t.sol/TestConstants.json +0 -1
- package/out/ERC20Burnable.t.sol/ERC20BurnableWithInternalStoreTest.abi.json +0 -956
- package/out/ERC20Burnable.t.sol/ERC20BurnableWithInternalStoreTest.abi.json.d.ts +0 -958
- package/out/ERC20Burnable.t.sol/ERC20BurnableWithInternalStoreTest.json +0 -1
- package/out/ERC20Burnable.t.sol/ERC20BurnableWithWorldTest.json +0 -1
- package/out/ERC20Burnable.t.sol/MockERC20WithInternalStoreBurnable.abi.json +0 -727
- package/out/ERC20Burnable.t.sol/MockERC20WithInternalStoreBurnable.abi.json.d.ts +0 -729
- package/out/ERC20Burnable.t.sol/MockERC20WithInternalStoreBurnable.json +0 -1
- package/out/ERC20Burnable.t.sol/MockERC20WithWorldBurnable.abi.json +0 -865
- package/out/ERC20Burnable.t.sol/MockERC20WithWorldBurnable.abi.json.d.ts +0 -867
- package/out/ERC20Burnable.t.sol/MockERC20WithWorldBurnable.json +0 -1
- package/out/ERC20Module.sol/ERC20RegistryLib.json +0 -1
- package/out/ERC20Pausable.t.sol/ERC20PausableBehaviorTest.abi.json +0 -956
- package/out/ERC20Pausable.t.sol/ERC20PausableBehaviorTest.abi.json.d.ts +0 -958
- package/out/ERC20Pausable.t.sol/ERC20PausableBehaviorTest.json +0 -1
- package/out/ERC20Pausable.t.sol/ERC20PausableWithInternalStoreTest.abi.json +0 -956
- package/out/ERC20Pausable.t.sol/ERC20PausableWithInternalStoreTest.abi.json.d.ts +0 -958
- package/out/ERC20Pausable.t.sol/ERC20PausableWithInternalStoreTest.json +0 -1
- package/out/ERC20Pausable.t.sol/ERC20PausableWithWorldTest.json +0 -1
- package/out/ERC20Pausable.t.sol/MockERC20WithInternalStorePausable.json +0 -1
- package/out/ERC20Pausable.t.sol/MockERC20WithWorldPausable.abi.json +0 -897
- package/out/ERC20Pausable.t.sol/MockERC20WithWorldPausable.abi.json.d.ts +0 -899
- package/out/ERC20Pausable.t.sol/MockERC20WithWorldPausable.json +0 -1
- package/out/ERC20WithInternalStore.sol/ERC20WithInternalStore.abi.json +0 -851
- package/out/ERC20WithInternalStore.sol/ERC20WithInternalStore.abi.json.d.ts +0 -853
- package/out/ERC20WithInternalStore.sol/ERC20WithInternalStore.json +0 -1
- package/out/ERC20WithWorld.sol/ERC20WithWorld.abi.json +0 -936
- package/out/ERC20WithWorld.sol/ERC20WithWorld.abi.json.d.ts +0 -938
- package/out/ERC20WithWorld.sol/ERC20WithWorld.json +0 -1
- package/out/Ownable.sol/Ownable.abi.json +0 -426
- package/out/Ownable.sol/Ownable.abi.json.d.ts +0 -428
- package/out/Ownable.sol/Ownable.json +0 -1
- package/out/Store.sol/Store.abi.json +0 -1261
- package/out/Store.sol/Store.abi.json.d.ts +0 -1263
- package/out/Store.sol/Store.json +0 -1
- package/out/StoreConsumer.sol/StoreConsumer.abi.json +0 -15
- package/out/StoreConsumer.sol/StoreConsumer.abi.json.d.ts +0 -17
- package/out/StoreConsumer.sol/StoreConsumer.json +0 -1
- package/out/WithStore.sol/WithStore.abi.json +0 -352
- package/out/WithStore.sol/WithStore.abi.json.d.ts +0 -354
- package/out/WithStore.sol/WithStore.json +0 -1
- package/out/WithWorld.sol/WithWorld.abi.json +0 -490
- package/out/WithWorld.sol/WithWorld.abi.json.d.ts +0 -492
- package/out/WithWorld.sol/WithWorld.json +0 -1
- package/out/build-info/60c60a9593fdb00b3264c36836a28f39.json +0 -1
- package/src/examples/ERC20WithInternalStore.sol +0 -32
- package/src/examples/ERC20WithWorld.sol +0 -47
- package/src/experimental/Ownable.sol +0 -110
- /package/out/ERC20Module.sol/{ERC20RegistryLib.abi.json → ERC20ModuleLib.abi.json} +0 -0
- /package/out/ERC20Module.sol/{ERC20RegistryLib.abi.json.d.ts → ERC20ModuleLib.abi.json.d.ts} +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity >=0.8.24;
|
|
3
|
+
|
|
4
|
+
// Adapted example from OpenZeppelin's Contract Wizard: https://wizard.openzeppelin.com/
|
|
5
|
+
|
|
6
|
+
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
|
7
|
+
import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol";
|
|
8
|
+
import { WorldConsumer } from "@latticexyz/world-consumer/src/experimental/WorldConsumer.sol";
|
|
9
|
+
|
|
10
|
+
import { Pausable } from "../experimental/Pausable.sol";
|
|
11
|
+
import { ERC20Pausable } from "../experimental/ERC20Pausable.sol";
|
|
12
|
+
import { ERC20Burnable } from "../experimental/ERC20Burnable.sol";
|
|
13
|
+
import { MUDERC20 } from "../experimental/MUDERC20.sol";
|
|
14
|
+
|
|
15
|
+
contract ERC20PausableBurnable is MUDERC20, ERC20Pausable, ERC20Burnable {
|
|
16
|
+
error ERC20PausableBurnable_AlreadyInitialized();
|
|
17
|
+
|
|
18
|
+
bytes14 private immutable _namespace;
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
IBaseWorld world,
|
|
22
|
+
bytes14 namespace,
|
|
23
|
+
ResourceId totalSupplyId,
|
|
24
|
+
ResourceId balancesId,
|
|
25
|
+
ResourceId allowancesId,
|
|
26
|
+
ResourceId metadataId,
|
|
27
|
+
ResourceId pausedId
|
|
28
|
+
) WorldConsumer(world) MUDERC20(totalSupplyId, balancesId, allowancesId, metadataId) ERC20Pausable(pausedId) {
|
|
29
|
+
// Namespace used for access control
|
|
30
|
+
_namespace = namespace;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function initialize(string memory name, string memory symbol) external onlyNamespaceOwner(_namespace) {
|
|
34
|
+
_MUDERC20_init(name, symbol);
|
|
35
|
+
_Pausable_init();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function mint(address to, uint256 value) public onlyNamespace(_namespace) {
|
|
39
|
+
_mint(to, value);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function pause() public onlyNamespace(_namespace) {
|
|
43
|
+
_pause();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function unpause() public onlyNamespace(_namespace) {
|
|
47
|
+
_unpause();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// The following functions are overrides required by Solidity.
|
|
51
|
+
|
|
52
|
+
function _update(address from, address to, uint256 value) internal override(MUDERC20, ERC20Pausable) {
|
|
53
|
+
super._update(from, to, value);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -27,10 +27,6 @@ library ERC20TableNames {
|
|
|
27
27
|
bytes16 internal constant METADATA = "Metadata";
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
library OwnableTableNames {
|
|
31
|
-
bytes16 internal constant OWNER = "Owner";
|
|
32
|
-
}
|
|
33
|
-
|
|
34
30
|
library PausableTableNames {
|
|
35
31
|
bytes16 internal constant PAUSED = "Paused";
|
|
36
32
|
}
|
|
@@ -3,22 +3,29 @@ pragma solidity >=0.8.24;
|
|
|
3
3
|
|
|
4
4
|
import { ResourceIds } from "@latticexyz/store/src/codegen/tables/ResourceIds.sol";
|
|
5
5
|
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
|
6
|
+
import { RESOURCE_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
|
|
6
7
|
|
|
7
8
|
import { Module } from "@latticexyz/world/src/Module.sol";
|
|
8
9
|
import { RESOURCE_SYSTEM } from "@latticexyz/world/src/worldResourceTypes.sol";
|
|
9
10
|
import { WorldResourceIdLib } from "@latticexyz/world/src/WorldResourceId.sol";
|
|
10
11
|
import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol";
|
|
11
|
-
import { revertWithBytes } from "@latticexyz/world/src/revertWithBytes.sol";
|
|
12
12
|
|
|
13
13
|
import { ERC20Registry } from "../codegen/tables/ERC20Registry.sol";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { ERC20PausableBurnable } from "../examples/ERC20PausableBurnable.sol";
|
|
15
|
+
import { MUDERC20 } from "../experimental/MUDERC20.sol";
|
|
16
|
+
import { ModuleConstants, ERC20TableNames, PausableTableNames } from "./Constants.sol";
|
|
17
|
+
|
|
18
|
+
import { ERC20Metadata, ERC20MetadataData } from "../codegen/tables/ERC20Metadata.sol";
|
|
19
|
+
import { TotalSupply } from "../codegen/tables/TotalSupply.sol";
|
|
20
|
+
import { Balances } from "../codegen/tables/Balances.sol";
|
|
21
|
+
import { Allowances } from "../codegen/tables/Allowances.sol";
|
|
22
|
+
import { Paused } from "../codegen/tables/Paused.sol";
|
|
16
23
|
|
|
17
24
|
contract ERC20Module is Module {
|
|
18
25
|
error ERC20Module_InvalidNamespace(bytes14 namespace);
|
|
19
26
|
error ERC20Module_NamespaceAlreadyExists(bytes14 namespace);
|
|
20
27
|
|
|
21
|
-
function install(bytes memory encodedArgs) public {
|
|
28
|
+
function install(bytes memory encodedArgs) public override {
|
|
22
29
|
// TODO: we should probably check just for namespace, not for all args
|
|
23
30
|
requireNotInstalled(__self, encodedArgs);
|
|
24
31
|
|
|
@@ -39,27 +46,53 @@ contract ERC20Module is Module {
|
|
|
39
46
|
|
|
40
47
|
IBaseWorld world = IBaseWorld(_world());
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
world.registerNamespace(namespaceId);
|
|
50
|
+
|
|
51
|
+
ERC20PausableBurnable token = ERC20ModuleLib.deployAndRegisterTables(world, namespace);
|
|
43
52
|
|
|
44
|
-
// Grant access to the token so it can write to tables after transferring ownership
|
|
53
|
+
// Grant access to the token so it can register and write to tables after transferring ownership
|
|
45
54
|
world.grantAccess(namespaceId, address(token));
|
|
46
55
|
|
|
47
56
|
// Register token as a system so its functions can be called through the world
|
|
48
57
|
world.registerSystem(systemId, token, true);
|
|
49
58
|
|
|
50
|
-
//
|
|
51
|
-
world.
|
|
59
|
+
// Set metadata and paused state by calling initialize (onlyNamespaceOwner)
|
|
60
|
+
world.call(systemId, abi.encodeCall(ERC20PausableBurnable.initialize, (name, symbol)));
|
|
52
61
|
|
|
53
|
-
|
|
54
|
-
}
|
|
62
|
+
ERC20ModuleLib.registerToken(world, namespaceId, address(token));
|
|
55
63
|
|
|
56
|
-
|
|
57
|
-
revert Module_RootInstallNotSupported();
|
|
64
|
+
world.transferOwnership(namespaceId, _msgSender());
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
67
|
|
|
61
|
-
library
|
|
62
|
-
function
|
|
68
|
+
library ERC20ModuleLib {
|
|
69
|
+
function deployAndRegisterTables(IBaseWorld world, bytes14 namespace) public returns (ERC20PausableBurnable) {
|
|
70
|
+
ResourceId totalSupplyId = WorldResourceIdLib.encode(RESOURCE_TABLE, namespace, ERC20TableNames.TOTAL_SUPPLY);
|
|
71
|
+
ResourceId balancesId = WorldResourceIdLib.encode(RESOURCE_TABLE, namespace, ERC20TableNames.BALANCES);
|
|
72
|
+
ResourceId allowancesId = WorldResourceIdLib.encode(RESOURCE_TABLE, namespace, ERC20TableNames.ALLOWANCES);
|
|
73
|
+
ResourceId metadataId = WorldResourceIdLib.encode(RESOURCE_TABLE, namespace, ERC20TableNames.METADATA);
|
|
74
|
+
ResourceId pausedId = WorldResourceIdLib.encode(RESOURCE_TABLE, namespace, PausableTableNames.PAUSED);
|
|
75
|
+
|
|
76
|
+
// Register each table
|
|
77
|
+
TotalSupply.register(totalSupplyId);
|
|
78
|
+
Balances.register(balancesId);
|
|
79
|
+
Allowances.register(allowancesId);
|
|
80
|
+
ERC20Metadata.register(metadataId);
|
|
81
|
+
Paused.register(pausedId);
|
|
82
|
+
|
|
83
|
+
return
|
|
84
|
+
new ERC20PausableBurnable({
|
|
85
|
+
world: world,
|
|
86
|
+
namespace: namespace,
|
|
87
|
+
totalSupplyId: totalSupplyId,
|
|
88
|
+
balancesId: balancesId,
|
|
89
|
+
allowancesId: allowancesId,
|
|
90
|
+
metadataId: metadataId,
|
|
91
|
+
pausedId: pausedId
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function registerToken(IBaseWorld world, ResourceId namespaceId, address token) public {
|
|
63
96
|
ResourceId erc20RegistryTableId = ModuleConstants.registryTableId();
|
|
64
97
|
if (!ResourceIds.getExists(erc20RegistryTableId)) {
|
|
65
98
|
world.registerNamespace(ModuleConstants.namespaceId());
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
// Adapted from OpenZeppelin's [ERC20Pausable extenstion](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/f989fff93168606c726bc5e831ef50dd6e543f45/contracts/token/ERC20/extensions/ERC20Pausable.sol)
|
|
3
3
|
pragma solidity >=0.8.24;
|
|
4
4
|
|
|
5
|
+
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
|
5
6
|
import { Pausable } from "./Pausable.sol";
|
|
6
7
|
import { MUDERC20 } from "./MUDERC20.sol";
|
|
7
8
|
|
|
8
9
|
abstract contract ERC20Pausable is MUDERC20, Pausable {
|
|
10
|
+
constructor(ResourceId pausedId) Pausable(pausedId) {}
|
|
11
|
+
|
|
9
12
|
function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {
|
|
10
13
|
super._update(from, to, value);
|
|
11
14
|
}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
pragma solidity >=0.8.24;
|
|
4
4
|
|
|
5
5
|
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { WorldConsumer } from "@latticexyz/world-consumer/src/experimental/WorldConsumer.sol";
|
|
7
|
+
import { WorldResourceIdLib } from "@latticexyz/world/src/WorldResourceId.sol";
|
|
8
|
+
import { RESOURCE_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
|
|
8
9
|
|
|
9
10
|
import { ERC20Metadata, ERC20MetadataData } from "../codegen/tables/ERC20Metadata.sol";
|
|
10
11
|
import { TotalSupply } from "../codegen/tables/TotalSupply.sol";
|
|
@@ -17,26 +18,17 @@ import { IERC20Errors } from "../interfaces/IERC20Errors.sol";
|
|
|
17
18
|
|
|
18
19
|
import { ERC20TableNames } from "./Constants.sol";
|
|
19
20
|
|
|
20
|
-
abstract contract MUDERC20 is
|
|
21
|
-
ResourceId
|
|
22
|
-
ResourceId
|
|
23
|
-
ResourceId
|
|
24
|
-
ResourceId
|
|
25
|
-
|
|
26
|
-
constructor(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
metadataId = _encodeTableId(ERC20TableNames.METADATA);
|
|
32
|
-
|
|
33
|
-
// Register each table
|
|
34
|
-
TotalSupply.register(totalSupplyId);
|
|
35
|
-
Balances.register(balancesId);
|
|
36
|
-
Allowances.register(allowancesId);
|
|
37
|
-
ERC20Metadata.register(metadataId);
|
|
38
|
-
|
|
39
|
-
_setMetadata(_name, _symbol, 18);
|
|
21
|
+
abstract contract MUDERC20 is IERC20, IERC20Metadata, IERC20Errors, WorldConsumer {
|
|
22
|
+
ResourceId private immutable _totalSupplyId;
|
|
23
|
+
ResourceId private immutable _balancesId;
|
|
24
|
+
ResourceId private immutable _allowancesId;
|
|
25
|
+
ResourceId private immutable _metadataId;
|
|
26
|
+
|
|
27
|
+
constructor(ResourceId totalSupplyId, ResourceId balancesId, ResourceId allowancesId, ResourceId metadataId) {
|
|
28
|
+
_totalSupplyId = totalSupplyId;
|
|
29
|
+
_balancesId = balancesId;
|
|
30
|
+
_allowancesId = allowancesId;
|
|
31
|
+
_metadataId = metadataId;
|
|
40
32
|
}
|
|
41
33
|
|
|
42
34
|
/**
|
|
@@ -152,6 +144,10 @@ abstract contract MUDERC20 is Context, IERC20, IERC20Metadata, IERC20Errors, Sto
|
|
|
152
144
|
return true;
|
|
153
145
|
}
|
|
154
146
|
|
|
147
|
+
function _MUDERC20_init(string memory _name, string memory _symbol) internal {
|
|
148
|
+
_setMetadata(_name, _symbol, 18);
|
|
149
|
+
}
|
|
150
|
+
|
|
155
151
|
/**
|
|
156
152
|
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
|
|
157
153
|
* Relies on the `_update` mechanism
|
|
@@ -283,43 +279,43 @@ abstract contract MUDERC20 is Context, IERC20, IERC20Metadata, IERC20Errors, Sto
|
|
|
283
279
|
}
|
|
284
280
|
|
|
285
281
|
function _getName() internal view returns (string memory) {
|
|
286
|
-
return ERC20Metadata.getName(
|
|
282
|
+
return ERC20Metadata.getName(_metadataId);
|
|
287
283
|
}
|
|
288
284
|
|
|
289
285
|
function _getSymbol() internal view returns (string memory) {
|
|
290
|
-
return ERC20Metadata.getSymbol(
|
|
286
|
+
return ERC20Metadata.getSymbol(_metadataId);
|
|
291
287
|
}
|
|
292
288
|
|
|
293
289
|
function _getDecimals() internal view returns (uint8) {
|
|
294
|
-
return ERC20Metadata.getDecimals(
|
|
290
|
+
return ERC20Metadata.getDecimals(_metadataId);
|
|
295
291
|
}
|
|
296
292
|
|
|
297
293
|
function _getTotalSupply() internal view returns (uint256) {
|
|
298
|
-
return TotalSupply.get(
|
|
294
|
+
return TotalSupply.get(_totalSupplyId);
|
|
299
295
|
}
|
|
300
296
|
|
|
301
297
|
function _getBalance(address account) internal view returns (uint256) {
|
|
302
|
-
return Balances.get(
|
|
298
|
+
return Balances.get(_balancesId, account);
|
|
303
299
|
}
|
|
304
300
|
|
|
305
301
|
function _getAllowance(address owner, address spender) internal view returns (uint256) {
|
|
306
|
-
return Allowances.get(
|
|
302
|
+
return Allowances.get(_allowancesId, owner, spender);
|
|
307
303
|
}
|
|
308
304
|
|
|
309
305
|
function _setTotalSupply(uint256 value) internal virtual {
|
|
310
|
-
TotalSupply.set(
|
|
306
|
+
TotalSupply.set(_totalSupplyId, value);
|
|
311
307
|
}
|
|
312
308
|
|
|
313
309
|
function _setBalance(address account, uint256 value) internal virtual {
|
|
314
|
-
Balances.set(
|
|
310
|
+
Balances.set(_balancesId, account, value);
|
|
315
311
|
}
|
|
316
312
|
|
|
317
313
|
function _setAllowance(address owner, address spender, uint256 value) internal virtual {
|
|
318
|
-
Allowances.set(
|
|
314
|
+
Allowances.set(_allowancesId, owner, spender, value);
|
|
319
315
|
}
|
|
320
316
|
|
|
321
317
|
function _setMetadata(string memory _name, string memory _symbol, uint8 _decimals) internal virtual {
|
|
322
318
|
ERC20MetadataData memory metadata = ERC20MetadataData(_decimals, _name, _symbol);
|
|
323
|
-
ERC20Metadata.set(
|
|
319
|
+
ERC20Metadata.set(_metadataId, metadata);
|
|
324
320
|
}
|
|
325
321
|
}
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
pragma solidity >=0.8.24;
|
|
4
4
|
|
|
5
5
|
import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { WorldResourceIdLib } from "@latticexyz/world/src/WorldResourceId.sol";
|
|
7
|
+
import { WorldConsumer } from "@latticexyz/world-consumer/src/experimental/WorldConsumer.sol";
|
|
8
8
|
|
|
9
9
|
import { Paused as PausedTable } from "../codegen/tables/Paused.sol";
|
|
10
|
-
import { PausableTableNames } from "./Constants.sol";
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* @dev Contract module which allows children to implement an emergency stop
|
|
@@ -18,8 +17,8 @@ import { PausableTableNames } from "./Constants.sol";
|
|
|
18
17
|
* the functions of your contract. Note that they will not be pausable by
|
|
19
18
|
* simply including this module, only once the modifiers are put in place.
|
|
20
19
|
*/
|
|
21
|
-
abstract contract Pausable is
|
|
22
|
-
ResourceId
|
|
20
|
+
abstract contract Pausable is WorldConsumer {
|
|
21
|
+
ResourceId private immutable _pausedId;
|
|
23
22
|
|
|
24
23
|
/**
|
|
25
24
|
* @dev Emitted when the pause is triggered by `account`.
|
|
@@ -41,15 +40,6 @@ abstract contract Pausable is Context, StoreConsumer {
|
|
|
41
40
|
*/
|
|
42
41
|
error ExpectedPause();
|
|
43
42
|
|
|
44
|
-
/**
|
|
45
|
-
* @dev Initializes the contract in unpaused state.
|
|
46
|
-
*/
|
|
47
|
-
constructor() {
|
|
48
|
-
pausedId = _encodeTableId(PausableTableNames.PAUSED);
|
|
49
|
-
PausedTable.register(pausedId);
|
|
50
|
-
PausedTable.set(pausedId, false);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
43
|
/**
|
|
54
44
|
* @dev Modifier to make a function callable only when the contract is not paused.
|
|
55
45
|
*
|
|
@@ -74,11 +64,22 @@ abstract contract Pausable is Context, StoreConsumer {
|
|
|
74
64
|
_;
|
|
75
65
|
}
|
|
76
66
|
|
|
67
|
+
constructor(ResourceId pausedId) {
|
|
68
|
+
_pausedId = pausedId;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @dev Initializes the contract in unpaused state.
|
|
73
|
+
*/
|
|
74
|
+
function _Pausable_init() internal {
|
|
75
|
+
PausedTable.set(_pausedId, false);
|
|
76
|
+
}
|
|
77
|
+
|
|
77
78
|
/**
|
|
78
79
|
* @dev Returns true if the contract is paused, and false otherwise.
|
|
79
80
|
*/
|
|
80
81
|
function paused() public view virtual returns (bool) {
|
|
81
|
-
return PausedTable.get(
|
|
82
|
+
return PausedTable.get(_pausedId);
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
/**
|
|
@@ -107,7 +108,7 @@ abstract contract Pausable is Context, StoreConsumer {
|
|
|
107
108
|
* - The contract must not be paused.
|
|
108
109
|
*/
|
|
109
110
|
function _pause() internal virtual whenNotPaused {
|
|
110
|
-
PausedTable.set(
|
|
111
|
+
PausedTable.set(_pausedId, true);
|
|
111
112
|
emit Paused(_msgSender());
|
|
112
113
|
}
|
|
113
114
|
|
|
@@ -119,7 +120,7 @@ abstract contract Pausable is Context, StoreConsumer {
|
|
|
119
120
|
* - The contract must be paused.
|
|
120
121
|
*/
|
|
121
122
|
function _unpause() internal virtual whenPaused {
|
|
122
|
-
PausedTable.set(
|
|
123
|
+
PausedTable.set(_pausedId, false);
|
|
123
124
|
emit Unpaused(_msgSender());
|
|
124
125
|
}
|
|
125
126
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c6343000818000a","sourceMap":"912:74:134:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;912:74:134;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c6343000818000a","sourceMap":"912:74:134:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/experimental/Constants.sol\":\"OwnableTableNames\"},\"evmVersion\":\"cancun\",\"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/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35\",\"dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0x842b07f2ff9df2e1ecf9bf424b0e5a77e1471c983d674cf86b76c365178d6cc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4c2df8853b020aef1bb8615ac69d5512a9b5385b82c88e03b27dc521c9d007b\",\"dweb:/ipfs/QmWEDiJn69DvHsdrikrMWY8DERWPSeWwVYgPcunfq3yiT7\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586\",\"dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xaff9a22fac8a0f6eee5763b07a7ccb623c829d37922b85e42e914aad2ad417ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e598f0274d6d97c0a09806bf4fd1f0d054c310cf51b2123f5ce6380d6f3186ea\",\"dweb:/ipfs/QmaaVvqm21YsCgxozDyShcM17jKUXJhf2y26bk2YzPYZoM\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xeb042e7d3638430f6fd394107f3237cf14e4325154f0098624e8a7826584d465\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e0b8eb87616b661f5a4f2fd7e1a727bd19b7fd8d40ad3d93fda26822f433ea\",\"dweb:/ipfs/QmacYMatKV9pwEwirVRY9a6r89RoNs5yk99ic37ieWA8Dk\"]},\"src/experimental/Constants.sol\":{\"keccak256\":\"0x1828d78c43a249009f887c267a5fa4c5b7cdd86c6bedc1e6cb57416d2805470c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e5af1fde1db28001cf53728a23fc552bf3eb5130b9b20239c2e12faa618d83e\",\"dweb:/ipfs/QmUvfh2Vxqm22cdx2543fZ3Mco5bYLU8vp72wD7dtDmirU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"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":{"src/experimental/Constants.sol":"OwnableTableNames"},"evmVersion":"cancun","libraries":{}},"sources":{"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8","urls":["bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35","dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0x842b07f2ff9df2e1ecf9bf424b0e5a77e1471c983d674cf86b76c365178d6cc5","urls":["bzz-raw://f4c2df8853b020aef1bb8615ac69d5512a9b5385b82c88e03b27dc521c9d007b","dweb:/ipfs/QmWEDiJn69DvHsdrikrMWY8DERWPSeWwVYgPcunfq3yiT7"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261","urls":["bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586","dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xaff9a22fac8a0f6eee5763b07a7ccb623c829d37922b85e42e914aad2ad417ee","urls":["bzz-raw://e598f0274d6d97c0a09806bf4fd1f0d054c310cf51b2123f5ce6380d6f3186ea","dweb:/ipfs/QmaaVvqm21YsCgxozDyShcM17jKUXJhf2y26bk2YzPYZoM"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xeb042e7d3638430f6fd394107f3237cf14e4325154f0098624e8a7826584d465","urls":["bzz-raw://39e0b8eb87616b661f5a4f2fd7e1a727bd19b7fd8d40ad3d93fda26822f433ea","dweb:/ipfs/QmacYMatKV9pwEwirVRY9a6r89RoNs5yk99ic37ieWA8Dk"],"license":"MIT"},"src/experimental/Constants.sol":{"keccak256":"0x1828d78c43a249009f887c267a5fa4c5b7cdd86c6bedc1e6cb57416d2805470c","urls":["bzz-raw://2e5af1fde1db28001cf53728a23fc552bf3eb5130b9b20239c2e12faa618d83e","dweb:/ipfs/QmUvfh2Vxqm22cdx2543fZ3Mco5bYLU8vp72wD7dtDmirU"],"license":"MIT"}},"version":1},"id":134}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"abi":[{"type":"function","name":"_msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"_msgSender()":"119df25f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"_msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@latticexyz/store-consumer/src/experimental/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"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/@latticexyz/store-consumer/src/experimental/Context.sol\":{\"keccak256\":\"0x09cd9a25b10c485528869e476cbe4acfb12193285aa06e2afd368bbed7e95f9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6706d0c3a3b54f04a38674a24bfdfad5b9fc1a9a8be822fd62c6845c4692f41\",\"dweb:/ipfs/QmaY1iDT4STHLF72bNn3U7WAN3X6J61KxeowKopS58VGPL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"_msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]}],"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/@latticexyz/store-consumer/src/experimental/Context.sol":"Context"},"evmVersion":"cancun","libraries":{}},"sources":{"node_modules/@latticexyz/store-consumer/src/experimental/Context.sol":{"keccak256":"0x09cd9a25b10c485528869e476cbe4acfb12193285aa06e2afd368bbed7e95f9a","urls":["bzz-raw://a6706d0c3a3b54f04a38674a24bfdfad5b9fc1a9a8be822fd62c6845c4692f41","dweb:/ipfs/QmaY1iDT4STHLF72bNn3U7WAN3X6J61KxeowKopS58VGPL"],"license":"MIT"}},"version":1},"id":2}
|