@anywalletkit/protocol-lending-kamino-solana (英语)
卡米诺 页:1 @anywalletkit/wallet-solana 账户,两个
LendingProtocols 在一个软件包中:
安装
npm install @anywalletkit/protocol-lending-kamino-solana @anywalletkit/core
# or: pnpm add @anywalletkit/protocol-lending-kamino-solana @anywalletkit/core · yarn add @anywalletkit/protocol-lending-kamino-solana @anywalletkit/core
时间: @anywalletkit/protocol-lending-kamino-solana (英语)发表于 发布工作流程 与出处.
KaminoVaultProtocolSolana- 一个Kamino Earn金库(kVault):supply将金库资产存入股票(放在钱包里,警卫在那里) 证明他们到了;skipFarm: false把他们关进金库 Kamino app确实如此——警卫将桩子钉入这个金库的农场和农场 钱包的农场状态,但不能计算股份,withdraw赎回股票 资产。 最简单的收入产品;borrow编号 :repay拒绝.KaminoMarketProtocolSolana- 一个Kamino Lend市场(主要市场) 默认 :supply编号 :withdraw贴出钱包的抵押品 义务,borrow编号 :repay将准备金的流动性与 这个 托肯斯由薄荷命名.
交易是如何信任的
卡米诺官方API建立每笔交易(POST /ktx/… 一样
卡米诺应用软件和SDK使用的构建者:农场,查询表,义务设置.
模块从不签到现在 钱包的序列化交易守卫
(单位:千美元)wallet-solana是因为 checkSerialized 编号 : sendSerialized)首先证明:
- 它所引用的每个程序都在卡米诺许可列表上——卡米诺·伦德,克沃特, 农场,地址查询表程序和符号 / system/ 计算 预算/备忘录方案,别无其他;
- 每个指令都是操作需要的
marketRules编号 :vaultRules)),其中决定价值的账户: 钱包、其香草义务、配置的市场或金库、 保留和薄荷调用名称, 钱包自己的代号账户, 这个 保险库的农场。 押金携带刷新、安装和押金;a 退款 退款 退款invest或拒绝收获奖励unexpected-instruction(三); - 已编译交易支票卡( 这个钱包是付费人, 不) 外国共同签字人,没有权力或授权变更);
- 对后状态账户的模拟 准确显示余额变化
所申报的模块:存入数额,最多为特别业务费租金
最多一次提款/至少借入资产
(单位:千美元)
slippageBps,默认为0.5%) ——借款最多为所问——否 我们其他的代名词被触动了.
唯四通后帐相签. 第一笔押金也付了
债务租金、用户元数据和每个用户查询表
(单位:千美元)firstDepositAllowanceLamports,默认为 0.045 SOL;后面只有
常规 rentAllowanceLamports (0.01 SOL) (英语). 这是不是第一次押金
从链中读取(香草债务账户是否存在).
界限来自链条,通过账户读取
(单位:千美元)getAccountInfos, (中文(简体) ), @anywalletkit/wallet-solana 0.4+: 保险库份额
其价格及其投资的储备,钱包的股份
从它的股份账户和农场股份, 借出"最大"债务
(债务与准备金的应计利息)和准备金
一定是这个市场 借出那个纪念物 API数字不同意——
(单位:千美元) tokensPerShare 未申报的存款或债务超过1%
债务是(API的每根腿,或cTokens和缩放的债务)
其原始义务 state(按准备金链上费率计值)
负数字——被拒绝,从未使用。 一个贷款市场 getPosition 读取
钱包中来自链条的义务: API 只命名它们( 每个)
一定是这个市场上的钱包; 香草是读的,即使当
而每一条腿都是它用来赎回或欠下的
预备队的连锁率。 其他读作:getVault一个金库的 getPosition, (中文(简体) ),
APY, TVL, LTVs, USD 值) 保持API; 薄荷小数在
账户有一个RPC, 其它的取自卡米诺列表薄荷的表格.
使用量
import WalletManagerSolana from '@anywalletkit/wallet-solana'
import { KaminoApi, KaminoVaultProtocolSolana, KaminoMarketProtocolSolana } from '@anywalletkit/protocol-lending-kamino-solana'
const account = await new WalletManagerSolana(seed, { provider: 'https://…' }).getAccount(0)
const USDC = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
// Discovery: the USDC Earn vaults, biggest first
const api = new KaminoApi()
const vaults = (await api.listVaults()).filter((v) => v.tokenMint === USDC).sort((a, b) => Number(b.sharesIssued - a.sharesIssued))
// Earn vault
// `asset`: the API's answer must name it, and deposits need it (or a `token` per call). The vault's
// address, program and shares mint (the PDA ["shares", vault]) are checked too, before anything is built.
const vault = new KaminoVaultProtocolSolana(account, { vault: vaults[0].address, asset: USDC })
await vault.getVault() // asset, shares, APY (net, %), fees, TVL, minimums, allocations
await vault.quoteSupply({ amount: 5_000_000n }) // { fee, expectedShares } — built, proven, not signed
await vault.supply({ amount: 5_000_000n }) // { hash, fee }
await vault.getPosition() // { shares, stakedShares, unstakedShares, assets }
await vault.withdraw({ amount: 'max' }) // every share → asset, min = assets × (1 − slippage)
// Lend market
const market = new KaminoMarketProtocolSolana(account) // Main Market
await market.getReserves() // symbol, mint, supply / borrow APY (%), max LTV, TVL, utilization
await market.supply({ token: USDC, amount: 5_000_000n }) // collateral on the wallet's obligation
await market.borrow({ token: USDC, amount: 1_000_000n })
await market.getPosition() // { obligations, supplied: {mint: units}, borrowed } — from the chain
await market.repay({ token: USDC, amount: 'max' })
await market.withdraw({ token: USDC, amount: 'max' })
薄荷在一个市场上有几种储备(主要市场有4个USDC)
(a) 根据供应的价值确定最深的储备
reserves: { [mint]: reserveAddress }。 。 。 .
配置
| 选项 | 默认 | |
|---|---|---|
api | https://api.kamino.finance | 终点或一个 KaminoApi |
slippageBps | 第50条 | 钱包必须接收的下层(提取、借出);偿还的上限 |
rentAllowanceLamports | 0.01 特别标准 | 一笔交易的SOL支出可能超过金额 |
memo | —— 说 | API 添加的 SPL 备忘录 |
保险库 : vault, (中文(简体) ), asset, (中文(简体) ), skipFarm | —— /- / 真实 | kvault; 其必须使用的资产; 将股份保留在钱包中(false:在金库的农场里安插他们;然后由警卫证明开支,并将桩子钉入钱包的农场状态) |
市场 : market, (中文(简体) ), reserves, (中文(简体) ), firstDepositAllowanceLamports | 主市场 /-/ 0.045 SOL |
校验
pnpm test (从实时API回复中复制的固定内容). pnpm verify:live [address] [rpcUrl] [lendAddress] 阅读市场、储备和金库
API,然后为地址建立保险库存款和贷款存款,以及贷款
退出主市场提供USDC的钱包,然后运行
通过守护器作为只读账户(没有密钥,没有写出);钱包的
getPosition 必须与其连锁义务相匹配。 拥有USDC账户的持有人
被冻结的,在建出任何设备前命名并拒绝; 一个没有USDC的
跳过存款 仍然运行退出.
方案编号:卡米诺·伦德 KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD移动
KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd农场
FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr。 。 。 . instructionName() 名称
Anchor 指示 API 的交易,用于审查屏幕;
decodeVault 编号 : decodeReserve 编号 : decodeObligation 编号 : decodeFarmUser 读取
边界的账户,和 vaultTokensPerShareWad 编号 : debtNow
从他们那里计算模块的工作.