Skip to content

Ha4a4ck/LiNEAR

 
 

Repository files navigation

LiNEAR - Liquid Staking on NEAR Protocol

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.

Contracts

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.

Deployment

Mainnet

Testnet

Development

Build

  • Build all artifacts: make
  • Build linear only: make linear

Test

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

Deploy

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

Release

  • 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

Design

Terminologies

  • 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.

About

Liquid Staking on NEAR Protocol

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Rust 69.1%
  • TypeScript 24.5%
  • JavaScript 5.4%
  • Other 1.0%