Skip to content

rohitdevsol/anchor-staking

Repository files navigation

Anchor Staking

SOL staking program with points-based rewards.

How it Works

  • Stake SOL → Earn 1 point per token per day
  • Unstake SOL → Withdraw staked amount
  • Claim → Withdraw rewards (vault - staked)

Accounts

Account PDA Seed Purpose
Config stake + owner Stores staked amount, points, timestamps
Vault vault + owner Holds staked SOL + rewards

Instructions

Initialize

Creates Config and Vault PDAs for the user.

await program.methods.initialize().accounts({
  owner: user.publicKey,
}).pubkeys({
  config: findConfigAddress(user.publicKey),
  vault: findVaultAddress(user.publicKey),
}).rpc();

Stake

Transfer SOL to vault, update staked amount.

await program.methods.stake(new BN(amount)).accounts({
  owner: user.publicKey,
  config: findConfigAddress(user.publicKey),
  vault: findVaultAddress(user.publicKey),
}).rpc();

Unstake

Withdraw staked SOL, reset points on withdrawn amount.

await program.methods.unstake(new BN(amount)).accounts({
  owner: user.publicKey,
  config: findConfigAddress(user.publicKey),
  vault: findVaultAddress(user.publicKey),
}).rpc();

Claim

Transfer accumulated points as rewards.

await program.methods.claim().accounts({
  owner: user.publicKey,
  config: findConfigAddress(user.publicKey),
  vault: findVaultAddress(user.publicKey),
}).rpc();

Points Calculation

earned = staked_amount * (elapsed_seconds / 86400)

1 point per token per day.

Architecture

flowchart TD
    User[User] -->|initialize| Config[Config PDA]
    User -->|initialize| Vault[Vault PDA]
    
    User -->|stake| Vault
    Vault -->|stores| SOL
    
    User -->|claim| Rewards[Vault - Staked]
    Vault -->|transfers| Rewards
    
    subgraph "Points System"
        Config -->|reads| staked_amount
        Config -->|reads| last_updated_time
        Config -->|updates| total_points
    end
Loading

Program ID

3FfvX3mWgiWhAgcBwYPmWsZysiANEkdx3K4xxVeVskaB

About

Anchor Staking Program

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors