#保险库 #标准 #扩展 #变体 #代币 #cosmwasm #保险库

cw-vault-standard

CosmWasm 编写的代币化保险库的标准接口

8 个版本

0.4.1-rc.12024 年 6 月 13 日
0.4.0 2023 年 9 月 27 日
0.4.0-rc.32023 年 8 月 15 日
0.3.3 2023 年 9 月 27 日
0.2.0 2023 年 2 月 9 日

#496 in 魔法豆

Download history 210/week @ 2024-04-15 340/week @ 2024-04-22 428/week @ 2024-04-29 423/week @ 2024-05-06 403/week @ 2024-05-13 133/week @ 2024-05-20 147/week @ 2024-05-27 474/week @ 2024-06-03 181/week @ 2024-06-10 178/week @ 2024-06-17 343/week @ 2024-06-24 141/week @ 2024-07-01 207/week @ 2024-07-08 102/week @ 2024-07-15 130/week @ 2024-07-22 235/week @ 2024-07-29

674 每月下载量
用于 5 crates

Apache-2.0

54KB
564

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变体提取其基本令牌。

强制解锁

强制解锁扩展可用于创建同时实现Lockup扩展的保险库,但允许一些白名单地址在扩展ExecuteMsg上调用ForceUnlock变体并立即解锁指定用户的保险库令牌。这对于保险库与杠杆一起使用,并且清算人需要能够清算保险库中锁定令牌的情况非常有用。

保管人

保管人扩展可用于为白名单地址或任何人添加作为保险库“保管人”的功能,并调用执行保持保险库运行所需的作业的函数。

Cw4626

Cw4626扩展是此存储库中提供的唯一扩展,它不通过将变体放在VaultExtension变体中扩展标准VaultStandardExecuteMsgVaultStandardQueryMsg枚举,而是在顶级添加更多变体,即来自CW20标准的变体。这受到以太坊上的ERC-4626标准的启发,允许保险库在除了使用Cosmos本地令牌作为保险库令牌之外,还可以通过实现CW20标准来使保险库合约成为其自己的保险库令牌。如果您正在编写一个尚未提供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 版本 0.3.3-0.4.0

依赖项

约 3.5-5.5MB
约 116K SLoC