Aleph Vault
Vault Configuration
Each Aleph Vault is initialized with parameters structured in three main categories:
Core Parameters:
operationsMultisig: Aleph protocol operations multisig for administrative controlsvaultFactory: The factory contract that deployed this vaultoracle: The oracle for NAV updates and settlement operationsguardian: Guardian role for emergency pause capabilitiesauthSigner: Off-chain KYC attestation signeraccountant: The accountant contract managing fee collection and distributionbatchDuration: The fixed duration of each settlement batch (e.g., hourly, daily)
User-Provided Parameters:
name: The name of the vaultconfigId: Vault configuration identifiermanager: Manager role for vault operationsunderlyingToken: The ERC-20 token the vault acceptscustodian: The custodian address where deposited funds are heldvaultTreasury: Treasury address for vault's portion of collected feesshareClassParams: Parameters for the initial share class (fees, limits, periods)
Module Implementations:
alephVaultDepositImplementation: Deposit logic modulealephVaultRedeemImplementation: Redemption logic modulealephVaultSettlementImplementation: Settlement logic modulefeeManagerImplementation: Fee management modulemigrationManagerImplementation: Migration and upgrade module
Write Methods
setIsDepositAuthEnabled
function setIsDepositAuthEnabled(bool _isDepositAuthEnabled) external;Toggle KYC gating for deposits. When enabled, off-chain attestations from authSigner are enforced for deposit requests.
Emits:
IsDepositAuthEnabledSet(bool isDepositAuthEnabled)
setIsSettlementAuthEnabled
function setIsSettlementAuthEnabled(bool _isSettlementAuthEnabled) external;Toggle KYC gating for settlements. When enabled, off-chain attestations from authSigner are enforced for settlement operations.
Emits:
IsSettlementAuthEnabledSet(bool isSettlementAuthEnabled)
createShareClass
function createShareClass(
ShareClassParams memory _shareClassParams
) external returns (uint8 _classId);Create a new share class with its own fee schedule, periods, and limits. Returns the new classId.
ShareClassParams structure:
managementFee: Management fee rate in basis pointsperformanceFee: Performance fee rate in basis pointsnoticePeriod: Notice period in batches for redemptionslockInPeriod: Lock-in period in batchesminDepositAmount: Minimum deposit amountminUserBalance: Minimum user balance requirementmaxDepositCap: Maximum deposit capminRedeemAmount: Minimum redemption amount
migrateModules
function migrateModules(bytes4 _module, address _newImplementation) external;Hot-swap a module implementation (e.g., Deposit/Redeem/Settlement/Fee/Migration managers) in a controlled way. For future vaults, the factory can update defaults; for this vault, use migrateModules.
queueManagementFee
function queueManagementFee(uint8 _classId, uint32 _managementFee) external;Queue a new management fee for a class; becomes settable after timelock via setManagementFee().
setManagementFee
function setManagementFee(uint8 _classId) external;Apply the queued management fee after the timelock for the specified class.
Emits:
NewManagementFeeSet(uint8 classId, uint32 managementFee)
queuePerformanceFee
function queuePerformanceFee(uint8 _classId, uint32 _performanceFee) external;Queue a new performance fee for a class.
setPerformanceFee
function setPerformanceFee(uint8 _classId) external;Apply the queued performance fee after the timelock for the specified class.
Emits:
NewPerformanceFeeSet(uint8 classId, uint32 performanceFee)
setVaultTreasury
function setVaultTreasury(address _vaultTreasury) external;Set the vault treasury address where fees are collected. This function is called by the manager role.
Emits:
VaultTreasurySet(address vaultTreasury)
collectFees
function collectFees() external returns (
uint256 _managementFeesToCollect,
uint256 _performanceFeesToCollect
);Collect all accumulated management and performance fees. This function is called by the ACCOUNTANT role and transfers fees to both the vault treasury and Aleph treasury based on the configured fee splits.
Returns:
_managementFeesToCollect: Total management fees collected_performanceFeesToCollect: Total performance fees collected
Emits:
FeesCollected(uint256 managementFeesCollected, uint256 performanceFeesCollected)
pause / unpause
function pause(bytes4 _pausableFlow) external;
function unpause(bytes4 _pausableFlow) external;Granularly halt/resume specific flows. Available pausable flows:
DEPOSIT_REQUEST_FLOW: Pause new deposit requestsREDEEM_REQUEST_FLOW: Pause new redemption requestsSETTLE_DEPOSIT_FLOW: Pause deposit settlementsSETTLE_REDEEM_FLOW: Pause redemption settlementsWITHDRAW_FLOW: Pause withdrawal of redeemable amounts
Emits:
FlowPaused(bytes4 flow, address pauser)FlowUnpaused(bytes4 flow, address unpauser)
requestDeposit
function requestDeposit(
RequestDepositParams calldata _requestDepositParams
) external returns (uint48 _batchId)Requests a deposit of underlying assets into a specific share class. Tokens are transferred into the vault and recorded against the current batch. Only one deposit request is allowed per batch per user.
RequestDepositParams:
classId: The share class ID to deposit intoamount: The amount of underlying tokens to depositauthSignature: Authentication signature structure (if deposit auth is enabled)
Returns:
batchId: The batch to which this deposit was assigned.
Emits:
DepositRequest(address indexed user, uint256 amount, uint48 batchId)
settleDeposit
function settleDeposit(
SettlementParams calldata _settlementParams
) external;Settles all pending deposits for a specific class by finalizing share distribution based on the updated NAV. This function:
Mints shares for users in the appropriate series
Transfers deposited tokens to the custodian
Updates total assets and shares
SettlementParams:
classId: The share class to settletoBatchId: The batch ID to settle up tonewTotalAssets: Array of updated total assets for each series based on NAVauthSignature: Authentication signature if settlement auth is enabled
This function is called by the ORACLE role.
requestRedeem
function requestRedeem(
RedeemRequestParams calldata _redeemRequestParams
) external returns (uint48 _batchId);Requests a redemption from a specific share class. The request is recorded against the current batch and processed asynchronously. Underlying assets are made available after settlement.
RedeemRequestParams:
classId: The share class ID to redeem fromestAmountToRedeem: The estimated amount of underlying tokens to redeem
Note: The amount specified is used to calculate share units based on the price-per-share (PPS) at the moment of request. The actual amount withdrawn after settlement may differ due to NAV changes and fees.
AuthSignature Structure
When authentication is enabled, the following signature structure is required:
struct AuthSignature {
bytes authSignature;
uint256 expiryBlock;
}authSignature: The signature bytes generated by the authorized signerexpiryBlock: Block number after which the signature expires
Returns:
batchId: The batch to which this withdrawal was assigned.
Emits:
RedeemRequest(address indexed user, uint256 shares, uint48 batchId)
settleRedeem
function settleRedeem(
SettlementParams calldata _settlementParams
) external;Settles all pending redeem requests for a specific class using the updated NAV. This function:
Calculates asset value based on current NAV
Burns shares from appropriate series
Makes assets available for withdrawal
SettlementParams:
classId: The share class to settletoBatchId: The batch ID to settle up tonewTotalAssets: Array of updated total assets for each series based on NAVauthSignature: Authentication signature if settlement auth is enabled
This function is called by the ORACLE role.
withdrawRedeemableAmount
function withdrawRedeemableAmount() external;Withdraws all redeemable assets that have been settled for the user. Transfers the underlying tokens from the vault to the user.
Read Methods
currentBatch
function currentBatch() external view returns (uint48);Current active batch id (used to index per-batch deposit/redeem registries).
totalAssets
function totalAssets() external view returns (uint256)Returns the latest total value of vault holdings, based on oracle-settled NAV, for all classes / series.
shareClasses
function shareClasses() external view returns (uint8);Returns the number of share classes created in the vault.
name
function name() external view returns (string memory);Returns the vault name.
manager
function manager() external view returns (address);Returns vault manager address.
oracle
function oracle() external view returns (address);NAV oracle address.
operationsMultisig
function operationsMultisig() external view returns (address);Aleph Protocol multisig for ops/safety controls.
guardian
function guardian() external view returns (address);Guardian role address.
authSigner
function authSigner() external view returns (address);KYC attestation signer.
underlyingToken
function underlyingToken() external view returns (address);Returns the address of the underlying ERC-20 token.
custodian
function custodian() external view returns (address);Custodian address.
vaultTreasury
function vaultTreasury() external view returns (address);Returns the vault treasury address where vault's portion of fees are collected.
managementFee
function managementFee(uint8 _classId) external view returns (uint32);Current management fee for a share class.
performanceFee
function performanceFee(uint8 _classId) external view returns (uint32);Current performance fee for a share class.
minDepositAmount
function minDepositAmount(uint8 _classId) external view returns (uint256);Returns the minimum undelrying amount accepted as a deposit for a class.
maxDepositCap
function maxDepositCap(uint8 _classId) external view returns (uint256);Returns the maximum underlying token capacity for a class.
totalAssetsPerClass
function totalAssetsPerClass(uint8 _classId) external view returns (uint256);Returns the total assets for a given class.
totalAssetsOfClass
function totalAssetsOfClass(uint8 _classId) external view returns (uint256[] memory);Returns an array of total assets for each series in the given class.
totalAssetsPerSeries
function totalAssetsPerSeries(uint8 _classId, uint8 _seriesId) external view returns (uint256);Returns the total assets for a given class and series.
totalSharesPerSeries
function totalSharesPerSeries(uint8 _classId, uint8 _seriesId) external view returns (uint256);Returns the total shares for a given class and series.
pricePerShare
function pricePerShare(uint8 _classId, uint8 _seriesId) external view returns (uint256);Returns price per share (also known as NAV per share) for a given class and series.
highWaterMark
function highWaterMark(uint8 _classId, uint8 _seriesId) external view returns (uint256);Returns high-water mark for a given class and series.
sharesOf
function sharesOf(uint8 _classId, uint8 _seriesId, address _user) external view returns (uint256);Returns the current share balance for a user and a given class / series.
assetsOf
function assetsOf(uint8 _classId, uint8 _seriesId, address _user) external view returns (uint256);Returns the current asset balance for a user and a given class / series.
totalAmountToDeposit
function totalAmountToDeposit(uint8 _classId) external view returns (uint256);Returns the total unsettled deposit amount (underlying tokens) requested for the given share class, summed across all batches including the current batch.
Note: if settlement is triggered for the current batch, the amount requested in this same batch is not settled in that cycle and will roll into the next settlement batch.
totalAmountToDepositAt
function totalAmountToDepositAt(uint8 _classId, uint48 _batchId) external view returns (uint256);Returns the total unsettled deposit amount (underlying tokens) requested for the given share class at a specific batch.
depositRequestOf
function depositRequestOf(uint8 _classId, address _user) external view returns (uint256);Returns the caller’s unsettled deposit amount (underlying tokens) for the given share class, summed across all batches including the current batch.
depositRequestOfAt
function depositRequestOfAt(uint8 _classId, address _user, uint48 _batchId) external view returns (uint256);Returns the caller’s unsettled deposit amount (underlying tokens) for the given share class at a specific batch.
redeemRequestOf
function redeemRequestOf(uint8 _classId, address _user) external view returns (uint256);Returns the caller’s unsettled redemption amount (denominated in shares) for the given share class, summed across all batches including the current batch.
redeemRequestOfAt
function redeemRequestOf(uint8 _classId, address _user, uint48 _batchId) external view returns (uint256);Returns the caller’s unsettled redemption amount (in shares) for the given share class at a specific batch.
usersToDepositAt
function usersToDepositAt(uint8 _classId, uint48 _batchId) external view returns (address[] memory);Returns the list of user addresses with a non-zero deposit request in the given share class at the specified batch.
usersToRedeemAt
function usersToRedeemAt(uint8 _classId, uint48 _batchId) external view returns (address[] memory);Returns the list of user addresses with a non-zero redemption request (in shares) in the given share class at the specified batch.
accountant
function accountant() external view returns (address);Returns the accountant contract address responsible for fee management.
totalAssetsPerClass
function totalAssetsPerClass(uint8 _classId) external view returns (uint256);Returns the total assets across all series for a given class.
forceRedeem
function forceRedeem(address _user) external;Allows the manager to force a redemption for a specific user. This is typically used for regulatory compliance or risk management.
withdrawExcessAssets
function withdrawExcessAssets() external;Allows the manager to withdraw any excess assets from the vault back to the custodian. Used to manage vault liquidity.
isDepositAuthEnabled
function isDepositAuthEnabled() external view returns (bool);Returns KYC gate status for deposits.
isSettlementAuthEnabled
function isSettlementAuthEnabled() external view returns (bool);Returns KYC gate status for settlements.
noticePeriod
function noticePeriod(uint8 _classId) external view returns (uint48);Returns the notice period (in batches) required for redemptions in the specified class.
lockInPeriod
function lockInPeriod(uint8 _classId) external view returns (uint48);Returns the lock-in period (in batches) for the specified class.
minUserBalance
function minUserBalance(uint8 _classId) external view returns (uint256);Returns the minimum balance requirement for users in the specified class.
minRedeemAmount
function minRedeemAmount(uint8 _classId) external view returns (uint256);Returns the minimum redemption amount for the specified class.
userLockInPeriod
function userLockInPeriod(uint8 _classId, address _user) external view returns (uint48);Returns the lock-in period end batch for a specific user in a class.
redeemableAmount
function redeemableAmount(address _user) external view returns (uint256);Returns the amount of underlying assets available for withdrawal by the user after redemption settlement.
totalFeeAmountToCollect
function totalFeeAmountToCollect() external view returns (uint256);Returns the total fees (management + performance) available to be collected across all classes.
Last updated
Was this helpful?

