Registry
Contains interfaces and contracts related to the registry.
Contracts
IRegistry
import "@etherisc/gif-next/contracts/registry/IRegistry.sol";
-
[
registerRegistry(nftId, chainId, chainRegistryAddress)
] -
[
registerService(serviceInfo, serviceVersion, serviceDomain)
] -
[
register(info)
] -
[
registerWithCustomType(info)
] -
[
getInitialRelease()
] -
[
getNextRelease()
] -
[
getLatestRelease()
] -
[
getReleaseInfo(release)
] -
[
chainIds()
] -
[
getChainId(idx)
] -
[
getRegistryNftId(chainId)
] -
[
getObjectCount()
] -
[
getNftIdForAddress(objectAddress)
] -
[
ownerOf(nftId)
] -
[
isOwnerOf(nftId, expectedOwner)
] -
[
ownerOf(contractAddress)
] -
[
getObjectInfo(nftId)
] -
[
getParentNftId(nftId)
] -
[
isObjectType(nftId, expectedObjectType)
] -
[
isObjectType(contractAddress, expectedObjectType)
] -
[
getObjectAddress(nftId)
] -
[
getObjectInfo(object)
] -
[
isRegistered(nftId)
] -
[
isRegistered(contractAddress)
] -
[
isRegisteredService(contractAddress)
] -
[
isRegisteredComponent(object)
] -
[
isActiveRelease(version)
] -
[
getServiceAddress(serviceDomain, releaseVersion)
] -
[
getProtocolNftId()
] -
[
getNftId()
] -
[
getOwner()
] -
[
getChainNftAddress()
] -
[
getReleaseRegistryAddress()
] -
[
getStakingAddress()
] -
[
getTokenRegistryAddress()
] -
[
getRegistryAdminAddress()
] -
[
getAuthority()
]
-
[
supportsInterface(interfaceId)
]
-
[
LogRegistryObjectRegistered(nftId, parentNftId, objectType, isInterceptor, objectAddress, initialOwner)
] -
[
LogRegistryServiceRegistered(majorVersion, domain)
] -
[
LogRegistryChainRegistryRegistered(nftId, chainId, chainRegistryAddress)
]
registerRegistry(NftId nftId, uint256 chainId, address chainRegistryAddress)
external
Registers a registry contract for a specified chain. Only one chain registry may be registered per chain
registerService(struct IRegistry.ObjectInfo serviceInfo, VersionPart serviceVersion, ObjectType serviceDomain) → NftId nftId
external
Register a service with using the provided domain and version. The function returns a newly minted service NFT ID. May only be used to register services.
register(struct IRegistry.ObjectInfo info) → NftId nftId
external
Register an object with a known core type. The function returns a newly minted object NFT ID. May not be used to register services.
registerWithCustomType(struct IRegistry.ObjectInfo info) → NftId nftId
external
Register an object with a custom type. The function returns a newly minted object NFT ID. This function is reserved for GIF releases > 3. May not be used to register known core types.
getRegistryNftId(uint256 chainId) → NftId nftId
external
Returns the NFT ID of the registry for the specified chain.
getObjectInfo(address object) → struct IRegistry.ObjectInfo info
external
Returns the object info for the specified object address.
getServiceAddress(ObjectType serviceDomain, VersionPart releaseVersion) → address serviceAddress
external
IRegistryService
import "@etherisc/gif-next/contracts/registry/IRegistryService.sol";
-
[
registerStake(info)
] -
[
registerInstance(instance, owner)
] -
[
registerProduct(product, owner)
] -
[
registerProductLinkedComponent(component, objectType, owner)
] -
[
registerDistributor(info)
] -
[
registerPolicy(info)
] -
[
registerBundle(info)
]
-
[
getDomain()
] -
[
getRoleId()
]
-
[
initializeVersionable(activatedBy, activationData)
] -
[
upgradeVersionable(upgradeData)
] -
[
getVersion()
]
-
[
isActive()
] -
[
getInitialInfo()
]
-
[
getRelease()
]
-
[
linkToRegisteredNftId()
] -
[
getNftId()
] -
[
getOwner()
]
-
[
getRegistry()
]
-
[
supportsInterface(interfaceId)
]
-
[
authority()
] -
[
setAuthority()
] -
[
isConsumingScheduledOp()
]
-
[
LogNftOwnableNftLinkedToAddress(nftId, owner)
]
-
[
AuthorityUpdated(authority)
]
registerInstance(contract IRegisterable instance, address owner) → struct IRegistry.ObjectInfo info
external
registerProduct(contract IComponent product, address owner) → struct IRegistry.ObjectInfo info
external
ITransferInterceptor
import "@etherisc/gif-next/contracts/registry/ITransferInterceptor.sol";
-
[
nftTransferFrom(from, to, tokenId, operator)
]
ChainNft
import "@etherisc/gif-next/contracts/registry/ChainNft.sol";
-
[
constructor(registry)
] -
[
mint(to, tokenId)
] -
[
mint(to, interceptor, uri)
] -
[
transferFrom(from, to, tokenId)
] -
[
burn(tokenId)
] -
[
setURI(tokenId, uri)
] -
[
exists(tokenId)
] -
[
tokenURI(tokenId)
] -
[
getInterceptor(tokenId)
] -
[
getRegistryAddress()
] -
[
totalMinted()
] -
[
calculateTokenId(idIndex, chainId)
] -
[
calculateTokenId(idIndex)
] -
[
getNextTokenId()
]
-
[
supportsInterface(interfaceId)
] -
[
tokenOfOwnerByIndex(owner, index)
] -
[
totalSupply()
] -
[
tokenByIndex(index)
] -
[
_update(to, tokenId, auth)
] -
[
_increaseBalance(account, amount)
]
-
[
balanceOf(owner)
] -
[
ownerOf(tokenId)
] -
[
name()
] -
[
symbol()
] -
[
_baseURI()
] -
[
approve(to, tokenId)
] -
[
getApproved(tokenId)
] -
[
setApprovalForAll(operator, approved)
] -
[
isApprovedForAll(owner, operator)
] -
[
safeTransferFrom(from, to, tokenId)
] -
[
safeTransferFrom(from, to, tokenId, data)
] -
[
_ownerOf(tokenId)
] -
[
_getApproved(tokenId)
] -
[
_isAuthorized(owner, spender, tokenId)
] -
[
_checkAuthorized(owner, spender, tokenId)
] -
[
_mint(to, tokenId)
] -
[
_safeMint(to, tokenId)
] -
[
_safeMint(to, tokenId, data)
] -
[
_burn(tokenId)
] -
[
_transfer(from, to, tokenId)
] -
[
_safeTransfer(from, to, tokenId)
] -
[
_safeTransfer(from, to, tokenId, data)
] -
[
_approve(to, tokenId, auth)
] -
[
_approve(to, tokenId, auth, emitEvent)
] -
[
_setApprovalForAll(owner, operator, approved)
] -
[
_requireOwned(tokenId)
]
-
[
LogTokenInterceptorAddress(tokenId, interceptor)
]
-
[
Transfer(from, to, tokenId)
] -
[
Approval(owner, approved, tokenId)
] -
[
ApprovalForAll(owner, operator, approved)
]
mint(address to, uint256 tokenId)
external
mints a token for a specified token id not part of the IRegistry interface only needed for initial registry setup (protocol and global registry objects)
mint(address to, address interceptor, string uri) → uint256 tokenId
public
mints the next token to register new objects non-zero transferInterceptors are recorded and called during nft token transfers. the contract receiving such a notification may decides to revert or record the transfer
transferFrom(address from, address to, uint256 tokenId)
public
Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id. This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
calculateTokenId(uint256 idIndex, uint256 chainId) → uint256 id
public
token id calculation based on an index value that is supposed to increase with every minted token
requirement: each chain registry produces token ids that are guaranteed to not collide with any token id genereated on a different chain
format concat(counter,chainid,2 digits for len-of-chain-id) restriction chainid up to 99 digits decode: from right to left: - 2 right most digits encode length of chainid - move number of digits to left as determined above (→ chainid) - the reminder to the left is the counter
special cases 1101 → decentralized insurance protocol 2102 → global registry 2xxxxx → chain registry, where xxxxx = <chain-part>
examples 1101 ^^ ^ || - 1-digit chain id |-- chain id = 1 (mainnet) +-- 1st token id on mainnet (1 * 10 1 + 1) * 100 + 1 42987654321010 ^ ^ ^ | | +- 10-digit chain id | +-- chain id = 9876543210 (hypothetical chainid) +-- 42nd token id on this chain (42 * 10 10 + 9876543210) * 100 + 10 (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
Registry
import "@etherisc/gif-next/contracts/registry/Registry.sol";
Chain Registry contract implementing IRegistry. IRegistry for method details.
-
[
constructor(admin, globalRegistry)
] -
[
initialize(releaseRegistry, tokenRegistry, staking)
] -
[
registerRegistry(nftId, chainId, registryAddress)
] -
[
registerService(info, version, domain)
] -
[
register(info)
] -
[
registerWithCustomType(info)
] -
[
getInitialRelease()
] -
[
getNextRelease()
] -
[
getLatestRelease()
] -
[
getReleaseInfo(release)
] -
[
chainIds()
] -
[
getChainId(idx)
] -
[
getRegistryNftId(chainId)
] -
[
getObjectCount()
] -
[
getNftId()
] -
[
getProtocolNftId()
] -
[
getNftIdForAddress(object)
] -
[
ownerOf(nftId)
] -
[
isOwnerOf(nftId, expectedOwner)
] -
[
ownerOf(contractAddress)
] -
[
getObjectInfo(nftId)
] -
[
getParentNftId(nftId)
] -
[
isObjectType(contractAddress, expectedObjectType)
] -
[
isObjectType(nftId, expectedObjectType)
] -
[
getObjectAddress(nftId)
] -
[
getObjectInfo(object)
] -
[
isRegistered(nftId)
] -
[
isRegistered(object)
] -
[
isRegisteredService(object)
] -
[
isRegisteredComponent(object)
] -
[
isActiveRelease(version)
] -
[
getStakingAddress()
] -
[
getTokenRegistryAddress()
] -
[
getServiceAddress(serviceDomain, releaseVersion)
] -
[
getReleaseRegistryAddress()
] -
[
getChainNftAddress()
] -
[
getRegistryAdminAddress()
] -
[
getAuthority()
] -
[
getOwner()
] -
[
supportsInterface(interfaceId)
] -
[
_register(info)
] -
[
_getInterceptor(isInterceptor, objectType, objectAddress, parentIsInterceptor, parentObjectAddress)
] -
[
_registerRegistry()
] -
[
_registerForNft(info, updateAddressLookup)
] -
[
_setAddressForNftId(nftId, objectAddress)
] -
[
_getGlobalRegistryAddress(globalRegistry)
]
-
[
authority()
] -
[
setAuthority(newAuthority)
] -
[
isConsumingScheduledOp()
] -
[
_setAuthority(newAuthority)
] -
[
_checkCanCall(caller, data)
]
-
[
_checkInitializing()
] -
[
_disableInitializers()
] -
[
_getInitializedVersion()
] -
[
_isInitializing()
]
-
[
LogRegistryObjectRegistered(nftId, parentNftId, objectType, isInterceptor, objectAddress, initialOwner)
] -
[
LogRegistryServiceRegistered(majorVersion, domain)
] -
[
LogRegistryChainRegistryRegistered(nftId, chainId, chainRegistryAddress)
]
-
[
AuthorityUpdated(authority)
]
-
[
Initialized(version)
]
constructor(contract RegistryAdmin admin, address globalRegistry)
public
Creates the registry contract and populates it with the protocol and registry objects. Internally deploys the ChainNft contract.
initialize(address releaseRegistry, address tokenRegistry, address staking)
external
Wires release registry, token registry and staking contract to this registry. MUST be called by release registry.
registerRegistry(NftId nftId, uint256 chainId, address registryAddress)
external
Registers a registry contract for a specified chain. Only one chain registry may be registered per chain
registerService(struct IRegistry.ObjectInfo info, VersionPart version, ObjectType domain) → NftId nftId
external
Register a service with using the provided domain and version. The function returns a newly minted service NFT ID. May only be used to register services.
register(struct IRegistry.ObjectInfo info) → NftId nftId
external
Register an object with a known core type. The function returns a newly minted object NFT ID. May not be used to register services.
registerWithCustomType(struct IRegistry.ObjectInfo info) → NftId nftId
external
Register an object with a custom type. The function returns a newly minted object NFT ID. This function is reserved for GIF releases > 3. May not be used to register known core types.
getRegistryNftId(uint256 chainId) → NftId nftId
public
Returns the NFT ID of the registry for the specified chain.
getObjectInfo(address object) → struct IRegistry.ObjectInfo
external
Returns the object info for the specified object address.
supportsInterface(bytes4 interfaceId) → bool
external
Returns true if this contract implements the interface defined by
interfaceId
. See the corresponding
EIP section
to learn more about how these ids are created.
This function call must use less than 30 000 gas.
_register(struct IRegistry.ObjectInfo info) → NftId nftId
internal
registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
_getInterceptor(bool isInterceptor, ObjectType objectType, address objectAddress, bool parentIsInterceptor, address parentObjectAddress) → address interceptor
internal
obtain interceptor address for this nft if applicable, address(0) otherwise special case: STAKES (parent may be any type) → no intercept call default case:
RegistryAdmin
import "@etherisc/gif-next/contracts/registry/RegistryAdmin.sol";
The RegistryAdmin contract implements the central authorization for the GIF core contracts. These are the release independent registry and staking contracts and their respective helper contracts. The RegistryAdmin also manages the access from service contracts to the GIF core contracts
-
[
constructor()
] -
[
completeSetup(registry, authorization, release, gifAdmin, gifManager)
] -
[
grantServiceRoleForAllVersions(service, domain)
] -
[
getGifAdminRole()
] -
[
getGifManagerRole()
] -
[
_createCoreTargets(registryTargetName)
] -
[
_createTargetAuthorizations(authorization)
]
-
[
initialize(authority, adminName)
] -
[
__AccessAdmin_init(authority, adminName)
] -
[
getRelease()
] -
[
getRegistry()
] -
[
getLinkedNftId()
] -
[
getAuthorization()
] -
[
isLocked()
] -
[
roles()
] -
[
getRoleId(idx)
] -
[
getAdminRole()
] -
[
getPublicRole()
] -
[
roleExists(roleId)
] -
[
getRoleForName(name)
] -
[
getRoleInfo(roleId)
] -
[
isRoleActive(roleId)
] -
[
isRoleCustom(roleId)
] -
[
roleMembers(roleId)
] -
[
getRoleMember(roleId, idx)
] -
[
isRoleMember(roleId, account)
] -
[
isRoleAdmin(roleId, account)
] -
[
targetExists(target)
] -
[
targets()
] -
[
getTargetAddress(idx)
] -
[
getTargetInfo(target)
] -
[
getTargetForName(name)
] -
[
isTargetLocked(target)
] -
[
authorizedFunctions(target)
] -
[
getAuthorizedFunction(target, idx)
] -
[
getFunctionInfo(target, selector)
] -
[
_linkToNftOwnable(registerable)
] -
[
_createRoles(authorization)
] -
[
_createRole(roleId, info, revertOnExistingRole)
] -
[
_setRoleActive(roleId, active)
] -
[
_grantRoleToAccount(roleId, account)
] -
[
_revokeRoleFromAccount(roleId, account)
] -
[
_getOrCreateTargetRoleIdAndName(target, targetName, targetType)
] -
[
_createTarget(target, targetName, targetType, checkAuthority)
] -
[
_createTargetUnchecked(target, targetName, targetType, managed)
] -
[
_setTargetLocked(target, locked)
] -
[
_authorizeFunctions(authorization, target, roleId)
] -
[
_authorizeTargetFunctions(target, roleId, functions, onlyComponentOrContractTargets, addFunctions)
] -
[
_updateFunctionAccess(target, roleId, func, addFunction)
]
-
[
__AccessManaged_init(initialAuthority)
] -
[
__AccessManaged_init_unchained(initialAuthority)
] -
[
authority()
] -
[
setAuthority(newAuthority)
] -
[
isConsumingScheduledOp()
] -
[
_setAuthority(newAuthority)
] -
[
_checkCanCall(caller, data)
]
-
[
__Context_init()
] -
[
__Context_init_unchained()
] -
[
_msgSender()
] -
[
_msgData()
] -
[
_contextSuffixLength()
]
-
[
_checkInitializing()
] -
[
_disableInitializers()
] -
[
_getInitializedVersion()
] -
[
_isInitializing()
]
-
[
LogAccessAdminRoleCreated(admin, roleId, targetType, roleAdminId, name)
] -
[
LogAccessAdminTargetCreated(admin, name, managed, target, roleId)
] -
[
LogAccessAdminRoleActivatedSet(admin, roleId, active, lastUpdateIn)
] -
[
LogAccessAdminRoleGranted(admin, account, roleName)
] -
[
LogAccessAdminRoleRevoked(admin, account, roleName)
] -
[
LogAccessAdminTargetLockedSet(admin, target, locked, lastUpdateIn)
] -
[
LogAccessAdminFunctionGranted(admin, target, func, lastUpdateIn)
]
-
[
AuthorityUpdated(authority)
]
-
[
Initialized(version)
]
ReleaseRegistry
import "@etherisc/gif-next/contracts/registry/ReleaseRegistry.sol";
The ReleaseRegistry manages the lifecycle of major GIF releases and their services. The creation of a new GIF release is a multi-step process: 1. The creation of a new GIF release is initiated by the GIF admin. 2. A GIF manager then prepares the release by setting up the service authorization contract. 3. The GIF manager deploys and registers all related service contracts with the release registry. 4. The GIF admin verifies and activates the release. 3. The GIF admin may pause and resume a release.
-
[
constructor(registry)
] -
[
createNextRelease()
] -
[
prepareNextRelease(serviceAuthorization, salt)
] -
[
registerService(service)
] -
[
activateNextRelease()
] -
[
setActive(release, active)
] -
[
predictDeterministicAddress(implementation, salt, deployer)
] -
[
isActiveRelease(release)
] -
[
getReleaseInfo(release)
] -
[
releases()
] -
[
getVersion(idx)
] -
[
getNextVersion()
] -
[
getLatestVersion()
] -
[
getState(release)
] -
[
getRemainingServicesToRegister()
] -
[
getServiceAuthorization(release)
] -
[
getRegistryAdmin()
] -
[
getRegistry()
] -
[
_verifyService(service, expectedAuthority, expectedVersion, expectedDomain)
] -
[
_verifyServiceInfo(service, info, expectedOwner)
]
-
[
_setupLifecycle()
]
-
[
setInitialState(ttype, state)
] -
[
setStateTransition(ttype, oldState, newState)
] -
[
hasLifecycle(objectType)
] -
[
getInitialState(objectType)
] -
[
checkTransition(stateId, objectType, expectedFromId, toId)
] -
[
isValidTransition(objectType, fromId, toId)
]
-
[
authority()
] -
[
setAuthority(newAuthority)
] -
[
isConsumingScheduledOp()
] -
[
_setAuthority(newAuthority)
] -
[
_checkCanCall(caller, data)
]
-
[
LogReleaseCreation(admin, release, salt)
] -
[
LogReleaseActivation(release)
] -
[
LogReleaseDisabled(release)
] -
[
LogReleaseEnabled(release)
]
-
[
AuthorityUpdated(authority)
]
createNextRelease() → VersionPart
external
Initiates the creation of a new GIF release by the GIF admin. Sets previous release into SKIPPED state if it was created but not activated. Sets the new release into state SCHEDULED.
prepareNextRelease(contract IServiceAuthorization serviceAuthorization, bytes32 salt) → contract ReleaseAdmin releaseAdmin, VersionPart releaseVersion, bytes32 releaseSalt
external
predictDeterministicAddress(address implementation, bytes32 salt, address deployer) → address predicted
external
releases() → uint256
external
Returns the number of created releases. Releases might be in another state than ACTIVE.
getVersion(uint256 idx) → VersionPart release
external
Returns the n-th release version. Valid values for idx [0 .. releases() - 1]
getLatestVersion() → VersionPart
external
Returns the latest activated relase version. There is no guarantee that the release is not currently paused.
getServiceAuthorization(VersionPart release) → contract IServiceAuthorization serviceAuthorization
external
_verifyService(contract IService service, address expectedAuthority, VersionPart expectedVersion, ObjectType expectedDomain) → struct IRegistry.ObjectInfo serviceInfo, ObjectType serviceDomain, VersionPart serviceVersion
internal
TokenRegistry
import "@etherisc/gif-next/contracts/registry/TokenRegistry.sol";
The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release. Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
-
[
constructor(registry, dipToken)
] -
[
registerToken(tokenAddress)
] -
[
registerRemoteToken(chainId, token, decimals, symbol)
] -
[
setActive(chainId, token, active)
] -
[
setActiveForVersion(chainId, token, release, active)
] -
[
setActiveWithVersionCheck(chainId, token, release, active, enforceVersionCheck)
] -
[
_setActiveWithVersionCheck(chainId, token, release, active, enforceVersionCheck)
] -
[
getDipToken()
] -
[
tokens()
] -
[
getTokenInfo(idx)
] -
[
getTokenInfo(chainId, token)
] -
[
isRegistered(chainId, token)
] -
[
isActive(chainId, token, release)
] -
[
getDipTokenAddress()
] -
[
getRegistry()
] -
[
_verifyOnchainToken(tokenAddress)
] -
[
_implementsErc20Functions(token)
] -
[
_registerToken(chainId, token, decimals, symbol)
]
-
[
authority()
] -
[
setAuthority(newAuthority)
] -
[
isConsumingScheduledOp()
] -
[
_setAuthority(newAuthority)
] -
[
_checkCanCall(caller, data)
]
-
[
LogTokenRegistryTokenRegistered(chainId, token, decimals, symbol)
] -
[
LogTokenRegistryTokenGlobalStateSet(chainId, token, active)
] -
[
LogTokenRegistryTokenStateSet(chainId, token, release, active)
]
-
[
AuthorityUpdated(authority)
]
onlyRegisteredToken(ChainId chainId, address token)
modifier
enforces msg.sender is owner of nft (or initial owner of nft ownable)
registerToken(address tokenAddress)
external
register an onchain token. this function verifies that the provided token address is a contract that implements the non optional erc20 view functions.
registerRemoteToken(ChainId chainId, address token, uint8 decimals, string symbol)
external
register the remote token with the provided attributes. this function may not be used for tokens when chainId == block.chainid.
setActive(ChainId chainId, address token, bool active)
external
set active flag on token itself. when setting a token to active=false isActive will return false regardless of release specific active value.
setActiveForVersion(ChainId chainId, address token, VersionPart release, bool active)
external
sets active state for specified token and release (major version). internally calls setActiveWithVersionCheck() with enforcing version check. token state is informative, registry have no clue about used tokens component owner is responsible for token selection and operations service MUST deny registration of component with inactive token.
setActiveWithVersionCheck(ChainId chainId, address token, VersionPart release, bool active, bool enforceVersionCheck)
external
as setActiveForVersion() with the option to skip the version check. enforcing the version check checks if the provided major version with the release manager. the function reverts if the provided release is unknown to the release manager.
_setActiveWithVersionCheck(ChainId chainId, address token, VersionPart release, bool active, bool enforceVersionCheck)
internal
getTokenInfo(uint256 idx) → struct TokenRegistry.TokenInfo tokenInfo
external
returns the token info for the specified index position [0 .. tokens() - 1].
getTokenInfo(ChainId chainId, address token) → struct TokenRegistry.TokenInfo tokenInfo
external
returns the token info for the specified token coordinates.
isRegistered(ChainId chainId, address token) → bool
public
returns true iff the specified token has been registered for this TokenRegistry contract.
isActive(ChainId chainId, address token, VersionPart release) → bool
external
returns true iff both the token is active for the specfied release and the global token state is active
_verifyOnchainToken(address tokenAddress) → contract IERC20Metadata token
internal
checks if provided token address refers to a smart contract that implements erc20 functionality (via its non-optional functions)
_implementsErc20Functions(contract IERC20Metadata token) → bool implementsErc20Functions
internal
checks availability of non-optional view functions https://eips.ethereum.org/EIPS/eip-20#methods
_registerToken(ChainId chainId, address token, uint8 decimals, string symbol)
internal
some sanity checks to prevent unintended registration: - token not yet registered - chainId not zero - token address not zero
RegistryService
import "@etherisc/gif-next/contracts/registry/RegistryService.sol";
-
[
_initialize(owner, data)
] -
[
registerStaking(staking, owner)
] -
[
registerInstance(instance, owner)
] -
[
registerProduct(product, initialOwner)
] -
[
registerProductLinkedComponent(component, objectType, initialOwner)
] -
[
registerDistributor(info)
] -
[
registerPolicy(info)
] -
[
registerBundle(info)
] -
[
registerStake(info)
] -
[
_getAndVerifyContractInfo(registerable, expectedType, expectedOwner)
] -
[
_verifyObjectInfo(info, expectedType)
] -
[
_getDomain()
]
-
[
__Service_init(authority, registry, initialOwner)
] -
[
getDomain()
] -
[
getVersion()
] -
[
getRoleId()
] -
[
_getServiceAddress(domain)
]
-
[
__ReentrancyGuard_init()
] -
[
__ReentrancyGuard_init_unchained()
] -
[
_reentrancyGuardEntered()
]
-
[
initializeVersionable(activatedBy, data)
] -
[
upgradeVersionable(data)
] -
[
_upgrade(data)
]
-
[
__Registerable_init(authority, registry, parentNftId, objectType, isInterceptor, initialOwner, data)
] -
[
isActive()
] -
[
getRelease()
] -
[
getInitialInfo()
]
-
[
_checkNftType(nftId, expectedObjectType)
] -
[
__NftOwnable_init(registry, initialOwner)
] -
[
linkToRegisteredNftId()
] -
[
getNftId()
] -
[
getOwner()
] -
[
_linkToNftOwnable(nftOwnableAddress)
]
-
[
__RegistryLinked_init(registry)
] -
[
getRegistry()
]
-
[
__ERC165_init()
] -
[
_initializeERC165()
] -
[
_registerInterface(interfaceId)
] -
[
_registerInterfaceNotInitializing(interfaceId)
] -
[
supportsInterface(interfaceId)
]
-
[
__AccessManaged_init(initialAuthority)
] -
[
__AccessManaged_init_unchained(initialAuthority)
] -
[
authority()
] -
[
setAuthority(newAuthority)
] -
[
isConsumingScheduledOp()
] -
[
_setAuthority(newAuthority)
] -
[
_checkCanCall(caller, data)
]
-
[
__Context_init()
] -
[
__Context_init_unchained()
] -
[
_msgSender()
] -
[
_msgData()
] -
[
_contextSuffixLength()
]
-
[
_checkInitializing()
] -
[
_disableInitializers()
] -
[
_getInitializedVersion()
] -
[
_isInitializing()
]
-
[
LogNftOwnableNftLinkedToAddress(nftId, owner)
]
-
[
AuthorityUpdated(authority)
]
-
[
Initialized(version)
]
registerStaking(contract IRegisterable staking, address owner) → struct IRegistry.ObjectInfo info
external
registerInstance(contract IRegisterable instance, address owner) → struct IRegistry.ObjectInfo info
external
registerProduct(contract IComponent product, address initialOwner) → struct IRegistry.ObjectInfo info
external
registerProductLinkedComponent(contract IComponent component, ObjectType objectType, address initialOwner) → struct IRegistry.ObjectInfo info
external
RegistryServiceManager
import "@etherisc/gif-next/contracts/registry/RegistryServiceManager.sol";
-
[
constructor(authority, registry, salt)
] -
[
getRegistryService()
]
-
[
initialize(registry, implementation, data, salt)
] -
[
deploy(registry, initialImplementation, initializationData)
] -
[
deployDetermenistic(registry, initialImplementation, initializationData, salt)
] -
[
upgrade(newImplementation)
] -
[
upgrade(newImplementation, upgradeData)
] -
[
linkToProxy()
] -
[
getDeployData(proxyOwner, deployData)
] -
[
getUpgradeData(upgradeData)
] -
[
getProxy()
] -
[
getVersion()
] -
[
getVersionCount()
] -
[
getVersion(idx)
] -
[
getVersionInfo(_version)
]
-
[
_checkNftType(nftId, expectedObjectType)
] -
[
__NftOwnable_init(registry, initialOwner)
] -
[
linkToRegisteredNftId()
] -
[
getNftId()
] -
[
getOwner()
] -
[
_linkToNftOwnable(nftOwnableAddress)
]
-
[
__RegistryLinked_init(registry)
] -
[
getRegistry()
]
-
[
__ERC165_init()
] -
[
_initializeERC165()
] -
[
_registerInterface(interfaceId)
] -
[
_registerInterfaceNotInitializing(interfaceId)
] -
[
supportsInterface(interfaceId)
]
-
[
_checkInitializing()
] -
[
_disableInitializers()
] -
[
_getInitializedVersion()
] -
[
_isInitializing()
]
-
[
LogProxyManagerVersionableDeployed(proxy, initialImplementation)
] -
[
LogProxyManagerVersionableUpgraded(proxy, upgradedImplementation)
]
-
[
LogNftOwnableNftLinkedToAddress(nftId, owner)
]
-
[
Initialized(version)
]