@fairmint/canton-node-sdk

中文文档
0.0.277发布于 2026/11/14MITTypeScriptCommonJS构建来源已验证近 30 天下载 3万

州节点 SDK

中文使用文档
文档目录7 节
  1. 开发者文档
  2. 安装
  3. 按接口读取分类账
  4. 阅读为每个政党
  5. 通过 CIP-0103 钱包移动动作
  6. 仓库设置和检查
  7. 本地网络( 由 @fairmint/canton-dev-tools (中文(简体) )

州-节点- sdk

用于Canton Network节点的低级TypeScript SDK(Ledger JSON API,验证器API,Scan API).

开发者文档

公众 GitHub 维基百科 是犬科指南 用于配置、API边界、外部签名、LocalNet、示例和贡献。 这个 公开 src/index.ts 定义 支持的软件包表面; 使用已安装的宣告和公开 examples/ 财务报告和审定财务报表 test/ 准确方法,请求 形状和错误行为.

安装

npm install @fairmint/canton-node-sdk
import { Canton } from '@fairmint/canton-node-sdk';

async function main(): Promise<void> {
  const canton = new Canton({ network: 'localnet' });
  const version = await canton.ledger.getVersion();
  console.log(version);
}

main().catch((error: unknown) => {
  console.error(error);
  process.exitCode = 1;
});

按接口读取分类账

getActiveContracts, (中文(简体) ), subscribeToUpdates, (中文(简体) ), getUpdateById 财务报告和审定财务报表 getUpdateByOffset 接受 interfaceIds 过滤器,使用 includeInterfaceView 财务报告和审定财务报表 includeCreatedEventBlob 返回每个 合同的界面视图和创建-事件 blob. streamActiveContracts 读取大型活动 合同设定时没有将其收藏在记忆中:当物品运抵时,它会产生这些物品,施加回压 对参与者,如果连接在快照完成前关闭,则丢出。 内容 activeAtOffset 转至 subscribeToUpdates 作为 beginExclusive。见 examples/stream-active-contracts.ts。 。 。 .

阅读为每个政党

政党名单是一个过滤器:它错过的政党,如后来分配的政党,被读作没有 已存在。 构建事件格式的每个读取也都使用 anyParty: true 而不是政党名单 (单位:千美元)subscribeToUpdates, (中文(简体) ), getUpdateById, (中文(简体) ), getActiveContracts, (中文(简体) ), streamActiveContracts, (中文(简体) ), getEventsByContractId,则 buildEventFormat 编号 : buildTransactionFormat 编号 : buildUpdateFormat 用于 getUpdateByOffset 财务报告和审定财务报表 getUpdatesPage,其任何缔约方参数为: AnyPartyEventFormatBuilderParams 及其交易和更新变体)。 它发出 filtersForAnyParty,它涵盖每个参与者东道方,需要用户的 CanReadAsAnyParty 对; assertCanReadAsAnyParty(client) 检查一下,扔出一个 MissingUserRightError 命名用户及其拥有的权利。 拒绝类型 anyParty 合并 parties 或者说 readAs,则读数在运行时拒绝组合。 无 anyParty每一个读取都像以前一样.

对于一个档案 分类账说, getRawUpdatesPage 财务报告和审定财务报表 subscribeToRawUpdates 返回每个 页、页项或框架作为与会者发送的确切文本及其 JSON.parse 值,无 计划正常化,但如果解析会改变一个数字,则失败(例如: JavaScript 无法精确地持有)或放下重复的密钥. 存储 text 每个页面项目或框架; 重新序列化 json 重排整数键 溪流传递出各种各样的 (交易、改派、地形交易和抵消检查站) 顺序,应用后压,以理性结束 token-refresh 在访问符到期前,以及 曝光情况 lastOffset 继续. subscribeToRawCompletions 读取一个用户的完成 同样的方式;它要求明确 userId 和一无所有 parties 列表,与 Ledger API 一样. 见 examples/read-any-party.ts。 。 。 .

通过 CIP-0103 钱包移动动作

