Nosana Staking

About 7 min

Nosana Staking

The staking program allows users to stake NOS tokens for a variable amount of time. There are 2 values associated with a users stake:

  • Staked NOS
  • xNOS (Staked NOS x duration)

The staked NOS is the amount of tokens that the vault actually holds for the user that can be slashed or unstaked, while xNOS is a value indicating a users rank for purposes like giveaways and voting.

Program Information

InfoDescription
TypeSolana Programopen in new window
Source CodeGitHubopen in new window
Build StatusAnchor Verifiedopen in new window
Accounts3
Instructions9
Types0
Domainnosana-staking.sol
AddressnosScmHY2uR24Zh751PmGj9ww9QRNHewh9H59AfrTJEopen in new window

Instructions

A number of 9 instruction are defined in the Nosana Staking program.

Example

To load the program with Anchoropen in new window.

const programId = new PublicKey('nosScmHY2uR24Zh751PmGj9ww9QRNHewh9H59AfrTJE');
const idl = await Program.fetchIdl(programId.toString());
const program = new Program(idl, programId);

Accounts

A number of 3 accounts make up for the Nosana Staking Program's state.

xNOS calculation

For people that like to know exactly how Nosana calculate a stakers's xNOSxNOS score, we've written it down as a function f(NOS)=xNOSf(NOS) = xNOS. Where NOSNOS denotes the number of Nosana Tokens a staker has staked in the Nosana Staking Program.

f(NOS)=xNOS=1s10512000×NOSs.t.={sZ1209600s31536000} \begin{aligned} f(NOS) &= xNOS \\ &= 1 \frac{ s }{ 10512000 } \times NOS \\ \\ s.t. &\phantom{=} \set{ s \in \mathbb{Z} \mid 1209600 \leq s \leq 31536000 } \end{aligned}

The ss parameter denotes time in seconds, which represents the duration a staker has staked his or her tokens. The parameter ss is subject to a setopen in new window. The stake duration ss belongs to the set of integers Z\mathbb{Z}, such that ss is greater than or equal to 12096001209600 seconds and less than or equal to 3153600031536000 seconds.

Because it's somewhat difficult to intuitively understand numbers of this magnitude, we can simplify above function to use days rather seconds, which are denoted dd.

xNOS=1d12123×NOSs.t.={dN14s365} \begin{aligned} xNOS &= 1 \frac{ d }{ 121 \frac{ 2 }{ 3 } } \times NOS \\ \\ s.t. &\phantom{=} \set{ d \in \mathbb{N} \mid 14 \leq s \leq 365 } \end{aligned}

The stake duration dd belongs to the set of natural numbers N\mathbb{N}, such that dd is greater than or equal to 1414 days and less than or equal to 365365 days.

In more simple phrasing. A staker can stake Nosana Tokens for a minimum of two weeks and a maximum of one year. The longer the duration of a stake, the higher the multiplier against the number of tokens in stake. The maximum multiplier is this system is 44, because 136512123=41 \frac{ 365 }{ 121 \frac{ 2 }{ 3 } } = 4.

Diagram