#anchor #solana #tulip-protocol

tulipv2-sdk-levfarm

v1 杠杆收益率农场指令

3 个版本

0.9.22 2022 年 10 月 13 日
0.9.21 2022 年 7 月 31 日
0.9.17 2022 年 7 月 4 日

#5 in #tulip-protocol

MIT/Apache

165KB
3K SLoC

tulipv2-sdk

警告

未经审计、可能未经测试的 sdk Tulip 协议不对使用此 sdk 造成的任何(财务、物理、情感等)损害承担责任,也不对 sdk 的正确性做出任何保证。使用这些 crates 的用户完全负责使用此 sdk 造成的任何意外。

所有版本 0.9.17 之前的 crate 都已损坏且无法工作

概述

tulipv2-sdk 是一套用于通过 CPI 与 Tulip V2 金库和 V1 借款程序交互的 crate,但它也可以与链下 Rust 客户端一起使用。该 crate 的目标是提供一个易于使用的 sdk,用于与 Tulip 协议一起工作,同时充当某种“配置文件”。

以下详细说明了 4 个主要 crate

crate

common

common 文件夹包含一个 crate tulipv2-sdk-common,它将所有其他 crate 中使用的公共功能捆绑在一起,同时包含一个名为 config 的模块,该模块提供用于简化配置管理的配置变量。可以通过功能标志启用/禁用配置子模块,使您只需导入所需的依赖项。

common/config/deposit_tracking

提供配置变量、特性和指令,用于存款跟踪账户管理

common/config/levfarm

此模块包含以 ray_X.rs 形式的文件,用于 Raydium 杠杆收益率农场,以及以 orca_X.rs 形式的文件,用于 Orca 杠杆收益率农场。此外,子模块 common/config/levfarm/reserves 为所有借款储备提供配置变量。

common/config/strategy

此模块包含 V2 策略金库的配置信息

farms

farms 文件夹包含一个 crate tulipv2-sdk-farms,它提供了一个名为 Farm 的枚举,用于描述不同的平台(例如 Raydium)以及这些平台中的农场(例如 RAY-USDC)。此外,农场密钥本身用于启用自描述式金库地址的确定性推导。

农场类型/农场密钥的序列化表示是一个包含两个 u64 的切片,其中第一个元素(农场标识符)是协议,第二个元素是该协议的特定金库。

lending

lending》文件夹包含一个名为tulipv2-sdk-lending的crate,它提供了创建指令和对Tulip V1借贷程序发起CPI调用非常基本的支持。它允许通过Obligation账户进行资产借贷,同时允许调用者刷新义务和刷新储备。

杠杆

leveraged》文件夹包含一个名为tulipv2-sdk-leveraged的crate,它提供与Tulip杠杆收益农场交互的账户、指令和各种辅助函数。

保险库

vaults》文件夹包含一个名为tulipv2-sdk-vaults的crate,它提供了所有v2保险库账户类型以及相关的辅助函数等。

示例

examples》文件夹包含一个anchor程序,提供了所有crate的使用示例,包括借贷、杠杆农场、v1/v2保险库等。除此之外,还提供了anchor单元测试,展示了如何调用示例程序指令。

示例程序使用主网账户克隆来模拟真实世界的使用,但是由于主网克隆账户和本地网的某些特殊性,某些测试将失败,特别是

  • raydium保险库存款/取款
  • v2策略保险库取款

因此,anchor单元测试将捕获这些错误,将其隐藏以避免混淆。所有此类实例都在anchor单元测试注释中进行了文档记录

依赖项

约26-39MB
约643K SLoC