@etherisc/gif-next 0.0.2-7ca6cd9-950 → 0.0.2-7d65090-351
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/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +108 -79
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +48 -40
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +13 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +58 -65
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +120 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -79
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +22 -22
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +6 -6
- 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 +201 -34
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -17
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -116
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.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/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +27 -15
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +78 -49
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -25
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +25 -21
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +27 -19
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +106 -69
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +47 -35
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +36 -24
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -32
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +21 -13
- 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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
- 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 +19 -19
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1647 -153
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -14
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +20 -8
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +80 -154
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
- 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/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +42 -10
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +42 -10
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +52 -20
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +52 -20
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +94 -73
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +41 -37
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +1 -1
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +13 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +2 -2
- 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/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.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/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
- 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/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +23 -39
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +33 -41
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -114
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +18 -18
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +83 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/distribution/DistributionService.sol +3 -4
- package/contracts/instance/IInstance.sol +10 -5
- package/contracts/instance/IInstanceService.sol +24 -8
- package/contracts/instance/Instance.sol +59 -32
- package/contracts/instance/InstanceReader.sol +2 -0
- package/contracts/instance/InstanceService.sol +85 -8
- package/contracts/instance/InstanceStore.sol +4 -16
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectManager.sol +1 -3
- package/contracts/oracle/OracleService.sol +5 -4
- package/contracts/pool/BundleService.sol +19 -19
- package/contracts/pool/PoolService.sol +6 -7
- package/contracts/product/ApplicationService.sol +5 -5
- package/contracts/product/ClaimService.sol +5 -5
- package/contracts/product/PolicyService.sol +5 -5
- package/contracts/product/PricingService.sol +4 -5
- package/contracts/product/ProductService.sol +5 -5
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/Registry.sol +6 -0
- package/contracts/registry/RegistryAdmin.sol +244 -148
- package/contracts/registry/RegistryService.sol +5 -5
- package/contracts/registry/RegistryServiceManager.sol +0 -5
- package/contracts/registry/ReleaseManager.sol +96 -169
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/shared/AccessManagerCustom.sol +6 -1
- package/contracts/shared/AccessManagerExtended.sol +12 -1
- package/contracts/shared/ComponentService.sol +4 -5
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IService.sol +7 -0
- package/contracts/shared/Service.sol +27 -21
- package/contracts/staking/IStakingService.sol +11 -7
- package/contracts/staking/StakeManagerLib.sol +52 -0
- package/contracts/staking/Staking.sol +58 -96
- package/contracts/staking/StakingService.sol +61 -56
- package/contracts/staking/StakingServiceManager.sol +0 -1
- package/contracts/staking/StakingStore.sol +79 -38
- package/contracts/type/ObjectType.sol +135 -62
- package/contracts/type/RoleId.sol +74 -19
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/String.sol +53 -0
- package/package.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
@@ -10,7 +10,7 @@ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
|
10
10
|
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
12
|
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
-
import {ObjectType, ObjectTypeLib, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
13
|
+
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
14
|
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
@@ -26,10 +26,11 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
26
26
|
import {IRegistry} from "./IRegistry.sol";
|
27
27
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
28
28
|
import {IRegistryService} from "./IRegistryService.sol";
|
29
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
30
|
+
import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
|
29
31
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
30
32
|
import {Registry} from "./Registry.sol";
|
31
33
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
32
|
-
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
33
34
|
|
34
35
|
|
35
36
|
contract ReleaseManager is
|
@@ -41,7 +42,7 @@ contract ReleaseManager is
|
|
41
42
|
|
42
43
|
uint256 public constant INITIAL_GIF_VERSION = 3;
|
43
44
|
|
44
|
-
event LogReleaseCreation(VersionPart version, bytes32 salt,
|
45
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
|
45
46
|
event LogReleaseActivation(VersionPart version);
|
46
47
|
|
47
48
|
// constructor
|
@@ -53,13 +54,16 @@ contract ReleaseManager is
|
|
53
54
|
// prepareRelease
|
54
55
|
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
55
56
|
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
56
|
-
|
57
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
|
58
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
59
|
+
|
57
60
|
// register staking
|
58
61
|
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
59
62
|
|
60
63
|
// registerService
|
61
64
|
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
62
65
|
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
63
67
|
error ErrorReleaseManagerNotService(IService service);
|
64
68
|
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
65
69
|
|
@@ -85,10 +89,6 @@ contract ReleaseManager is
|
|
85
89
|
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
86
90
|
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
87
91
|
|
88
|
-
// _verifyReleaseAuthorizations
|
89
|
-
error ErrorReleaseManagerReleaseEmpty();
|
90
|
-
error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
|
91
|
-
|
92
92
|
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
93
93
|
|
94
94
|
RegistryAdmin public immutable _admin;
|
@@ -97,16 +97,20 @@ contract ReleaseManager is
|
|
97
97
|
IRegisterable private _staking;
|
98
98
|
address private _stakingOwner;
|
99
99
|
|
100
|
-
|
100
|
+
// TODO remove once it's clear that release authority will always be registry authority
|
101
|
+
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
101
102
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
102
103
|
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
103
104
|
|
105
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
106
|
+
|
104
107
|
VersionPart immutable internal _initial;// first active version
|
105
108
|
VersionPart internal _latest; // latest active version
|
106
109
|
VersionPart internal _next; // version to create and activate
|
107
110
|
StateId internal _state; // current state of release manager
|
108
111
|
|
109
|
-
uint256 internal
|
112
|
+
uint256 internal _registeredServices;
|
113
|
+
uint256 internal _servicesToRegister;
|
110
114
|
|
111
115
|
// deployer of this contract must be gif admin
|
112
116
|
constructor(Registry registry)
|
@@ -143,32 +147,54 @@ contract ReleaseManager is
|
|
143
147
|
}
|
144
148
|
|
145
149
|
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
146
|
-
|
150
|
+
_servicesToRegister = 0;
|
151
|
+
_registeredServices = 0;
|
147
152
|
_state = SCHEDULED();
|
148
153
|
|
149
154
|
return _next;
|
150
155
|
}
|
151
156
|
|
152
|
-
// TODO order of events
|
153
157
|
function prepareNextRelease(
|
154
|
-
|
155
|
-
string[] memory names,
|
156
|
-
RoleId[][] memory serviceRoles,
|
157
|
-
string[][] memory serviceRoleNames,
|
158
|
-
RoleId[][] memory functionRoles,
|
159
|
-
string[][] memory functionRoleNames,
|
160
|
-
bytes4[][][] memory selectors,
|
158
|
+
IServiceAuthorization serviceAuthorization,
|
161
159
|
bytes32 salt
|
162
160
|
)
|
163
161
|
external
|
164
162
|
restricted() // GIF_MANAGER_ROLE
|
165
163
|
returns(
|
166
|
-
address
|
164
|
+
address authority,
|
167
165
|
VersionPart version,
|
168
166
|
bytes32 releaseSalt
|
169
167
|
)
|
170
168
|
{
|
171
|
-
|
169
|
+
// TODO Any call to serviceAuthorization contract must be treated as a call to an external malicious contract
|
170
|
+
// How can wrong authorizations tamper the core, releases or instances?
|
171
|
+
(
|
172
|
+
VersionPart releaseVersion,
|
173
|
+
uint serviceDomainsCount
|
174
|
+
) = serviceAuthorization.getRelease();
|
175
|
+
|
176
|
+
// verify authorizaion contract release matches with expected version
|
177
|
+
if (releaseVersion != _next) {
|
178
|
+
revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
|
179
|
+
}
|
180
|
+
|
181
|
+
// sanity check to ensure service domain list is not empty
|
182
|
+
if (serviceDomainsCount == 0) {
|
183
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
184
|
+
}
|
185
|
+
|
186
|
+
// verify release manager is in proper state to start deploying a next release
|
187
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
188
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
189
|
+
}
|
190
|
+
|
191
|
+
// verify prepareNextRelease is only called once per release
|
192
|
+
if(_servicesToRegister > 0) {
|
193
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
194
|
+
}
|
195
|
+
|
196
|
+
// store release specific service authorization
|
197
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
172
198
|
|
173
199
|
// ensures unique salt
|
174
200
|
releaseSalt = keccak256(
|
@@ -176,34 +202,14 @@ contract ReleaseManager is
|
|
176
202
|
bytes32(version.toInt()),
|
177
203
|
salt));
|
178
204
|
|
179
|
-
|
180
|
-
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
181
|
-
releaseAccessManager.initialize(address(this), version);
|
205
|
+
authority = _admin.authority();
|
182
206
|
|
183
|
-
|
184
|
-
|
185
|
-
}
|
207
|
+
_releaseAccessManager[_next] = authority;
|
208
|
+
_servicesToRegister = serviceDomainsCount;
|
186
209
|
|
187
|
-
|
210
|
+
_state = DEPLOYING();
|
188
211
|
|
189
|
-
|
190
|
-
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
191
|
-
}
|
192
|
-
// TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
|
193
|
-
_releaseInfo[version].version = version;
|
194
|
-
_releaseInfo[version].salt = releaseSalt;
|
195
|
-
_releaseInfo[version].addresses = addresses;
|
196
|
-
_releaseInfo[version].names = names;
|
197
|
-
_releaseInfo[version].serviceRoles = serviceRoles;
|
198
|
-
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
199
|
-
_releaseInfo[version].functionRoles = functionRoles;
|
200
|
-
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
201
|
-
_releaseInfo[version].selectors = selectors;
|
202
|
-
_awaitingRegistration = addresses.length;
|
203
|
-
_state = DEPLOYING();
|
204
|
-
_releaseAccessManager[version] = releaseAccessManager;
|
205
|
-
|
206
|
-
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
212
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
207
213
|
}
|
208
214
|
|
209
215
|
|
@@ -212,59 +218,52 @@ contract ReleaseManager is
|
|
212
218
|
restricted // GIF_MANAGER_ROLE
|
213
219
|
returns(NftId nftId)
|
214
220
|
{
|
221
|
+
// TODO is it usefull to check transition from A to A?
|
215
222
|
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
216
223
|
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
217
224
|
}
|
218
225
|
|
226
|
+
if (_servicesToRegister == _registeredServices) {
|
227
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
228
|
+
}
|
229
|
+
|
219
230
|
(
|
220
231
|
IRegistry.ObjectInfo memory info,
|
221
232
|
ObjectType domain,
|
222
233
|
VersionPart version
|
223
234
|
) = _verifyService(service);
|
224
235
|
|
225
|
-
|
226
|
-
if (
|
227
|
-
revert
|
236
|
+
ObjectType expectedDomain = _serviceAuthorization[version].getServiceDomains()[_registeredServices];
|
237
|
+
if (service.getDomain() != expectedDomain) {
|
238
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, service.getDomain());
|
228
239
|
}
|
229
240
|
|
230
|
-
uint serviceIdx = _awaitingRegistration - 1;
|
231
|
-
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
232
|
-
// TODO temp, while typescript addresses computation is not implemented
|
233
|
-
/*if(address(service) != serviceAddress) {
|
234
|
-
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
235
|
-
}*/
|
236
|
-
|
237
|
-
_setServiceAuthorizations(
|
238
|
-
_releaseAccessManager[version],
|
239
|
-
// TODO temp, while typescript addresses computation is not implemented
|
240
|
-
address(service),//serviceAddress,
|
241
|
-
_releaseInfo[version].names[serviceIdx],
|
242
|
-
_releaseInfo[version].serviceRoles[serviceIdx],
|
243
|
-
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
244
|
-
_releaseInfo[version].functionRoles[serviceIdx],
|
245
|
-
_releaseInfo[version].functionRoleNames[serviceIdx],
|
246
|
-
_releaseInfo[version].selectors[serviceIdx]);
|
247
|
-
|
248
|
-
// TODO decide for one of the approaches
|
249
|
-
// // service to service authorization
|
250
|
-
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
251
|
-
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
252
|
-
// _accessManager.setTargetFunctionRole(
|
253
|
-
// address(service),
|
254
|
-
// authz.authorizedSelectors[idx],
|
255
|
-
// authz.authorizedRole[idx]);
|
256
|
-
// }
|
257
|
-
|
258
|
-
_awaitingRegistration = serviceIdx;
|
259
|
-
// TODO end state depends on (_awaitingRegistration == 0)
|
260
|
-
_state = DEPLOYING();
|
261
|
-
|
262
241
|
// checked in registry
|
263
242
|
_releaseInfo[version].domains.push(domain);
|
264
243
|
|
244
|
+
// register service with registry
|
265
245
|
nftId = _registry.registerService(info, version, domain);
|
246
|
+
_registeredServices++;
|
266
247
|
|
267
248
|
service.linkToRegisteredNftId();
|
249
|
+
|
250
|
+
// setup service authorization
|
251
|
+
_admin.authorizeService(
|
252
|
+
_serviceAuthorization[version],
|
253
|
+
service);
|
254
|
+
|
255
|
+
// TODO consider to extend this to REGISTRY
|
256
|
+
// special roles for registry/staking/pool service
|
257
|
+
if (domain == STAKING() || domain == POOL()) {
|
258
|
+
// TODO rename to grantServiceDomainRole()
|
259
|
+
_admin.grantServiceRoleForAllVersions(service, domain);
|
260
|
+
}
|
261
|
+
|
262
|
+
if (_registeredServices < _servicesToRegister) {
|
263
|
+
_state = DEPLOYING();
|
264
|
+
} else {
|
265
|
+
// TODO end state depends on (_awaitingRegistration == 0)
|
266
|
+
}
|
268
267
|
}
|
269
268
|
|
270
269
|
|
@@ -276,20 +275,18 @@ contract ReleaseManager is
|
|
276
275
|
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
277
276
|
}
|
278
277
|
|
278
|
+
// release fully deployed
|
279
279
|
VersionPart version = _next;
|
280
|
-
|
280
|
+
if(_registeredServices < _servicesToRegister) {
|
281
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
282
|
+
}
|
281
283
|
|
282
|
-
// release exists, registry service
|
283
|
-
|
284
|
+
// release exists, registry service MUST exist
|
285
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
284
286
|
if(service == address(0)) {
|
285
287
|
revert ErrorReleaseManagerReleaseNotCreated(version);
|
286
288
|
}
|
287
289
|
|
288
|
-
// release fully deployed
|
289
|
-
if(_awaitingRegistration > 0) {
|
290
|
-
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
291
|
-
}
|
292
|
-
|
293
290
|
// release is not activated
|
294
291
|
if(_releaseInfo[version].activatedAt.gtz()) {
|
295
292
|
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
@@ -321,7 +318,8 @@ contract ReleaseManager is
|
|
321
318
|
|
322
319
|
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
323
320
|
|
324
|
-
|
321
|
+
// TODO come up with a substitute
|
322
|
+
// _releaseAccessManager[version].disable(disableDelay);
|
325
323
|
|
326
324
|
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
327
325
|
}
|
@@ -336,7 +334,8 @@ contract ReleaseManager is
|
|
336
334
|
//}
|
337
335
|
|
338
336
|
// reverts if disable delay expired
|
339
|
-
|
337
|
+
// TODO come up with a substitute
|
338
|
+
// _releaseAccessManager[version].enable();
|
340
339
|
|
341
340
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
342
341
|
}
|
@@ -381,13 +380,15 @@ contract ReleaseManager is
|
|
381
380
|
}
|
382
381
|
|
383
382
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
384
|
-
return
|
383
|
+
return _servicesToRegister - _registeredServices;
|
385
384
|
}
|
386
385
|
|
386
|
+
// TODO cleanup
|
387
387
|
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
388
|
-
return _releaseAccessManager[version];
|
388
|
+
// return _releaseAccessManager[version];
|
389
389
|
}
|
390
|
-
|
390
|
+
|
391
|
+
// TODO token registry knows nothing about adfmin, only registry
|
391
392
|
function getRegistryAdmin() external view returns (address) {
|
392
393
|
return address(_admin);
|
393
394
|
}
|
@@ -507,81 +508,7 @@ contract ReleaseManager is
|
|
507
508
|
}
|
508
509
|
}
|
509
510
|
|
510
|
-
|
511
|
-
function _verifyReleaseAuthorizations(
|
512
|
-
address[] memory serviceAddress,
|
513
|
-
RoleId[][] memory serviceRoles,
|
514
|
-
RoleId[][] memory functionRoles,
|
515
|
-
bytes4[][][] memory selectors
|
516
|
-
)
|
517
|
-
internal
|
518
|
-
pure
|
519
|
-
{
|
520
|
-
if(serviceAddress.length == 0) {
|
521
|
-
revert ErrorReleaseManagerReleaseEmpty();
|
522
|
-
}
|
523
|
-
|
524
|
-
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
525
|
-
{
|
526
|
-
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
527
|
-
{
|
528
|
-
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
529
|
-
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
530
|
-
revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
|
531
|
-
}
|
532
|
-
}
|
533
|
-
}
|
534
|
-
|
535
|
-
// TODO no duplicate service "domain" role per release
|
536
|
-
// TODO no duplicate service roles per service
|
537
|
-
// TODO no duplicate service function roles per service
|
538
|
-
// TODO no duplicate service function selectors per service
|
539
|
-
}
|
540
|
-
|
541
|
-
function _setServiceAuthorizations(
|
542
|
-
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
543
|
-
address serviceAddress,
|
544
|
-
string memory serviceName,
|
545
|
-
RoleId[] memory serviceRoles,
|
546
|
-
string[] memory serviceRoleNames,
|
547
|
-
RoleId[] memory functionRoles,
|
548
|
-
string[] memory functionRoleNames,
|
549
|
-
bytes4[][] memory selectors
|
550
|
-
)
|
551
|
-
internal
|
552
|
-
{
|
553
|
-
accessManager.createTarget(serviceAddress, serviceName);
|
554
|
-
|
555
|
-
for(uint idx = 0; idx < functionRoles.length; idx++)
|
556
|
-
{
|
557
|
-
uint64 roleInt = functionRoles[idx].toInt();
|
558
|
-
|
559
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
560
|
-
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
561
|
-
}
|
562
|
-
|
563
|
-
accessManager.setTargetFunctionRole(
|
564
|
-
serviceAddress,
|
565
|
-
selectors[idx],
|
566
|
-
functionRoles[idx].toInt());
|
567
|
-
}
|
568
|
-
|
569
|
-
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
570
|
-
{
|
571
|
-
uint64 roleInt = serviceRoles[idx].toInt();
|
572
|
-
|
573
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
574
|
-
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
575
|
-
}
|
576
|
-
|
577
|
-
accessManager.grantRole(
|
578
|
-
serviceRoles[idx].toInt(),
|
579
|
-
serviceAddress,
|
580
|
-
0);
|
581
|
-
}
|
582
|
-
}
|
583
|
-
|
584
|
-
// returns true iff a the address passes some simple proxy tests.
|
511
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
585
512
|
function _isRegistry(address registryAddress) internal view returns (bool) {
|
586
513
|
|
587
514
|
// zero address is certainly not registry
|
@@ -0,0 +1,86 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
|
5
|
+
import {ObjectType} from "../../contracts/type/ObjectType.sol";
|
6
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
7
|
+
import {SelectorLib} from "../../contracts/type/Selector.sol";
|
8
|
+
import {StrLib} from "../../contracts/type/String.sol";
|
9
|
+
import {VersionPart, VersionPartLib} from "../../contracts/type/Version.sol";
|
10
|
+
|
11
|
+
/// @dev Base contract for release specific service authorization contracts.
|
12
|
+
contract ServiceAuthorization
|
13
|
+
is IServiceAuthorization
|
14
|
+
{
|
15
|
+
uint256 public constant GIF_VERSION = 3;
|
16
|
+
|
17
|
+
string private _commitHash;
|
18
|
+
|
19
|
+
ObjectType[] internal _serviceDomains;
|
20
|
+
mapping(ObjectType domain => address service) internal _serviceAddress;
|
21
|
+
mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
|
22
|
+
mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccessAdmin.Function[] functions)) internal _authorizedFunctions;
|
23
|
+
|
24
|
+
constructor(string memory commitHash) {
|
25
|
+
_commitHash = commitHash;
|
26
|
+
_setupDomains();
|
27
|
+
_setupDomainAuthorizations();
|
28
|
+
}
|
29
|
+
|
30
|
+
function getCommitHash() external view returns(string memory commitHash) {
|
31
|
+
return _commitHash;
|
32
|
+
}
|
33
|
+
|
34
|
+
function getRelease() external view returns(VersionPart release, uint domainsCount) {
|
35
|
+
return (
|
36
|
+
VersionPartLib.toVersionPart(GIF_VERSION),
|
37
|
+
_serviceDomains.length
|
38
|
+
);
|
39
|
+
}
|
40
|
+
|
41
|
+
function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
|
42
|
+
return _serviceDomains;
|
43
|
+
}
|
44
|
+
|
45
|
+
function getServiceAddress(ObjectType serviceDomain) external view returns(address service) {
|
46
|
+
return _serviceAddress[serviceDomain];
|
47
|
+
}
|
48
|
+
|
49
|
+
function getAuthorizedDomains(ObjectType serviceDomain) external view returns(ObjectType[] memory authorizatedDomains) {
|
50
|
+
return _authorizedDomains[serviceDomain];
|
51
|
+
}
|
52
|
+
|
53
|
+
function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccessAdmin.Function[] memory authorizatedFunctions) {
|
54
|
+
return _authorizedFunctions[serviceDomain][authorizedDomain];
|
55
|
+
}
|
56
|
+
|
57
|
+
/// @dev Overwrite this function for a specific realease.
|
58
|
+
function _setupDomains() internal virtual {}
|
59
|
+
|
60
|
+
/// @dev Overwrite this function for a specific realease.
|
61
|
+
function _setupDomainAuthorizations() internal virtual {}
|
62
|
+
|
63
|
+
/// @dev Use this method to to add an authorized domain.
|
64
|
+
/// The services will need to be registered in the order they are added using this function.
|
65
|
+
function _authorizeDomain(ObjectType serviceDomain, address serviceAddress) internal {
|
66
|
+
_serviceDomains.push(serviceDomain);
|
67
|
+
_serviceAddress[serviceDomain] = serviceAddress;
|
68
|
+
}
|
69
|
+
|
70
|
+
function _authorizeForService(ObjectType serviceDomain, ObjectType authorizedDomain)
|
71
|
+
internal
|
72
|
+
returns (IAccessAdmin.Function[] storage authorizatedFunctions)
|
73
|
+
{
|
74
|
+
_authorizedDomains[serviceDomain].push(authorizedDomain);
|
75
|
+
return _authorizedFunctions[serviceDomain][authorizedDomain];
|
76
|
+
}
|
77
|
+
|
78
|
+
/// @dev Use this method to authorize a specific function authorization
|
79
|
+
function _authorize(IAccessAdmin.Function[] storage functions, bytes4 selector, string memory name) internal {
|
80
|
+
functions.push(
|
81
|
+
IAccessAdmin.Function({
|
82
|
+
selector: SelectorLib.toSelector(selector),
|
83
|
+
name: StrLib.toStr(name)}));
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|