Contracts for the stake.link Liquid Staking Protocol
Find a file
BkChoy 24b2c5583c
Some checks failed
CI / Lint & Test (push) Has been cancelled
Merge pull request #173 from stakedotlink/develop
develop -> main
2026-02-13 11:39:29 -05:00
.github/workflows removed foundry 2024-05-09 12:16:18 -04:00
.openzeppelin deploy espresso staking 2026-02-10 13:31:00 -05:00
audits add espresso staking audit report 2026-02-10 13:31:00 -05:00
contracts fix prettier 2026-02-10 13:33:57 -05:00
deployments deploy espresso staking 2026-02-10 13:31:00 -05:00
scripts add script to transfer espresso staking ownership 2026-02-13 11:02:15 -05:00
test fix failing test 2026-02-10 13:44:31 -05:00
.gitignore updated config 2024-07-12 19:03:27 -04:00
.prettierrc.json fixed prettier 2024-07-15 13:52:24 -04:00
.solhint.json StakingPool contracts 2022-02-02 20:11:59 -05:00
hardhat.config.ts add ledger support 2025-08-05 17:14:33 -04:00
LICENSE.md Create LICENSE.md 2023-01-11 10:59:54 +00:00
package.json Merge pull request #153 from stakedotlink/feature/sdl-vesting-auto-stake 2026-01-06 08:48:38 -05:00
README.md removed outdated readme docs 2023-01-11 10:45:41 -05:00
tsconfig.json updated config 2024-07-12 19:03:27 -04:00
yarn.lock Merge pull request #153 from stakedotlink/feature/sdl-vesting-auto-stake 2026-01-06 08:48:38 -05:00

stake.link Liquid Staking Protocol

stake.link is a Liquid Staking protocol, built initially for the Chainlink Network with upcoming support for Ethereum 2.0's beacon chain. stake.link consists of the highest-quality node operators and validators to ensure a seamless and secure way to put tokens to stake.

By building on top of Chainlink Staking stake.link offers a way for users to stake their LINK across Chainlink Node Operators and in-future the wider community pool, receiving stLINK, the liquid staking receipt token that rebases rewards. stLINK is always backed by the amount of LINK staked 1:1.

Ethereum 2.0

stake.link proposes a unique way of liquid staking within the Ethereum ecosystem, by allowing both reputable and self-hosted validators to participate in the same pool. By the way of governance, any self-hosted validator has the opportunity to raise a proposal to become a whitelisted reputable validator removing the need for the validator to provide collateral by being performant.

Users who stake their ETH within the stake.link protocol will in return receive sdlETH, the liquid staking receipt token that is backed by staked ETH on the beacon chain 1:1. Users who stake ETH will see their tokens buffered, being distributed between validators who are either whitelisted or non-whitelisted, with all users receiving a blended reward rate between the two.

Technical Documentation

For more detailed technical documentation:

https://docs.stake.link/


I. Setup Locally

Requirements

Use node v14.17.4

$ nvm install 14.17.4
$ nvm use 14.17.4

Install dependencies

$ yarn

Hardhat configuration

  1. Inside hardhat.config.ts, add a provider url to the networks object for each network you would like to connect to
  2. Also replace accounts[0] with the private key of the address you will be using for contract deployments and running scripts
  3. Set env var HARDHAT_NETWORK to the network you want to deploy to and/or interact with (default is localhost)

II. Running Locally

To run hardhat and deploy all contracts, run:

$ yarn start

To run hardhat, deploy all contracts, and send a series of transactions that mock user behaviour, run:

$ yarn start-mock-data

III. Deploying Contracts

The following commands can be used both on local and non-local networks.

To deploy all contracts to the currently selected network, run:

$ yarn deploy

IV. Testing

To run all contract tests, run:

$ yarn test

To generate events for metrics testing, run:

$ yarn luv-deyta