@boing-network/boing-sdk

中文文档
0.5.40发布于 2026/11/06MITTypeScriptES Module近 30 天下载 3329

无缝SDK 用于建于波音网络

中文使用文档
文档目录13 节
  1. 安装
  2. 通过 file: (例如:. bo. 财务 (中文(简体) )
  3. 发布到 npm (CI)
  4. 测试
  5. 快开始
  6. API 密码
  7. Tokens (镜像) boing token (中文(简体) )
  8. 原生AMM池 (镜像) boing pool (中文(简体) )
  9. 提交交易
  10. 模拟 + 访问列表 → 提交(P4)
  11. API 添加( 交易流量)
  12. 测试
  13. 计划

宾SDK

🛠️ 开发者 : 这是用于 Boing JSON-RPC 的 TypeScript 客户端、 QA 错误、 本地的 DEX 调用数据以及钱包胶水 .
👋 每天用户 : 您直接通过 吹嘘, (中文(简体) ), boing.观察者,以及 bo. 财务。 。 。 .
🛰️ 运算符 : 在 SDK 之后 来源 更改, 运行 npm run build 在这里,承诺 dist/教学 file: 消费者需要新鲜的 dist/。 。 。 .

类型脚本/ JavaScript 客户端 宝英网:键入了RPC客户端,hex公用事业,以及结构错误(包括QA拒绝反馈).

flowchart LR
  App[dApp / finance / explorer] --> SDK["@boing-network/boing-sdk"]
  SDK --> RPC[boing_chainHeight / getAccount / qaCheck / listDex*]
  SDK --> Wallet[window.boing helpers]

安装

消费者(npm):

npm install @boing-network/boing-sdk

当前注册最近: 参见 npm 包页( 此 repo's) package.json 实值 0.5.39) (中文(简体) ). 软件包页面 : npmjs.com/package/@boing-network/boing-sdk (英语)执行 没有 安装未扫描 boing-sdk ——该名称被废弃/被锁入,并且不会被这个repo所更新.

Monorepo/ 贡献者 (本目录):

npm install
npm run build

通过 file: (例如:. bo. 财务(中文(简体) )

编译的产出存在于 dist/,这是 承诺 内 Boing-Network/boing.network (调用根) .gitignore 忽略通用 dist/ 但没有 boing-sdk/dist/) (中文(简体) ). 因此,克隆和CI兄弟姐妹可以使用 dist/index.js 没有单独的SDK建设步骤.

当你改变 SDK 来源 (单位:千美元)src/),运行 npm run build 内 boing-sdk 并承诺更新 dist/编辑 boing-sdk 工作流程失败, 如果 dist/ 从 TypeScript 构造输出出漂移 .

bo. 财务 检查 boing.network 只有这样 file: 路径解析; 它不首先构建 SDK . bo. 财务’: frontend/scripts/postinstall-boing-sdk.mjs 只运行 npm run build 在链接软件包中 dist/index.js 缺少(例如本地 SDK 开发或断出)和 安装失败 如果那个建筑不成功的话.

发布到 npm (CI)

登记册上的软件包名称 : @boing-network/boing-sdk (范围). 未瞄准 boing-sdk 被遗弃/被锁住 没有 从本工作流程中发布.

范围化出版为直播. 常规释放使用 发布 bing- sdk GitHub 动作( R).github/workflows/boing-sdk-publish.yml标签 boing-sdk/v* 带有存储器秘密 NPM_TOKEN。 。 。 .

需要的 GitHub 密钥( 如果缺少 ) :

  1. 打开 npmjs.com (英语) 作为可以出版的用户 @boing-network/boing-sdk,创建 自动化 指使符(或颗粒式指使符,并在该包上发布;自动化在CI中避免交互的OTP).
  2. 在那个 Boing-Network/boing.network 重传 : 设置 – 秘密和变量 – 动作 – 新的仓库秘密。 。 。 .
  3. 名称 : NPM_TOKEN。数值: npm 符号(npm_…) (中文(简体) ).
  4. 未经出版的烟检: 动作 – 发布 bing-sdk – 运行工作流程 与 auth only = 真实 (预期) npm whoami ))),以获得成功.

历史标签发布失败 ENEEDAUTH 当这个秘密不存在的时候 NODE_AUTH_TOKEN (见CI)。 如果缺少密钥, 工作流程现在以明显的错误快速失败 .

每次发布 (之后) (中文(简体) ) package.json 版本 + CHANGELOG + 承诺 dist/ 开始 main:

