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:
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-line solido
utility for interacting with the on-chain
programs.docker
— Dockerfiles for reproducible builds, and for the maintainer image.testlib
— Utilities for writing tests using the solana-program-test
test
framework. The individual tests are in program/tests
and anker/tests
.tests
— Scripts that test the actual solido
binary and on-chain program.The on-chain programs and solido
utility are written in Rust. To build them,
you need:
solido
utility)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
, 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/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.