#vesting #initialization #compute #tokens #solana #amount #tiny

vestinglib

一个用于计算 Solana 程序所需股权激励数学的库

5 个版本

0.1.4 2022 年 11 月 6 日
0.1.3 2022 年 10 月 26 日
0.1.2 2022 年 10 月 26 日
0.1.1 2022 年 10 月 26 日
0.1.0 2022 年 10 月 25 日

#6#vesting

MIT 许可证

17KB
375

VestingLib

这个库是什么?

VestingLib 是一个用于计算受益人股权激励计划的微小库。开发者可以通过传入配置参数来初始化一个 Vesting 对象,并计算可以释放给受益人的总代币数量。

你为什么创建这个库?

我在 Solana Breakpoint 2022 的 Anchor 程序入门工作坊上。我会通过一个实际案例来介绍 Solana 的基本概念:创建一个代币激励合同。我希望课程能够专注于 Solana 概念,而不是数学/业务逻辑——因此我创建了此库来从学生那里抽象核心的激励计算。

学生可以导入这个库,更多地专注于 Solana 程序的开发。

示例

以下是该库使用的一些示例代码

use std::time::{SystemTime, UNIX_EPOCH};
use vestinglib::{Vesting, CanInitialize, VestingInitParams, GetReleasableAmountParams };

// Initialize a vesting instance based on the vesting parameters
let vesting_schedule = Vesting::from_init_params(&VestingInitParams {
    cliff_seconds: 31560000,         // One year in seconds
    duration_seconds: 126240000,     // Four years in seconds
    seconds_per_slice: 2592000,      // One month in seconds,
    start_unix: 1585181904,          // Grant start time
    already_issued_token_amount: 0,  // No tokens were already issued
    grant_token_amount: 100,         // Grant is 100 tokens
    revoked: false,                  // If true, marks grant as revoked
})?;

// Get the current time
let current_time_unix = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs();

// Returns the amount releasable by the owner of the grant.
let releasable_amount = vesting_schedule.get_releasable_amount(&GetReleasableAmountParams{
    current_time_unix, 
})?;

无运行时依赖