git checkout main && git pull origin main
node -p "require('./boing-sdk/package.json').version"   # e.g. 0.5.39
git tag -a "boing-sdk/v$(node -p "require('./boing-sdk/package.json').version")" -m "@boing-network/boing-sdk $(node -p "require('./boing-sdk/package.json').version")"
git push origin "boing-sdk/v$(node -p "require('./boing-sdk/package.json').version")"

看着 行动-公布bing-sdk。然后: npm view @boing-network/boing-sdk version. 为FreshMint和其他应用软件安装优先登记册(npm install @boing-network/boing-sdk); GitHub (中文(简体) ) path:/boing-sdk 针头不是首选的消费路径.

测试

  • 单位/ 离线 : npm test – Vitest;不需要运行中的波音节点.
  • 可选的RPC融合: tests/rpcIntegration.test.ts 仅在 BOING_INTEGRATION_RPC_URL 设置( 例如) . http://127.0.0.1:8545) (中文(简体) ). 如果它是未设置,维特 跳过 整个套房的默认都离线了 核心案件:同步状态(或 getBlockByHeight 倒置),块+收据, getLogsChunked, (中文(简体) ), fetchBlocksWithReceiptsForHeightRange, (中文(简体) ), getTransactionReceipt (不详 tx ) null) (中文(简体) ). 返回的终点 -32601号 页:1 boing_getSyncState 或者说 boing_getLogs 仍然经过有记录的地方。 与 BOING_EXPECT_FULL_RPC=1 (见 .github/workflows/boing-sdk-rpc-integration.yml),额外测试称 boing_clientVersion, (中文(简体) ), boing_rpcSupportedMethods,以及 probeBoingRpcCapabilities (6/6) 核心方法,包括 boing_getNetworkInfo 编号 : boing_getBlockByHeight 编号 : boing_getTransactionReceipt) (中文(简体) ).
  • 运算符/ 教程烟雾( 从 Vitest 分离) : 内 examples/native-boing-tutorial, (中文(简体) ), npm run preflight-rpc (或 check-testnet-rpc 仅限) BOING_RPC_URL —— CI 启动本地节点后运行相同的脚本;见 业务负责人-指挥官。从 单列波根,同样的 npm run <script> 教程包中的名称代表( 参见 root) package.json) (中文(简体) ).
  • npm run verify - 与 npm test,然后打印一个简短的注释,解释env var缺失时的跳跃.

快开始

import { createClient, BoingRpcError, explainBoingRpcError } from '@boing-network/boing-sdk';

// Local node (no retries needed):
const local = createClient('http://localhost:8545');

// Public testnet RPC — recommend maxRetries (default is 0):
const client = createClient({
  baseUrl: 'https://testnet-rpc.boing.network/',
  maxRetries: 3,
});

// Read chain and account state
const height = await client.chainHeight();
const account = await client.getAccount('0x' + '00'.repeat(32)); // 32-byte hex
console.log(account.balance, account.nonce, account.stake);

// Pre-flight QA check before deploying a contract
const qa = await client.qaCheck('0x600160005260206000f3'); // hex bytecode
if (qa.result === 'reject') {
  console.error('QA rejected:', qa.rule_id, qa.message);
} else if (qa.result === 'allow') {
  // Submit signed tx (hex from Rust CLI or future signer)
  await client.submitTransaction(hexSignedTx);
}

// Handle structured QA / rate-limit errors on submit
try {
  await client.submitTransaction(hexSignedTx);
} catch (e) {
  if (e instanceof BoingRpcError && e.isQaRejected) {
    const { rule_id, message } = e.qaData ?? {};
    console.error('Deployment rejected:', rule_id, message);
  }
  if (e instanceof BoingRpcError) {
    console.error(explainBoingRpcError(e)); // HTTP 429 / -32016 / gateway limits
  }
  throw e;
}

公开RPC / 429: 云花在前头 testnet-rpc.boing.network 可能返回 HTTP 429 (韩语)默认 maxRetries 实值 0; 公共RPC通行证 maxRetries: 2–3 如此短暂的极限和水龙头 - 32016年),中国大陆名将 可退后( 荣誉) Retry-After) (中文(简体) ). 见 BOING-RPC-ERROR-CODES-FOR-DAPPS.md 页面存档备份,存于互联网档案馆。 。 。 .

