#保险库 #cosmwasm #cosmos #标准 #代币 #辅助工具 #cw-vault-standard

cw-vault-standard-test-helpers

遵循 cw-vault-standard 标准的合约测试辅助工具

8 个版本

0.5.0-rc.12024 年 8 月 20 日
0.4.1 2024 年 3 月 7 日
0.4.0 2024 年 2 月 13 日
0.4.0-rc.2 2023 年 8 月 12 日
0.3.3-rc.32023 年 8 月 28 日

#71#保险库

Download history 94/week @ 2024-04-28 22/week @ 2024-05-05 24/week @ 2024-06-02 13/week @ 2024-06-09 7/week @ 2024-06-16 59/week @ 2024-07-28 23/week @ 2024-08-04 71/week @ 2024-08-11

153 每月下载量
用于 2 crates

Apache-2.0

71KB
956

CosmWasm Vault Standard

这是一个用于用 CosmWasm 编写的代币化保险库的标准接口。该仓库包含一组 ExecuteMsgQueryMsg 变体,这些变体应由遵守此标准的保险库合约实现。

保险库标准基础

关于保险库标准,有一些需要注意的事情

  • 每个保险库有一个特定的代币,用于存款、提款和会计。这个代币被称为 base token
  • 每个保险库有一个 vault token,代表用户在保险库中的份额。用户收到的保险库代币数量应根据其存入的基代币数量来确定。

如何创建遵循此标准的保险库合约

要创建一个遵循此标准的保险库合约,您只需导入 VaultStandardExecuteMsgVaultStandardQueryMsg 枚举,并在合约的入口点中使用它们。

VaultStandardExecuteMsgVaultStandardQueryMsg 枚举定义了一组变体,这些变体应该足以覆盖大多数保险库合约用例,并且所有遵循此标准的保险库都必须实现所有提供的默认变体。但是,如果您的用例需要额外的变体,请参阅如何使用扩展的部分。

ExecuteMsg 变体的描述和规范

请参阅API文档以获取每个变体的完整描述。

如何使用扩展

如果标准集的ExecuteMsgQueryMsg变体不足以满足您的使用场景,您可以通过定义扩展来包含额外的变体。执行此操作的首选方法是创建一个新的枚举,该枚举扩展了导出的VaultStandardExecuteMsgVaultStandardQueryMsg枚举。例如

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变体中来扩展标准VaultStandardExecuteMsgVaultStandardQueryMsg枚举。相反,它将更多的变体添加到顶层,即CW20标准中的变体。这受到了以太坊上的ERC-4626标准的启发,并允许保险库通过实现CW20标准,而不是使用Cosmos原生代币作为保险库代币,使保险库合约成为其自己的保险库代币。如果您正在编写一个在尚无TokenFactory模块可用的链上的保险库,并且因此无法发行Cosmos原生代币作为保险库代币,则此功能非常有用。

测试助手

此存储库还包含一些测试助手,位于packages/test-helpers目录中。这些助手可用于测试遵循标准的保险库合约。

兼容性

cw-vault-standardcw-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