@etherisc/gif-next 0.0.2-9d3eab3-323 → 0.0.2-9dd1984-554
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} +51 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +51 -104
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IBaseComponent.sol/IBaseComponent.json → IComponent.sol/IComponent.json} +51 -6
- 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 +51 -132
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +56 -120
- 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 +2 -2
- 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 +90 -13
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -616
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +221 -114
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +126 -229
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -126
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- 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} +98 -24
- 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 +59 -16
- 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 +219 -48
- 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 +131 -38
- 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 +51 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +107 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +308 -60
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +48 -20
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +131 -38
- 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 +131 -38
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +13 -9
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +3 -3
- 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 +85 -59
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +33 -23
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -17
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +13 -13
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +84 -101
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- 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/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/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 +2 -2
- 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/Component.sol +177 -0
- package/contracts/components/Distribution.sol +5 -14
- package/contracts/components/{IBaseComponent.sol → IComponent.sol} +12 -6
- package/contracts/components/IProductComponent.sol +2 -2
- package/contracts/components/Pool.sol +7 -20
- package/contracts/components/Product.sol +21 -18
- package/contracts/instance/IInstance.sol +3 -3
- package/contracts/instance/IInstanceBase.sol +0 -1
- package/contracts/instance/IInstanceService.sol +10 -4
- package/contracts/instance/Instance.sol +6 -208
- package/contracts/instance/InstanceAccessManager.sol +92 -77
- package/contracts/instance/InstanceBase.sol +0 -2
- package/contracts/instance/InstanceService.sol +117 -71
- package/contracts/instance/InstanceServiceManager.sol +5 -9
- package/contracts/instance/base/ComponentService.sol +133 -0
- package/contracts/instance/base/IInstanceBase.sol +0 -2
- package/contracts/instance/module/IAccess.sol +27 -17
- package/contracts/instance/service/BundleService.sol +38 -5
- package/contracts/instance/service/BundleServiceManager.sol +5 -9
- package/contracts/instance/service/DistributionService.sol +33 -32
- package/contracts/instance/service/DistributionServiceManager.sol +6 -10
- package/contracts/instance/service/IBundleService.sol +5 -6
- package/contracts/instance/service/IPolicyService.sol +7 -0
- package/contracts/instance/service/PolicyService.sol +62 -27
- package/contracts/instance/service/PoolService.sol +46 -26
- package/contracts/instance/service/PoolServiceManager.sol +5 -9
- package/contracts/instance/service/ProductService.sol +104 -31
- package/contracts/registry/IRegistry.sol +17 -3
- package/contracts/registry/IRegistryService.sol +5 -5
- package/contracts/registry/Registry.sol +30 -19
- package/contracts/registry/RegistryAccessManager.sol +27 -27
- package/contracts/registry/RegistryService.sol +22 -32
- package/contracts/registry/RegistryServiceManager.sol +4 -2
- package/contracts/registry/ReleaseManager.sol +87 -123
- package/contracts/registry/TokenRegistry.sol +4 -4
- package/contracts/shared/IRegisterable.sol +0 -2
- package/contracts/shared/NftOwnable.sol +2 -0
- package/contracts/shared/Service.sol +4 -2
- package/contracts/types/RoleId.sol +6 -7
- 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/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- 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 -814
- 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/components/BaseComponent.sol +0 -132
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -2,27 +2,23 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
|
5
|
-
import {NftId, toNftId, zeroNftId
|
6
|
-
import {
|
5
|
+
import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
|
6
|
+
import {VersionPart} from "../types/Version.sol";
|
7
7
|
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
8
8
|
|
9
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
|
-
import {IService} from "../shared/IService.sol";
|
11
9
|
import {ERC165} from "../shared/ERC165.sol";
|
12
10
|
|
13
11
|
import {ChainNft} from "./ChainNft.sol";
|
14
12
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
16
|
-
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
17
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
18
14
|
|
19
|
-
// IMPORTANT
|
15
|
+
// IMPORTANT
|
20
16
|
// Each NFT minted by registry is accosiated with:
|
21
17
|
// 1) NFT owner
|
22
18
|
// 2) registred contract OR object stored in registered (parent) contract
|
23
19
|
// Four registration flows:
|
24
|
-
// 1) IService address by release manager (SERVICE of
|
25
|
-
// 2) IService address by release manager (SERVICE of
|
20
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
21
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
26
22
|
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
27
23
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
28
24
|
|
@@ -30,15 +26,15 @@ contract Registry is
|
|
30
26
|
ERC165,
|
31
27
|
IRegistry
|
32
28
|
{
|
33
|
-
uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
|
34
29
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
35
30
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
36
|
-
uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
|
37
31
|
string public constant EMPTY_URI = "";
|
38
32
|
|
39
33
|
mapping(NftId nftId => ObjectInfo info) internal _info;
|
40
34
|
mapping(address object => NftId nftId) internal _nftIdByAddress;
|
41
35
|
|
36
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) _service;
|
37
|
+
|
42
38
|
mapping(ObjectType objectType => mapping(
|
43
39
|
ObjectType parentType => bool)) internal _isValidContractCombination;
|
44
40
|
|
@@ -64,12 +60,9 @@ contract Registry is
|
|
64
60
|
_;
|
65
61
|
}
|
66
62
|
|
67
|
-
constructor(
|
63
|
+
constructor()
|
68
64
|
{
|
69
|
-
|
70
|
-
require(initialVersion.toInt() > 0, "Registry: initial version is 0");
|
71
|
-
|
72
|
-
_releaseManager = ReleaseManager(releaseManager);
|
65
|
+
_releaseManager = ReleaseManager(msg.sender);
|
73
66
|
|
74
67
|
// deploy NFT
|
75
68
|
_chainNft = new ChainNft(address(this));// adds 10kb to deployment size
|
@@ -84,7 +77,11 @@ contract Registry is
|
|
84
77
|
_registerInterface(type(IRegistry).interfaceId);
|
85
78
|
}
|
86
79
|
|
87
|
-
function registerService(
|
80
|
+
function registerService(
|
81
|
+
ObjectInfo memory info,
|
82
|
+
VersionPart version,
|
83
|
+
ObjectType domain
|
84
|
+
)
|
88
85
|
external
|
89
86
|
onlyReleaseManager
|
90
87
|
returns(NftId nftId)
|
@@ -95,7 +92,16 @@ contract Registry is
|
|
95
92
|
}
|
96
93
|
info.initialOwner = NFT_LOCK_ADDRESS <- if services are access managed
|
97
94
|
*/
|
95
|
+
|
96
|
+
if(_service[version][domain] > address(0)) {
|
97
|
+
revert ServiceAlreadyRegistered(info.objectAddress);
|
98
|
+
}
|
99
|
+
|
100
|
+
_service[version][domain] = info.objectAddress; // nftId;
|
101
|
+
|
98
102
|
nftId = _register(info);
|
103
|
+
|
104
|
+
emit LogServiceRegistration(version, domain);
|
99
105
|
}
|
100
106
|
|
101
107
|
function register(ObjectInfo memory info)
|
@@ -132,6 +138,11 @@ contract Registry is
|
|
132
138
|
return _releaseManager.getLatestVersion();
|
133
139
|
}
|
134
140
|
|
141
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory)
|
142
|
+
{
|
143
|
+
return _releaseManager.getReleaseInfo(version);
|
144
|
+
}
|
145
|
+
|
135
146
|
function getObjectCount() external view override returns (uint256) {
|
136
147
|
return _chainNft.totalSupply();
|
137
148
|
}
|
@@ -173,11 +184,11 @@ contract Registry is
|
|
173
184
|
}
|
174
185
|
|
175
186
|
function getServiceAddress(
|
176
|
-
ObjectType
|
187
|
+
ObjectType serviceDomain,
|
177
188
|
VersionPart releaseVersion
|
178
189
|
) external view returns (address)
|
179
190
|
{
|
180
|
-
return
|
191
|
+
return _service[releaseVersion][serviceDomain];
|
181
192
|
}
|
182
193
|
|
183
194
|
function getChainNft() external view override returns (ChainNft) {
|
@@ -4,15 +4,11 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
6
|
|
7
|
-
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
8
7
|
import {RoleId, RoleIdLib,
|
9
8
|
REGISTRY_SERVICE_MANAGER_ROLE,
|
10
9
|
REGISTRY_SERVICE_ADMIN_ROLE,
|
11
10
|
RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
|
12
11
|
|
13
|
-
import {Registry} from "./Registry.sol";
|
14
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
15
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
16
12
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
17
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
18
14
|
|
@@ -37,9 +33,12 @@ import {ReleaseManager} from "./ReleaseManager.sol";
|
|
37
33
|
|
38
34
|
contract RegistryAccessManager is AccessManaged
|
39
35
|
{
|
40
|
-
|
36
|
+
error NotInitialized();
|
37
|
+
error AlreadyInitialized();
|
38
|
+
|
39
|
+
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
41
40
|
|
42
|
-
AccessManager private _accessManager;
|
41
|
+
AccessManager private immutable _accessManager;
|
43
42
|
address private _releaseManager;
|
44
43
|
address private _tokenRegistry;
|
45
44
|
|
@@ -48,15 +47,15 @@ contract RegistryAccessManager is AccessManaged
|
|
48
47
|
|
49
48
|
modifier onlyOnce() {
|
50
49
|
if(_isInitialized) {
|
51
|
-
revert();
|
52
|
-
}
|
50
|
+
revert AlreadyInitialized();
|
51
|
+
}
|
53
52
|
_;
|
54
53
|
_isInitialized = true;
|
55
54
|
}
|
56
55
|
|
57
56
|
modifier onlyInitialized() {
|
58
57
|
if(!_isInitialized) {
|
59
|
-
revert();
|
58
|
+
revert NotInitialized();
|
60
59
|
}
|
61
60
|
_;
|
62
61
|
}
|
@@ -67,7 +66,7 @@ contract RegistryAccessManager is AccessManaged
|
|
67
66
|
_accessManager = new AccessManager(address(this));
|
68
67
|
setAuthority(address(_accessManager));
|
69
68
|
|
70
|
-
_idNext =
|
69
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
71
70
|
|
72
71
|
_configureAdminRoleInitial();
|
73
72
|
|
@@ -76,16 +75,16 @@ contract RegistryAccessManager is AccessManaged
|
|
76
75
|
_grantRole(REGISTRY_SERVICE_MANAGER_ROLE(), manager, 0);
|
77
76
|
}
|
78
77
|
|
79
|
-
// TODO need release manager authorization to configure roles for service functions and to grant those roles
|
80
78
|
function initialize(address releaseManager, address tokenRegistry)
|
81
79
|
external
|
82
80
|
restricted // GIF_ADMIN_ROLE
|
83
81
|
onlyOnce
|
84
82
|
{
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
require(
|
84
|
+
ReleaseManager(releaseManager).authority() == address(_accessManager),
|
85
|
+
"RegistryAccessManager: release manager authority is invalid");
|
86
|
+
require(tokenRegistry > address(0), "RegistryAccessManager: token registry is 0");
|
87
|
+
//require(tokenRegistry.authority() == address(_accessManager));
|
89
88
|
|
90
89
|
_releaseManager = releaseManager;
|
91
90
|
_tokenRegistry = tokenRegistry;
|
@@ -108,13 +107,14 @@ contract RegistryAccessManager is AccessManaged
|
|
108
107
|
onlyInitialized
|
109
108
|
returns(RoleId)
|
110
109
|
{
|
110
|
+
// TODO questionable check...
|
111
111
|
// target is not part of `runtime`
|
112
|
-
if(
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
{
|
112
|
+
//if(
|
113
|
+
// target == address(this) ||
|
114
|
+
// target == address(_accessManager) ||
|
115
|
+
// target == _releaseManager ||
|
116
|
+
// target == _tokenRegistry)
|
117
|
+
//{ return TargetInvalid(); }
|
118
118
|
|
119
119
|
RoleId roleId = _getNextRoleId();
|
120
120
|
|
@@ -154,14 +154,14 @@ contract RegistryAccessManager is AccessManaged
|
|
154
154
|
{
|
155
155
|
bytes4[] memory functionSelector = new bytes4[](1);
|
156
156
|
|
157
|
-
//
|
157
|
+
// for RegistryServiceProxyManager
|
158
158
|
// TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
|
159
159
|
//functionSelector[0] = RegistryServiceManager.upgrade.selector;
|
160
160
|
//_setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
161
161
|
|
162
|
-
//
|
162
|
+
// for TokenRegistry
|
163
163
|
|
164
|
-
//
|
164
|
+
// for ReleaseManager
|
165
165
|
functionSelector[0] = ReleaseManager.createNextRelease.selector;
|
166
166
|
_setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
167
167
|
//functionSelector[0] = ReleaseManager.activateNextRelease.selector;
|
@@ -172,15 +172,15 @@ contract RegistryAccessManager is AccessManaged
|
|
172
172
|
{
|
173
173
|
bytes4[] memory functionSelector = new bytes4[](1);
|
174
174
|
|
175
|
-
//
|
175
|
+
// for TokenRegistry
|
176
176
|
functionSelector[0] = TokenRegistry.setActive.selector;
|
177
177
|
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, REGISTRY_SERVICE_MANAGER_ROLE());
|
178
178
|
|
179
|
-
//
|
179
|
+
// for ReleaseManager
|
180
180
|
functionSelector[0] = ReleaseManager.registerService.selector;
|
181
181
|
_setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_MANAGER_ROLE());
|
182
182
|
|
183
|
-
// set
|
183
|
+
// set admin
|
184
184
|
_setRoleAdmin(REGISTRY_SERVICE_MANAGER_ROLE(), REGISTRY_SERVICE_ADMIN_ROLE());
|
185
185
|
}
|
186
186
|
|
@@ -8,7 +8,7 @@ import {IRegistry} from "./IRegistry.sol";
|
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
|
10
10
|
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
11
|
-
import {
|
11
|
+
import {IComponent} from "../../contracts/components/IComponent.sol";
|
12
12
|
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
13
13
|
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
14
14
|
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
@@ -62,7 +62,7 @@ contract RegistryService is
|
|
62
62
|
return (info, data);
|
63
63
|
}
|
64
64
|
|
65
|
-
function registerProduct(
|
65
|
+
function registerProduct(IComponent product, address owner)
|
66
66
|
external
|
67
67
|
restricted
|
68
68
|
returns(
|
@@ -78,13 +78,11 @@ contract RegistryService is
|
|
78
78
|
(info, data) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
79
79
|
|
80
80
|
info.nftId = _registry.register(info);
|
81
|
-
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
82
|
-
product.linkToRegisteredNftId();
|
83
81
|
|
84
82
|
return (info, data);
|
85
83
|
}
|
86
84
|
|
87
|
-
function registerPool(
|
85
|
+
function registerPool(IComponent pool, address owner)
|
88
86
|
external
|
89
87
|
restricted
|
90
88
|
returns(
|
@@ -99,12 +97,11 @@ contract RegistryService is
|
|
99
97
|
(info, data) = _getAndVerifyContractInfo(pool, POOL(), owner);
|
100
98
|
|
101
99
|
info.nftId = _registry.register(info);
|
102
|
-
pool.linkToRegisteredNftId();
|
103
100
|
|
104
101
|
return (info, data);
|
105
102
|
}
|
106
103
|
|
107
|
-
function registerDistribution(
|
104
|
+
function registerDistribution(IComponent distribution, address owner)
|
108
105
|
external
|
109
106
|
restricted
|
110
107
|
returns(
|
@@ -118,8 +115,7 @@ contract RegistryService is
|
|
118
115
|
|
119
116
|
(info, data) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
120
117
|
|
121
|
-
info.nftId = _registry.register(info);
|
122
|
-
distribution.linkToRegisteredNftId();
|
118
|
+
info.nftId = _registry.register(info);
|
123
119
|
|
124
120
|
return (info, data);
|
125
121
|
}
|
@@ -156,7 +152,7 @@ contract RegistryService is
|
|
156
152
|
|
157
153
|
// From IService
|
158
154
|
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
159
|
-
return
|
155
|
+
return REGISTRY();
|
160
156
|
}
|
161
157
|
|
162
158
|
// from Versionable
|
@@ -194,34 +190,28 @@ contract RegistryService is
|
|
194
190
|
|
195
191
|
FunctionConfig[] memory config = new FunctionConfig[](6);
|
196
192
|
|
197
|
-
//
|
198
|
-
config[
|
199
|
-
config[
|
200
|
-
config[0].selector[0] = RegistryService.registerInstance.selector;
|
193
|
+
// order of service registrations MUST be reverse to this array
|
194
|
+
/*config[-1].serviceDomain = STAKE();
|
195
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
201
196
|
|
202
|
-
config[
|
203
|
-
config[
|
204
|
-
config[1].selector[0] = RegistryService.registerPool.selector;
|
197
|
+
config[0].serviceDomain = POLICY();
|
198
|
+
config[0].selector = RegistryService.registerPolicy.selector;
|
205
199
|
|
206
|
-
config[
|
207
|
-
config[
|
208
|
-
config[2].selector[0] = RegistryService.registerDistribution.selector;
|
200
|
+
config[1].serviceDomain = BUNDLE();
|
201
|
+
config[1].selector = RegistryService.registerBundle.selector;
|
209
202
|
|
210
|
-
config[
|
211
|
-
config[
|
212
|
-
config[3].selector[0] = RegistryService.registerProduct.selector;
|
203
|
+
config[2].serviceDomain = PRODUCT();
|
204
|
+
config[2].selector = RegistryService.registerProduct.selector;
|
213
205
|
|
214
|
-
config[
|
215
|
-
config[
|
216
|
-
config[4].selector[0] = RegistryService.registerPolicy.selector;
|
206
|
+
config[3].serviceDomain = POOL();
|
207
|
+
config[3].selector = RegistryService.registerPool.selector;
|
217
208
|
|
218
|
-
config[
|
219
|
-
config[
|
220
|
-
config[5].selector[0] = RegistryService.registerBundle.selector;
|
209
|
+
config[4].serviceDomain = DISTRIBUTION();
|
210
|
+
config[4].selector = RegistryService.registerDistribution.selector;
|
221
211
|
|
222
|
-
|
223
|
-
config[
|
224
|
-
config[
|
212
|
+
// registerInstance() have no restriction
|
213
|
+
config[5].serviceDomain = INSTANCE();
|
214
|
+
config[5].selector = RegistryService.registerInstance.selector;
|
225
215
|
|
226
216
|
data = abi.encode(config);
|
227
217
|
}
|
@@ -17,7 +17,7 @@ contract RegistryServiceManager is
|
|
17
17
|
{
|
18
18
|
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
19
19
|
|
20
|
-
RegistryService private immutable _registryService;
|
20
|
+
RegistryService private immutable _registryService;
|
21
21
|
|
22
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
23
23
|
constructor(
|
@@ -25,6 +25,9 @@ contract RegistryServiceManager is
|
|
25
25
|
address registry) // used by implementation
|
26
26
|
ProxyManager()
|
27
27
|
{
|
28
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
29
|
+
require(registry > address(0), "RegistryServiceManager: registry is 0");
|
30
|
+
|
28
31
|
// implementation's initializer func `data` argument
|
29
32
|
bytes memory initializationData = abi.encode(
|
30
33
|
initialAuthority,
|
@@ -35,7 +38,6 @@ contract RegistryServiceManager is
|
|
35
38
|
initializationData);
|
36
39
|
|
37
40
|
_registryService = RegistryService(address(versionable));
|
38
|
-
|
39
41
|
}
|
40
42
|
|
41
43
|
// from IRegisterable
|