API 密码

  • 创建 Client( 配置) —— 说 config 可以是 URL 字符串或 { baseUrl, fetch?, timeoutMs?, maxRetries?, retryBaseDelayMs? }。默认超时30s;设置 timeoutMs: 0 以禁用。 默认 maxRetries: 0 (无复试); 使用 2–3 对公众测试网RPC.
  • 宾客 ——所有RPC的打入方法(32字节账户/hash参数在发送前在当地验证) :
    • RPC探测器 —— 说 probeBoingRpcCapabilities 返回时 { clientVersion, supportedMethods, methods } 加号 countAvailableBoingRpcMethods, (中文(简体) ), explainBoingRpcProbeGaps (单位:千美元)rpcCapabilities.ts: 探测器 -32601号 缺少方法; CLI : npm run build 接下来 npm run probe-rpc (或 npm run probe-rpc 从 repo 根; diagnosis jSON 中解释 stale 节点对当前 repo;节点发现: boing_clientVersion, (中文(简体) ), boing_rpcSupportedMethods
    • chainHeight(), (中文(简体) ), getBalance(hexAccountId), (中文(简体) ), getAccount(hexAccountId)
    • getBlockByHeight(height, includeReceipts?), (中文(简体) ), getBlockByHash(hexHash, includeReceipts?)
    • getTransactionReceipt(hexTxId), (中文(简体) ), getLogs(filter) ——有界限的日志查询(RPC-API-SPEC.md (中文(简体) )(中文(简体) )
    • 接收/记录助手: normalizeTopicWord, (中文(简体) ), iterBlockReceiptLogs, (中文(简体) ), filterReceiptLogsByTopic0, (.....receiptLogs.ts; 见 (原始内容存档于2019-06-26) (中文(简体) )(中文(简体) )
    • getAccountProof(hexAccountId), (中文(简体) ), verifyAccountProof(hexProof, hexStateRoot)
    • simulateTransaction(hexSignedTx), (中文(简体) ), submitTransaction(hexSignedTx)
    • 高级别资金流动: submitTransferWithSimulationRetry, (中文(简体) ), submitContractCallWithSimulationRetry, (中文(简体) ), submitDeployWithPurposeFlow (见 模拟 访问列表 提交 (见下文)
    • 链接的 NFT 符号 (链上注册) 公共测试网登记实况 CANONICAL_BOING_TESTNET_LINKED_NFT_TOKEN_REGISTRY_HEX (单位:千美元)0xf704485a…655dd 打开 https://testnet-rpc.boing.network/盐 BOING_NFT_TOKEN_LINK_REG_V2,选择者 0xE0– 说吧 –0xE8页:1 0xebf9f019…3dd8 仅作为历史 CANONICAL_BOING_TESTNET_LINKED_NFT_TOKEN_REGISTRY_V1_HEX页:1 buildLinkedNftTokenProjectPack (联合部署+索赔x2+登记册), buildLinkedNftTokenPairDeploys, (中文(简体) ), buildLinkedNftTokenRegisterFlowTxs,登记册部署/编码器;可选缓存计划 boing.linked_nft_token.v1 (单位:千美元)linkedNftTokenProjectPack.ts, (中文(简体) ), linkedNftTokenRegistry.ts, (中文(简体) ), linkedNftToken.ts· ; (原始内容存档于2019-10-21) (英语). Bing-LINKED-NFT-Token.md(中文(简体) )
    • 构建者证明(链上登记册) 公共测试网登记实况 CANONICAL_BOING_TESTNET_BUILDER_ATTESTATION_REGISTRY_HEX (单位:千美元)0x734077a9…1816 打开 https://testnet-rpc.boing.network/盐 BOING_BUILDER_ATTEST_REG_V1,选择者 0xE0– 说吧 –0xE6;双重资产求偿人 单独 那是从伙伴那里发出的; buildBuilderAttestationAttestFlowTxs,部署/编码器builderAttestationRegistry.ts· ; 迎战 - 迎击 - 迎击. md) (中文(简体) ). 软钱包证明不是权威 .
    • 固定本地部署( Boing Express tx 对象) —— 说 buildContractDeployMetaTx (可选) create2SaltHex 编号 : create2_salt, (中文(简体) ), buildReferenceFungibleDeployMetaTx 编号 : buildReferenceFungibleSecuredDeployMetaTx 编号 : buildReferenceNftCollectionDeployMetaTx (wizard友好的一通电话建筑商), resolveReferenceFungibleTemplateBytecodeHex, (中文(简体) ), resolveReferenceFungibleSecuredTemplateBytecodeHex, (中文(简体) ), resolveReferenceNftCollectionTemplateBytecodeHex, (中文(简体) ), ensure0xHex, (中文(简体) ), DEFAULT_REFERENCE_FUNGIBLE_SECURED_TEMPLATE_BYTECODE_HEX, (中文(简体) ), REFERENCE_FUNGIBLE_TEMPLATE_VERSION, (中文(简体) ), REFERENCE_FUNGIBLE_SECURED_TEMPLATE_VERSION, (中文(简体) ), REFERENCE_NFT_COLLECTION_TEMPLATE_VERSION (单位:千美元)canonicalDeployArtifacts.ts· ; (原始内容存档于2019-09-26) (英语). BOING-CANONICAL-DEDIY-ATIFACTS.md); 多网络向导 : isBoingTestnetChainId, (中文(简体) ), normalizeBoingChainIdHex, (中文(简体) ), BOING_TESTNET_CHAIN_ID_* (单位:千美元)chainIds.ts);审查步骤质量保证(dappDeploy.ts· ; (原始内容存档于2018-09-26) (英语). Boing-Dapp-Integration.md § 翻译: 一个向导,两个后端: buildAndPreflightReferenceFungibleDeploy, (中文(简体) ), buildAndPreflightReferenceNftCollectionDeployMeta, (中文(简体) ), preflightContractDeployMetaWithUi, (中文(简体) ), describeContractDeployMetaQaResponse, (中文(简体) ), preflightContractDeployMetaQa, (中文(简体) ), BOING_QA_PLACEHOLDER_DESCRIPTION_HASH_HEX
    • 通用调用数据单词 —— 说 calldataSelectorLastByte, (中文(简体) ), calldataU128BeWord, (中文(简体) ), calldataAccountIdWord, (中文(简体) ), calldataFixedWord32, (中文(简体) ), concatCalldata (布局与参考符号/NFT编码器相同;用于定制合同)
    • 输入的呼叫构建器 —— 说 BoingCalldataWord, (中文(简体) ), assertBoingCalldataWord, (中文(简体) ), boingWordU128 编号 : boingWordAccount 编号 : boingWordFixed 编号 : boingWordSelector (32字节的参数词), encodeBoingCall(selectorLowByte, args) (参考-风格第一单词+参数词)
    • 最小调用 ABI (Boing- native) —— 说 encodeBoingCallTyped(selector, ['u128','account',…], values), (中文(简体) ), encodeBoingCallFromAbiArgs, (中文(简体) ), BoingReferenceCallDescriptors (固定宽度参考符 / NFT / 原生AMM 版式) + encodeBoingCallFromDescriptor – 不是固态 ABI / keccak4; 匹配 docs/BOING-REFERENCE-TOKEN.md, (中文(简体) ), BOING-REFERENCE-NFT.md, (中文(简体) ), NATIVE-AMM-CALLDATA.md
    • 参考 NFT —— 说 SELECTOR_MINT_BATCH (单位:千美元)0x06, (中文(简体) ), MAX_REFERENCE_NFT_MINT_BATCH (500个), encodeReferenceMintBatchCalldata 编号 : encodeReferenceMintBatchCalldataHex (排出数) 96+64n; 零散列跳过元数据 SSTORE),加上96字节 encodeReferenceOwnerOf* 编号 : TransferNft* 编号 : SetMetadataHash*; 存储密钥助手( e)referenceNft.ts) (中文(简体) ). 别 编码 mint_batch 通过 BoingReferenceCallDescriptors模板版本 "3",文物编号 boing.reference_nft_collection.v0; 倾卸线 3 / embed-reference-nft-collection-template-hex.mjs需求 GAS_PER_CONTRACT_CALL = 40_000_000 在全n=500的节点上(合并后Fly public testnet重新部署)。 10克薄荷:块 20×500 (中文(简体) ) – OpenSea规模媒体上传QQ一波能共识tx.
    • 原生CP池(MVP) —— 说 buildNativeConstantProductPoolAccessList, (中文(简体) ), buildNativeConstantProductContractCallTx, (中文(简体) ), mergeNativePoolAccessListWithSimulation· ; fetchNativeConstantProductReserves, (中文(简体) ), fetchNativeConstantProductPoolSnapshot (有争议的储备+总LP ± 签名人LP), fetchNativeConstantProductTotalLpSupply, (中文(简体) ), fetchNativeConstantProductSwapFeeBps (v3/v4) (中文(简体) ), fetchNativeAmmSignerLpBalance, (中文(简体) ), decodeBoingStorageWordU128, (中文(简体) ), decodeNativeAmmAddLiquidityReturnLpMinted, (中文(简体) ), decodeNativeAmmLogDataU128Triple,保留 / 总计- LP / 符号 / 互换收费bps 关键助手( e)nativeAmmPool.ts(三); tryParseNativeAmmLog2, (中文(简体) ), filterMapNativeAmmRpcLogs (单位:千美元)nativeAmmLogs.ts(三); constantProductAmountOut 编号 : constantProductAmountOutWithFeeBps 编号 : constantProductAmountOutNoFee 编号 : encodeNativeAmmSetTokensCalldata 编号 : encodeNativeAmmSetSwapFeeBpsCalldata 编号 : NATIVE_CP_SWAP_FEE_BPS 编号 : NATIVE_AMM_TOPIC_*_HEX 编号 : nativeAmmLogTopic0Utf8 (单位:千美元)nativeAmm.ts· ; 天然-阿姆-卡尔达塔(Md)(三); LP 保险库 —— 说 encodeNativeAmmLpVaultConfigureCalldata, (中文(简体) ), buildNativeAmmLpVaultDepositAddAccessList, (中文(简体) ), buildNativeAmmLpVaultDepositAddContractCallTx,合并帮助(nativeAmmLpVault.ts· ; 天然-AMM-LP-VAULT.md(三); LP 共享令牌 —编码器+ buildLpShareTokenAccessList, (中文(简体) ), buildLpShareTokenContractCallTx, (中文(简体) ), mergeLpShareTokenAccessListWithSimulation (单位:千美元)nativeLpShareToken.ts· ; 天然-液压-托能(三); CANONICAL_BOING_TESTNET_NATIVE_CP_POOL_HEX (单位:千美元)canonicalTestnet.ts——便利镜 RPC-API-SPEC.md (中文(简体) ) § 原生常量产品AMM( 当链上犬花池改变时跳出)
    • 原生DEX( 页目录+路由器) —— 说 投影-自动-DEX-Capibility.md:工厂呼叫数据+访问列表(nativeDexFactory.ts, (中文(简体) ), fetchNativeDexFactoryPairsCount, (中文(简体) ), findNativeDexFactoryPoolByTokens, (中文(简体) ), Log3 解析器( a)nativeDexFactoryPool.ts, (中文(简体) ), nativeDexFactoryLogs.ts· ; 自然-事实); 分类账-路由器前向调用数据 + tx 构建器 v1–v3 (英语) (单位:千美元)nativeDexLedgerRouter.ts· ; 天然-DEX-LEGER-ROUTER.md(三); 互换2 + 键 多跳键 编码器( e)nativeDexSwap2Router.ts· ; 天然-DEX-SWAP2-ROUTER.md, (中文(简体) ), 天然-DEX-Multihop-SWAP-ROUTER.md); CREATE2预测器+盐类(create2.ts; 辅导 deploy-native-dex-directory (单位:千美元)实例/内在-协助-辅导 读取第7c2节
    • 无缝默认 + 钱包胶水 —— 说 fetchNativeDexIntegrationDefaults 编号 : mergeNativeDexIntegrationDefaults (单位:千美元)dexIntegration.ts: 合并 boing_getNetworkInfo。 。 。 .end_user (单位:千美元)BOING_CANONICAL_NATIVE_CP_POOL 编号 : BOING_CANONICAL_NATIVE_DEX_FACTORY) 带有超载并 6913 (英语) 嵌入式池回落; fetchNativeDexFactoryRegisterLogs 用于块 register_pair 扫描; getInjectedEip1193Provider, (中文(简体) ), boingSendTransaction, (中文(简体) ), requestAccounts, (中文(简体) ), readChainIdHex, (中文(简体) ), providerSupportsBoingNativeRpc (单位:千美元)walletProvider.ts· ; (原始内容存档于2018-09-26) (英语). Boing-Dapp-Integration.md(中文(简体) )
    • 目录快照( 只有Boing) —— 说 fetchNativeDexDirectorySnapshot (默认 + pairs_count + 可选日志回填, pickNativeDexPoolFromRegisterLogs, (中文(简体) ), resolveNativeDexPoolForTokens (单位:千美元)logs | simulate | auto, (中文(简体) ), nativeDexPairKey, (中文(简体) ), suggestNativeDexRegisterLogCatchUpRange (单位:千美元)nativeDexDirectory.ts; 无外部链 RPC)
    • DEX 上飞机+飞行前 —— 说 formatBoingNativeDexNotEvmDisclaimer, (中文(简体) ), describeNativeDexDefaultGaps, (中文(简体) ), assertBoingNativeDexToolkitRpc, (中文(简体) ), formatNativeDexToolkitPreflightForUi, (中文(简体) ), buildNativeCpPoolSwapExpressTx, (中文(简体) ), buildNativeDexMultihopSwapExpressTxFromRoute128 编号 : 160, (中文(简体) ), applyNativeDexMultihopSimulationToContractCallTx (单位:千美元)nativeDexSeamless.ts; 钱包副本 BOING_WALLET_RPC_METHODS_NATIVE_DAPP, (中文(简体) ), explainEthSendTransactionInsufficientForBoingNativeCall, (中文(简体) ), connectInjectedBoingWallet, (中文(简体) ), mapInjectedProviderErrorToUiMessage (单位:千美元)walletProvider.ts(中文(简体) )
    • CP通路+聚合(脱链) —— 说 quoteCpPoolSwap, (中文(简体) ), rankDirectCpPools, (中文(简体) ), findBestCpRoutes, (中文(简体) ), pickFirstMultihopCpRoute, (中文(简体) ), uniqueSortedTokenHex32FromCpRoute, (中文(简体) ), minOutFloorAfterSlippageBps, (中文(简体) ), encodeNativeDexMultihopRouterCalldata*FromRoute, (中文(简体) ), quoteCpEvenSplitAcrossDirectPools, (中文(简体) ), hydrateCpPoolVenuesFromRpc, (中文(简体) ), fetchCpRoutingFromDirectoryLogs (单位:千美元)nativeDexRouting.ts(三); buildNativeDexMultihopRouterAccessList, (中文(简体) ), mergeNativeDexMultihopRouterAccessListWithSimulation (单位:千美元)nativeAmmPool.ts(中文(简体) )
    • CREATE2 地址预测 —— 说 predictCreate2ContractAddress, (中文(简体) ), predictNativeCpPoolCreate2Address . predictNativeCpPoolV5Create2Address, (中文(简体) ), nativeCpPoolCreate2SaltV1Hex . nativeCpPoolCreate2SaltV5Hex, (中文(简体) ), NATIVE_CP_POOL_CREATE2_SALT_V1 . V5 (单位:千美元)create2.ts; 匹配 boing_primitives::create2_contract_address 编号 : native_amm.rs; 见 天然-阿姆-卡尔达塔(Md) § CREATE2) 维基语录链接:名人名言
    • 指数级读取 —— 说 getIndexerChainTips 编号 : clampIndexerHeightRange 编号 : planIndexerChainTipsWithFallback 编号 : planIndexerCatchUp (单位:千美元)indexerSync.ts; 后退时 boing_getSyncState 实值 -32601号(三); fetchBlocksWithReceiptsForHeightRange (回放路径:完整块+收;演示: 获取块距. mjs, (中文(简体) ), (原始内容存档于2013-10-12). indexer-ingest-tick.mjs(三); summarizeIndexerFetchGaps, (中文(简体) ), mergeInclusiveHeightRanges, (中文(简体) ), unionInclusiveHeightRanges, (中文(简体) ), subtractInclusiveRangeFromRanges, (中文(简体) ), blockHeightGapRowsForInsert, (中文(简体) ), nextContiguousIndexedHeightAfterOmittedFetch (单位:千美元)indexerBatch.ts, (中文(简体) ), indexerGaps.ts; 已刷出空白, D1 行形状, 存档回填减; getLogsChunked 编号 : planLogBlockChunks (单位:128个区间) RPC-API-SPEC.md (中文(简体) ); 可选 maxConcurrent 以圆木和取高程; mapWithConcurrencyLimit· ; flattenReceiptsFromBundles· ; fetchReceiptsForBlockHeight· ; fetchReceiptsForHeightRange (可选) onMissingBlock: 'omit'——摄入伪流: (原始内容存档于2019-06-26) (中文(简体) ); 示例 DDL : 工具/观测器-索引-schema.sqlJSON + SQL入声: 实例/观测者-最参考 (单位:千美元)ingest-tick, (中文(简体) ), ingest-sqlite-tick + 键 BOING_SQLITE_PATH); D1克龙样本: 实例/观察员-d1-工人; 积压 : 下一个步骤-未来-工作.md
    • 通用合同部署指数 —— 说 rpcTransactionJsonToTransactionInput, (中文(简体) ), transactionIdFromUnsignedRpcTransaction, (中文(简体) ), extractUniversalContractDeploymentsFromBlock 编号 : extractUniversalContractDeploymentsFromBlockJson, (中文(简体) ), CONTRACT_DEPLOY_INIT_CODE_MARKER,行类型(universalContractDeployIndex.ts; 已运出 0.3.1+ (单位:千美元)) (中文(简体) ). 可选主机实现 + REST/SSE : HANDOFF Universal Contact 部署 Indexer.md, (中文(简体) ), workers/deploy-registry-indexer。 。 。 .
    • 固定合同提交人 —— 说 createNativeContractSubmitter({ client, secretKey32, senderHex, contractHex, accessList? }) → .submitCalldata(bytes)
    • registerDappMetrics(hexContract, hexOwner), (中文(简体) ), submitIntent(hexSignedIntent)
    • qaCheck(hexBytecode, purposeCategory?, descriptionHash?, assetName?, assetSymbol?) - 未提交飞行前QA(与节点相同的参数命令) boing_qaCheck(中文(简体) )
    • qaPoolList(), (中文(简体) ), qaPoolConfig(), (中文(简体) ), qaPoolVote(txHashHex, voterHex, vote, signedVoteTxHex?) - 用于未确定部署的质量保证库public_membership 需要签名 QaPoolVote tx) (韩语)
    • getNetworkFeePolicy(), (中文(简体) ), operatorApplyFeePolicy(json) - 本土收费/国库税
    • faucetRequest(hexAccountId) ——仅测试网
  • 波音Rpc错误 —— 说 code, (中文(简体) ), message, (中文(简体) ), data, (中文(简体) ), method· ; isQaRejected, (中文(简体) ), isQaPendingPool, (中文(简体) ), pendingPoolTxHash, (中文(简体) ), isQaPoolDisabled, (中文(简体) ), isQaPoolFull, (中文(简体) ), isQaPoolDeployerCap, (中文(简体) ), qaData· ; toString() 用于伐木.
  • 十六进制助手 —— 说 ensureHex, (中文(简体) ), bytesToHex, (中文(简体) ), hexToBytes, (中文(简体) ), accountIdToHex, (中文(简体) ), hexToAccountId, (中文(简体) ), validateHex32, (中文(简体) ), isBoingNativeAccountIdHex (32字节账户id检查多wallet向导).

