DeFindex SDK 数据存储器
正式类型SDK 数据索引 - 利用索罗班智能合同在斯特拉尔上建立的分散式金库管理系统.
* 特性
- API 密钥认证: 安全 API 有 Bearer 令牌的密钥认证( 建议)
- * : 创建、保存、提取和管理分散式金库
- 工厂业务: 使用自定义配置的新金库
- 管理操作:紧急救援,金库操作员战略管理
- 实时数据:缺损余额、APY跟踪和综合金库信息
- QQ 服务器焦点:安全处理全权证书和敏感业务
- QQ 类型脚本支持: 具有全面接口的完整类型安全
- 轻型: 简单认证和全面处理错误
- QQ 测试良好: 综合单位和综合测试覆盖率
- 完整实例: 功能类型脚本示例和综合文档
* 安装
pnpm install @defindex/sdk
QQ 快速启动
import { DefindexSDK, SupportedNetworks } from '@defindex/sdk';
// Initialize with API key
const sdk = new DefindexSDK({
apiKey: 'sk_your_api_key_here',
baseUrl: 'https://api.defindex.io'
});
// Check API health
const health = await sdk.healthCheck();
console.log('API Status:', health.status.reachable);
// Get factory address
const factory = await sdk.getFactoryAddress(SupportedNetworks.TESTNET);
console.log('Factory Address:', factory.address);
// Get vault information
const vaultAddress = 'CVAULT_CONTRACT_ADDRESS...';
const vaultInfo = await sdk.getVaultInfo(vaultAddress, SupportedNetworks.TESTNET);
console.log(`Vault: ${vaultInfo.name} (${vaultInfo.symbol})`);
// Deposit to vault
const depositResponse = await sdk.depositToVault(vaultAddress, {
amounts: [1000000], // Amount for each asset (considering decimals)
caller: 'GUSER_ADDRESS...',
invest: true,
slippageBps: 100 // 1% slippage tolerance
}, SupportedNetworks.TESTNET);
// Sign the XDR with your wallet and submit
const signedXdr = await yourWallet.sign(depositResponse.xdr);
const result = await sdk.sendTransaction(signedXdr, SupportedNetworks.TESTNET);
QQ 运行示例
SDK包括一个全面的功能实例:
# Install dependencies
pnpm install
# Copy environment configuration
cp .env.example .env
# Edit .env with your credentials
# DEFINDEX_API_KEY=sk_your_api_key_here
# Run the example
pnpm run example
该实例表明:
- SDK 初始化和认证
- API 健康检查
- 工厂业务
- 地产、存款和提款
- 行政金库管理
- 处理错误和最佳做法
QQ 配置
SDK 配置选项
interface DefindexSDKConfig {
apiKey?: string; // API key for authentication (recommended)
baseUrl?: string; // Custom API base URL (defaults to 'https://api.defindex.io')
timeout?: number; // Request timeout in ms (defaults to 30000)
}
环境变量
为了更好的安全,使用环境变量:
// Using API key (recommended)
const sdk = new DefindexSDK({
apiKey: process.env.DEFINDEX_API_KEY,
baseUrl: process.env.DEFINDEX_API_URL || 'https://api.defindex.io'
});
现状
大新闻! DeFindex API现已在测试网全面运行:
- ✅ 健康检查: 工作正确
- ✅ SDK 认证: 已执行 API 密钥认证
- ✅ 工厂业务: 安装测试网的工厂
- ✅ 默认创建: 创建自定义配置的金库
- ✅ 默认操作:全额存款、提取和结余业务
- ✅ 断层管理行政业务(暂停/不暂停战略、紧急救援)
- ✅ 交易大楼: 所有操作返回签名的 XDR 钱包集成
- ⚠️ PY 计算: 正在工作, 但有些字段可能无法定义新金库
最近更新
- ✅ 已部署工厂: 工厂合同现已通过测试网提供
- ✅ 完整默认操作: 创建、管理和与金库互动
- ✅ 完整示例运行
pnpm run example查看所有功能 - ✅ 准备生产: 所有核心功能已开始运作
API 参考
系统操作
健康检查
const health = await sdk.healthCheck();
if (health.status.reachable) {
console.log('API is healthy');
}
工厂业务
获取工厂地址
const factory = await sdk.getFactoryAddress(SupportedNetworks.TESTNET);
console.log('Factory address:', factory.address);
创建默认
const vaultConfig: CreateVaultParams = {
roles: {
emergencyManager: "GEMERGENCY_MANAGER_ADDRESS...",
feeReceiver: "GFEE_RECEIVER_ADDRESS...",
manager: "GVAULT_MANAGER_ADDRESS...",
rebalanceManager: "GREBALANCE_MANAGER_ADDRESS..."
},
vaultFeeBps: 100, // 1% fee
assets: [{
address: "CXLM_CONTRACT_ADDRESS...",
strategies: [{
address: "GSTRATEGY_CONTRACT_ADDRESS...",
name: "XLM Strategy",
paused: false
}]
}],
name: "My DeFi Vault",
symbol: "MDV",
upgradable: true,
caller: "GCREATOR_ADDRESS..."
};
const response = await sdk.createVault(vaultConfig, SupportedNetworks.TESTNET);
console.log('Vault XDR:', response.xdr);
默认操作
获取默认信息
const vaultInfo = await sdk.getVaultInfo(vaultAddress, SupportedNetworks.TESTNET);
console.log(`Total Assets: ${vaultInfo.totalAssets}`);
console.log(`Vault Fee: ${vaultInfo.feesBps.vaultFee / 100}%`);
获取默认余额
const balance = await sdk.getVaultBalance(
vaultAddress,
userAddress,
SupportedNetworks.TESTNET
);
console.log(`Vault Shares: ${balance.dfTokens}`);
存到地窖
const depositResponse = await sdk.depositToVault(vaultAddress, {
amounts: [1000000, 2000000],
caller: 'GUSER_ADDRESS...',
invest: true,
slippageBps: 100
}, SupportedNetworks.TESTNET);
从地窖撤回
// Withdraw specific amounts
const withdrawResponse = await sdk.withdrawFromVault(vaultAddress, {
amounts: [500000, 1000000],
caller: 'GUSER_ADDRESS...',
slippageBps: 100
}, SupportedNetworks.TESTNET);
// Withdraw by shares
const shareResponse = await sdk.withdrawShares(vaultAddress, {
shares: 1000000,
caller: 'GUSER_ADDRESS...',
slippageBps: 100
}, SupportedNetworks.TESTNET);
获取 Vault APY
const apy = await sdk.getVaultAPY(vaultAddress, SupportedNetworks.TESTNET);
console.log(`Current APY: ${apy.apyPercent}%`);
地壳管理(阿明业务)
紧急救援
// Requires Emergency Manager role
const response = await sdk.emergencyRescue(vaultAddress, {
strategy_address: 'GSTRATEGY_TO_RESCUE...',
caller: 'GEMERGENCY_MANAGER_ADDRESS...'
}, SupportedNetworks.TESTNET);
暂停/不暂停战略
// Requires Strategy Manager role
await sdk.pauseStrategy(vaultAddress, {
strategy_address: 'GSTRATEGY_TO_PAUSE...',
caller: 'GSTRATEGY_MANAGER_ADDRESS...'
}, SupportedNetworks.TESTNET);
await sdk.unpauseStrategy(vaultAddress, {
strategy_address: 'GSTRATEGY_TO_UNPAUSE...',
caller: 'GSTRATEGY_MANAGER_ADDRESS...'
}, SupportedNetworks.TESTNET);
交易管理
发送交易
// Submit signed transaction to the Stellar network
const response = await sdk.sendTransaction(
signedXDR,
SupportedNetworks.TESTNET
);
系统操作
健康检查
const health = await sdk.healthCheck();
if (health.status.reachable) {
console.log('API is healthy');
}
安保最佳做法
- 环境变量: 在环境变量中而不是在代码中存储证书
- 仅服务器: 此 SDK 仅供服务器侧使用
- 证书安全: 保证证书安全, 绝不将其投入版本控制
- 处理错误: 总是将 API 调用在尝试捕获块中
- 托肯管理: 对长期运行的应用程序使用刷新符号
try {
const vaultInfo = await sdk.getVaultInfo(vaultAddress, network);
// Handle success
} catch (error) {
console.error('Operation failed:', error.message);
// Handle error appropriately
}
空洞管理角色
SDK支持不同的操作角色:
- 故障管理员: 可以创建和配置金库
- 应急管理人员: 可以执行紧急救援
- 战略管理员: 能够暂停/停止个别战略
- 普通用户: 可以保存、提取和查看金库信息
发展
大楼
pnpm run build
测试
单位测试( 混合)
# Run unit tests
pnpm test
# Run with coverage
pnpm run test:coverage
# Watch mode
pnpm run test:watch
# Run integration tests
pnpm run test:integration
# Run all tests
pnpm run test:all
代码质量
pnpm run lint
pnpm run lint:fix
定义类型
SDK 输出全面的类型脚本类型 :
import {
DefindexSDK,
DefindexSDKConfig,
SupportedNetworks,
CreateVaultParams,
DepositParams,
WithdrawParams,
WithdrawSharesParams,
VaultInfo,
VaultBalance,
VaultAPY,
// ... and many more
} from '@defindex/sdk';
前端整合
在服务器侧重心的同时,您可以创建安全的前端集成:
// Backend API endpoint using API key
app.post('/api/vault-info', async (req, res) => {
try {
const sdk = new DefindexSDK({
apiKey: process.env.DEFINDEX_API_KEY
});
const vaultInfo = await sdk.getVaultInfo(req.body.vaultAddress, req.body.network);
res.json(vaultInfo);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
页:1
综合实例和详细的API文件见:
链接
由帕尔塔拉布斯队与QQ共同建造.