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 中
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,
})?;