所有32字节的ID( 账号、 散列) 是十六进制字符串, 无论是否 0x 前缀。 请求前丢出无效的十六进制或错误的长度 .

Tokens (镜像) boing token(中文(简体) )

部署,薄荷,转移和读取 犬类参考可替换代币。 输出与 Rust CLI 字节相同(见 投射-射入.md) (中文(简体) ).

import { createClient, deployBoingToken, transferBoingToken, getBoingTokenBalance, hexToBytes } from '@boing-network/boing-sdk';

const client = createClient('https://testnet-rpc.boing.network');
const seed = hexToBytes(process.env.BOING_SECRET_HEX!); // 32-byte Ed25519 seed; never hard-code or commit it

const { tokenHex, deployerHex } = await deployBoingToken(client, seed, {
  symbol: 'TKN',
  name: 'My Token',
  initialSupply: 1_000_000n, // one-time mint_first at nonce + 1 (fixed supply)
});
await transferBoingToken(client, seed, { tokenHex, toHex: '0x…', amount: 250_000n });
console.log(await getBoingTokenBalance(client, tokenHex, deployerHex));

过 dryRun: true (和 nonce获取 { txId, signedHex } 不提交。 未签名的构建者( U)buildBoingTokenDeployTransaction, (中文(简体) ), buildBoingTokenMintTransaction, (中文(简体) ), buildBoingTokenTransferTransaction与 signTransactionInputWithSigner 或者钱包.

原生AMM池 (镜像) boing pool(中文(简体) )

创建、资助、交换并保护滑行,并读取本地常量产品池(templates v1.v7)。 与 Rust CLI 字节相同;见 天然-阿姆-CLI.m.d,包括 拘留说明 (存款和互换输入在v1.v7中是只分类账).

import { createClient, createBoingPool, addBoingPoolLiquidity, swapBoingPool, getBoingPoolState, hexToBytes } from '@boing-network/boing-sdk';

const client = createClient('http://127.0.0.1:8545');
const seed = hexToBytes(process.env.BOING_SECRET_HEX!);
const { poolHex } = await createBoingPool(client, seed, { version: 7, feeBps: 30n });
await addBoingPoolLiquidity(client, seed, { poolHex, amountA: 10_000n, amountB: 40_000n });
await swapBoingPool(client, seed, { poolHex, direction: 'a-to-b', amountIn: 1_000n, slippageBps: 50n });
console.log(await getBoingPoolState(client, poolHex));

提交交易

节点预期 六进制编码的bincode 序列化 SignedTransaction。编码匹配 Rust boing-primitives (宾码1.3);见 (原始内容存档于2017-10-26) (英语). BOING-SING-TRANSACTION-ENCDING.md。 。 。 .

选项 :

  1. 类型脚本( 节点或捆绑器) ——用32字节的Ed25519密钥构建+标志:
import {
  createClient,
  fetchNextNonce,
  buildTransferTransaction,
  signTransactionInput,
} from '@boing-network/boing-sdk';

const client = createClient('http://localhost:8545');
const senderHex = '0x' + '<64-hex of public key>';
const secret32 = new Uint8Array(32); // your signing seed / secret key bytes
const nonce = await fetchNextNonce(client, senderHex);
const tx = buildTransferTransaction({
  nonce,
  senderHex,
  toHex: '0x' + '<64-hex recipient>',
  amount: 1n,
});
const signedHex = await signTransactionInput(tx, secret32);
await client.simulateTransaction(signedHex);
await client.submitTransaction(signedHex);
  1. 插入钱包 —— 说 boing_sendTransaction 编号 : boing_signTransaction 内 波音快车 (单位:千美元)弹出-弹出-弹出. md) (中文(简体) ).

  2. 粗口线 —— 说 cargo run -p boing-cli -- … 为本地 dev.

  3. 自定义签名符 —— 说 signTransactionInputWithSigner(tx, async (hash) => …) (必须返回64字节 Ed25519 签名于 hash) (中文(简体) ).

