Purpose
SignatureDepositQueue extends SignatureQueue to enable instant deposit of assets into a vault, bypassing the standard on-chain DepositQueue mechanism. It leverages off-chain approvals signed by a trusted consensus group, using EIP-712 or EIP-1271-compliant signatures, to authorize asset inflows and minting of vault shares.
This contract is optimized for high-trust environments requiring immediate asset onboarding while maintaining on-chain price safety guarantees.
Key Features
- Instant deposit execution with no queuing delay
- EIP-712 signed orders with nonce-based replay protection
- Vault share minting at off-chain pre-agreed price
- Fully integrated with vault accounting and share manager
- No deposit fee applied (unlike possible fees in
DepositQueue)
Workflow
- A consensus group signs an
Orderauthorizing a user deposit:- Includes asset amount (
ordered) and shares to mint (requested) - Binds the request to a specific queue and vault
- Includes a nonce and expiration timestamp
- Includes asset amount (
- User submits the order on-chain by calling
depositfunction:- The contract validates the order using signatures and price logic
- Receives tokens from the user
- Transfers these tokens to the vault
- Mints shares to the specified recipient
- Updates vault internal balance and executes post-deposit hook
Function: deposit
Parameters:
order: A signedOrderstruct including deposit parameterssignatures: Signatures from the off-chain consensus validating the order
Steps:
validateOrder(...):- Confirms order is not expired
- Confirms order is intended for this queue
- Confirms correct asset, caller, and nonce
- Validates off-chain signatures
- Computes and validates asset/share price using vault oracle
- Increments the caller’s nonce to prevent replay
- Transfers
order.orderedassets from the caller to this contract - Transfers these assets into the vault
- Calls
vault.callHook(...)for any optional strategy logic - Notifies the vault’s
RiskManagerof the new deposit - Mints
order.requestedshares toorder.recipient - Emits
OrderExecutedevent
Security Considerations
- Consensus signatures are required to prevent unauthorized deposits
- Oracle validation ensures price sanity even in trusted setups
- Replay protection enforced using per-user nonces
- No deposit can proceed if:
- Asset or queue mismatch
- Caller mismatch
- Nonce is reused
- Off-chain price is out of oracle bounds