StakingModule contract facilitates the conversion and staking of Ethereum-based tokens, specifically WETH, stETH, and wstETH. It leverages the DefaultModule structure whilintegrating closely with security and withdrawal management systems of Lido protocol.
Key Features
- Token Conversion: Supports the conversion of WETH to stETH and subsequently to wstETH.
- Secure Staking: Interfaces with a
DepositSecurityModulefor secure staking operations. - Withdrawal Management: Coordinates with a
WithdrawalQueueto manage staking withdrawals.
Constructor
- Initializes the contract with the relevant Ethereum-based token addresses and modules.
- Parameters:
- weth_: Address of the WETH token.
- steth_: Address of the stETH token.
- wsteth_: Address of the wstETH token.
- depositSecurityModule_: The deposit security module for additional security during deposits.
- withdrawalQueue_: The withdrawal queue module to manage withdrawals.
- stakingModuleId_: A unique identifier for the staking module.
- Parameters:
Core Methods
- Token Conversion
convert(uint256): Converts a specified amount of WETH to wstETH.- amount: The amount of WETH to convert.
convertAndDeposit(uint256, uint256, bytes32, bytes32, uint256, bytes, IDepositSecurityModule.Signature[]): Converts WETH to wstETH and deposits it using the provided security parameters.- amount: The amount of WETH to convert and deposit.
- blockNumber: The block number to reference for the deposit.
- blockHash: The hash of the block.
- depositRoot: The root of the deposit.
- nonce: A nonce to ensure the uniqueness of the deposit.
- depositCalldata: Additional calldata required for the deposit.
- sortedGuardianSignatures: Signatures from guardians to validate the deposit.
- Private Helper Functions
_wethToWSteth(uint256): Internal function to convert WETH directly to wstETH, handling intermediate steps.- amount: The amount of WETH to convert.
Modifiers
- onlyDelegateCall: Ensures that certain functions are only callable through delegate calls to prevent direct interaction that might bypass security checks.
Error Handling
- NotEnoughWeth: Triggered if there is insufficient WETH for the requested operation.
- InvalidWithdrawalQueueState: Indicates a mismatch in the expected state of withdrawals, potentially blocking operations if the conditions are unsafe.