议定书质量保证: 合同部署情况在混合体检查(boing_qa) (中文(简体) ). 使用 qaCheck 在从钱包中提交和有目的部署类型之前。 见 质量-保险-网络.md。 。 。 .

dApp 核对表 : (原始内容存档于2018-09-26) (英语). Boing-Dapp-Integration.md。 。 。 .

见 RPC-API-SPEC.md (中文(简体) ), (中文(简体) ), 贝鲁特-罗马地图,以及 (原始内容存档于2013-10-12) (中文(简体) ). Browing-VM-Capability-Pality-ROADMAP.md。 。 。 .

模拟 + 访问列表 → 提交(P4)

使用 submitTransferWithSimulationRetry, (中文(简体) ), submitContractCallWithSimulationRetry,或 submitDeployWithPurposeFlow 因此,节点可以扩大 access_list 何时 boing_simulateTransaction 返回时 access_list_covers_suggestion: false (出现数) suggested_access_list 通过 mergeAccessListWithSimulation) (中文(简体) ).

import {
  createClient,
  submitTransferWithSimulationRetry,
  explainBoingRpcError,
  senderHexFromSecretKey,
  hexToBytes,
} from '@boing-network/boing-sdk';

const client = createClient(process.env.BOING_RPC_URL ?? 'http://127.0.0.1:8545');
const secret = hexToBytes(process.env.BOING_SECRET_HEX!); // 0x + 64 hex
const senderHex = await senderHexFromSecretKey(secret);

