SignatureDepositQueue
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
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
depositfunction deposit(Order calldata order, IConsensus.Signature[] calldata signatures) external payable nonReentrantParameters:
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 contractTransfers these assets into the vault
Calls
vault.callHook(...)for any optional strategy logicNotifies the vault's
RiskManagerof the new depositMints
order.requestedshares toorder.recipientEmits
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