Dashboard
Command
yarn start contracts dashboard [arguments] [-options]
Address verification
Before running, every Dashboard command verifies the supplied <address>: the
CLI checks that it is a Dashboard contract and, for vault-scoped commands, that
it belongs to the vault. You are prompted first (-y/Enter run the check, n
skips it). If the check fails, the CLI warns (⚠️) which stage failed and asks
whether to exit or proceed at your own risk. With --yes, a failed check exits
unless --skip-dashboard-check is also set. With --json, the check
runs automatically (no interactive prompt) and a failed check exits unless
--skip-dashboard-check is also set.
Dashboard commands list
yarn start contracts dashboard -h
API
| Command | Description |
|---|---|
| read (r) | read commands |
| write (w) | write commands |
Read
| Command | Description |
|---|---|
| info <address> | get dashboard base info |
| overview <address> | get dashboard overview |
| roles <address> | get dashboard roles |
| health <address> | get vault health info |
| dashboard-address-by-vault dashboard-by-vault<vault> | get dashboard address by vault |
| vault-by-dashboard <dashboard> | get vault address by dashboard |
| confirmations-log <address> | get pending confirmations |
| confirming-roles <address> | get the roles that can:change the confirm expiry, set the node operator fee, set a new owner of the StakingVault |
| BURN_ROLE <address> | Calls the read-only function "BURN_ROLE" on the contract. |
| COLLECT_VAULT_ERC20_ROLE <address> | Calls the read-only function "COLLECT_VAULT_ERC20_ROLE" on the contract. |
| DEFAULT_ADMIN_ROLE <address> | Calls the read-only function "DEFAULT_ADMIN_ROLE" on the contract. |
| FUND_ON_RECEIVE_FLAG_SLOT <address> | Calls the read-only function "FUND_ON_RECEIVE_FLAG_SLOT" on the contract. |
| FUND_ROLE <address> | Calls the read-only function "FUND_ROLE" on the contract. |
| LIDO_LOCATOR <address> | Calls the read-only function "LIDO_LOCATOR" on the contract. |
| MAX_CONFIRM_EXPIRY <address> | get the max confirm expiry |
| MINT_ROLE <address> | Calls the read-only function "MINT_ROLE" on the contract. |
| MIN_CONFIRM_EXPIRY <address> | get the min confirm expiry |
| NODE_OPERATOR_FEE_EXEMPT_ROLE <address> | Calls the read-only function "NODE_OPERATOR_FEE_EXEMPT_ROLE" on the contract. |
| NODE_OPERATOR_MANAGER_ROLE <address> | Calls the read-only function "NODE_OPERATOR_MANAGER_ROLE" on the contract. |
| NODE_OPERATOR_PROVE_UNKNOWN_VALIDATOR_ROLE <address> | Calls the read-only function "NODE_OPERATOR_PROVE_UNKNOWN_VALIDATOR_ROLE" on the contract. |
| NODE_OPERATOR_UNGUARANTEED_DEPOSIT_ROLE <address> | Calls the read-only function "NODE_OPERATOR_UNGUARANTEED_DEPOSIT_ROLE" on the contract. |
| PAUSE_BEACON_CHAIN_DEPOSITS_ROLE <address> | Calls the read-only function "PAUSE_BEACON_CHAIN_DEPOSITS_ROLE" on the contract. |
| REBALANCE_ROLE <address> | Calls the read-only function "REBALANCE_ROLE" on the contract. |
| REQUEST_VALIDATOR_EXIT_ROLE <address> | Calls the read-only function "REQUEST_VALIDATOR_EXIT_ROLE" on the contract. |
| RESUME_BEACON_CHAIN_DEPOSITS_ROLE <address> | Calls the read-only function "RESUME_BEACON_CHAIN_DEPOSITS_ROLE" on the contract. |
| STETH <address> | Calls the read-only function "STETH" on the contract. |
| TRIGGER_VALIDATOR_WITHDRAWAL_ROLE <address> | Calls the read-only function "TRIGGER_VALIDATOR_WITHDRAWAL_ROLE" on the contract. |
| VAULT_CONFIGURATION_ROLE <address> | Calls the read-only function "VAULT_CONFIGURATION_ROLE" on the contract. |
| hub <address> | get vaultHub address |
| VOLUNTARY_DISCONNECT_ROLE <address> | Calls the read-only function "VOLUNTARY_DISCONNECT_ROLE" on the contract. |
| WITHDRAW_ROLE <address> | Calls the read-only function "WITHDRAW_ROLE" on the contract. |
| WSTETH <address> | Calls the read-only function "WSTETH" on the contract. |
| no-accrued-fee <address> | get the node operator`s accrued fee |
| confirmation <address> <_callData> <_role> | get the confirmation expiry for a given call data and confirmer |
| confirmingRoles <address> | Calls the read-only function "confirmingRoles" on the contract. |
| fee-leftover <address> | get the amount of node operator fees accrued on the moment of disconnection and secured to be recovered to the feeRecipient address using recoverFeeLeftover method |
| no-fee-rate <address> | get node operator fee rate in basis points |
| node-operator-fee-recipient <address> | get the address of the node operator fee recipient |
| get-confirm-expiry <address> | get the confirmation expiry |
| getRoleAdmin <address> <role> | Calls the read-only function "getRoleAdmin" on the contract. |
| getRoleMember <address> <role> <index> | Calls the read-only function "getRoleMember" on the contract. |
| getRoleMemberCount <address> <role> | Calls the read-only function "getRoleMemberCount" on the contract. |
| getRoleMembers <address> <role> | Calls the read-only function "getRoleMembers" on the contract. |
| has-role <address> <role> <account> | get has role by role and account |
| health-shortfall-shares <address> | get the amount of shares to rebalance to restore vault healthiness or to cover redemptions |
| initialized <address> | Calls the read-only function "initialized" on the contract. |
| latest-correction-timestamp <address> | get the timestamp of the most recent settled growth correction |
| latest-report lr<address> | get the latest report data containing the total value and in-out delta |
| liability-shares <address> | get the number of stETHshares minted |
| locked <address> | get the locked amount of ether for the vault |
| max-lockable-value <address> | get the max total lockable amount of ether for the vault (excluding the Lido and node operator fees) |
| minimal-reserve <address> | get the amount of ether that is locked on the vault only as a reserve |
| obligations <address> | get the amount of shares to burn to restore vault healthiness or to cover redemptions and the amount of outstanding Lido fees |
| obligations-shortfall-value <address> | get the amount of ether required to cover obligations shortfall of the vault |
| pdg-policy <address> | get the current active PDG policy set by DEFAULT_ADMIN_ROLE |
| remaining-minting-capacity <address> <etherToFund> | get the remaining capacity for stETH shares that can be minted by the vault if additional ether is funded |
| settled-growth <address> | get settled growth of the vault not subject to fees |
| vault <address> | get staking vault address |
| supports-interface <address> <interfaceId> | get supports interface by id |
| total-minting-capacity <address> | get the overall capacity for stETH shares that can be minted by the vault |
| total-value <address> | get the total value of the vault in ether |
| vault-connection <address> | get vault connection |
| w-ether <address> | get amount of ether that can be withdrawn from the staking vault |
Write
| Command | Description |
|---|---|
| transfer-vault-ownership ownership<address> <newOwner> | transfers the ownership of the underlying StakingVault from this contract to a new owner without disconnecting it from the hub |
| voluntary-disconnect <address> | disconnects the staking vault from the vault hub |
| fund <address> <ether> | funds the staking vault with ether |
| withdraw <address> <recipient> <eth> | withdraws ether from the staking vault to a recipient |
| exit <address> <validatorPubKey> | requests the exit of a validator from the staking vault |
| trigger-validator-withdrawal <address> <pubkeys> <amounts> <recipient> | triggers the withdrawal of a validator from the staking vault |
| mint-shares mint<address> <recipient> <amountOfShares> | mints stETH tokens backed by the vault to a recipient |
| mint-steth <address> <recipient> <amountOfSteth> | mints stETH tokens backed by the vault to a recipient |
| mint-wsteth <address> <recipient> <amountOfWsteth> | mints wstETH tokens backed by the vault to a recipient |
| burn-shares burn<address> <amountOfShares> | Burns stETH shares from the sender backed by the vault. Expects corresponding amount of stETH approved to this contract |
| burn-steth <address> <amountOfShares> | Burns stETH shares from the sender backed by the vault. Expects stETH amount approved to this contract. |
| burn-wsteth <address> <tokens> | burn wstETH tokens from the sender backed by the vault |
| rebalance-ether <address> <ether> | rebalance the vault by transferring ether |
| rebalance-shares <address> <shares> | rebalance the vault by transferring shares |
| recover-erc20 <address> <token> <amount> <recipient> | recovers ERC20 tokens or ether from the dashboard contract to the recipient |
| collect-erc20-from-vault <address> <token> <amount> <recipient> | collects ERC20 tokens from vault contract balance to the recipient |
| deposit-pause <address> | Pauses beacon chain deposits on the staking vault. |
| deposit-resume <address> | resumes deposits to beacon chain |
| role-grant <address> <roleAssignmentJSON> | mass-grants multiple roles to multiple accounts. |
| role-revoke <address> <roleAssignmentJSON> | mass-revokes multiple roles from multiple accounts |
| unguaranteed-deposit-to-beacon-chain unguaranteed-deposit<address> <deposits> | withdraws ether from vault and deposits directly to provided validators bypassing the default PDG process |
| prove-unknown-validators-to-pdg prove-unknown-validators<address> <validatorIndex> | proves validators with correct vault WC if they are unknown to PDG |
| abandon-dashboard abandon<address> <newOwner> | accepts the ownership over the StakingVault transferred from VaultHub on disconnect and immediately transfers it to a new pending owner. This new owner will have to accept the ownership on the StakingVault contract |
| connect-to-vault-hub connect-hub<address> | connects to VaultHub, transferring underlying StakingVault ownership to VaultHub. |
| reconnect-to-vault-hub reconnect-hub<address> | accepts the ownership over the StakingVault and connects to VaultHub. Can be called to reconnect to the hub after voluntaryDisconnect() |
| connect-and-accept-tier connect-and-accept<address> <tier> <requestedShareLimit> | changes the tier of the vault and connects to VaultHub |
| set-pdg-policy <address> <policy> | set the PDG policy |
| set-node-operator-fee-recipient set-no-f-r<address> <recipient> | sets the node operator fee recipient |
| confirm-proposal <address> | Confirms a proposal |
| set-confirm-expiry <address> <expiry> | Sets the confirm expiry |
| set-node-operator-fee-rate <address> <fee> | updates the node-operator`s fee rate (basis-points share) |
| add-fee-exemption <address> <amount> | adds a fee exemption to exclude this value from node operator fee base; increases settled growth as if fees were already paid on the exempted amount |
| disburse-node-operator-fee <address> | transfers the node-operator`s accrued fee (if any) to nodeOperatorFeeRecipient |
| change-tier ct<address> <tierId> <requestedShareLimit> [--steth] | vault tier change with multi-role confirmation. requestedShareLimit is in shares by default; use --steth to provide it in stETH (converted on-chain via getSharesByPooledEth) |
| sync-tier st<address> | requests a sync of tier on the OperatorGrid |
| update-share-limit usl<address> <shareLimit> [--steth] | requests a change of share limit on the OperatorGrid. shareLimit is in shares by default; use --steth to provide it in stETH (converted on-chain via getSharesByPooledEth) |
| disburse-abnormally-high-fee <address> | Disburses an abnormally high fee as DEFAULT_ADMIN_ROLE. Before calling this function, the caller must ensure that the high fee is expected, and the settled growth (used as baseline for fee) is set correctly. |
| correct-settled-growth <address> <newSettledGrowth> | Manually corrects the settled growth value with dual confirmation. |
| recover-fee-leftover rfl<address> | Recovers the previously collected fees to the feeRecipient address |
<roleAssignmentJSON>
[{
"account": string as Address;
"role": string as `0x${string}`;
}]
<deposits>
[{
"pubkey": "...",
"signature": "...",
"amount": number,
"deposit_data_root": "..."
}]