18 个版本
0.9.21 | 2022 年 7 月 31 日 |
---|---|
0.9.19 | 2022 年 7 月 20 日 |
0.9.17 | 2022 年 6 月 11 日 |
0.9.7 | 2022 年 5 月 4 日 |
0.9.5 | 2022 年 3 月 12 日 |
#4 in #tulip-protocol
61KB
1.5K SLoC
tulipv2-sdk
警告
未经审计、可能未经测试的 SDK Tulip 协议不对使用此 SDK 造成的任何(财务、物理、情感等)损害承担责任,也不对 SDK 的正确性做出任何保证。使用这些 crate 的用户对使用此 SDK 造成的任何意外承担全部责任。
所有版本低于 0.9.17 的 crate 都已损坏且无法使用
概述
tulipv2-sdk
是一组用于通过 CPI 与 Tulip V2 保险库和 V1 借款程序交互的 crate,但它也可以与链下 Rust 客户端一起使用。此 crate 的目标是提供一个易于使用的 SDK 以与 Tulip 协议交互,同时充当一种“配置文件”。
以下详细介绍了 4 个主要 crate
Crates
common
“common” 文件夹包含一个 crate tulipv2-sdk-common
,它将所有其他 crate 使用的常用功能捆绑在一起,同时包含一个名为 config
的模块,该模块包含许多子模块,每个子模块都包含与特定保险库交互所需的所有配置信息。例如,common/config/lending/usdc.rs
包含用于与 Tulip V2 USDC 借款优化器保险库工作的所有所需账户。
deposit_tracking
模块
“存款跟踪”账户是一个用户拥有的账户,它有两个主要用途。首先,当用户存入资产时,它充当一个“锁定”账户,锁定提款 10 分钟,允许在用户提款之前进行一个或多个复利周期,以确保复利奖励不会通过快速存入和退出保险库来作弊。第二个用途是使用户能够跟踪其奖励随时间的变化。
farms
“farms” 文件夹包含一个 crate tulipv2-sdk-farms
,它提供了一个名为 Farm
的枚举,用于描述不同的平台(例如 Raydium)以及这些平台内的农场(例如 RAY-USDC)。除了这些之外,农场密钥本身用于启用自描述式保险库地址的确定性推导。
农场类型/农场密钥的线表示是一个 u64 的 2 元素切片,其中第一个元素(农场标识符)是协议,第二个元素是该协议的特定保险库。
lending
/ v1 支持
《lending》文件夹包含一个名为《tulipv2-sdk-lending》的crate,它提供了创建指令和对Tulip V1借贷程序进行CPI调用的基本支持。它允许通过《Obligation》账户进行资产借贷,同时允许调用者刷新义务和刷新储备。
保险库
《vaults》文件夹包含一个名为《tulipv2-sdk-vaults》的crate,它提供了所有v2保险库账户类型以及相关的辅助函数等。
示例
目前唯一的用法示例位于《examples》文件夹中,该文件夹包含一个基本程序,用于为USDC借贷优化器注册存款跟踪账户,并将存款存入USDC借贷优化器,以及从借贷优化器中提款。
由于Tulip V2保险库程序的结构,存款指令在localnet上会失败,因为在单个优化器保险库支持的各个协议之间有一些用于内部资金转移的清点机制。
此外,localnet设置克隆了mainnet状态,以提供用于测试的稳定账户集等。例如,在快照拍摄时,USDC借贷优化器只存入了Solend。因此,tulip/mango存款指令无法正确执行。
这些错误已被捕获,以确保在运行《anchor test》时所有测试都通过。
依赖关系
约11-23MB
约318K SLoC