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
Order
authorizing 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
deposit
function: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
deposit
function deposit(Order calldata order, IConsensus.Signature[] calldata signatures) external payable nonReentrant
Parameters:
order
: A signedOrder
struct 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.ordered
assets from the caller to this contractTransfers these assets into the vault
Calls
vault.callHook(...)
for any optional strategy logicNotifies the vault's
RiskManager
of the new depositMints
order.requested
shares toorder.recipient
Emits
OrderExecuted
event
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