Wallets 数字资产工具登记处文书上的持有人行动 通过任何CIP-0103(Canton dApp API)钱包提供者:列表控股,薄荷出价,转让出价 和燃烧请求; 接受薄荷提议; 预览并发送传输; 接受、拒绝或撤回 转让要约; 请求烧伤; 并创建转让预先批准(实验性). 它代表了选择 来自 DA 公共事业 API 的可注入 fetch,只与钱包交谈 通过CIP-0103(getPrimaryAccount, (中文(简体) ), ledgerApi, (中文(简体) ), prepareExecuteAndWait因此,没有钱包SDK是 参与.

它是浏览器安全:导入 @fairmint/canton-node-sdk/build/src/wallets/index.js,没有负载 sDK的节点依赖。 软件包根也作为 Wallets 名称空间.

import {
  createDaUtilitiesClient,
  createTokenWallet,
  type Cip103Provider,
} from '@fairmint/canton-node-sdk/build/src/wallets/index.js';

async function send(provider: Cip103Provider, receiver: string): Promise<void> {
  const tokens = createTokenWallet({
    provider, // any connected CIP-0103 provider
    registry: createDaUtilitiesClient({ network: 'devnet' }),
  });
  const instrumentId = { admin: 'registrar::1220...', id: 'XMPL' };
  const kind = await tokens.previewTransfer({ receiver, instrumentId, amount: '10' });
  await tokens.transfer({ receiver, instrumentId, amount: '10', expectedKind: kind });
}
  • 写作从不重试. A 类 WalletSubmitError 已经 outcome rejected-by-user (CIP-0103 4001) (中文(简体) ), failed (3-2003,或钱包在接受之前被拒绝的请求)或 unknown (届会) 4100/4900/4901 在提交、超时、其他任何文件时出错: 在钱包之前检查 重新报到.
  • 每个令牌钱包一次写一次: 开始写一次, 正在写一次被拒绝 busy 在阅读之前,所以两个写作 从来没有选择相同的控股.
  • 控股只有在登记员签名时才算数 只有在信任时才提议和请求 登记提供商签名。 默认情况下,登记员必须是自己的提供者;对于登记员而言 由另一个供应商通行证服务 trustedProviders 改为 createDaUtilitiesClient任何合同 其他供应商从未被列入清单或对其采取行动.
  • 数量是精确的十进制( 在 Daml 内部, 最多10个位数) Numeric 10);选择投入 决了. requirePreapproval: true 仅在接收器预先批准时发送 转让,以及 expectedKind 拒绝自预览以来类型已改变的传输 .

仓库设置和检查

git submodule update --init --depth 1 libs/splice
git submodule update --init --recursive libs/cn-quickstart
npm install
npm run fix
npm test
npm run build

本地网络( 由 @fairmint/canton-dev-tools(中文(简体) )

本地网络生命周期和共享测试帮助者生活在 @fairmint/[email protected] (见 联合国 职责. md) (中文(简体) ). 此 SDK 不发布本地网络 CLI 或 scripts/localnet-cloud.sh。 。 。 .

npm install   # installs @fairmint/canton-dev-tools as an exact-pinned devDependency
npm run localnet:start
npm run localnet:readiness   # alias: localnet:smoke
npm run localnet:teardown    # alias: localnet:stop

# Or call the Dev Tools CLI directly:
npx @fairmint/canton-dev-tools start
npx @fairmint/canton-dev-tools readiness
npx @fairmint/canton-dev-tools teardown

融合帮助者:

import {
  buildIntegrationTestClientConfig,
  getLocalnetParticipantAdminLedgerClient,
} from '@fairmint/canton-dev-tools/testing';

见 文档/包装边界.md npm 软件包所发布的内容 仅使用 CI 表面npm run check:package-artifacts) (中文(简体) ).

版本与发布记录

@fairmint/canton-node-sdk 共发布 247 个版本,首次发布于 2025/07/17;过去 12 个月发布了 145 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.0.277latest2026/11/14今天
0.0.2762026/11/121 天前
0.0.2752026/11/113 天前
0.0.2742026/11/103 天前
0.0.2732026/11/104 天前
0.0.2722026/11/068 天前

关于 @fairmint/canton-node-sdk 的常见问题

@fairmint/canton-node-sdk 是什么?

州节点 SDK

如何安装 @fairmint/canton-node-sdk?

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

@fairmint/canton-node-sdk 支持 TypeScript 吗?

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

@fairmint/canton-node-sdk 支持 ESM 还是 CommonJS?

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

@fairmint/canton-node-sdk 需要什么版本的 Node.js?

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

@fairmint/canton-node-sdk 可以商用吗?

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

@fairmint/canton-node-sdk 的下载量有多少?

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

@fairmint/canton-node-sdk 还在维护吗?

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