客户端配置

创建客户端

使用 StrikeClient::new() 传入配置,然后链式调用 builder 方法:

use strike_sdk::prelude::*;

// Mainnet with defaults
let client = StrikeClient::new(StrikeConfig::bsc_mainnet()).build()?;

// With a wallet for trading
let client = StrikeClient::new(StrikeConfig::bsc_mainnet())
    .with_private_key("0x...")
    .build()?;

预设配置

方法
链 ID
说明

StrikeConfig::bsc_mainnet()

56

BSC 主网默认 RPC、WSS 和索引器 URL

StrikeConfig::bsc_testnet()

97

BSC 测试网默认 RPC、WSS 和索引器 URL

StrikeConfig::custom(addresses, chain_id)

any

自定义部署

每个预设都包含默认的 RPC、WSS 和索引器 endpoint。可以使用 builder 方法覆盖任意一项。

Builder 方法

所有 builder 方法都是可选的。未调用 with_private_key() 构建的客户端是只读客户端,可以查询市场、订阅事件和读取余额,但不能发送交易。

只读模式与交易模式

能力
只读
使用钱包

获取市场和订单簿

Yes

Yes

订阅事件流

Yes

Yes

读取余额

Yes

Yes

提交或取消订单

No

Yes

授权 USDT

No

Yes

赎回代币

No

Yes

在没有钱包的情况下调用写入方法会返回 StrikeError::NoWallet

Nonce Manager

如果 bot 会连续快速发送交易,可以启用 nonce manager 来避免 nonce-too-low 错误:

NonceSender 会在初始化时从链上获取当前 nonce,之后在本地跟踪。它会区分简单 nonce 漂移与 pending mempool conflict:

  • Nonce 漂移(例如 nonce too low)→ 从链上重新同步并重试一次

  • Pending conflict(例如 replacement transaction underpricedalready known)→ 从链上重新同步,但不会盲目重试到同一个 nonce lane

该功能通过 nonce-manager feature flag 启用,并且默认开启。

简单脚本通常不需要它;它主要面向需要以 tight loop 下单和撤单的 bot。

访问内部对象

高级用法中,你可以访问底层 provider 和配置:

Sub-Clients

StrikeClient 暴露按领域划分的 sub-client:

方法
返回
说明

client.orders()

OrdersClient

client.vault()

VaultClient

client.tokens()

TokensClient

client.markets()

MarketsClient

链上市场状态读取

client.redeem()

RedeemClient

client.events()

EventStream

client.indexer()

IndexerClient

错误处理

所有 SDK 方法都返回 strike_sdk::Result<T>,即 std::result::Result<T, StrikeError>

StrikeError variants:

Variant
原因

Rpc

传输层 RPC 失败

Contract

链上 revert 或 ABI decoding error

NonceMismatch

本地 nonce 与链上不一致

MarketNotActive

市场 ID 不是活跃市场

InsufficientBalance

USDT 或代币余额不足

NoWallet

未配置私钥却尝试写入操作

WebSocket

WSS 连接错误

Indexer

索引器 HTTP 错误

Config

配置无效

Other

通过 eyre::Report 包装的其他错误

Last updated