@dankest-llc/xchain-sdk

中文文档
0.27.0发布于 2026/11/01AGPL-3.0-or-laterTypeScriptCommonJS构建来源已验证近 30 天下载 2762

xchain-sdk 生成 XChain 平台 Action 命令并将其编码为未签名的块链交易,并从 XChain API 提取数据,如余额和交易历史等.

中文使用文档
文档目录8 节
  1. 特征
  2. 文档
  3. 安装
  4. 快速启动
  5. 配置
  6. 脚本
  7. API 服务器模块
  8. 测试套件

XChain 平台 - 软件开发者 Kit (SDK)

npm version Tests Node License

Coverage

SDK 用于 XChain 平台: 生成 XChain 交易并查询块链数据.

特征

  • 31 行动类型数字 : sdk.send(), (中文(简体) ), sdk.issue(), (中文(简体) ), sdk.mint(), (中文(简体) ), sdk.stake(),还有27个方便方法
  • 交易周期数字 : sdk.submitAction() 在一个呼叫中处理完整编码 - > 标志 - > 广播 - > 等待管道
  • 钱包会话数字 : sdk.session(wif) 组合地址/关键/UTXO状态,用于一个地址的重复行动
  • 费用估计数字 : sdk.estimateFees() 不签名或广播的返回费信息
  • UTXO 链式: 内置的 UTXO 缓存可防止在快速相继交易上重复花费
  • 工作流程配方数字 : sdk.issueAndDistribute(), (中文(简体) ), sdk.deployAndFund(), (中文(简体) ), sdk.stakeAndDelegate()和更多
  • 跨链助手:协调跨 BTC、LTC 和 DOGE SDK 实例的互换和平行行动
  • 事件驱动的确认数字 : sdk.waitForAction(txid) 当索引器处理交易时解决
  • 合同结算门数字 : sdk.waitForContractState(index, { key: 'status', equals: 'FUNDED' }) 财务报告和审定财务报表 sdk.waitForContractBalance(index, tick, { minQuantity }) 等待合同本身的状态,这是唯一不能与索引者相竞争的信号; submitAction({ awaitContract: {...} }) 开同一扇门 所以在合同被记帐之前 押金不会回手控制
  • 互动反应数字 : npm run repl 与预配置 SDK 实例一起跳入一个动态会话
  • 自动选择格式: 为每个动作选择最小的编码格式
  • PSBT 生成: 与 xchain- 编码器集成以生成未签名的交易
  • 115+ 探索者查询方法: 余额、代号、交易、市场、历史、合同
  • 批量构建器: 流畅的API : await sdk.batch().send({...}).mint({...}).build() (单位:千美元)build() 正在同步)
  • 实时活动: WebSocket 有自动重联和接续的流经 onBlock(), (中文(简体) ), onAction(), (中文(简体) ), onAddress(), (中文(简体) ), onToken(), (中文(简体) ), onMarket(), (中文(简体) ), onDispenser(), (中文(简体) ), onBetFeed(), (中文(简体) ), onXcall(), (中文(简体) ), onAttestation()和更多; sdk.ws 曝光低端客户端( q)subscribe(), (中文(简体) ), on(), (中文(简体) ), listSubscriptions()直接(...)
  • 加密信件ECIES、ECDH和AES加密MESSAGE行动; messaging.send() 接受一个 Buffer 有效载荷和 getMessages() 曝光情况 msg.bytes 二进制 ECIS
  • 调制解析文件数字 : sdk.gatedFile.encryptFileBytes() 财务报告和审定财务报表 sdk.gatedFile.encryptPack() 生产AES-256-GCM Ciphertext + 密钥用于 FILE v1 闸口内容; 密钥交接作为紧凑的33字节二进制有效载荷通过 serializeKeyPayload() 编号 : parseKeyPayload() (以二进制模式通过ECIES发送). 见 调试内容
  • 证明信封助手数字 : AttestationHelpers.llm({...}) 建造JSON信封,发给VM合同 xchain.attestation.request(...) 有提供者 id 'llm'· ; AttestationHelpers.httpGet({url}) 验证 URL并返回有效载荷字符串 'http_get'· ; AttestationHelpers.requestOptions({redundancy, deadlineBlocks}) 构建网关选项对象。 根据设计,这些只是信封构建器:没有用户可推荐的ATTEST动作. ATTEST v0(请求)和v1(答复)为VM-发送:合同呼叫 xchain.attestation.request(...) 并释放出链上的证据。 因此,SDK帮助你塑造一个合同提出的要求,你通过 getAttestations()它没有(而且不能)直接编码ATTEST行动,同样,XCALL只编码VM-排放.
  • 拥有权交易助手数字 : ORDER编号 :SWAP编号 :DISPENSER v0 载 GIVE_OWNERSHIP 编号 : GET_OWNERSHIP 旗帜; SWEEP 独立携带 ORDERS 编号 : SWAPS 编号 : DISPENSERS 旗帜( 是单一的) ESCROWS 旗帜)
  • HTTP 402次付款数字 : X402Client 财务报告和审定财务报表 X402Gateway 实施XChain-native, x402- 形状的按呼计酬流程,在链式SEND行动之上进行 xchain-send (按要求付费), xchain-dispenser (持有进入权),和 xchain-deposit (计算支出分类账)计划;客户只支付每笔勾 maxAmount 最高的,每一次都拒绝。 见 x402 付款额
  • 以合同为目标的抽取数字 : session.stakeToContract({ amount, signingPubkey, targetContractIndex, tick }), (中文(简体) ), session.unstakeFromContract({...}),以及 session.delegateForContract({...}) 将STAKE v3 / UNSTAKE v1 / DELEGATE v1 与通过DEBOY v1(与 COOLDOWN_BLOCKS + 键 SLASH_DESTINATION) (中文(简体) ). 高级别食谱: sdk.deployStakeableContract() 财务报告和审定财务报表 sdk.stakeToContractAndDelegate()
  • NFT 帮助者数字 : sdk.nft.unique(), (中文(简体) ), sdk.nft.edition(), (中文(简体) ), sdk.nft.collectionItem(), (中文(简体) ), sdk.nft.attachContentParams(),以及 sdk.nft.isNft() 用于构建 NFT 模式(ISSUE 有 DECIMALS=0 + LOCK MAX SUPPLY=1) 外加高级 sdk.issueNft(), (中文(简体) ), sdk.issueNftEdition(), (中文(简体) ), sdk.issueCollectionItem(),以及 sdk.attachContent() 提交食谱
  • 项目登记册助手数字 : sdk.project.rosterParams() 财务报告和审定财务报表 sdk.project.rosterEditParams() 为所有者测试的代号名册建立列表动作; sdk.setRoster() 运行列表然后 LINK 并等待索引器
  • 车票压缩: 在默认情况下; 解决其紧凑的符号计数器 ^id 在编码缩小链上有效载荷大小之前,通过探险器形成电线; 选择退出 { compactTickers: false }
  • MCP 服务器数字 : npx xchain-mcp 将所有探索者查询工具曝光为 模型背景协议工具,供 AI 代理使用
  • 钱包认证( A):关键管理,PSBT签名,质疑-回应核查
  • 智能合同:通过xchain-vm集成部署、执行、交存、退出
  • 飞行前合同身份: 已部署的合同必须出口 meta: { name, description, version } (单位:千美元)CONTRACT_META_REQUIRED) (中文(简体) ). sdk.deploy(), (中文(简体) ), session.deploy(), (中文(简体) ), session.deployChunk(), (中文(简体) ), sdk.deployAndFund() 财务报告和审定财务报表 sdk.deployStakeableContract() 在动作组成前静地读取,并用链条本身的判决字符串拒绝,因此索引者会拒绝一份合同,永远不收费. sdk.contracts.getExportedMeta(source) 显示相同的读取
  • 枢纽发现: xchain-hub 的自动解析服务端点
  • 用后退重试:处理HTTP 429/502/503/504,尊重 Retry-After 页眉
  • 请求钩子数字 : onRequest, (中文(简体) ), onResponse, (中文(简体) ), onError, (中文(简体) ), onRetry 调用
  • 类型脚本定义: 满 .d.ts 用于 IDE 自动完成
  • 浏览器捆绑: 用于客户端的浏览构建