try {
  const { tx_hash, lastSimulation, attempts } = await submitTransferWithSimulationRetry({
    client,
    secretKey32: secret,
    senderHex,
    toHex: process.env.BOING_TO_HEX!,
    amount: 10n,
  });
  console.log({ tx_hash, gas: lastSimulation.gas_used, attempts });
} catch (e) {
  console.error(explainBoingRpcError(e));
}

部署路径运行 boing_qaCheck 首先是:; reject 掷出 BoingRpcError 与 isQaRejected打开 submitTransaction捕获 BoingRpcError mempool QA (中文(简体) )- 32050号),游泳池(-32051号)和池盖(-32054..-32056 (英语)) (中文(简体) ). 代码参考 : BOING-RPC-ERROR-CODES-FOR-DAPPS.md 页面存档备份,存于互联网档案馆。 。 。 .

教义脚本 : 实例/内在-协助-辅导 (单位:千美元)transfer, (中文(简体) ), contract-call, (中文(简体) ), deploy-minimal) (中文(简体) ).

API 添加( 交易流量)

  • senderHexFromSecretKey(secret32) - 从 AccountId 签种子的六分.
  • submitTransferWithSimulationRetry, (中文(简体) ), submitContractCallWithSimulationRetry, (中文(简体) ), submitDeployWithPurposeFlow 看到了吗 submitFlow.ts。 。 。 .
  • SimulationFailedError ——没有访问列表重试路径的模拟失败.
  • explainBoingRpcError(e) ——人可读取的字符串 BoingRpcError 和QA池码.

测试

cd boing-sdk && npm install && npm test

黄金向量被绑住 cargo run -p boing-primitives --example dump_bincode。 。 。 .

计划

版本与发布记录

@boing-network/boing-sdk 共发布 17 个版本,首次发布于 2026/10/24;过去 12 个月发布了 17 个版本。

版本发布日期距今
0.5.40latest2026/11/062 天前
0.5.392026/11/053 天前
0.5.382026/10/2514 天前
0.5.362026/10/2414 天前
0.5.352026/10/2414 天前
0.5.342026/10/2414 天前

关于 @boing-network/boing-sdk 的常见问题

@boing-network/boing-sdk 是什么?

无缝SDK 用于建于波音网络

如何安装 @boing-network/boing-sdk?

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

@boing-network/boing-sdk 支持 TypeScript 吗?

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

@boing-network/boing-sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@boing-network/boing-sdk 需要什么版本的 Node.js?

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

@boing-network/boing-sdk 可以商用吗?

@boing-network/boing-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@boing-network/boing-sdk 的下载量有多少?

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

@boing-network/boing-sdk 还在维护吗?

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