Note: The new upstream is at lidofinance/solido.
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:
We continuously develop on the main branch in this repository, the code in the
main branch may not reflect what is deployed on-chain. Please check the
deployments docs for the currently
deployed version, and see the changelog for which versions are
intended for deployment.
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— Solido, the on-chain Solana BPF program that implements Lido for Solana.anker— Anker, the on-chain Solana BPF program that implements integration with the Anchor Protocol on Terra.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-linesolidoutility for interacting with the on-chain programs.docker— Dockerfiles for reproducible builds, and for the maintainer image.testlib— Utilities for writing tests using thesolana-program-testtest framework. The individual tests are inprogram/testsandanker/tests.tests— Scripts that test the actualsolidobinary and on-chain program.
The on-chain programs 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
solidoutility) - 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-devlibhidapi-devpkg-configopenssl
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/solidoIf you already cloned the repository without submodules, you can still initialize them later:
$ git submodule init
$ git submodule updateIf 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 --releaseThe solido binary can then be found in target/release.
Building the on-chain programs requires the Solana tool suite:
$ cargo build-bpf
$ cargo test-bpfThe programs lido.so, anker.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/shThis 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.