8 个版本
新 0.5.0-rc.1 | 2024 年 8 月 20 日 |
---|---|
0.4.1 | 2024 年 3 月 7 日 |
0.4.0 |
|
0.4.0-rc.2 |
|
0.3.3-rc.3 | 2023 年 8 月 28 日 |
#71 在 #保险库
153 每月下载量
用于 2 crates
71KB
956 行
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
变体提取其基础代币。
强制解锁
强制解锁扩展可用于创建也实现锁定扩展的保险库,但某些白名单地址被允许调用扩展ExecuteMsg
上的ForceUnlock
变体并立即解锁指定用户的保险库代币。如果保险库用于杠杆并且清算者需要能够清算保险库中锁定代币,则此功能非常有用。
守卫者
守卫者扩展可用于为白名单地址或任何人添加充当保险库“守卫者”的功能,并调用执行保持保险库运行所需工作的函数。
Cw4626
Cw4626扩展是此存储库中提供的唯一扩展,它不通过将变体放在VaultExtension
变体中来扩展标准VaultStandardExecuteMsg
和VaultStandardQueryMsg
枚举。相反,它将更多的变体添加到顶层,即CW20标准中的变体。这受到了以太坊上的ERC-4626标准的启发,并允许保险库通过实现CW20标准,而不是使用Cosmos原生代币作为保险库代币,使保险库合约成为其自己的保险库代币。如果您正在编写一个在尚无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 | v0.3.3-v0.4.0 |
依赖
~32–46MB
~742K SLoC