VaultV2AllowlistGate
Git Source - Generated with forge doc
Inherits: IReceiveSharesGate, ISendSharesGate, IReceiveAssetsGate, ISendAssetsGate, Ownable2Step
Title: VaultV2AllowlistGate
Allowlist-based gate for VaultV2 share and asset transfers.
The owner can setAllowlist then renounceOwnership to make the stored allowlist immutable.
Management and performance fee recipients are auto-permitted for canReceiveShares, canSendShares and canReceiveAssets. canSendAssets has no fee-recipient exemption.
The effective allowlist is the stored allowlist plus the fee recipients, so it is truly frozen only if the vault curator also abdicates setManagementFeeRecipient and setPerformanceFeeRecipient.
VaultV2's forceDeallocate penalty can only be paid in vault shares, burned via a withdraw that requires canSendShares on the holder; denying it to that holder breaks this non-custodial in-kind redemption guarantee.
A restrictive canReceiveShares allowlist can break the same guarantee: if only contracts can receive shares, users never hold shares directly, and unless an allowlisted holder exposes a way to call forceDeallocate (or approves an account that can), the escape hatch is unreachable.
State Variables
allowlist
mapping(address => Role) public allowlist
Functions
constructor
constructor(address _owner) Ownable(_owner);
setAllowlist
Sets the allowlist roles of one or more accounts.
function setAllowlist(Role[] calldata roles) external onlyOwner;
Parameters
| Name | Type | Description |
|---|---|---|
roles | Role[] | The roles to set. Each role specifies a user and their gate permissions. |
canReceiveShares
function canReceiveShares(address account) external view override returns (bool);
canSendShares
function canSendShares(address account) external view override returns (bool);
canReceiveAssets
function canReceiveAssets(address account) external view override returns (bool);
canSendAssets
function canSendAssets(address account) external view override returns (bool);
_isFeeRecipient
function _isFeeRecipient(address account) internal view returns (bool);
Events
VaultV2AllowlistUpdated
event VaultV2AllowlistUpdated(
address indexed user, bool canReceiveShares, bool canSendShares, bool canReceiveAssets, bool canSendAssets
);
Structs
Role
struct Role {
address user;
bool canReceiveShares;
bool canSendShares;
bool canReceiveAssets;
bool canSendAssets;
}