Lido for Solana (“Solido” for short) is a Lido DAO-governed liquid staking protocol for the Solana blockchain. Anyone who stakes their SOL tokens with Lido will be issued an on-chain representation of the SOL staking position with Lido validators, called stSOL.
Lido for Solana gives you:
- Liquidity — No delegation/activation delays and the ability to sell your staked tokens
- One-click staking — No complicated steps
- Decentralized security — Assets spread across the industry’s leading validators chosen by the Lido DAO
Further resources:
This repository contains the source code for the on-chain program, and for the
solido
utility to interact with it. The source code for the staking widget,
and documentation, are in a different repository, which is not yet public.
program
— The on-chain Solana BPF program.multisig
— A pinned version of the on-chain Serum multisig program, used as the upgrade authority of the Solido program, and as the manager of the Solido instance.cli
— The command-linesolido
utility for interacting with the on-chain programs.docker
— Dockerfiles for reproducible builds, and for the maintainer image.tests
— Scripts that test the actualsolido
binary and on-chain program.program/tests
— Tests using thesolana-program-test
test framework.
The on-chain program and solido
utility are written in Rust. To build them,
you need:
- An x86_64 Linux machine. Mac should work too, but for reproducibility we target Linux.
- A Rust toolchain
- The Solana tool suite (only needed for the on-chain programs,
not for the
solido
utility) - Docker (only needed if you want to reproduce the official build, or if you want to avoid installing build tools locally)
- The following system libraries (listed as Debian package names):
libudev-dev
libhidapi-dev
pkg-config
openssl
The Solana version that we test against is listed in our CI config.
This repository contains a Git submodule. To clone it, pass
--recurse-submodules
:
$ git clone --recurse-submodules https://github.com/chorusone/solido
If you already cloned the repository without submodules, you can still initialize them later:
$ git submodule init
$ git submodule update
If you have an existing checkout and later update it, make sure to also pass
--recurse-submodules
when using git pull
and git {checkout,switch}
.
To build and test the solido
utility, use the normal Cargo commands:
$ cargo test
$ cargo build --release
The solido
binary can then be found in target/release
.
Building the on-chain programs requires the Solana tool suite:
$ cargo build-bpf
$ cargo test-bpf
The programs lido.so
and serum_multisig.so
can then be found in target/deploy
.
To build the container image, use buildimage.sh
. This will build and package
Solido along with the Solana toolchain into an image chorusone/solido:«hash»
,
where «hash» will be the Git hash of the current version of the codebase.
Once built, one can execute into the container interactively:
$ docker run --interactive --tty --rm chorusone/solido:hash /bin/sh
This will provide a shell into the working directory where the Solido artefacts
and the Solana toolchain are located. Inside that directory, the the solido
utility is in solido/cli
, and the on-chain programs are in solido/deploy
.
Lido for Solana is licensed under the GNU General Public License version 3.