@etherisc/gif-next 0.0.2-979c9aa-391 → 0.0.2-984cc08-642
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/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → Component.sol/Component.json} +36 -7
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +38 -119
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IBaseComponent.sol/IBaseComponent.json → IComponent.sol/IComponent.json} +36 -7
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +38 -147
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +43 -135
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +261 -26
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +171 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +42 -13
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -82
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +101 -111
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +11 -11
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +41 -82
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +116 -183
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -90
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +111 -37
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +11 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +232 -61
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +20 -24
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +140 -60
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +17 -21
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +64 -13
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -13
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +120 -13
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +13 -13
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +13 -13
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +321 -86
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +51 -23
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +140 -60
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +17 -21
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +146 -66
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +17 -13
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +132 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +102 -68
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +145 -227
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +37 -143
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -104
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +13 -13
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -13
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +31 -31
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/{BaseComponent.sol → Component.sol} +69 -40
- package/contracts/components/Distribution.sol +5 -14
- package/contracts/components/{IBaseComponent.sol → IComponent.sol} +12 -7
- package/contracts/components/IProductComponent.sol +2 -2
- package/contracts/components/Pool.sol +7 -20
- package/contracts/components/Product.sol +21 -18
- package/contracts/instance/BundleManager.sol +7 -11
- package/contracts/instance/IInstance.sol +4 -4
- package/contracts/instance/IInstanceBase.sol +3 -2
- package/contracts/instance/IInstanceService.sol +4 -2
- package/contracts/instance/Instance.sol +11 -28
- package/contracts/instance/InstanceAccessManager.sol +15 -16
- package/contracts/instance/InstanceBase.sol +0 -3
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +115 -47
- package/contracts/instance/InstanceServiceManager.sol +5 -8
- package/contracts/instance/ObjectManager.sol +7 -24
- package/contracts/instance/base/ComponentService.sol +133 -0
- package/contracts/instance/base/IInstanceBase.sol +0 -2
- package/contracts/instance/module/IAccess.sol +1 -1
- package/contracts/instance/service/BundleService.sol +41 -8
- package/contracts/instance/service/BundleServiceManager.sol +5 -8
- package/contracts/instance/service/DistributionService.sol +36 -39
- package/contracts/instance/service/DistributionServiceManager.sol +6 -9
- package/contracts/instance/service/IBundleService.sol +5 -6
- package/contracts/instance/service/IPolicyService.sol +7 -0
- package/contracts/instance/service/PolicyService.sol +67 -37
- package/contracts/instance/service/PoolService.sol +49 -31
- package/contracts/instance/service/PoolServiceManager.sol +5 -8
- package/contracts/instance/service/ProductService.sol +106 -38
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +26 -16
- package/contracts/registry/IRegistryService.sol +17 -10
- package/contracts/registry/Registry.sol +149 -201
- package/contracts/registry/RegistryAccessManager.sol +210 -0
- package/contracts/registry/RegistryService.sol +55 -96
- package/contracts/registry/RegistryServiceManager.sol +18 -36
- package/contracts/registry/ReleaseManager.sol +342 -0
- package/contracts/registry/TokenRegistry.sol +5 -6
- package/contracts/shared/IRegisterable.sol +0 -2
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/NftOwnable.sol +2 -0
- package/contracts/shared/ProxyManager.sol +1 -1
- package/contracts/shared/Service.sol +13 -8
- package/contracts/test/TestService.sol +3 -2
- package/contracts/types/RoleId.sol +4 -5
- package/package.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -19,15 +19,9 @@ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
|
19
19
|
import {BundleManager} from "./BundleManager.sol";
|
20
20
|
import {NftId} from "../types/NftId.sol";
|
21
21
|
import {NumberId} from "../types/NumberId.sol";
|
22
|
-
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
|
23
|
-
import {RiskId
|
24
|
-
import {
|
25
|
-
import {StateId, ACTIVE} from "../types/StateId.sol";
|
26
|
-
import {TimestampLib} from "../types/Timestamp.sol";
|
27
|
-
import {ERC165} from "../shared/ERC165.sol";
|
28
|
-
import {Registerable} from "../shared/Registerable.sol";
|
29
|
-
import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
|
30
|
-
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
22
|
+
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT} from "../types/ObjectType.sol";
|
23
|
+
import {RiskId} from "../types/RiskId.sol";
|
24
|
+
import {StateId} from "../types/StateId.sol";
|
31
25
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
32
26
|
import {IPoolService} from "./service/IPoolService.sol";
|
33
27
|
import {IProductService} from "./service/IProductService.sol";
|
@@ -37,8 +31,8 @@ import {VersionPart} from "../types/Version.sol";
|
|
37
31
|
import {InstanceBase} from "./InstanceBase.sol";
|
38
32
|
|
39
33
|
contract Instance is
|
40
|
-
AccessManagedUpgradeable,
|
41
34
|
IInstance,
|
35
|
+
AccessManagedUpgradeable,
|
42
36
|
// Initializable,
|
43
37
|
InstanceBase
|
44
38
|
{
|
@@ -51,7 +45,6 @@ contract Instance is
|
|
51
45
|
|
52
46
|
bool private _initialized;
|
53
47
|
|
54
|
-
InstanceAccessManager internal _accessManager;
|
55
48
|
InstanceReader internal _instanceReader;
|
56
49
|
BundleManager internal _bundleManager;
|
57
50
|
|
@@ -62,8 +55,6 @@ contract Instance is
|
|
62
55
|
require(!_initialized, "Contract instance has already been initialized");
|
63
56
|
|
64
57
|
__AccessManaged_init(accessManagerAddress);
|
65
|
-
|
66
|
-
_accessManager = InstanceAccessManager(accessManagerAddress);
|
67
58
|
|
68
59
|
_initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
|
69
60
|
|
@@ -227,36 +218,28 @@ contract Instance is
|
|
227
218
|
return policyNftId.toKey32(POLICY());
|
228
219
|
}
|
229
220
|
|
230
|
-
function getComponentOwnerService() external view returns (IComponentOwnerService) {
|
231
|
-
return ComponentOwnerService(_registry.getServiceAddress("ComponentOwnerService", VersionPart.wrap(3)));
|
232
|
-
}
|
233
|
-
|
234
221
|
function getDistributionService() external view returns (IDistributionService) {
|
235
|
-
return IDistributionService(_registry.getServiceAddress(
|
222
|
+
return IDistributionService(_registry.getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
|
236
223
|
}
|
237
224
|
|
238
225
|
function getProductService() external view returns (IProductService) {
|
239
|
-
return IProductService(_registry.getServiceAddress(
|
226
|
+
return IProductService(_registry.getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
|
240
227
|
}
|
241
228
|
|
242
229
|
function getPoolService() external view returns (IPoolService) {
|
243
|
-
return IPoolService(_registry.getServiceAddress(
|
230
|
+
return IPoolService(_registry.getServiceAddress(POOL(), VersionPart.wrap(3)));
|
244
231
|
}
|
245
232
|
|
246
233
|
function getPolicyService() external view returns (IPolicyService) {
|
247
|
-
return IPolicyService(_registry.getServiceAddress(
|
234
|
+
return IPolicyService(_registry.getServiceAddress(POLICY(), VersionPart.wrap(3)));
|
248
235
|
}
|
249
236
|
|
250
237
|
function getBundleService() external view returns (IBundleService) {
|
251
|
-
return IBundleService(_registry.getServiceAddress(
|
252
|
-
}
|
253
|
-
|
254
|
-
function getInstanceAccessManager() external view returns (InstanceAccessManager) {
|
255
|
-
return _accessManager;
|
238
|
+
return IBundleService(_registry.getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
|
256
239
|
}
|
257
240
|
|
258
241
|
function setInstanceReader(InstanceReader instanceReader) external restricted() {
|
259
|
-
require(instanceReader.
|
242
|
+
require(instanceReader.getInstance() == Instance(this), "InstanceReader instance mismatch");
|
260
243
|
_instanceReader = instanceReader;
|
261
244
|
}
|
262
245
|
|
@@ -266,7 +249,7 @@ contract Instance is
|
|
266
249
|
|
267
250
|
function setBundleManager(BundleManager bundleManager) external restricted() {
|
268
251
|
require(address(_bundleManager) == address(0), "BundleManager is set");
|
269
|
-
require(bundleManager.
|
252
|
+
require(bundleManager.getInstance() == Instance(this), "BundleManager instance mismatch");
|
270
253
|
_bundleManager = bundleManager;
|
271
254
|
}
|
272
255
|
|
@@ -6,7 +6,7 @@ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStri
|
|
6
6
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
7
7
|
|
8
8
|
import {AccessManagerUpgradeableInitializeable} from "../../contracts/instance/AccessManagerUpgradeableInitializeable.sol";
|
9
|
-
import {RoleId, RoleIdLib
|
9
|
+
import {RoleId, RoleIdLib } from "../types/RoleId.sol";
|
10
10
|
import {TimestampLib} from "../types/Timestamp.sol";
|
11
11
|
import {IAccess} from "./module/IAccess.sol";
|
12
12
|
|
@@ -46,21 +46,6 @@ contract InstanceAccessManager is
|
|
46
46
|
|
47
47
|
_createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
|
48
48
|
_createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
|
49
|
-
|
50
|
-
createDefaultGifRoles();
|
51
|
-
}
|
52
|
-
|
53
|
-
function createDefaultGifRoles() public restricted() {
|
54
|
-
_createRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", false, true);
|
55
|
-
_createRole(POOL_OWNER_ROLE(), "PoolOwnerRole", false, true);
|
56
|
-
_createRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", false, true);
|
57
|
-
|
58
|
-
_createRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole", false, true);
|
59
|
-
_createRole(POOL_SERVICE_ROLE(), "PoolServiceRole", false, true);
|
60
|
-
_createRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole", false, true);
|
61
|
-
_createRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole", false, true);
|
62
|
-
_createRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole", false, true);
|
63
|
-
_createRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole", false, true);
|
64
49
|
}
|
65
50
|
|
66
51
|
//--- Role ------------------------------------------------------//
|
@@ -251,6 +236,13 @@ contract InstanceAccessManager is
|
|
251
236
|
_validateTargetParameters(target, name, isCustom);
|
252
237
|
}
|
253
238
|
|
239
|
+
if (_target[target].createdAt.gtz()) {
|
240
|
+
revert IAccess.ErrorIAccessTargetAlreadyExists(target, _target[target].name);
|
241
|
+
}
|
242
|
+
if (_targetForName[ShortStrings.toShortString(name)] != address(0)) {
|
243
|
+
revert IAccess.ErrorIAccessTargetNameExists(target, _targetForName[ShortStrings.toShortString(name)], ShortStrings.toShortString(name));
|
244
|
+
}
|
245
|
+
|
254
246
|
IAccess.TargetInfo memory info = IAccess.TargetInfo(
|
255
247
|
ShortStrings.toShortString(name),
|
256
248
|
isCustom,
|
@@ -291,9 +283,16 @@ contract InstanceAccessManager is
|
|
291
283
|
|
292
284
|
function setTargetClosed(string memory targetName, bool closed) public restricted() {
|
293
285
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
286
|
+
if (target == address(0)) {
|
287
|
+
revert IAccess.ErrorIAccessTargetAddressZero();
|
288
|
+
}
|
294
289
|
_accessManager.setTargetClosed(target, closed);
|
295
290
|
}
|
296
291
|
|
292
|
+
function isTargetLocked(address target) public view returns (bool locked) {
|
293
|
+
return _accessManager.isTargetClosed(target);
|
294
|
+
}
|
295
|
+
|
297
296
|
function canCall(
|
298
297
|
address caller,
|
299
298
|
address target,
|
@@ -22,8 +22,6 @@ import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
|
22
22
|
import {StateId, ACTIVE} from "../types/StateId.sol";
|
23
23
|
import {ERC165} from "../shared/ERC165.sol";
|
24
24
|
import {Registerable} from "../shared/Registerable.sol";
|
25
|
-
import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
|
26
|
-
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
27
25
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
28
26
|
import {IPoolService} from "./service/IPoolService.sol";
|
29
27
|
import {IProductService} from "./service/IProductService.sol";
|
@@ -33,7 +31,6 @@ import {IInstanceBase} from "./IInstanceBase.sol";
|
|
33
31
|
contract InstanceBase is
|
34
32
|
IInstanceBase,
|
35
33
|
KeyValueStore,
|
36
|
-
ERC165,
|
37
34
|
Registerable
|
38
35
|
{
|
39
36
|
|
@@ -31,39 +31,21 @@ contract InstanceReader {
|
|
31
31
|
bool private _initialized;
|
32
32
|
|
33
33
|
IRegistry internal _registry;
|
34
|
-
NftId internal _instanceNftId;
|
35
34
|
IInstance internal _instance;
|
36
35
|
IKeyValueStore internal _store;
|
37
36
|
|
38
|
-
|
39
|
-
address registry,
|
40
|
-
NftId instanceNftId
|
41
|
-
)
|
42
|
-
{
|
43
|
-
initialize(registry, instanceNftId);
|
44
|
-
}
|
45
|
-
|
46
|
-
function initialize(address registry, NftId instanceNftId) public {
|
37
|
+
function initialize(address registry, address instance) public {
|
47
38
|
require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
|
48
39
|
|
49
40
|
require(
|
50
41
|
address(registry) != address(0),
|
51
42
|
"ERROR:CRD-001:REGISTRY_ZERO");
|
52
43
|
|
53
|
-
require(
|
54
|
-
instanceNftId.gtz(),
|
55
|
-
"ERROR:CRD-002:NFT_ID_ZERO");
|
56
44
|
|
57
45
|
_registry = IRegistry(registry);
|
58
|
-
_instanceNftId = instanceNftId;
|
59
|
-
IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(_instanceNftId);
|
60
46
|
|
61
|
-
|
62
|
-
|
63
|
-
"ERROR:CRD-003:PARENT_NOT_INSTANCE");
|
64
|
-
|
65
|
-
_instance = IInstance(instanceInfo.objectAddress);
|
66
|
-
_store = IKeyValueStore(instanceInfo.objectAddress);
|
47
|
+
_instance = IInstance(instance);
|
48
|
+
_store = IKeyValueStore(instance);
|
67
49
|
|
68
50
|
_initialized = true;
|
69
51
|
}
|
@@ -301,10 +283,6 @@ contract InstanceReader {
|
|
301
283
|
return _store;
|
302
284
|
}
|
303
285
|
|
304
|
-
function getInstanceNftId() external view returns (NftId nftId) {
|
305
|
-
return _instanceNftId;
|
306
|
-
}
|
307
|
-
|
308
286
|
function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
|
309
287
|
return UFixedLib.toUFixed(value, exp);
|
310
288
|
}
|
@@ -4,19 +4,20 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
5
|
|
6
6
|
import {Instance} from "./Instance.sol";
|
7
|
+
import {IInstance} from "./IInstance.sol";
|
7
8
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
8
9
|
import {IInstanceService} from "./IInstanceService.sol";
|
9
10
|
import {InstanceReader} from "./InstanceReader.sol";
|
10
11
|
import {BundleManager} from "./BundleManager.sol";
|
11
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
|
-
import {
|
13
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
13
14
|
import {ChainNft} from "../registry/ChainNft.sol";
|
14
15
|
import {Service} from "../../contracts/shared/Service.sol";
|
15
16
|
import {IService} from "../shared/IService.sol";
|
16
17
|
import {NftId} from "../../contracts/types/NftId.sol";
|
17
18
|
import {RoleId} from "../types/RoleId.sol";
|
18
|
-
import {
|
19
|
-
import {
|
19
|
+
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
20
|
+
import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
20
21
|
|
21
22
|
contract InstanceService is Service, IInstanceService {
|
22
23
|
|
@@ -27,7 +28,6 @@ contract InstanceService is Service, IInstanceService {
|
|
27
28
|
|
28
29
|
// TODO update to real hash when instance is stable
|
29
30
|
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
30
|
-
string public constant NAME = "InstanceService";
|
31
31
|
|
32
32
|
modifier onlyInstanceOwner(NftId instanceNftId) {
|
33
33
|
IRegistry registry = getRegistry();
|
@@ -39,6 +39,14 @@ contract InstanceService is Service, IInstanceService {
|
|
39
39
|
_;
|
40
40
|
}
|
41
41
|
|
42
|
+
modifier onlyRegisteredService() {
|
43
|
+
address caller = msg.sender;
|
44
|
+
if (! getRegistry().isRegisteredService(caller)) {
|
45
|
+
revert ErrorInstanceServiceRequestUnauhorized(caller);
|
46
|
+
}
|
47
|
+
_;
|
48
|
+
}
|
49
|
+
|
42
50
|
function createInstanceClone()
|
43
51
|
external
|
44
52
|
returns (
|
@@ -53,8 +61,8 @@ contract InstanceService is Service, IInstanceService {
|
|
53
61
|
IRegistry registry = getRegistry();
|
54
62
|
address registryAddress = address(registry);
|
55
63
|
NftId registryNftId = registry.getNftId(registryAddress);
|
56
|
-
address registryServiceAddress = registry.getServiceAddress(
|
57
|
-
|
64
|
+
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
|
65
|
+
IRegistryService registryService = IRegistryService(registryServiceAddress);
|
58
66
|
|
59
67
|
// initially set the authority of the access managar to this (being the instance service).
|
60
68
|
// This will allow the instance service to bootstrap the authorizations of the instance
|
@@ -64,15 +72,13 @@ contract InstanceService is Service, IInstanceService {
|
|
64
72
|
|
65
73
|
clonedInstance = Instance(Clones.clone(_masterInstance));
|
66
74
|
clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
|
67
|
-
( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
|
68
|
-
clonedInstanceNftId = info.nftId;
|
69
75
|
|
70
76
|
clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
71
|
-
clonedInstanceReader.initialize(registryAddress,
|
77
|
+
clonedInstanceReader.initialize(registryAddress, address(clonedInstance));
|
72
78
|
clonedInstance.setInstanceReader(clonedInstanceReader);
|
73
79
|
|
74
80
|
clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
75
|
-
clonedBundleManager.initialize(address(clonedAccessManager), registryAddress,
|
81
|
+
clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, address(clonedInstance));
|
76
82
|
clonedInstance.setBundleManager(clonedBundleManager);
|
77
83
|
|
78
84
|
// TODO amend setters with instance specific , policy manager ...
|
@@ -84,10 +90,16 @@ contract InstanceService is Service, IInstanceService {
|
|
84
90
|
clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
|
85
91
|
clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
|
86
92
|
|
93
|
+
( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance, instanceOwner);
|
94
|
+
clonedInstanceNftId = info.nftId;
|
95
|
+
clonedInstance.linkToRegisteredNftId();
|
96
|
+
|
87
97
|
emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
|
88
98
|
}
|
89
99
|
|
90
100
|
function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
101
|
+
_createGifRoles(clonedAccessManager);
|
102
|
+
_createGifTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
|
91
103
|
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
92
104
|
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
93
105
|
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
@@ -96,36 +108,54 @@ contract InstanceService is Service, IInstanceService {
|
|
96
108
|
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
97
109
|
}
|
98
110
|
|
111
|
+
function _createGifRoles(InstanceAccessManager clonedAccessManager) internal {
|
112
|
+
clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole");
|
113
|
+
clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole");
|
114
|
+
clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole");
|
115
|
+
|
116
|
+
clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
117
|
+
clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
118
|
+
clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
119
|
+
clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
120
|
+
clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
121
|
+
clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
122
|
+
}
|
123
|
+
|
124
|
+
function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
125
|
+
clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
|
126
|
+
clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
|
127
|
+
}
|
128
|
+
|
99
129
|
function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
100
130
|
// configure authorization for distribution service on instance
|
101
131
|
IRegistry registry = getRegistry();
|
102
|
-
address distributionServiceAddress =
|
103
|
-
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(),
|
132
|
+
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
133
|
+
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
104
134
|
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
|
105
135
|
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
106
136
|
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
107
137
|
clonedAccessManager.setTargetFunctionRole(
|
108
|
-
|
138
|
+
"Instance",
|
109
139
|
instanceDistributionServiceSelectors,
|
110
|
-
DISTRIBUTION_SERVICE_ROLE()
|
140
|
+
DISTRIBUTION_SERVICE_ROLE());
|
111
141
|
}
|
112
142
|
|
113
143
|
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
114
144
|
// configure authorization for pool service on instance
|
115
|
-
address poolServiceAddress = _registry.getServiceAddress(
|
145
|
+
address poolServiceAddress = _registry.getServiceAddress(POOL(), getMajorVersion());
|
116
146
|
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
117
147
|
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
118
148
|
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
119
149
|
instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
|
120
150
|
clonedAccessManager.setTargetFunctionRole(
|
121
|
-
|
151
|
+
"Instance",
|
122
152
|
instancePoolServiceSelectors,
|
123
|
-
POOL_SERVICE_ROLE()
|
153
|
+
POOL_SERVICE_ROLE());
|
124
154
|
}
|
125
155
|
|
126
156
|
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
127
157
|
// configure authorization for product service on instance
|
128
|
-
address productServiceAddress = _registry.getServiceAddress(
|
158
|
+
address productServiceAddress = _registry.getServiceAddress(PRODUCT(), getMajorVersion());
|
129
159
|
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
130
160
|
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
131
161
|
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
@@ -134,36 +164,36 @@ contract InstanceService is Service, IInstanceService {
|
|
134
164
|
instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
|
135
165
|
instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
|
136
166
|
clonedAccessManager.setTargetFunctionRole(
|
137
|
-
|
167
|
+
"Instance",
|
138
168
|
instanceProductServiceSelectors,
|
139
|
-
PRODUCT_SERVICE_ROLE()
|
169
|
+
PRODUCT_SERVICE_ROLE());
|
140
170
|
}
|
141
171
|
|
142
172
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
143
173
|
// configure authorization for policy service on instance
|
144
|
-
address policyServiceAddress = _registry.getServiceAddress(
|
174
|
+
address policyServiceAddress = _registry.getServiceAddress(POLICY(), getMajorVersion());
|
145
175
|
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
|
146
176
|
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
|
147
177
|
instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
|
148
178
|
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
|
149
179
|
instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
|
150
180
|
clonedAccessManager.setTargetFunctionRole(
|
151
|
-
|
181
|
+
"Instance",
|
152
182
|
instancePolicyServiceSelectors,
|
153
|
-
POLICY_SERVICE_ROLE()
|
183
|
+
POLICY_SERVICE_ROLE());
|
154
184
|
}
|
155
185
|
|
156
186
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
157
187
|
// configure authorization for bundle service on instance
|
158
|
-
address bundleServiceAddress = _registry.getServiceAddress(
|
188
|
+
address bundleServiceAddress = _registry.getServiceAddress(BUNDLE(), getMajorVersion());
|
159
189
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
160
190
|
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
|
161
191
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
162
192
|
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
163
193
|
clonedAccessManager.setTargetFunctionRole(
|
164
|
-
|
194
|
+
"Instance",
|
165
195
|
instanceBundleServiceSelectors,
|
166
|
-
BUNDLE_SERVICE_ROLE()
|
196
|
+
BUNDLE_SERVICE_ROLE());
|
167
197
|
|
168
198
|
// configure authorization for bundle service on bundle manager
|
169
199
|
bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
|
@@ -173,24 +203,32 @@ contract InstanceService is Service, IInstanceService {
|
|
173
203
|
bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
|
174
204
|
bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
|
175
205
|
clonedAccessManager.setTargetFunctionRole(
|
176
|
-
|
206
|
+
"BundleManager",
|
177
207
|
bundleManagerBundleServiceSelectors,
|
178
|
-
BUNDLE_SERVICE_ROLE()
|
208
|
+
BUNDLE_SERVICE_ROLE());
|
179
209
|
}
|
180
210
|
|
181
211
|
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
182
212
|
// configure authorization for instance service on instance
|
183
|
-
address instanceServiceAddress = _registry.getServiceAddress(
|
213
|
+
address instanceServiceAddress = _registry.getServiceAddress(INSTANCE(), getMajorVersion());
|
184
214
|
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
185
215
|
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
186
216
|
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
187
217
|
clonedAccessManager.setTargetFunctionRole(
|
188
|
-
|
218
|
+
"Instance",
|
189
219
|
instanceInstanceServiceSelectors,
|
190
|
-
INSTANCE_SERVICE_ROLE()
|
220
|
+
INSTANCE_SERVICE_ROLE());
|
191
221
|
}
|
192
222
|
|
193
|
-
function setMasterInstance(
|
223
|
+
function setMasterInstance(
|
224
|
+
address accessManagerAddress,
|
225
|
+
address instanceAddress,
|
226
|
+
address instanceReaderAddress,
|
227
|
+
address bundleManagerAddress)
|
228
|
+
external
|
229
|
+
onlyOwner
|
230
|
+
returns(NftId masterInstanceNftId)
|
231
|
+
{
|
194
232
|
require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
|
195
233
|
require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
|
196
234
|
require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
|
@@ -200,18 +238,25 @@ contract InstanceService is Service, IInstanceService {
|
|
200
238
|
require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
|
201
239
|
require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
|
202
240
|
|
203
|
-
|
241
|
+
IInstance instance = IInstance(instanceAddress);
|
204
242
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
205
243
|
BundleManager bundleManager = BundleManager(bundleManagerAddress);
|
206
244
|
|
207
245
|
require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
|
208
|
-
require(instanceReader.
|
209
|
-
require(bundleManager.
|
246
|
+
require(instanceReader.getInstance() == instance, "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
|
247
|
+
require(bundleManager.getInstance() == instance, "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
|
210
248
|
|
211
249
|
_masterInstanceAccessManager = accessManagerAddress;
|
212
250
|
_masterInstance = instanceAddress;
|
213
251
|
_masterInstanceReader = instanceReaderAddress;
|
214
252
|
_masterInstanceBundleManager = bundleManagerAddress;
|
253
|
+
|
254
|
+
IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
|
255
|
+
IInstance masterInstance = IInstance(_masterInstance);
|
256
|
+
(IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(masterInstance, getOwner());
|
257
|
+
masterInstanceNftId = info.nftId;
|
258
|
+
|
259
|
+
masterInstance.linkToRegisteredNftId();
|
215
260
|
}
|
216
261
|
|
217
262
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
@@ -220,11 +265,12 @@ contract InstanceService is Service, IInstanceService {
|
|
220
265
|
require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
|
221
266
|
|
222
267
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
223
|
-
require(instanceReader.
|
268
|
+
require(instanceReader.getInstance() == IInstance(_masterInstance), "ERROR:CRD-015:INSTANCE_READER_INSTANCE_MISMATCH");
|
224
269
|
|
225
270
|
_masterInstanceReader = instanceReaderAddress;
|
226
271
|
}
|
227
272
|
|
273
|
+
// TODO access restriction
|
228
274
|
function upgradeInstanceReader(NftId instanceNftId) external {
|
229
275
|
IRegistry registry = getRegistry();
|
230
276
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
@@ -236,7 +282,7 @@ contract InstanceService is Service, IInstanceService {
|
|
236
282
|
}
|
237
283
|
|
238
284
|
InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
239
|
-
upgradedInstanceReaderClone.initialize(address(registry),
|
285
|
+
upgradedInstanceReaderClone.initialize(address(registry), address(instance));
|
240
286
|
instance.setInstanceReader(upgradedInstanceReaderClone);
|
241
287
|
}
|
242
288
|
|
@@ -257,15 +303,11 @@ contract InstanceService is Service, IInstanceService {
|
|
257
303
|
}
|
258
304
|
|
259
305
|
// From IService
|
260
|
-
function
|
261
|
-
return
|
306
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
307
|
+
return INSTANCE();
|
262
308
|
}
|
263
309
|
|
264
310
|
/// @dev top level initializer
|
265
|
-
// 1) registry is non upgradeable -> don't need a proxy and uses constructor !
|
266
|
-
// 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
|
267
|
-
// 3) deploy registry -> pass registry service address as constructor argument
|
268
|
-
// registry is getting instantiated and locked to registry service address forever
|
269
311
|
function _initialize(
|
270
312
|
address owner,
|
271
313
|
bytes memory data
|
@@ -274,21 +316,47 @@ contract InstanceService is Service, IInstanceService {
|
|
274
316
|
initializer
|
275
317
|
virtual override
|
276
318
|
{
|
277
|
-
address initialOwner
|
278
|
-
address registryAddress
|
319
|
+
address initialOwner;
|
320
|
+
address registryAddress;
|
279
321
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
280
322
|
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
281
323
|
// owner is InstanceServiceManager deployer
|
282
324
|
_initializeService(registryAddress, owner);
|
283
325
|
|
284
|
-
_registerInterface(type(IService).interfaceId);
|
285
326
|
_registerInterface(type(IInstanceService).interfaceId);
|
286
327
|
}
|
287
328
|
|
288
329
|
function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
|
289
330
|
Instance instance = Instance(instanceAddress);
|
290
|
-
InstanceAccessManager accessManager = instance.
|
331
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
291
332
|
return accessManager.hasRole(role, account);
|
292
333
|
}
|
334
|
+
|
335
|
+
function createTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
|
336
|
+
IRegistry registry = getRegistry();
|
337
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
338
|
+
Instance instance = Instance(instanceInfo.objectAddress);
|
339
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
340
|
+
accessManager.createTarget(targetAddress, targetName);
|
341
|
+
}
|
342
|
+
|
343
|
+
function setTargetLocked(string memory targetName, bool locked) external {
|
344
|
+
address componentAddress = msg.sender;
|
345
|
+
IRegistry registry = getRegistry();
|
346
|
+
IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
|
347
|
+
if (componentInfo.nftId.eqz()) {
|
348
|
+
revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
|
349
|
+
}
|
350
|
+
|
351
|
+
// TODO validate component type
|
352
|
+
|
353
|
+
|
354
|
+
address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
|
355
|
+
IInstance instance = IInstance(instanceAddress);
|
356
|
+
|
357
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
358
|
+
accessManager.setTargetClosed(targetName, locked);
|
359
|
+
}
|
360
|
+
|
293
361
|
}
|
294
362
|
|
@@ -7,7 +7,7 @@ import {ProxyManager} from "../shared/ProxyManager.sol";
|
|
7
7
|
import {InstanceService} from "./InstanceService.sol";
|
8
8
|
import {Registry} from "../registry/Registry.sol";
|
9
9
|
import {RegistryService} from "../registry/RegistryService.sol";
|
10
|
-
import {
|
10
|
+
import {REGISTRY} from "../types/ObjectType.sol";
|
11
11
|
|
12
12
|
contract InstanceServiceManager is ProxyManager {
|
13
13
|
|
@@ -28,10 +28,10 @@ contract InstanceServiceManager is ProxyManager {
|
|
28
28
|
|
29
29
|
_instanceService = InstanceService(address(versionable));
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
//
|
31
|
+
// TODO `this` must have a role or own nft to register service
|
32
|
+
//Registry registry = Registry(registryAddress);
|
33
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _instanceService.getMajorVersion());
|
34
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
35
35
|
//registryService.registerService(_instanceService);
|
36
36
|
// RegistryService registryService = _instanceService.getRegistryService();
|
37
37
|
|
@@ -40,9 +40,6 @@ contract InstanceServiceManager is ProxyManager {
|
|
40
40
|
//_linkToNftOwnable(
|
41
41
|
// address(registryAddress),
|
42
42
|
// address(_instanceService));
|
43
|
-
|
44
|
-
// implies that after this constructor call only upgrade functionality is available
|
45
|
-
_isDeployed = true;
|
46
43
|
}
|
47
44
|
|
48
45
|
//--- view functions ----------------------------------------------------//
|