Skip to main content

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

NameTypeDescription
rolesRole[]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;
}