LiNEAR Protocol is a liquid staking solution built on the NEAR Protocol. LiNEAR unlocks liquidity of the staked NEAR by creating a staking derivative to be engaged with various DeFi protocols on NEAR and Aurora, while also enjoying over 10% APY staking rewards of the underlying base tokens. LiNEAR is the cornerstone piece of the NEAR-Aurora DeFi ecosystem.
The LiNEAR smart contracts are implemented with NEAR Rust SDK. The core contract is located in contracts/linear
, and several mock contracts were made for testing various scenarios via simulation test.
The v1.0.0 contract release has been audited by BlockSec. According to BlockSec's auditing report, no critical issues were found, and few low-risk minor issues were reported and have been fixed.
- LiNEAR contract and $LiNEAR token:
linear-protocol.near
- LiNEAR contract and $LiNEAR token:
linear-protocol.testnet
- Build all artifacts:
make
- Build linear only:
make linear
We adopt unit tests and heavily used the workspace-js
test framework to test the major scenarios and workflow of the LiNEAR smart contract in the Sandbox environment
- Run all tests:
make test
- Run LiNEAR simulation tests:
- Run all:
make test-linear
- Run specific test file:
TEST_FILE={filename} make test-linear
- Print contract logs:
LOGS=1 make test-linear
- Run all:
A CLI tool is made to help deploy and manage the contract.
In order to use it, run npm i
first.
All CLI arguments could be passed as environment variables as well, with LI
prefix.
-
deploy contract:
./bin/cli.js deploy linear.testnet
-
init contract:
./bin/cli.js init linear.testnet --signer owner.testnet --owner_id owner.testnet
- Checkout a release branch from main
git checkout -b release/v1.0.x
- Make sure all tests pass:
make test
- Update version in
contracts/linear/Cargo.toml
- Git commit version update and push the release branch:
git commit -m 'v1.0.x'
git push origin release/v1.0.x
- Create a PR from the release branch
- Once the PR is merged, publish a new release on GitHub
total_share_amount
: Total amount of LiNEAR that was minted (minus burned).total_staked_near_amount
: Total amount of NEAR that was staked by users to this contract.
This is effectively 1) amount of NEAR that was deposited to this contract but hasn't yet been staked on any validators + 2) amount of NEAR that has already been staked on validators.
Note that the amount of NEAR that is pending release or is already released by hasn't been withdrawn is not considered.stake_share_price
: how much NEAR does one stake share (LiNEAR) worth. equals to :total_near_amount
/total_share_amount
.