8 个版本
0.4.1-rc.1 | 2024 年 6 月 13 日 |
---|---|
0.4.0 |
|
0.4.0-rc.3 | 2023 年 8 月 15 日 |
0.3.3 | 2023 年 9 月 27 日 |
0.2.0 | 2023 年 2 月 9 日 |
#496 in 魔法豆
674 每月下载量
用于 5 crates
54KB
564 行
CosmWasm Vault Standard
CosmWasm 编写的代币化保险库的标准接口。该存储库包含一组应该由遵循此标准的保险库合约实现的 ExecuteMsg
和 QueryMsg
变体。
保险库标准基础
关于保险库标准有一些事情需要了解
- 每个保险库都有一个特定的代币,用于存款、取款和会计。这个代币被称为
base token
。 - 每个保险库都有一个
vault token
,代表用户在保险库中的份额。用户收到的保险库代币数量应根据他们存入的基本代币数量来确定。
如何创建符合此标准的保险库合约
要创建一个符合标准的保险库合约,您只需导入 VaultStandardExecuteMsg
和 VaultStandardQueryMsg
枚举,并在合约的入口点中使用它们即可。
VaultStandardExecuteMsg
和 VaultStandardQueryMsg
枚举定义了一组变体,足以覆盖大多数保险库合约用例,所有符合标准的保险库都必须实现提供默认的所有变体。但是,如果您的用例需要额外的变体,请参阅有关 如何使用扩展 的部分。
ExecuteMsg 变体的描述和规范
请参阅 API 文档 了解每个变体的完整描述。
如何使用扩展
如果标准集的ExecuteMsg
和QueryMsg
变体不足以满足您的用例,您可以通过定义一个扩展来包含额外的变体。执行此操作的推荐方法是通过创建一个新的枚举,它扩展了导出的VaultStandardExecuteMsg
和VaultStandardQueryMsg
枚举。例如:
pub enum MyExtensionExecuteMsg {
MyVariant1 { ... },
MyVariant2 { ... },
}
然后,这个枚举可以包含在一个包含您的保险库使用所有扩展的枚举中,然后作为泛型参数T
传递给VaultStandardExecuteMsg<T>
。例如:
pub enum ExtensionExecuteMsg {
MyExtension(MyExtensionExecuteMsg),
Lockup(LockupExecuteMsg),
}
pub type ExecuteMsg = VaultStandardExecuteMsg<ExtensionExecuteMsg>;
现在,您可以在合同入口点中使用ExecuteMsg
枚举,而不是默认的VaultStandardExecuteMsg
枚举。
包含的扩展
以下扩展包含在此存储库中:
这些扩展中的每一个都可以通过 cargo 功能在此存储库中使用。要使用它们,您可以像这样带有功能标志导入 crate:
cw-vault-standard = { version = "0.2.0", features = ["lockup", "force_unlock"] }
以下是对每个扩展的简要描述。
锁定
锁定扩展可用于创建不能立即赎回的保险库令牌的保险库。而不是通常调用VaultStandardExecuteMsg::Redeem
变体,用户必须在锁定扩展的ExecuteMsg
上调用Unlock
变体,并等待指定的时间段,然后才能通过WithdrawUnlocked
变体提取其基本令牌。
强制解锁
强制解锁扩展可用于创建同时实现Lockup
扩展的保险库,但允许一些白名单地址在扩展ExecuteMsg
上调用ForceUnlock
变体并立即解锁指定用户的保险库令牌。这对于保险库与杠杆一起使用,并且清算人需要能够清算保险库中锁定令牌的情况非常有用。
保管人
保管人扩展可用于为白名单地址或任何人添加作为保险库“保管人”的功能,并调用执行保持保险库运行所需的作业的函数。
Cw4626
Cw4626扩展是此存储库中提供的唯一扩展,它不通过将变体放在VaultExtension
变体中扩展标准VaultStandardExecuteMsg
和VaultStandardQueryMsg
枚举,而是在顶级添加更多变体,即来自CW20标准的变体。这受到以太坊上的ERC-4626标准的启发,允许保险库在除了使用Cosmos本地令牌作为保险库令牌之外,还可以通过实现CW20标准来使保险库合约成为其自己的保险库令牌。如果您正在编写一个尚未提供TokenFactory模块的链上的保险库,并且因此无法发行Cosmos本地令牌作为保险库令牌,这将非常有用。
测试助手
此存储库还包含在packages/test-helpers
目录中的某些测试助手。这些助手可用于测试遵循标准的保险库合约。
兼容性
cw-vault-standard
和cw-vault-standard-test-helpers
包有不同的版本。以下表格显示了两个包之间的兼容性:
cw-vault-standard | test-helpers |
---|---|
v0.3.3 | v0.3.3 |
v0.4.0 | 版本 0.3.3-0.4.0 |
依赖项
约 3.5-5.5MB
约 116K SLoC