文档

完整的 SDK 开发者指南发布于 文件.xchain.io/组件/sdk数字 :

文档说明
读取概述、安装、使用模式
配置构造选项, env vars, 枢纽发现, 重试, 集合, 钩子
行动所有31个行动类型:参数、验证规则、格式版本、实例
交易周期提交操作、费用估算、UTXO链接、P2SH两相处理
钱包会话绑定钱包会话、便利方法、 UTXO 缓存
工作流量高级食谱:发布和分配、部署和基金、利害关系和删除
横琴多链协调:平行行动、互换、链接
浏览器所有115+查询方法: 余额、指使、交易、市场
编码器PSBT 生成:编码类型,选项,飞行前验证,P2SH 二相
批量构建器多动作交易的流利 API
合同VM智能合同集成:部署,执行,交存,退出
网络安全套实时活动流:块、行动、地址、市场
钱包认证( A)关键管理、PSBT签署、质疑-答复核查
通讯ECIES/ECDH/AES MESSAGE行动的加密
轻型客户端( SPV)针对计分加权检查站进行加密平衡/行动核查
NFT 注册创建器NFT模式构建者、收集/内容附件、项目名册
格式选择SDK 如何选择最佳格式版本
错误所有错误类别、代码和故障排除
实例端到端代码示例

