@etherisc/gif-next 0.0.2-f78c672-338 → 0.0.2-f78f882-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/README.md +63 -312
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +655 -299
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +331 -56
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +501 -231
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +131 -16
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -59
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +322 -67
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -33
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +379 -150
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -32
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +233 -20
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +321 -66
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -134
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +321 -66
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +82 -84
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +321 -66
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +321 -66
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -190
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +321 -66
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +450 -28
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +488 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +942 -471
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -78
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +595 -532
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1316 -2015
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- 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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
- 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/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +340 -60
- 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/IOracleComponent.sol/IOracleComponent.json +19 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +321 -66
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +346 -87
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +218 -61
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +321 -66
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +91 -118
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +113 -67
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -52
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
- 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 +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- 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 +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +799 -472
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +841 -419
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +197 -129
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +212 -232
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -71
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +119 -147
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
- 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/INftOwnable.sol/INftOwnable.json +19 -0
- 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/IRegisterable.sol/IRegisterable.json +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -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/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +161 -110
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +200 -157
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -44
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
- 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/Amount.sol/AmountLib.json +10 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- 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/Fee.sol/FeeLib.json +93 -37
- 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/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.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 +33 -31
- 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 +2 -2
- 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 +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +361 -371
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +23 -32
- package/contracts/authorization/Authorization.sol +82 -229
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +83 -84
- package/contracts/authorization/IAuthorization.sol +3 -51
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +5 -7
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +12 -17
- package/contracts/distribution/DistributionService.sol +129 -66
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +21 -9
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +6 -10
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -8
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -23
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +98 -12
- package/contracts/instance/IInstanceService.sol +54 -7
- package/contracts/instance/Instance.sol +165 -61
- package/contracts/instance/InstanceAdmin.sol +183 -313
- package/contracts/instance/InstanceAuthorizationV3.sol +123 -61
- package/contracts/instance/InstanceReader.sol +350 -394
- package/contracts/instance/InstanceService.sol +283 -173
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +15 -6
- package/contracts/instance/module/IDistribution.sol +17 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +4 -8
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -18
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +6 -20
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +41 -184
- package/contracts/product/ApplicationService.sol +65 -12
- package/contracts/product/BasicProduct.sol +2 -5
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +40 -77
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +29 -32
- package/contracts/product/Product.sol +40 -18
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +15 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +85 -266
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +70 -116
- package/contracts/registry/ReleaseRegistry.sol +57 -43
- package/contracts/registry/ServiceAuthorizationV3.sol +128 -33
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +20 -37
- package/contracts/shared/ComponentService.sol +249 -250
- package/contracts/shared/ContractLib.sol +134 -75
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -11
- package/contracts/shared/NftOwnable.sol +4 -2
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/Service.sol +6 -4
- package/contracts/shared/TokenHandler.sol +5 -4
- package/contracts/staking/IStaking.sol +265 -64
- package/contracts/staking/IStakingService.sol +44 -82
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +475 -204
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +49 -158
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +21 -17
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +28 -10
- package/contracts/type/Version.sol +39 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -3,21 +3,25 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
6
|
-
import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
|
7
6
|
|
8
|
-
import {
|
9
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
7
|
+
import {IAccess} from "./IAccess.sol";
|
10
8
|
import {IAccessAdmin} from "./IAccessAdmin.sol";
|
9
|
+
import {IAuthorization} from "./IAuthorization.sol";
|
11
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
12
|
+
|
13
|
+
import {AccessAdminLib} from "./AccessAdminLib.sol";
|
14
|
+
import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
|
15
|
+
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
16
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
12
19
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
-
import {Selector,
|
20
|
+
import {Selector, SelectorSetLib} from "../type/Selector.sol";
|
14
21
|
import {Str, StrLib} from "../type/String.sol";
|
15
22
|
import {TimestampLib} from "../type/Timestamp.sol";
|
16
23
|
import {VersionPart} from "../type/Version.sol";
|
17
24
|
|
18
|
-
interface IAccessManagedChecker {
|
19
|
-
function authority() external view returns (address);
|
20
|
-
}
|
21
25
|
|
22
26
|
/**
|
23
27
|
* @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
|
@@ -26,20 +30,26 @@ interface IAccessManagedChecker {
|
|
26
30
|
*/
|
27
31
|
contract AccessAdmin is
|
28
32
|
AccessManagedUpgradeable,
|
29
|
-
ReentrancyGuardUpgradeable,
|
30
33
|
IAccessAdmin
|
31
34
|
{
|
32
35
|
using EnumerableSet for EnumerableSet.AddressSet;
|
33
36
|
|
34
|
-
|
35
|
-
string
|
37
|
+
/// @dev admin name used for logging only
|
38
|
+
string internal _adminName;
|
36
39
|
|
37
|
-
/// @dev the
|
40
|
+
/// @dev the access manager driving the access admin contract
|
41
|
+
/// hold link to registry and release version
|
38
42
|
AccessManagerCloneable internal _authority;
|
39
43
|
|
40
|
-
/// @dev
|
41
|
-
|
42
|
-
|
44
|
+
/// @dev the authorization contract used for initial access control
|
45
|
+
IAuthorization internal _authorization;
|
46
|
+
|
47
|
+
// /// @dev stores the deployer address and allows to create initializers
|
48
|
+
// /// that are restricted to the deployer address.
|
49
|
+
// address internal _deployer;
|
50
|
+
|
51
|
+
/// @dev the linked NFT ID
|
52
|
+
NftId internal _linkedNftId;
|
43
53
|
|
44
54
|
/// @dev store role info per role id
|
45
55
|
mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
|
@@ -50,6 +60,9 @@ contract AccessAdmin is
|
|
50
60
|
/// @dev store array with all created roles
|
51
61
|
RoleId [] internal _roleIds;
|
52
62
|
|
63
|
+
// @dev target type specific role id counters
|
64
|
+
mapping(TargetType => uint64) internal _nextRoleId;
|
65
|
+
|
53
66
|
/// @dev store set of current role members for given role
|
54
67
|
mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
|
55
68
|
|
@@ -71,135 +84,93 @@ contract AccessAdmin is
|
|
71
84
|
/// @dev temporary dynamic functions array
|
72
85
|
bytes4[] private _functions;
|
73
86
|
|
74
|
-
modifier onlyDeployer() {
|
75
|
-
// special case for cloned AccessAdmin contracts
|
76
|
-
// IMPORTANT cloning and initialize authority needs to be done in a single transaction
|
77
|
-
if (_deployer == address(0)) {
|
78
|
-
_deployer = msg.sender;
|
79
|
-
}
|
80
|
-
|
81
|
-
if (msg.sender != _deployer) {
|
82
|
-
revert ErrorNotDeployer();
|
83
|
-
}
|
84
|
-
_;
|
85
|
-
}
|
86
|
-
|
87
|
-
modifier onlyRoleAdmin(RoleId roleId) {
|
88
|
-
_checkRoleExists(roleId, false);
|
89
|
-
|
90
|
-
if (!hasAdminRole(msg.sender, roleId)) {
|
91
|
-
revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
|
92
|
-
}
|
93
|
-
_;
|
94
|
-
}
|
95
|
-
|
96
|
-
modifier onlyRoleMember(RoleId roleId) {
|
97
|
-
if (!hasRole(msg.sender, roleId)) {
|
98
|
-
revert ErrorNotRoleOwner(roleId);
|
99
|
-
}
|
100
|
-
_;
|
101
|
-
}
|
102
|
-
|
103
|
-
modifier onlyExistingRole(
|
104
|
-
RoleId roleId,
|
105
|
-
bool onlyActiveRole,
|
106
|
-
bool allowLockedRoles
|
107
|
-
)
|
108
|
-
{
|
109
|
-
if (!allowLockedRoles) {
|
110
|
-
_checkRoleExists(roleId, onlyActiveRole);
|
111
|
-
}
|
112
|
-
_;
|
113
|
-
}
|
114
|
-
|
115
|
-
modifier onlyExistingTarget(address target) {
|
116
|
-
_checkTarget(target);
|
117
|
-
_;
|
118
|
-
}
|
119
87
|
|
120
88
|
//-------------- initialization functions ------------------------------//
|
121
89
|
|
122
|
-
// event LogAccessAdminDebug(string message);
|
123
|
-
|
124
90
|
/// @dev Initializes this admin with the provided accessManager (and authorization specification).
|
125
91
|
/// Internally initializes access manager with this admin and creates basic role setup.
|
126
92
|
function initialize(
|
127
|
-
|
93
|
+
address authority,
|
94
|
+
string memory adminName
|
128
95
|
)
|
129
96
|
public
|
130
97
|
initializer()
|
131
98
|
{
|
132
|
-
__AccessAdmin_init(authority);
|
99
|
+
__AccessAdmin_init(authority, adminName);
|
133
100
|
}
|
134
101
|
|
135
102
|
|
103
|
+
/// @dev Initializes this admin with the provided accessManager and name.
|
104
|
+
/// IMPORTANT
|
105
|
+
/// - cloning of an access admin and initialization MUST be done in the same tx.
|
106
|
+
/// - this function as well as any completeSetup functions MUST be called in the same tx.
|
136
107
|
function __AccessAdmin_init(
|
137
|
-
|
108
|
+
address authority,
|
109
|
+
string memory adminName
|
138
110
|
)
|
139
111
|
internal
|
140
112
|
onlyInitializing()
|
141
|
-
onlyDeployer() // initializes deployer if not initialized yet
|
142
113
|
{
|
143
|
-
|
114
|
+
AccessAdminLib.checkInitParameters(authority, adminName);
|
115
|
+
_authority = AccessManagerCloneable(authority);
|
116
|
+
_authority.initialize(address(this));
|
117
|
+
|
118
|
+
// delayed additional check for authority after its initialization
|
119
|
+
if (!ContractLib.isAuthority(authority)) {
|
120
|
+
revert ErrorAccessAdminAccessManagerNotAccessManager(authority);
|
121
|
+
}
|
144
122
|
|
123
|
+
// effects
|
145
124
|
// set and initialize this access manager contract as
|
146
125
|
// the admin (ADMIN_ROLE) of the provided authority
|
147
|
-
__AccessManaged_init(
|
148
|
-
_authority = authority;
|
126
|
+
__AccessManaged_init(authority);
|
149
127
|
|
150
|
-
//
|
151
|
-
|
128
|
+
// set name for logging
|
129
|
+
_adminName = adminName;
|
152
130
|
|
153
|
-
//
|
154
|
-
|
155
|
-
}
|
131
|
+
// set initial linked NFT ID to zero
|
132
|
+
_linkedNftId = NftIdLib.zero();
|
156
133
|
|
134
|
+
// setup admin role
|
135
|
+
_createRoleUnchecked(
|
136
|
+
ADMIN_ROLE(), AccessAdminLib.adminRoleInfo());
|
157
137
|
|
158
|
-
|
159
|
-
|
138
|
+
// add this contract as admin role member, as contract roles cannot be revoked
|
139
|
+
// and max member count is 1 for admin role this access admin contract will
|
140
|
+
// always be the only admin of the access manager.
|
141
|
+
_roleMembers[
|
142
|
+
RoleIdLib.toRoleId(_authority.ADMIN_ROLE())].add(address(this));
|
143
|
+
|
144
|
+
// setup public role
|
145
|
+
_createRoleUnchecked(
|
146
|
+
PUBLIC_ROLE(), AccessAdminLib.publicRoleInfo());
|
160
147
|
}
|
161
148
|
|
149
|
+
//--- view functions for access admin ---------------------------------------//
|
162
150
|
|
163
|
-
function getRelease() public view returns (VersionPart release) {
|
151
|
+
function getRelease() public view virtual returns (VersionPart release) {
|
164
152
|
return _authority.getRelease();
|
165
153
|
}
|
166
154
|
|
167
155
|
|
168
|
-
function
|
169
|
-
|
170
|
-
|
171
|
-
onlyInitializing()
|
172
|
-
{
|
173
|
-
RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
|
156
|
+
function getRegistry() public view returns (IRegistry registry) {
|
157
|
+
return _authority.getRegistry();
|
158
|
+
}
|
174
159
|
|
175
|
-
// setup admin role
|
176
|
-
_createRoleUnchecked(
|
177
|
-
ADMIN_ROLE(),
|
178
|
-
toRole({
|
179
|
-
adminRoleId: ADMIN_ROLE(),
|
180
|
-
roleType: RoleType.Contract,
|
181
|
-
maxMemberCount: 1,
|
182
|
-
name: ADMIN_ROLE_NAME}));
|
183
160
|
|
184
|
-
|
185
|
-
|
161
|
+
function getLinkedNftId() external view returns (NftId linkedNftId) {
|
162
|
+
return _linkedNftId;
|
163
|
+
}
|
186
164
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
toRole({
|
191
|
-
adminRoleId: ADMIN_ROLE(),
|
192
|
-
roleType: RoleType.Gif,
|
193
|
-
maxMemberCount: type(uint32).max,
|
194
|
-
name: PUBLIC_ROLE_NAME}));
|
165
|
+
|
166
|
+
function getAuthorization() public view returns (IAuthorization authorization) {
|
167
|
+
return _authorization;
|
195
168
|
}
|
196
169
|
|
197
170
|
|
198
|
-
function
|
199
|
-
|
200
|
-
|
201
|
-
onlyInitializing()
|
202
|
-
{ }
|
171
|
+
function isLocked() public view returns (bool locked) {
|
172
|
+
return _authority.isLocked();
|
173
|
+
}
|
203
174
|
|
204
175
|
//--- view functions for roles ------------------------------------------//
|
205
176
|
|
@@ -220,15 +191,28 @@ contract AccessAdmin is
|
|
220
191
|
}
|
221
192
|
|
222
193
|
function roleExists(RoleId roleId) public view returns (bool exists) {
|
223
|
-
return _roleInfo[roleId].
|
194
|
+
return _roleInfo[roleId].targetType != TargetType.Undefined;
|
224
195
|
}
|
225
196
|
|
226
|
-
function
|
197
|
+
function getRoleForName(string memory name) public view returns (RoleId roleId, bool exists) {
|
198
|
+
roleId = _roleForName[StrLib.toStr(name)].roleId;
|
199
|
+
exists = false;
|
200
|
+
|
201
|
+
if (roleId.gtz() || AccessAdminLib.isAdminRoleName(name)) {
|
202
|
+
exists = true;
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
function getRoleInfo(RoleId roleId) public view returns (RoleInfo memory) {
|
227
207
|
return _roleInfo[roleId];
|
228
208
|
}
|
229
209
|
|
230
|
-
function
|
231
|
-
return
|
210
|
+
function isRoleActive(RoleId roleId) external view returns (bool isActive) {
|
211
|
+
return _roleInfo[roleId].pausedAt > TimestampLib.current();
|
212
|
+
}
|
213
|
+
|
214
|
+
function isRoleCustom(RoleId roleId) external view returns (bool isActive) {
|
215
|
+
return _roleInfo[roleId].targetType == TargetType.Custom;
|
232
216
|
}
|
233
217
|
|
234
218
|
function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
|
@@ -239,21 +223,15 @@ contract AccessAdmin is
|
|
239
223
|
return _roleMembers[roleId].at(idx);
|
240
224
|
}
|
241
225
|
|
242
|
-
|
243
|
-
function hasRole(address account, RoleId roleId) public view returns (bool) {
|
226
|
+
function isRoleMember(RoleId roleId, address account) public view returns (bool) {
|
244
227
|
(bool isMember, ) = _authority.hasRole(
|
245
228
|
RoleId.unwrap(roleId),
|
246
229
|
account);
|
247
230
|
return isMember;
|
248
231
|
}
|
249
232
|
|
250
|
-
function
|
251
|
-
|
252
|
-
virtual
|
253
|
-
view
|
254
|
-
returns (bool)
|
255
|
-
{
|
256
|
-
return hasRole(account, _roleInfo[roleId].adminRoleId);
|
233
|
+
function isRoleAdmin(RoleId roleId, address account) public virtual view returns (bool) {
|
234
|
+
return isRoleMember(_roleInfo[roleId].adminRoleId, account);
|
257
235
|
}
|
258
236
|
|
259
237
|
//--- view functions for targets ----------------------------------------//
|
@@ -270,7 +248,7 @@ contract AccessAdmin is
|
|
270
248
|
return _targets[idx];
|
271
249
|
}
|
272
250
|
|
273
|
-
function getTargetInfo(address target)
|
251
|
+
function getTargetInfo(address target) public view returns (TargetInfo memory targetInfo) {
|
274
252
|
return _targetInfo[target];
|
275
253
|
}
|
276
254
|
|
@@ -279,9 +257,11 @@ contract AccessAdmin is
|
|
279
257
|
}
|
280
258
|
|
281
259
|
function isTargetLocked(address target) public view returns (bool locked) {
|
282
|
-
return _authority.isTargetClosed(target);
|
260
|
+
return _authority.isLocked() || _authority.isTargetClosed(target);
|
283
261
|
}
|
284
262
|
|
263
|
+
//--- view functions for target functions -------------------------------//
|
264
|
+
|
285
265
|
function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
|
286
266
|
return SelectorSetLib.size(_targetFunctions[target]);
|
287
267
|
}
|
@@ -305,385 +285,395 @@ contract AccessAdmin is
|
|
305
285
|
selector.toBytes4()));
|
306
286
|
}
|
307
287
|
|
308
|
-
function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
|
309
|
-
(can, ) = _authority.canCall(caller, target, selector.toBytes4());
|
310
|
-
}
|
311
|
-
|
312
|
-
function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
|
313
|
-
return RoleInfo({
|
314
|
-
name: StrLib.toStr(name),
|
315
|
-
adminRoleId: adminRoleId,
|
316
|
-
roleType: roleType,
|
317
|
-
maxMemberCount: maxMemberCount,
|
318
|
-
createdAt: TimestampLib.blockTimestamp(),
|
319
|
-
pausedAt: TimestampLib.max()
|
320
|
-
});
|
321
|
-
}
|
322
|
-
|
323
|
-
function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
|
324
|
-
return FunctionInfo({
|
325
|
-
name: StrLib.toStr(name),
|
326
|
-
selector: SelectorLib.toSelector(selector),
|
327
|
-
createdAt: TimestampLib.blockTimestamp()});
|
328
|
-
}
|
329
288
|
|
330
|
-
function
|
331
|
-
|
289
|
+
function getFunctionInfo(address target, Selector selector)
|
290
|
+
external
|
291
|
+
view
|
292
|
+
returns (FunctionInfo memory functionInfo)
|
293
|
+
{
|
294
|
+
return _functionInfo[target][selector];
|
332
295
|
}
|
333
296
|
|
334
297
|
//--- internal/private functions -------------------------------------------------//
|
335
298
|
|
336
|
-
function
|
337
|
-
|
338
|
-
|
339
|
-
FunctionInfo[] memory functions
|
340
|
-
)
|
341
|
-
internal
|
342
|
-
{
|
343
|
-
if (roleId == getAdminRole()) {
|
344
|
-
revert ErrorAuthorizeForAdminRoleInvalid(target);
|
299
|
+
function _linkToNftOwnable(address registerable) internal {
|
300
|
+
if (!getRegistry().isRegistered(registerable)) {
|
301
|
+
revert ErrorAccessAdminNotRegistered(registerable);
|
345
302
|
}
|
346
303
|
|
347
|
-
(
|
348
|
-
bytes4[] memory functionSelectors,
|
349
|
-
string[] memory functionNames
|
350
|
-
) = _processFunctionSelectors(target, functions, true);
|
351
|
-
|
352
|
-
// apply authz via access manager
|
353
|
-
_grantRoleAccessToFunctions(
|
354
|
-
target,
|
355
|
-
roleId,
|
356
|
-
functionSelectors,
|
357
|
-
functionNames,
|
358
|
-
false); // allow locked roles
|
304
|
+
_linkedNftId = getRegistry().getNftIdForAddress(registerable);
|
359
305
|
}
|
360
306
|
|
361
|
-
|
362
|
-
|
363
|
-
|
307
|
+
|
308
|
+
function _createRoles(
|
309
|
+
IServiceAuthorization authorization
|
364
310
|
)
|
365
311
|
internal
|
366
312
|
{
|
367
|
-
(
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
313
|
+
RoleId[] memory roles = authorization.getRoles();
|
314
|
+
|
315
|
+
for(uint256 i = 0; i < roles.length; i++) {
|
316
|
+
RoleId authzRoleId = roles[i];
|
317
|
+
IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(authzRoleId);
|
318
|
+
(RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
|
319
|
+
|
320
|
+
if (!exists) {
|
321
|
+
if (!AccessAdminLib.isDynamicRoleId(authzRoleId)) {
|
322
|
+
roleId = authzRoleId;
|
323
|
+
}
|
324
|
+
|
325
|
+
_createRole(
|
326
|
+
roleId,
|
327
|
+
roleInfo,
|
328
|
+
true);
|
329
|
+
}
|
330
|
+
}
|
378
331
|
}
|
379
332
|
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
333
|
+
|
334
|
+
/// @dev Creates a role based on the provided parameters.
|
335
|
+
/// Checks that the provided role and role id and role name not already used.
|
336
|
+
function _createRole(
|
337
|
+
RoleId roleId,
|
338
|
+
RoleInfo memory info,
|
339
|
+
bool revertOnExistingRole
|
384
340
|
)
|
385
341
|
internal
|
386
|
-
onlyExistingTarget(target)
|
387
|
-
returns (
|
388
|
-
bytes4[] memory functionSelectors,
|
389
|
-
string[] memory functionNames
|
390
|
-
)
|
391
342
|
{
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
FunctionInfo memory func;
|
396
|
-
Selector selector;
|
397
|
-
|
398
|
-
for (uint256 i = 0; i < n; i++) {
|
399
|
-
func = functions[i];
|
400
|
-
selector = func.selector;
|
401
|
-
|
402
|
-
// add function selector to target selector set if not in set
|
403
|
-
if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
|
404
|
-
else { SelectorSetLib.remove(_targetFunctions[target], selector); }
|
405
|
-
|
406
|
-
// set function name
|
407
|
-
_functionInfo[target][selector] = func;
|
408
|
-
|
409
|
-
// add bytes4 selector to function selector array
|
410
|
-
functionSelectors[i] = selector.toBytes4();
|
411
|
-
functionNames[i] = func.name.toString();
|
343
|
+
bool isAdminOrPublicRole = AccessAdminLib.checkRoleCreation(this, roleId, info, revertOnExistingRole);
|
344
|
+
if (!isAdminOrPublicRole) {
|
345
|
+
_createRoleUnchecked(roleId, info);
|
412
346
|
}
|
413
347
|
}
|
414
348
|
|
415
|
-
|
416
|
-
function
|
417
|
-
address target,
|
349
|
+
|
350
|
+
function _createRoleUnchecked(
|
418
351
|
RoleId roleId,
|
419
|
-
|
420
|
-
string[] memory functionNames,
|
421
|
-
bool allowLockedRoles // admin and public roles are locked
|
352
|
+
RoleInfo memory info
|
422
353
|
)
|
423
|
-
|
424
|
-
onlyExistingTarget(target)
|
425
|
-
onlyExistingRole(roleId, true, allowLockedRoles)
|
354
|
+
private
|
426
355
|
{
|
356
|
+
// create role info
|
357
|
+
info.createdAt = TimestampLib.current();
|
358
|
+
info.pausedAt = TimestampLib.max();
|
359
|
+
_roleInfo[roleId] = info;
|
427
360
|
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
361
|
+
// create role name info
|
362
|
+
_roleForName[info.name] = RoleNameInfo({
|
363
|
+
roleId: roleId,
|
364
|
+
exists: true});
|
432
365
|
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
366
|
+
// add role to list of roles
|
367
|
+
_roleIds.push(roleId);
|
368
|
+
|
369
|
+
emit LogAccessAdminRoleCreated(_adminName, roleId, info.targetType, info.adminRoleId, info.name.toString());
|
370
|
+
}
|
371
|
+
|
372
|
+
|
373
|
+
/// @dev Activates or deactivates role.
|
374
|
+
/// The role activ property is indirectly controlled over the pausedAt timestamp.
|
375
|
+
function _setRoleActive(RoleId roleId, bool active)
|
376
|
+
internal
|
377
|
+
{
|
378
|
+
AccessAdminLib.checkRoleExists(this, roleId, false, false);
|
379
|
+
|
380
|
+
if (active) {
|
381
|
+
_roleInfo[roleId].pausedAt = TimestampLib.max();
|
382
|
+
} else {
|
383
|
+
_roleInfo[roleId].pausedAt = TimestampLib.current();
|
440
384
|
}
|
385
|
+
|
386
|
+
Blocknumber lastUpdateIn = _roleInfo[roleId].lastUpdateIn;
|
387
|
+
_roleInfo[roleId].lastUpdateIn = BlocknumberLib.current();
|
388
|
+
|
389
|
+
emit LogAccessAdminRoleActivatedSet(_adminName, roleId, active, lastUpdateIn);
|
441
390
|
}
|
442
391
|
|
443
392
|
|
444
393
|
/// @dev grant the specified role to the provided account
|
445
394
|
function _grantRoleToAccount(RoleId roleId, address account)
|
446
395
|
internal
|
447
|
-
onlyExistingRole(roleId, true, false)
|
448
396
|
{
|
397
|
+
AccessAdminLib.checkRoleExists(this, roleId, true, false);
|
398
|
+
|
449
399
|
// check max role members will not be exceeded
|
450
400
|
if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
|
451
|
-
revert
|
401
|
+
revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
|
452
402
|
}
|
453
403
|
|
454
404
|
// check account is contract for contract role
|
455
405
|
if (
|
456
|
-
_roleInfo[roleId].
|
406
|
+
_roleInfo[roleId].targetType != TargetType.Custom &&
|
457
407
|
!ContractLib.isContract(account) // will fail in account's constructor
|
458
408
|
) {
|
459
|
-
revert
|
409
|
+
revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
|
460
410
|
}
|
461
411
|
|
462
|
-
//
|
412
|
+
// effects
|
463
413
|
_roleMembers[roleId].add(account);
|
464
414
|
_authority.grantRole(
|
465
415
|
RoleId.unwrap(roleId),
|
466
416
|
account,
|
467
417
|
0);
|
468
418
|
|
469
|
-
emit LogAccessAdminRoleGranted(
|
419
|
+
emit LogAccessAdminRoleGranted(
|
420
|
+
_adminName,
|
421
|
+
account,
|
422
|
+
AccessAdminLib.getRoleName(this, roleId));
|
470
423
|
}
|
471
424
|
|
425
|
+
|
472
426
|
/// @dev revoke the specified role from the provided account
|
473
427
|
function _revokeRoleFromAccount(RoleId roleId, address account)
|
474
428
|
internal
|
475
|
-
onlyExistingRole(roleId, false, false)
|
476
429
|
{
|
430
|
+
AccessAdminLib.checkRoleExists(this, roleId, false, false);
|
477
431
|
|
478
|
-
// check
|
479
|
-
if (_roleInfo[roleId].
|
480
|
-
revert
|
432
|
+
// check for attempt to revoke contract role
|
433
|
+
if (_roleInfo[roleId].targetType != TargetType.Custom) {
|
434
|
+
revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
|
481
435
|
}
|
482
436
|
|
483
|
-
//
|
437
|
+
// effects
|
484
438
|
_roleMembers[roleId].remove(account);
|
485
439
|
_authority.revokeRole(
|
486
440
|
RoleId.unwrap(roleId),
|
487
441
|
account);
|
488
442
|
|
489
|
-
emit LogAccessAdminRoleRevoked(account, _roleInfo[roleId].name.toString());
|
443
|
+
emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
|
490
444
|
}
|
491
445
|
|
492
446
|
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
RoleInfo memory info
|
447
|
+
function _getOrCreateTargetRoleIdAndName(
|
448
|
+
address target,
|
449
|
+
string memory targetName,
|
450
|
+
TargetType targetType
|
498
451
|
)
|
499
452
|
internal
|
453
|
+
returns (
|
454
|
+
RoleId roleId,
|
455
|
+
string memory roleName,
|
456
|
+
bool exists
|
457
|
+
)
|
500
458
|
{
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
}
|
507
|
-
|
508
|
-
//
|
509
|
-
if(
|
510
|
-
|
511
|
-
}
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
459
|
+
roleName = AccessAdminLib.toRoleName(targetName);
|
460
|
+
(roleId, exists) = getRoleForName(roleName);
|
461
|
+
|
462
|
+
if (exists) {
|
463
|
+
return (roleId, roleName, true);
|
464
|
+
}
|
465
|
+
|
466
|
+
// get roleId
|
467
|
+
if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
|
468
|
+
roleId = AccessAdminLib.getServiceRoleId(target, targetType);
|
469
|
+
} else {
|
470
|
+
uint64 nextRoleId = _nextRoleId[targetType];
|
471
|
+
roleId = AccessAdminLib.getTargetRoleId(target, targetType, nextRoleId);
|
472
|
+
|
473
|
+
// increment target type specific role id counter
|
474
|
+
_nextRoleId[targetType]++;
|
516
475
|
}
|
517
|
-
|
518
|
-
// check role name is not used for another role
|
519
|
-
if(_roleForName[info.name].exists) {
|
520
|
-
revert ErrorRoleNameAlreadyExists(
|
521
|
-
roleId,
|
522
|
-
info.name.toString(),
|
523
|
-
_roleForName[info.name].roleId);
|
524
|
-
}
|
525
|
-
|
526
|
-
_createRoleUnchecked(roleId, info);
|
527
476
|
}
|
528
477
|
|
529
478
|
|
530
|
-
function
|
531
|
-
|
532
|
-
|
479
|
+
function _createTarget(
|
480
|
+
address target,
|
481
|
+
string memory targetName,
|
482
|
+
TargetType targetType,
|
483
|
+
bool checkAuthority
|
533
484
|
)
|
534
|
-
|
485
|
+
internal
|
486
|
+
returns (RoleId contractRoleId)
|
535
487
|
{
|
536
|
-
//
|
537
|
-
|
538
|
-
_roleInfo[roleId] = info;
|
488
|
+
// checks
|
489
|
+
AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
|
539
490
|
|
540
|
-
//
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
_roleIds.push(roleId);
|
491
|
+
// effects
|
492
|
+
contractRoleId = _createTargetUnchecked(
|
493
|
+
target,
|
494
|
+
targetName,
|
495
|
+
targetType,
|
496
|
+
checkAuthority);
|
547
497
|
|
548
|
-
|
498
|
+
// deal with token handler, if applicable
|
499
|
+
(
|
500
|
+
address tokenHandler,
|
501
|
+
string memory tokenHandlerName
|
502
|
+
) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
|
503
|
+
|
504
|
+
if (tokenHandler != address(0)) {
|
505
|
+
_createTargetUnchecked(
|
506
|
+
tokenHandler,
|
507
|
+
tokenHandlerName,
|
508
|
+
targetType,
|
509
|
+
checkAuthority);
|
510
|
+
}
|
549
511
|
}
|
550
512
|
|
551
513
|
|
552
|
-
|
514
|
+
/// @dev Creates a new target and a corresponding contract role.
|
515
|
+
/// The function assigns the role to the target and logs the creation.
|
516
|
+
function _createTargetUnchecked(
|
553
517
|
address target,
|
554
518
|
string memory targetName,
|
555
|
-
|
556
|
-
bool
|
519
|
+
TargetType targetType,
|
520
|
+
bool managed
|
557
521
|
)
|
558
522
|
internal
|
523
|
+
returns (RoleId targetRoleId)
|
559
524
|
{
|
560
|
-
//
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
if( _targetForName[name] != address(0)) {
|
575
|
-
revert ErrorTargetNameAlreadyExists(
|
576
|
-
target,
|
577
|
-
targetName,
|
578
|
-
_targetForName[name]);
|
579
|
-
}
|
580
|
-
|
581
|
-
// check target is an access managed contract
|
582
|
-
if (!_isAccessManaged(target)) {
|
583
|
-
revert ErrorTargetNotAccessManaged(target);
|
584
|
-
}
|
585
|
-
|
586
|
-
// check target shares authority with this contract
|
587
|
-
if (checkAuthority) {
|
588
|
-
address targetAuthority = AccessManagedUpgradeable(target).authority();
|
589
|
-
if (targetAuthority != authority()) {
|
590
|
-
revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
|
591
|
-
}
|
525
|
+
// create target role (if not existing)
|
526
|
+
string memory roleName;
|
527
|
+
bool roleExists;
|
528
|
+
(targetRoleId, roleName, roleExists) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
|
529
|
+
|
530
|
+
if (!roleExists) {
|
531
|
+
_createRole(
|
532
|
+
targetRoleId,
|
533
|
+
AccessAdminLib.roleInfo(
|
534
|
+
ADMIN_ROLE(),
|
535
|
+
targetType,
|
536
|
+
1,
|
537
|
+
roleName),
|
538
|
+
true); // revert on existing role
|
592
539
|
}
|
593
540
|
|
594
541
|
// create target info
|
542
|
+
Str name = StrLib.toStr(targetName);
|
595
543
|
_targetInfo[target] = TargetInfo({
|
596
544
|
name: name,
|
597
|
-
|
598
|
-
|
599
|
-
|
545
|
+
targetType: targetType,
|
546
|
+
roleId: targetRoleId,
|
547
|
+
createdAt: TimestampLib.current(),
|
548
|
+
lastUpdateIn: BlocknumberLib.current()});
|
600
549
|
|
601
550
|
// create name to target mapping
|
602
551
|
_targetForName[name] = target;
|
603
552
|
|
604
|
-
// add
|
553
|
+
// add target to list of targets
|
605
554
|
_targets.push(target);
|
606
555
|
|
607
|
-
|
556
|
+
// grant contract role to target
|
557
|
+
_grantRoleToAccount(targetRoleId, target);
|
558
|
+
|
559
|
+
emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
|
608
560
|
}
|
609
561
|
|
610
562
|
|
611
|
-
function
|
563
|
+
function _setTargetLocked(address target, bool locked)
|
612
564
|
internal
|
613
|
-
view
|
614
|
-
returns (bool)
|
615
565
|
{
|
616
|
-
|
617
|
-
|
618
|
-
}
|
566
|
+
AccessAdminLib.checkTargetExists(this, target);
|
567
|
+
_authority.setTargetClosed(target, locked);
|
619
568
|
|
620
|
-
|
621
|
-
|
622
|
-
|
569
|
+
// logging
|
570
|
+
Blocknumber lastUpdateIn = _targetInfo[target].lastUpdateIn;
|
571
|
+
_targetInfo[target].lastUpdateIn = BlocknumberLib.current();
|
623
572
|
|
624
|
-
|
573
|
+
emit LogAccessAdminTargetLockedSet(_adminName, target, locked, lastUpdateIn);
|
625
574
|
}
|
626
575
|
|
627
576
|
|
628
|
-
|
577
|
+
/// @dev Authorize the functions of the target for the specified role.
|
578
|
+
function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
|
629
579
|
internal
|
630
580
|
{
|
631
|
-
|
581
|
+
_authorizeTargetFunctions(
|
582
|
+
getTargetForName(target),
|
583
|
+
AccessAdminLib.getAuthorizedRole(
|
584
|
+
this,
|
585
|
+
authorization,
|
586
|
+
roleId),
|
587
|
+
authorization.getAuthorizedFunctions(
|
588
|
+
target,
|
589
|
+
roleId),
|
590
|
+
false,
|
591
|
+
true);
|
592
|
+
}
|
632
593
|
|
633
|
-
// target locked/unlocked already
|
634
|
-
if(_authority.isTargetClosed(target) == locked) {
|
635
|
-
revert ErrorTargetAlreadyLocked(target, locked);
|
636
|
-
}
|
637
594
|
|
638
|
-
|
639
|
-
|
595
|
+
/// @dev Authorize the functions of the target for the specified role.
|
596
|
+
/// Flag addFunctions determines if functions are added or removed.
|
597
|
+
function _authorizeTargetFunctions(
|
598
|
+
address target,
|
599
|
+
RoleId roleId,
|
600
|
+
FunctionInfo[] memory functions,
|
601
|
+
bool onlyComponentOrContractTargets,
|
602
|
+
bool addFunctions
|
603
|
+
)
|
604
|
+
internal
|
605
|
+
{
|
606
|
+
// checks
|
607
|
+
AccessAdminLib.checkTargetAndRoleForFunctions(
|
608
|
+
this,
|
609
|
+
target,
|
610
|
+
roleId,
|
611
|
+
onlyComponentOrContractTargets);
|
640
612
|
|
641
|
-
|
642
|
-
|
643
|
-
return _targetInfo[account].name.toString();
|
613
|
+
if (addFunctions && roleId == getAdminRole()) {
|
614
|
+
revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
|
644
615
|
}
|
645
|
-
return "<unknown-account>";
|
646
|
-
}
|
647
616
|
|
617
|
+
_authority.setTargetFunctionRole(
|
618
|
+
target,
|
619
|
+
AccessAdminLib.getSelectors(functions),
|
620
|
+
RoleId.unwrap(roleId));
|
648
621
|
|
649
|
-
|
650
|
-
|
651
|
-
|
622
|
+
// update function set and log function grantings
|
623
|
+
for (uint256 i = 0; i < functions.length; i++) {
|
624
|
+
_updateFunctionAccess(
|
625
|
+
target,
|
626
|
+
roleId,
|
627
|
+
functions[i],
|
628
|
+
addFunctions);
|
652
629
|
}
|
653
|
-
return "<unknown-role>";
|
654
630
|
}
|
655
631
|
|
656
632
|
|
657
|
-
function
|
658
|
-
|
659
|
-
|
633
|
+
function _updateFunctionAccess(
|
634
|
+
address target,
|
635
|
+
RoleId roleId,
|
636
|
+
FunctionInfo memory func,
|
637
|
+
bool addFunction
|
660
638
|
)
|
661
639
|
internal
|
662
|
-
view
|
663
640
|
{
|
664
|
-
|
665
|
-
|
666
|
-
|
641
|
+
// update functions info
|
642
|
+
Selector selector = func.selector;
|
643
|
+
Blocknumber lastUpdateIn = _functionInfo[target][selector].lastUpdateIn;
|
667
644
|
|
668
|
-
|
669
|
-
if (
|
670
|
-
|
671
|
-
}
|
645
|
+
// update function sets
|
646
|
+
if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
|
647
|
+
else { SelectorSetLib.remove(_targetFunctions[target], selector); }
|
672
648
|
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
649
|
+
_functionInfo[target][selector] = func;
|
650
|
+
_functionInfo[target][selector].lastUpdateIn = BlocknumberLib.current();
|
651
|
+
|
652
|
+
// logging
|
653
|
+
emit LogAccessAdminFunctionGranted(
|
654
|
+
_adminName,
|
655
|
+
target,
|
656
|
+
AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
|
657
|
+
lastUpdateIn);
|
677
658
|
}
|
678
659
|
|
679
660
|
|
680
|
-
|
681
|
-
|
661
|
+
function _checkAuthorization(
|
662
|
+
address authorization,
|
663
|
+
ObjectType expectedDomain,
|
664
|
+
VersionPart expectedRelease,
|
665
|
+
bool expectServiceAuthorization,
|
666
|
+
bool checkAlreadyInitialized
|
667
|
+
)
|
682
668
|
internal
|
683
669
|
view
|
684
670
|
{
|
685
|
-
|
686
|
-
|
687
|
-
|
671
|
+
AccessAdminLib.checkAuthorization(
|
672
|
+
address(_authorization),
|
673
|
+
authorization,
|
674
|
+
expectedDomain,
|
675
|
+
expectedRelease,
|
676
|
+
expectServiceAuthorization,
|
677
|
+
checkAlreadyInitialized);
|
688
678
|
}
|
689
679
|
}
|