The Solido utility
Lido on Solana consists of an on-chain program, a web-based frontend for users
to interact with it, and a command-line client for administration and
maintenance interact with it. This command-line client is called solido
. It
is used for:
- Creating a new Solido instance. This is only done once on mainnet, but we do it often on a local validator for testing.
- Creating a new multisig instance, and approving and executing multisig transactions.
- Creating multisig transactions for administration operations (adding validators, changing the fees).
- Running the maintenance daemon.
- Inspecting a Solido instance, to show the current status.
- Making deposits and withdrawals. These are indended for testing, end users are expected to use the webinterface instead.
Obtaining Solido
You can either build solido
from source with Cargo, or use the
chorusone/solido-maintainer
container image that includes a
prebuilt version. The utility is developed and tested on Linux, and it should
run on Mac as well. When building from source, make sure to clone the repository
with --recurse-submodules
.
Configuration
The solido
program needs to know a few things before it can interact with the
on-chain program:
- The network to connect to (mainnet-beta, testnet, or possibly a local test validator).
- The address of the Solido program, and the address of the Solido instance.
- Possibly the address of the multisig program, and the address of the multisig instance.
- When signing, the key pair to sign with.
These can be configured in three ways:
With command-line arguments. See
solido --help
for more details.With environment variables. The names are the same as the command-line options, but uppercase, with underscores instead of dashes, and prefixed with
SOLIDO_
. For example, to provide--keypair-path
through an environment variable, setSOLIDO_KEYPAIR_PATH
.With a json configuration file, that contains an object with options. The names are the same as the command-line options, but with underscores instead of dashes. For example, to set
--keypair-path
in a config file, write the following tosolido.json
:{
"keypair_path": "/home/users/lido/.config/solana/id.json"
}Then run
solido
with--config solido.json
to use this config file.
When an option is provided in multiple places, the command-line takes precedence, then the config file, then the environment variable, and if that is not set either, the default value is used, if possible.
For sample configuration files with the right addresses set up, see the deployments page.
Using a hardware wallet
The --keypair-path
can point to a keypair file generated with solana-keygen
,
or it can be a URI that starts with usb://
to use a hardware wallet. Some
examples:
usb://ledger
to connect to a Ledger and use its default key.usb://ledger?key=0
to select the key by derivation path.
See the Solana documentation on hardware wallets for more information.
When using a Ledger hardware wallet, you need to turn on the blind signing setting in the Solana app on the device. By default, Ledger tries to parse all transactions that it signs, so it can show a summary of the transaction on its display. However, Ledger does not have a parser for Solido transactions or multisig transactions, so by default it refuses to sign those. By enabling blind signing, you allow the Ledger to sign transactions that it cannot show a summary for. The Ledger still requires human confirmation to sign, even when blind signing is enabled.