安装

npm install @dankest-llc/xchain-sdk

节点22或更新. 为了针对源进行开发,克隆此寄存器和 npm install 内部; 辅助的 AI 代理的 MCP 服务器单独发布为 xchain-mcp。 。 。 .

快速启动

const { XChainSDK } = require('@dankest-llc/xchain-sdk');

// Zero-config: a network alone targets the public XChain Platform.
// Mainnet/testnet default to the public hosts (hub.xchain.io discovers
// explorer/encoder, falling back to explorer.xchain.io / encoder.xchain.io);
// on any *-regtest network only the explorer defaults to localhost:8080. The
// encoder (needed for writes) needs ENCODER_URL or ENCODER_PORT, and the
// WebSocket needs a WEBSOCKET_* or EXPLORER_* URL or port (or the matching
// constructor options).
const sdk = new XChainSDK({ network: 'bitcoin-mainnet' });

// To point at your own services, pass full URLs (include the scheme; a
// bare host is treated as http://host:<dev-port>):
// const sdk = new XChainSDK({
//     network: 'bitcoin-mainnet',
//     explorerUrl: 'https://explorer.example.com',
//     encoderUrl:  'https://encoder.example.com'
// });

// Generate an action string
const result = await sdk.send({
    tick: 'MYTOKEN',
    amount: '100',
    destination: 'bc1q...',
    memo: 'Payment'
});
console.log(result.actionString); // 'SEND|0|MYTOKEN|100|bc1q...|Payment'

// Multi-destination SEND: one entry per recipient. The wire format version
// is chosen from the legs (v1 shared tick, v2 per-leg tick, v3 per-leg memo).
// A flat {tick, amount, destination} map can only ever express ONE leg, so
// the SDK refuses one against a multi-leg format instead of repeating leg 1.
const multi = await sdk.send({
    tick: 'MYTOKEN',
    legs: [
        { amount: '100', destination: 'bc1qaddr1...' },
        { amount: '250', destination: 'bc1qaddr2...' }
    ]
});
console.log(multi.actionString); // 'SEND|1|MYTOKEN|100|bc1qaddr1...|250|bc1qaddr2...'

// Full lifecycle: create, encode, sign, broadcast, wait for indexer
const tx = await sdk.submitAction(
    { action: 'SEND', params: { tick: 'MYTOKEN', amount: '100', destination: 'bc1q...' } },
    { pubkey: '02abc123...' },
    { wif: 'your-wif-key' }
);
console.log(tx.txid);    // transaction hash
console.log(tx.indexed); // action data from the indexer

// Wallet session: bind to a key and send multiple actions
const session = sdk.session('your-wif-key');
await session.send({ tick: 'MYTOKEN', amount: '50', destination: 'bc1q...' });
await session.send({ tick: 'MYTOKEN', amount: '50', destination: 'bc1q...' });
const balances = await session.getBalances();

// Workflow recipes: multi-step operations in one call
await sdk.issueAndDistribute('your-wif-key',
    { tick: 'NEWTOKEN', maxSupply: '1000000', decimals: 8 },
    [
        { destination: 'bc1qaddr1...', amount: '500000' },
        { destination: 'bc1qaddr2...', amount: '300000' }
    ]
);

// Deploy a smart contract. Every contract must export its identity: `meta.name`
// and `meta.description` are consensus-required (CONTRACT_META_REQUIRED), and
// `meta.version` is optional but indexed. Use STRING LITERALS: the chain evaluates
// `meta` at deploy, so a computed name is not what you read in the source, and the
// pre-flight cannot check it for you.
const code = `module.exports = {
    meta: {
        name:        'Escrow',                           // 1..64 bytes
        description: 'Two-party escrow with an arbiter', // 1..512 bytes
        version:     '1.0.0'                             // optional, 1..32 bytes
    },
    permissions: ['SEND'],
    initialize(xchain) { xchain.state.set('status', 'OPEN'); }
};`;
await session.deploy({ code, gasLimit: 200000 });

