ODCdataobjects

VaultDataObject

Data Object to interact with vault factories, generic vaults and the information of managed vaults

The VaultFactory is a external contract that MUST implement the IVaultFactory interface and deploys vaults that MUST implement the IVault interface

UnknownVault

error UnknownVault()

Error thrown when the vault is unknown

UnknownSalt

error UnknownSalt()

Error thrown when the salt is not associated with any vault

UnknownDataPoint

error UnknownDataPoint()

Error thrown when the DataPoint is not associated with any data

DeployedVaultAlreadyRegistered

error DeployedVaultAlreadyRegistered()

Error thrown when the vault is already registered NOTE: This should not normally happen, but faulty VaultFactory can return wrong address

SignatureVerificationData

Data structure to store the valid signers for a given vault

Parameters

NameTypeDescription
struct SignatureVerificationData {
  mapping(address => mapping(address => bool)) validSigners;
}

DpData

Data structure for Vault Data Object

Parameters

NameTypeDescription
struct DpData {
  struct EnumerableSet.AddressSet managedVaults;
  mapping(bytes32 => address) deployedDeterministicVaults;
  mapping(bytes32 => struct VaultDataObject.SignatureVerificationData) validSignatures;
}

_vaultsToDataPoints

mapping(address => DataPoint) _vaultsToDataPoints

Mapping of Vault to DataPoint identifier

isValidSignature

function isValidSignature(bytes32 hash, bytes signature) external view returns (bytes4)

Should return whether the signature provided is valid for the provided data

Parameters

NameTypeDescription
hashbytes32Hash of the data to be signed
signaturebytesSignature byte array associated with hash

computeDeterministicVaultAddress

function computeDeterministicVaultAddress(DataPoint dp, address factory, bytes32 salt, bytes data) external view returns (address)

Function used to get the deterministic vault address for a given salt

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
factoryaddressThe vault factory address
saltbytes32A unique value to ensure the deterministic address is unique
databytesData for any additional initialization

datapointOfVault

function datapointOfVault(address vault) public view returns (DataPoint)

Function used to get the DataPoint associated with a vault address

Parameters

NameTypeDescription
vaultaddressThe vault address

Return Values

NameTypeDescription
[0]DataPointThe DataPoint identifier

_dispatchRead

function _dispatchRead(DataPoint dp, bytes4 operation, bytes data) internal view virtual returns (bytes)

_dispatchWrite

function _dispatchWrite(DataPoint dp, bytes4 operation, bytes data) internal virtual returns (bytes)

_vaultForSalt

function _vaultForSalt(DataPoint dp, bytes32 salt) internal view returns (address)

Function used to get the deterministic vault address for a given salt

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
saltbytes32The salt used to deploy the deterministic vault

Return Values

NameTypeDescription
[0]addressThe vault address NOTE: Reverts if the vault does not exist The salt is the one provided by the DM, not the deploymentSalt calculated by _buildDeterministicDeploymentSalt() in DataObject

_allVaults

function _allVaults(DataPoint dp) internal view returns (address[])

Function used to get all vaults associated to given data point

Parameters

NameTypeDescription
dpDataPointDataPoint identifier

Return Values

NameTypeDescription
[0]address[]The list of vault addresses

_deployVault

function _deployVault(DataPoint dp, address factory, bytes data) internal returns (address)

Function used to deploy a new vault

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
factoryaddressThe factory address
databytesData for any additional initialization

Return Values

NameTypeDescription
[0]addressThe vault address NOTE: Reverts if the vault is already registered

_deployDeterministicVault

function _deployDeterministicVault(DataPoint dp, address factory, bytes32 salt, bytes data) internal returns (address)

Function used to deploy a new deterministic vault

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
factoryaddressThe factory address
saltbytes32A unique value to ensure the deterministic address is unique
databytesData for any additional initialization

Return Values

NameTypeDescription
[0]addressThe vault address NOTE: Reverts if the vault is already registered The salt used in the deploy is calculated by _buildDeterministicDeploymentSalt() with the salt provided here and the DataPoint

_addSignatureValidationData

function _addSignatureValidationData(DataPoint dp, address vault, bytes32 hash, address signer) internal

Operation used to add a valid signer for a vault for a specific hash

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
vaultaddressThe vault address to add the signer to
hashbytes32The hash to add the signer to
signeraddressThe signer address

_revokeSignatureValidationData

function _revokeSignatureValidationData(DataPoint dp, address vault, bytes32 hash, address signer) internal

Operation used to revoke a valid signer for a vault for a specific hash

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
vaultaddressThe vault address to revoke the signer from
hashbytes32The hash to revoke the signer from
signeraddressThe signer address

_vaultExecute

function _vaultExecute(DataPoint dp, address vault, address target, bytes data, uint256 value) internal returns (bytes)

Function used to execute a call on a vault

Parameters

NameTypeDescription
dpDataPointDataPoint identifier
vaultaddressThe vault address
targetaddressThe target address
databytesThe call data
valueuint256The call value

_buildDeterministicDeploymentSalt

function _buildDeterministicDeploymentSalt(DataPoint dp, bytes32 salt) internal pure returns (bytes32)

Calculates deployment salt

Parameters

NameTypeDescription
dpDataPointDataPoint for the Vault
saltbytes32Salt provided by DataManager on Vault deployment

Return Values

NameTypeDescription
[0]bytes32deployment salt which is sent to the VaultFactory NOTE: This function can be used to calculate deploymentSalt sent to the Factory

_dpData

function _dpData(DataPoint dp) internal returns (struct VaultDataObject.DpData)

_tryDpData

function _tryDpData(DataPoint dp) internal view returns (bool, struct VaultDataObject.DpData)