混合sdk -js (英语)
用于Javascript协助与"Blend协议"互动的混合协议SDK.
开始
- 使用 npm 安装 :
npm install @blend-capital/blend-sdk
使用量
每个混合议定书合同都输出一个合同类别,用于与合同互动。 一些合同,如"宝库",包括了额外的课程来帮助读取分类账状态.
注:在包件之间有一个通过XDR对象的未决问题。 详细情况见下期: https://github.com/stellar/js-stellar-base/issues/617 (中文(简体) )
两者 混合图案 财务报告和审定财务报表 搅拌 数据库广泛使用此SDK作为参考.
向现金池提供资产
合同类创建一个操作作为基数64 XDR 字符串,可以和 @stellar/stellar-sdk 交易 构建器类在与索洛班合同互动时,援引者必须拥有 SorobanData 交易的一部分。 这个 @stellar/stellar-sdk 通过模拟针对RPC的交易,为做到这一点提供了一种简单的方式。 关于如何向Sterrar网络提交索罗班行动,请参见: https://developers.stellar.org/docs/building/guides/transactions/invoke-contract-tx-sdk 互联网档案馆的存檔,存档日期2014-12-21
import { PoolContract, RequestType } from '@blend-capital/blend-sdk';
import { xdr } from '@stellar/stellar-sdk';
const asset: Address = // C... the Address of the asset to lend
const user: Address = // G... some Address
const to_lend: bigint = // ... the amount to lend as a bigint fixed point number with the tokens decimals
const pool_contract = new PoolContract(poolId);
const supply_op = xdr.Operation.fromXdr(
pool_contract.submit({
from: user,
spender: user,
to: user,
requests: [
{
amount: to_lend,
request_type: RequestType.SupplyCollateral,
address: asset,
},
],
}),
'base64'
);
// build a transaction with the operation and submit it to the network
要提交针对池的其他动作, 您可以修改 Requests 阵列,以控制要对集合采取的行动 from, (中文(简体) ), spender,以及 to。 。 。 .
为 Pool 和一个用户读取分类账数据
包括了帮助类,以帮助从RPC中高效读取一个集合的分类账数据. 以下代码读取了池子的分类账数据,它是储备的,它的状态是备份.
import {
Backstop,
BackstopPool,
BackstopPoolEst,
BackstopPoolUser,
BackstopPoolUserEst,
Network,
Pool,
PoolEstimate,
PoolOracle,
PositionsEstimate,
} from '@blend-capital/blend-sdk';
const network: Network = {
rpc: // rpc URL,
passphrase: // Stellar network passphrase,
// optional, allows you to connect to a local RPC instance
opts: { allowHttp: true },
};
const backstop_id = // C... the address of the backstop contract
const pool_id = // C... the address of the pool contract
const user_id = // G... the address of a user that has taken a position in the pool
// Load the pool data from the ledger to check things like supported reserves, current interest rates
// and other pool specific information like emissions.
const pool = await Pool.load(network, pool_id);
// If price is needed, load the pool's oracle.
const pool_oracle = await pool.loadOracle();
// Additional estimates aggregate information using oracle prices. For example,
// the PoolEstimate class calculates things like total value supplied and borrowed.
const pool_est = PoolEstimate.build(pool.reserves, pool_oracle);
// The pool also allows you to directly load a user's position and emissions information.
const pool_user = await pool.loadUser(user_id);
// Additional estimates for their positions calculate things like borrow limit, net apr, ect.
const user_est = PositionsEstimate.build(pool, pool_oracle, pool_user.positions);
// Load the backstop data from the ledger to check things like the status of the backstop token and the
// configuration of the backstop
const backstop = await Backstop.load(network, backstop_id);
// Load a pool's backstop data to get information like backstop size, Q4W percentage, and more.
const backstop_pool = await BackstopPool.load(network, backstop_id, pool_id);
// Additional estimates calculate the total number of BLND/USDC tokens the backstop holds.
const backstop_pool_est = BackstopPoolEst.build(backstop.backstopToken, backstop_pool.poolBalance);
// Load a user's position in a pool's backstop
const backstop_pool_user = await BackstopPoolUser.load(network, backstop_id, pool_id, user_id);
// Additional estimates calcualte total number of BLND/USDC tokens the user holds the status
// of any queued withdrawals, and the unclaimed emissions.
const backstop_pool_user_est = BackstopPoolUserEst.build(backstop, backstop_pool, backstop_pool_user);