// A contract with no conforming meta is refused BEFORE anything is composed,
// signed or broadcast, with the exact verdict the indexer would have written:
//   SDKContractError: invalid: CONTRACT_MANIFEST (meta required)
// Pass { preflight: 'warn' | 'off' } (session/workflow seams) or
// { lint: 'warn' | 'off' } (sdk.deploy) to downgrade or skip the check; the
// deploy is still rejected on-chain. A computed or unreadable `meta` only warns.
sdk.contracts.getExportedMeta(code);  // { status: 'present', name: 'Escrow', ... }

// Query blockchain data. The token record arrives NESTED under `info`:
const token = await sdk.getToken('MYTOKEN');
token.info.tick_id;   // '42'   <- the fields live here
token.tick_id;        // undefined

// A tick that does not exist answers HTTP 404, so getToken() THROWS
// SDKExplorerError (code EXPLORER_HTTP_404) instead of answering an empty
// body. Use these for an existence check rather than a try/catch:
await sdk.tokenExists('MYTOKEN');   // true / false, never throws on absence
await sdk.findToken('MYTOKEN');     // the unwrapped info record, or null

// Both answer "absent" only for the 404. A timeout, network failure, 429 or
// 5xx still throws, because an explorer that could not answer is not proof
// that the ticker is free.

配置

