Mint and Burn Tokens
This guide covers minting and burning stETH-based tokens in Lido Staking Vaults.
Overview
Vaults support three token formats for minting and burning:
- Shares: Native vault shares representing ownership
- stETH: Lido's liquid staking token
- wstETH: Wrapped stETH with static balance
All operations require appropriate role permissions.
Mint Operations
Mint Shares
Mint native vault shares directly:
yarn start vo w mint <amount>
Mint stETH
Mint stETH tokens (rebasing):
yarn start vo w mint-steth <amount>
Mint wstETH
Mint wrapped stETH tokens (non-rebasing):
yarn start vo w mint-wsteth <amount>
Options for all mint commands:
-v, --vault <address>
: Vault address (interactive selection if not provided)-r, --recipient <address>
: Recipient address (interactive selection if not provided)
Burn Operations
Burn Shares
Burn vault shares:
yarn start vo w burn <amount>
Burn stETH
Burn stETH tokens:
yarn start vo w burn-steth <amount>
Burn wstETH
Burn wrapped stETH tokens:
yarn start vo w burn-wsteth <amount>
Options for all burn commands:
-v, --vault <address>
: Vault address (interactive selection if not provided)
Examples
Mint Operations
# Mint 1 share with interactive selection
yarn start vo w mint 1
# Mint 32 stETH with specified vault and recipient
yarn start vo w mint-steth 32 \
-v 0x1234567890123456789012345678901234567890 \
-r 0x9876543210987654321098765432109876543210
# Mint 1 wstETH with interactive selection
yarn start vo w mint-wsteth 1
Burn Operations
# Burn 0.5 shares with interactive vault selection
yarn start vo w burn 0.5
# Burn 10 stETH from specific vault
yarn start vo w burn-steth 10 -v 0x1234567890123456789012345678901234567890
# Burn 1 wstETH with interactive selection
yarn start vo w burn-wsteth 1
Alternative: Dashboard Direct Commands
You can also use dashboard commands directly:
Mint via Dashboard:
# Mint shares
yarn start contracts dashboard w mint-shares <dashboard_address> <recipient> <amount>
# Mint stETH
yarn start contracts dashboard w mint-steth <dashboard_address> <recipient> <amount>
# Mint wstETH
yarn start contracts dashboard w mint-wsteth <dashboard_address> <recipient> <amount>
Burn via Dashboard:
# Burn shares
yarn start contracts dashboard w burn-shares <dashboard_address> <amount>
# Burn stETH
yarn start contracts dashboard w burn-steth <dashboard_address> <amount>
# Burn wstETH
yarn start contracts dashboard w burn-wsteth <dashboard_address> <amount>
Mint Operation Details
Process Flow
- Permission Check: Verifies caller has MINT_ROLE
- Health Check: Validates vault health with fresh data
- Capacity Check: Ensures sufficient minting capacity
- Amount Validation: Confirms positive amount
- Transaction Execution: Mints tokens to recipient
- Health Verification: Ensures vault remains healthy
Requirements
For Minting:
- MINT_ROLE: Required permission on Dashboard
- Fresh Health Data: Vault report must be recent
- Minting Capacity: Vault must have available capacity
- Valid Recipient: Cannot mint to zero address
- Positive Amount: Must specify amount > 0
Security Features
Health Validation
- Prevents minting when vault is unhealthy
- Requires fresh oracle data
- Validates post-mint health
Role-Based Access
- Only authorized addresses can mint
- Granular permission control
Capacity Limits
- Prevents over-minting beyond vault collateral
- Maintains required reserve ratios
Burn Operation Details
Process Flow
- Permission Check: Verifies caller has BURN_ROLE
- Balance Verification: Checks caller has sufficient tokens
- Approval Check: Validates token approvals to Dashboard
- Amount Validation: Ensures valid burn amount
- Transaction Execution: Burns tokens from caller
- Liability Update: Reduces vault liability
Requirements
For Burning:
- BURN_ROLE: Required permission on Dashboard
- Token Balance: Must own tokens being burned
- Token Approval: Must approve Dashboard to spend tokens
- Valid Amount: Must specify amount > 0 and ≤ balance
Token Approvals
Before burning, ensure proper token approvals:
# Check your token balances and approvals
yarn start account r get-steth-allowance <address>
yarn start account r get-wsteth-allowance <address>
# Approve stETH to Dashboard contract before burning
# (Done via external wallet/contract interaction)
Access Control
Required Roles
MINT_ROLE
BURN_ROLE
Role Management
# Check roles on vault
yarn start vo r roles
# Verify your account permissions
yarn start account r info
Troubleshooting
Common Minting Issues
Permission Denied
# Check roles
yarn start vo r roles
# Verify caller account
yarn start account r info
Vault Health Failure
# Update vault reports
yarn start report w by-vault-submit
# Check health after update
yarn start vo r health
Insufficient Minting Capacity
# Check vault overview
yarn start vo r overview
# Fund vault if needed
yarn start vo w fund <amount>
Common Burning Issues
Insufficient Balance
# Check token balances
yarn start account r info
# Verify you own enough tokens to burn
Missing Approvals
# Ensure stETH is approved to Dashboard contract
# Check approval amounts
# Use wallet to approve if needed
Invalid Amount
# Ensure amount > 0
# Verify amount ≤ balance
# Use correct decimal precision
Integration with Other Commands
Complete Vault Workflow Example
# 1. Check vault health
yarn start vo r health
# 2. Fund vault if needed
yarn start vo w fund 64
# 3. Mint tokens
yarn start vo w mint-steth 32
# 4. Monitor performance
yarn start vo r overview
# 5. Burn tokens if needed
yarn start vo w burn-steth 10