DiamondCut
Asset Tokenization Studio Team
Diamond Cut
Provides privileged resolver-proxy configuration update operations.
Mutates resolver-proxy storage after validating target configurations through the configured or supplied business-logic resolver. Access is restricted to accounts holding the default admin role in the proxy access-control storage.
Methods
getConfigInfo
function getConfigInfo() external view returns (address resolver_, bytes8 proxyVersion_, bytes32 configurationId_, uint256 configurationVersion_, bool replacementEnabled_)
Returns the active resolver address, configuration identifier, and version.
Returns
| Name | Type | Description |
|---|---|---|
| resolver_ | address | Address of the current Business Logic Resolver. |
| proxyVersion_ | bytes8 | proxy version. |
| configurationId_ | bytes32 | Identifier of the active configuration. |
| configurationVersion_ | uint256 | Version number of the active configuration. |
| replacementEnabled_ | bool | Whether replacement is enabled. |
getStaticFunctionSelectors
function getStaticFunctionSelectors() external pure returns (bytes4[] staticFunctionSelectors_)
Gets all function selectors of a facet
Returns
| Name | Type | Description |
|---|---|---|
| staticFunctionSelectors_ | bytes4[] | Face functions selectors |
getStaticInterfaceIds
function getStaticInterfaceIds() external pure returns (bytes4[] staticInterfaceIds_)
Gets all interfaces ids of a facet.
Returns
| Name | Type | Description |
|---|---|---|
| staticInterfaceIds_ | bytes4[] | Face interface ids |
getStaticResolverKey
function getStaticResolverKey() external pure returns (bytes32 staticResolverKey_)
Gets the static resolver key
Returns
| Name | Type | Description |
|---|---|---|
| staticResolverKey_ | bytes32 | Static resolver key |
updateConfig
function updateConfig(bytes32 _newConfigurationId, uint256 _newVersion) external nonpayable
For the current BLR, update its configuration identifier and version.
Requires DEFAULT_ADMIN_ROLE and validates the configuration before storing the new configuration identifier and pinned version. The admin is responsible for confirming that _newConfigurationId is compatible with the currently active configuration before calling this function; no on-chain compatibility check is performed.
Parameters
| Name | Type | Description |
|---|---|---|
| _newConfigurationId | bytes32 | The new configuration identifier to apply. |
| _newVersion | uint256 | The version number associated with the new configuration. |
updateConfigVersion
function updateConfigVersion(uint256 _newVersion) external nonpayable
For the current BLR and configuration, update the used version.
Requires DEFAULT_ADMIN_ROLE and preserves the active configuration identifier and resolver while updating only the pinned configuration version.
Parameters
| Name | Type | Description |
|---|---|---|
| _newVersion | uint256 | The new version number to set for the current configuration. |
updateReplacementEnabled
function updateReplacementEnabled(bool _newReplacementEnabled) external nonpayable
For the current BLR update its configuration
Parameters
| Name | Type | Description |
|---|---|---|
| _newReplacementEnabled | bool | The replacement enabled flag to set* |
updateResolver
function updateResolver(contract IBusinessLogicResolver _newResolver, bytes32 _newConfigurationId, uint256 _newVersion, bool _newReplacementEnabled) external nonpayable
Replaces the Business Logic Resolver with a new one, setting configuration and version.
Requires DEFAULT_ADMIN_ROLE, validates _newResolver is a genuine IBusinessLogicResolver, and validates the target configuration against it before replacing the resolver pointer, configuration identifier and version. The admin is responsible for confirming business-key and configuration compatibility across the resolver switch before calling this function; no on-chain compatibility check is performed — _newResolver, _newConfigurationId and _newVersion are trusted as a deliberate, atomic choice by a trusted admin role.
Parameters
| Name | Type | Description |
|---|---|---|
| _newResolver | contract IBusinessLogicResolver | The new BLR contract address to wire into the proxy. |
| _newConfigurationId | bytes32 | The configuration identifier to activate on the new resolver. |
| _newVersion | uint256 | The version number associated with the new configuration. |
| _newReplacementEnabled | bool | The replacement enabled flag to set. |
Events
ConfigUpdated
event ConfigUpdated(address indexed caller, bytes32 oldConfigurationId, bytes32 newConfigurationId, uint256 oldConfigurationVersion, uint256 newConfigurationVersion)
Emitted when the active configuration identifier is replaced.
updateConfig() combines an id change and a version change in one call; both get a complete old/new pair here.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldConfigurationId | bytes32 | Previous configuration identifier. |
| newConfigurationId | bytes32 | New configuration identifier. |
| oldConfigurationVersion | uint256 | Previous configuration version. |
| newConfigurationVersion | uint256 | Version activated for the new configuration. |
ConfigVersionUpdated
event ConfigVersionUpdated(address indexed caller, uint256 oldConfigurationVersion, uint256 newConfigurationVersion)
Emitted when the pinned version of the active configuration is replaced.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldConfigurationVersion | uint256 | Previous configuration version. |
| newConfigurationVersion | uint256 | New configuration version. |
ReplacementEnabledUpdated
event ReplacementEnabledUpdated(address indexed caller, bool oldReplacementEnabled, bool newReplacementEnabled)
Emitted when the replacement-enabled flag is replaced.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldReplacementEnabled | bool | Previous replacement-enabled flag. |
| newReplacementEnabled | bool | New replacement-enabled flag. |
ResolverUpdated
event ResolverUpdated(address indexed caller, address oldResolver, address newResolver, bytes32 oldConfigurationId, bytes32 newConfigurationId, uint256 oldConfigurationVersion, uint256 newConfigurationVersion, bool oldReplacementEnabled, bool newReplacementEnabled)
Emitted when the resolver-proxy's Business Logic Resolver is replaced.
updateResolver() combines four changes in one call; every one of them gets a complete old/new pair here rather than only the fields that happen to differ.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldResolver | address | Previous Business Logic Resolver address. |
| newResolver | address | New Business Logic Resolver address. |
| oldConfigurationId | bytes32 | Previous configuration identifier. |
| newConfigurationId | bytes32 | Configuration identifier activated on the new resolver. |
| oldConfigurationVersion | uint256 | Previous configuration version. |
| newConfigurationVersion | uint256 | Configuration version activated on the new resolver. |
| oldReplacementEnabled | bool | Previous replacement-enabled flag. |
| newReplacementEnabled | bool | Replacement-enabled flag activated on the new resolver. |
Errors
AccountHasNoRole
error AccountHasNoRole(address account, bytes32 role)
Thrown when an account does not hold a required role.
Parameters
| Name | Type | Description |
|---|---|---|
| account | address | The account that lacks the role. |
| role | bytes32 | The role that is not held. |
InvalidBusinessLogicResolver
error InvalidBusinessLogicResolver(address invalidResolver)
Thrown when a candidate resolver is the zero address or fails the isBusinessLogicResolver() identity check.
Parameters
| Name | Type | Description |
|---|---|---|
| invalidResolver | address | The address that failed validation. |
UnrecognizedResolverProxyVersion
error UnrecognizedResolverProxyVersion(bytes8 _resolverProxyVersion)
Thrown when the provided proxy version does not match any BLR compatible standard.
Parameters
| Name | Type | Description |
|---|---|---|
| _resolverProxyVersion | bytes8 | proxy version that is not compatible with the BLR. |
WalletRecovered
error WalletRecovered()
Thrown when attempting to recover a wallet that has already been recovered.