变量需求默认说明
NETWORK对(无)默认硬币和网络(例如. bitcoin-regtest, (中文(简体) ), dogecoin-mainnet(中文(简体) )
SDK_API_PORT没有3005可选 SDK 助手 API 的端口
SDK_API_KEY没有(无)帮助 API 的 API 密钥; 需要作为 Authorization: Bearer <key> 每种方法,但 ping (方法在未设定时以 401 拒绝)
CORS_ORIGIN没有已禁用允许帮助者 API 的来源
SDK_API_MAX_BATCH没有20最大 JSON- RPC 在一个阵列( 批量) 中调用 。 除正整数外的任何东西(1e3, (中文(简体) ), 50abc, (中文(简体) ), 0, (中文(简体) ), -5)还原为 20 并记录启动时的警告;没有值禁用上限
SDK_API_RATE_LIMIT没有300每个窗口每个证书的请求( 未经认证时每个源地址) 。 非数值或负数值回落到 300; 明示 0 禁用限制器, 这是关闭它的唯一方法
SDK_API_RATE_WINDOW_MS没有60000固定费率限制窗口的长度,以毫秒为单位。 除正整数毫秒外的任何东西(60s, (中文(简体) ), 1e5, (中文(简体) ), 1.5, (中文(简体) ), 0)还原为 60000 并记录启动时的警告
EXPLORER_URL 编号 : EXPLORER_PORT没有127.0.0.1 编号 : 8080x链- 探索器位置 。 一个 explorerPort 选项,但无需 URL 指向探索者及其 WebSocket localhost 在每一个网络上,并把它们 与中枢发现。 API 和 REPL 通行证 EXPLORER_PORT 所以在主网和测试网, EXPLORER_PORT 无 EXPLORER_URL 点数 localhost;在图书馆使用中, EXPLORER_PORT 让公共探险家独处
ENCODER_URL 编号 : ENCODER_PORT没有127.0.0.1 编号 : 3003xchain- 编码器位置
ENCODER_API_KEY没有(无)API 密钥发送为 x-api-key 到一个x链编码器,其操作员设置 API_KEY; 也可以以 encoderApiKey 选项。 只有一个 encoderUrl 或者说 encoderPort 构造器选项给编码器打上针:如果没有一个,中枢发现可以重新给编码器客户端指针,然后键去任何主机中枢名称的编码器. 一个 encoderPort 选项,但无需 URL 指向编码器 localhost 每个网络。 帮助者 API(npm run api(a) 赔偿要求npm run repl(通过) ENCODER_URL 财务报告和审定财务报表 ENCODER_PORT 作为这些选项,所以有1个指针;在图书库使用中,只有变量没有。 当作证书
HUB_URL没有(无)全xchain-hub URL 仅由 REPL 读取(npm run repl)),其优于 HUB_API_HOST; 库和助手 API 忽略它
HUB_API_HOST 编号 : HUB_PORT没有https://hub.xchain.io/<COIN> 主网和测试网; 重新测试时没有中枢xchain-hub 位置由库和助手API读取. 使用裸体主机( 与 HUB_PORT默认值 10000或全数 http:// 或者说 https:// URL,在这种情况下 HUB_PORT 被忽略。 助手API通过 HUB_PORT 作为 hubPort 在主网和测试网, HUB_PORT 无 HUB_API_HOST 在中心点上 localhost;在图书馆使用中, HUB_PORT 独自离开公共中心
HUB_API_KEY没有(无)API 密钥用于 getallconfigs 对按键的枢纽; 公开的零配置发现应使用枢纽的链式注册端点代替
WEBSOCKET_URL 编号 : WEBSOCKET_PORT没有127.0.0.1 编号 : 3007探索者 WebSocket 更新的结束点 。 与裸体主机连接 WEBSOCKET_PORT; 满 ws:// 或者说 wss:// 按给定使用 URL, 并全 http:// 或者说 https:// URL变成 ws:// 或者说 wss://,在两种情况下均未添加端口

脚本

命令说明
npm run api启动 JSON- RPC 服务器( 端口来自 SDK_API_PORT,默认3005
npm test运行单元测试(6 351个测试)
npm run repl用预配置的 SDK 实例启动交互 REPL
npm run build生产浏览器捆绑 - > dist/xchain_sdk.min.js
npm run build:dev开发浏览器捆绑 - > dist/xchain_sdk.js

API 服务器模块

npm run api (单位:千美元)node ./src/api/index.js)运行 JSON-RPC 服务器作为一个独立进程,打开一个收听器 SDK_API_PORT 满载。 消费者想要拥有服务器,将服务器安装在现有快件下,选择自己的收听路径,或者从测试开始并阻止它,则需要模块直接而不是轰出脚本:

const { createApp, startApi } = require('@dankest-llc/xchain-sdk/src/api');

// createApp(sdk) is synchronous and listener-free: it wires the same guard
// stack (rate limit, auth gate, batch cap, /openrpc.json, JSON-RPC router)
// as the CLI entry and returns the express app to mount yourself.
const app = createApp(sdk);

// startApi({ port }) builds the SDK from the environment, runs hub discovery,
// and resolves to the listening http.Server (port 0 for an ephemeral port).
const server = await startApi({ port: 0 });
await new Promise((resolve) => server.close(resolve));

请求 src/api 永不打开套接字;只打开 CLI 条目(npm run api 编号 : node ./src/api/index.js)开始自动收听.

测试套件

类型测试
单位: 动作、 验证器、 格式选择、 方便方法、 探索器、 编码器、 重试、 WebSocket、 钱包、 认证、 合同、 联合签名人3206+ (韩语)
整合:跨模块流动、VM/合同整合、枢纽发现98岁以上
安全:输入攻击表面、认证门18岁以上
后退: 配置的临界路径套件,包括回转序列化 - > 剖析 - > 校验23岁以上
边界:精确编码界限35岁以上
模糊:垃圾类型,单码,原型污染65岁以上
混乱: 反应错误、 HTTP 错误、超时27岁以上
烟:靴子API服务器,端到端的JSON-RPC9个+
业绩3个
共计3484+ (英语)

版权:2025-2026 Dankest, LLC

依据创用CC授权使用 页:1

凭 GNU 阿费罗通用公共许可证 v3.0 (AGPL-3.0-或-后期) 拥有可供专有使用的商业许可证.

您可以根据许可证的规定使用、修改和分发这些材料. 见 自由主义 财务报告和审定财务报表 通知 满期. 见 许可概览。 。 。 .

版本与发布记录

@dankest-llc/xchain-sdk 共发布 26 个版本,首次发布于 2026/08/02;过去 12 个月发布了 26 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.27.0latest2026/11/0110 天前
0.26.22026/10/2220 天前
0.26.12026/10/2220 天前
0.26.02026/10/2121 天前
0.25.02026/10/1923 天前
0.23.02026/10/1230 天前

关于 @dankest-llc/xchain-sdk 的常见问题

@dankest-llc/xchain-sdk 是什么?

xchain-sdk 生成 XChain 平台 Action 命令并将其编码为未签名的块链交易,并从 XChain API 提取数据,如余额和交易历史等.

如何安装 @dankest-llc/xchain-sdk?

在项目目录运行 npm install @dankest-llc/xchain-sdk,或使用 pnpm add / yarn add / bun add。

@dankest-llc/xchain-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dankest-llc/xchain-sdk 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dankest-llc/xchain-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dankest-llc/xchain-sdk 可以商用吗?

@dankest-llc/xchain-sdk 使用 AGPL-3.0-or-later 许可。最严格的 Copyleft:除分发外,通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括,不构成法律意见,请以许可原文为准。

@dankest-llc/xchain-sdk 的下载量有多少?

根据 npm 官方下载统计,@dankest-llc/xchain-sdk 在 2026/10/12 – 2026/11/10 这 30 天内被下载 2,762 次,日均约 92 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dankest-llc/xchain-sdk 还在维护吗?

最新版本 0.27.0 发布于 2026/11/01(10 天前);至今共发布 26 个版本,其中过去 12 个月发布了 26 个;首次发布于 2026/08/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。