金融
这个 crate 包含了金融系统的基础组件。
归属
IVesting
use openzeppelin_finance::vesting::interface::IVesting;
实现归属功能的合约的通用接口。
函数
vested_amount(token: ContractAddress, timestamp: u64) → u256
external
返回在给定 timestamp
时指定的 token
的总归属金额。
release(token: ContractAddress) → u256
external
释放给定 token
的已经归属的金额,并返回该金额。
可能会发出一个 AmountReleased 事件。
VestingComponent
use openzeppelin_finance::vesting::VestingComponent;
实现 IVesting
接口的归属组件。
归属计划 Trait 的实现
可嵌入的实现
内部实现
calculate_vested_amount(self: @ContractState, token: ContractAddress, total_allocation: u256, timestamp: u64, start: u64, duration: u64, cliff: u64) → u256
internal
基于核心归属参数计算并返回给定 timestamp
的归属数量。
vested_amount(self: @ContractState, token: ContractAddress, timestamp: u64) → u256
external
返回在给定 timestamp
时指定的 token
的总归属金额。
release(ref self: ContractState, token: ContractAddress) → u256
external
释放给定 token
的已经归属的金额,并返回该金额。
如果可释放金额为零,则此函数不会发出事件或尝试转移 token。 |
Requirements:
-
对
token
的transfer
调用必须返回true
,表明转移成功。
可能会发出一个 AmountReleased 事件。
initializer(ref self: ContractState, start: u64, duration: u64, cliff_duration: u64)
internal
通过设置归属的 start
、duration
和 cliff_duration
来初始化组件。为了防止重新初始化,这应该只在合约的构造函数中使用。
Requirements:
-
cliff_duration
必须小于或等于duration
。
resolve_vested_amount(self: @ContractState, token: ContractAddress, timestamp: u64) → u256
internal
返回使用 VestingSchedule 特性实现计算的归属金额。
预设
VestingWallet
use openzeppelin::presets::VestingWallet;
一个利用 VestingComponent 和 OwnableComponent 的不可升级合约。
该合约被有意设计为不可升级,以确保归属发起人和归属受益人都不能在未经另一方同意的情况下修改归属计划。 |
0x010a786d4e5f74d68e0a500aeadbf7a81486f069c06afa242a050a1a09ac42f0
嵌入式实现
VestingComponent
OwnableComponent