@canton-network/core-acs-reader

中文文档
1.25.0发布于 2026/11/06Apache-2.0TypeScriptESM + CJS近 30 天下载 32.1万

从Canton分类账中获取主动合同集数据的阅读器,为特定过滤器提供检索和处理主动合同信息的功能.

中文使用文档
文档目录18 节
  1. 概览
  2. 安装
  3. 快速启动
  4. 核心概念
  5. ACS 读取器
  6. 选项
  7. 快取配置
  8. 用法实例
  9. 基本合同检索
  10. 与 JavaScript 合同合作
  11. 预留访问
  12. 原始数据访问
  13. 持续获取
  14. API 参考
  15. ACSReader
  16. 配置
  17. 缓存选项( 不适用于页形模式)
  18. 最佳做法

@ canton- network/ 核心读取器

概览

ACS阅读器总结了从Canton分类账中查询和管理现行合同的复杂性. 它既提供标准访问模式,也提供分层访问模式,具有智能缓存,以尽量减少网络间接费用并改进应用性能.

安装

pnpm add @canton-network/core-acs-reader

快速启动

import { ACSReader } from '@canton-network/core-acs-reader'
import { ledgerProvider } from './your-ledger-setup'

// Initialize the reader
const reader = new ACSReader(ledgerProvider)

// Read active contracts with filtering
const contracts = await reader.read({
    templateIds: ['templateId'],
    parties: ['partyId'],
    offset: 0,
})

// Get JavaScript contract objects (convenience method)
const jsContracts = await reader.readJsContracts({
    templateIds: ['templateId'],
    parties: ['partyId'],
})

核心概念

ACS 读取器

这个 ACSReader 类是查询活动合同的主要接口。 它维持内部缓存,并提供原始和已处理的合同数据方法.

选项

标准选项 (单位:千美元)AcsOptions:

  • offset: 编辑器被从查询( 如果省略, 自动解决)
  • templateIds: 要过滤的模板标识组
  • interfaceIds: 要过滤的接口 ID 阵列
  • parties: 需要过滤的政党身份序列
  • filterByParty: 启用基于党派的过滤
  • limit: 要返回的最大结果数
  • continueUntilCompletion: 继续取取直到所有数据被取回

已放置选项 (单位:千美元)PaginatedAcsOptions: 与标准选项相同,加:

  • pageToken: 用于获取特定页面
  • maxPageSize: 每页合同的最大数目

快取配置

配置缓存行为 ACSCacheCollectionOptions数字 :

const reader = new ACSReader(ledgerProvider, {
    maxEventsBeforePrune: 1000, // Events before compaction
    safeOffsetDeltaForPrune: 100, // Offset window to preserve
})

用法实例

基本合同检索

const reader = new ACSReader(ledgerProvider)

// Fetch all active contracts
const allContracts = await reader.read({})

// Filter by template ID
const tokenContracts = await reader.read({
    templateIds: ['templateId'],
})

// Filter by multiple parties
const partyContracts = await reader.read({
    parties: ['partyId', 'partyId2'],
    filterByParty: true,
})

与 JavaScript 合同合作

这个 readJsContracts 方法以更方便使用的格式返回合同数据:

const jsContracts = await reader.readJsContracts({
    templateIds: ['templateId'],
    parties: ['partyId'],
})

// Each contract includes:
// - All fields from createdEvent
// - synchronizerId
jsContracts.forEach((contract) => {
    console.log(contract.contractId, contract.templateId)
    console.log(contract.createArgument)
})

预留访问

对于大型数据集,请使用相接读取器:

const reader = new ACSReader(ledgerProvider)

// Fetch first page
const firstPage = await reader.paginated.read({
    templateIds: ['templateId'],
    maxPageSize: 100,
})

// Fetch next page using token
const nextPage = await reader.paginated.read({
    templateIds: ['templateId'],
    pageToken: firstPage.nextPageToken,
    maxPageSize: 100,
})

// Or fetch all pages at once
const allPages = await reader.paginated.read({
    templateIds: ['templateId'],
    continueUntilCompletion: true,
})

原始数据访问

获取原始合同答复而无需缓存:

const reader = new ACSReader(ledgerProvider)

// Standard raw access
const rawContracts = await reader.raw.read({
    templateIds: ['templateId'],
})

// Paginated raw access
const rawPage = await reader.paginated.raw.read({
    templateIds: ['templateId'],
    maxPageSize: 100,
})

持续获取

在一个呼叫中获取所有可用的数据 :

const contracts = await reader.read({
    templateIds: ['templateId'],
    continueUntilCompletion: true,
    limit: 200, // Batch size for each query
})

API 参考

ACSReader

阅读现行合同的主要课程.

构造器

new ACSReader(
  ledger: AbstractLedgerProvider,
  cacheOptions?: ACSCacheCollectionOptions
)

配置

缓存选项( 不适用于页形模式)

interface ACSCacheCollectionOptions {
    // Compact history after this many events
    maxEventsBeforePrune?: number

    // Preserve events within this offset window
    safeOffsetDeltaForPrune?: number
}
  • 设定 maxEventsBeforePrune 改为 0 用于立即收缩(单调增减效率)
  • 设定 safeOffsetDeltaForPrune 改为 0 以压缩当前窗口外的所有内容

最佳做法

  1. 重新使用阅读器实例: 创建一个读取器实例并重新使用,以便从缓存中受益
  2. 提前过滤: 应用模板和政党过滤器以减少数据传输和处理
  3. 使用旁观: 对于大型数据集,使用相接访问控制内存使用
  4. 配置缓存: 基于查询模式的 Tune 缓存设置
  5. 处理偏移:让读者自动解决抵消,除非您需要特定的时间点

版本与发布记录

@canton-network/core-acs-reader 共发布 41 个版本,首次发布于 2026/03/04;过去 12 个月发布了 41 个版本。

版本发布日期距今
1.25.0latest2026/11/063 天前
1.24.02026/10/2910 天前
1.20.2-backport.3bugfix2026/10/2613 天前
1.23.02026/10/2317 天前
1.22.02026/10/1227 天前
1.20.2-backport.12026/10/031 个月前

关于 @canton-network/core-acs-reader 的常见问题

@canton-network/core-acs-reader 是什么?

从Canton分类账中获取主动合同集数据的阅读器,为特定过滤器提供检索和处理主动合同信息的功能.

如何安装 @canton-network/core-acs-reader?

在项目目录运行 npm install @canton-network/core-acs-reader,或使用 pnpm add / yarn add / bun add。

@canton-network/core-acs-reader 支持 TypeScript 吗?

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

@canton-network/core-acs-reader 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@canton-network/core-acs-reader 可以商用吗?

@canton-network/core-acs-reader 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@canton-network/core-acs-reader 的下载量有多少?

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

@canton-network/core-acs-reader 还在维护吗?

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