宾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 密钥( 如果缺少 ) :
- 打开 npmjs.com (英语) 作为可以出版的用户
@boing-network/boing-sdk,创建 自动化 指使符(或颗粒式指使符,并在该包上发布;自动化在CI中避免交互的OTP). - 在那个
Boing-Network/boing.network重传 : 设置 – 秘密和变量 – 动作 – 新的仓库秘密。 。 。 . - 名称 :
NPM_TOKEN。数值: npm 符号(npm_…) (中文(简体) ). - 未经出版的烟检: 动作 – 发布 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号 页:1boing_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 根;diagnosisjSON 中解释 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页:10xebf9f019…3dd8仅作为历史CANONICAL_BOING_TESTNET_LINKED_NFT_TOKEN_REGISTRY_V1_HEX页:1buildLinkedNftTokenProjectPack(联合部署+索赔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需要签名QaPoolVotetx) (韩语)getNetworkFeePolicy(), (中文(简体) ),operatorApplyFeePolicy(json)- 本土收费/国库税faucetRequest(hexAccountId)——仅测试网
- RPC探测器 —— 说
- 波音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。 。 。 .
选项 :
- 类型脚本( 节点或捆绑器) ——用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);
-
插入钱包 —— 说
boing_sendTransaction编号 :boing_signTransaction内 波音快车 (单位:千美元)弹出-弹出-弹出. md) (中文(简体) ). -
粗口线 —— 说
cargo run -p boing-cli -- …为本地 dev. -
自定义签名符 —— 说
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。 。 。 .
计划
- CLI自动完成,合同模板. 见 发展与加强。 。 。 .