完整文档页面(中文翻译)。文末附有来源说明。

阅读英文版

overviewlearnhow-transactions-work

交易如何工作

Canton 中的四步交易生命周期

Canton 上每笔交易都遵循四步生命周期:提交、排序与分发、验证与确认、提交(commit)。理解该流程有助于解释 Canton 如何在无需全局可见的前提下同时保证隐私与完整性。

四步流程

步骤 1:提交(Submit)

应用通过 Ledger API 向验证者发送命令。命令描述应发生的事——「创建该合约」或「在该合约上执行此 Choice」。验证者在本地解释 Daml,执行智能合约逻辑,生成交易树:命令导致的全部合约创建、归档与子交易集合。

提交方验证者将交易树加密为视图(views)。每个视图仅包含与特定利益相关方集合相关的交易片段。加密视图发送至同步器。

此阶段仅提交方验证者见过完整交易,其他 Party 与基础设施组件均无法读取明文。

步骤 2:排序与分发(Order and Distribute)

同步器的 Sequencer 接收加密视图,分配全局时间戳,并将各视图投递给托管相关 Party 的验证者。Sequencer 提供全序保证:所有验证者以相同顺序接收消息,避免冲突交易被不一致处理。

Sequencer 及同步器其余基础设施仅见加密数据。它们知道哪些验证者应收到哪些消息(基于路由信息),但无法读取交易内容。

各验证者只收到所需视图。未托管某子交易任何 Party 的验证者不会收到该子交易的任何信息。

步骤 3:验证与确认(Validate and Confirm)

收到视图的各验证者解密并验证:

  • 重放 Daml 逻辑,核对其部分交易结果是否与提交方声称一致
  • 检查授权 — 所需签字方是否齐全?执行方是否有权执行该 Choice?
  • 验证合约状态 — 被消费的合约是否仍活跃?

验证通过则向同步器 Mediator 发送确认;失败(例如合约已被并发交易归档)则发送拒绝。

验证者仅基于自身视图确认或拒绝,无需看到完整交易即可验证己方部分。

步骤 4:提交(Commit)

Mediator 收集收到视图的所有验证者的确认。达到所需阈值后,声明交易已提交,经 Sequencer 将结果发回各参与验证者。

各验证者将交易应用于本地账本:创建新合约、归档已消费合约、记录历史。提交命令的应用经 Ledger API 收到完成通知。

若任一必需验证者拒绝,Mediator 声明拒绝,不应用状态变更,提交方应用收到错误。

该设计为何重要

四步流程使 Canton 区别于传统区块链:

隐私不牺牲完整性。 同步器只处理加密数据,验证者只见己方视图,没有任何单方拥有全局交易视图。隐私由协议强制,而非应用层访问控制。

完整性无需全局复制。 各验证者独立验证己方部分,Mediator 汇总。效果等同于「人人验证一切」,但不暴露数据。

水平扩展。 验证者只处理涉及其托管 Party 的交易;新增验证者不增加既有验证者的验证负载,各节点工作量随自身交易量扩展,而非全网总量。

具体示例

Alice(在验证者 A)向 Bob(在验证者 B)转移资产:

  1. 提交 — Alice 的应用向验证者 A 发送 Transfer 命令。验证者 A 执行 Daml,生成归档 Alice 资产合约并为 Bob 创建新所有者的交易。验证者 A 加密两个视图:己方(归档)与验证者 B(创建)。

  2. 排序与分发 — Sequencer 为视图打时间戳,将 Alice 视图发给验证者 A、Bob 视图发给验证者 B,其他验证者无收包。

  3. 验证与确认 — 验证者 A 确认 Alice 授权转移且资产合约仍活跃;验证者 B 确认新合约格式正确且 Bob 为合法利益相关方。双方向 Mediator 确认。

  4. 提交 — Mediator 收到两份确认,声明提交,通知双方。验证者 A 归档旧合约,验证者 B 存储新合约,Alice 的应用收到成功。

全程同步器未见资产细节、转移金额,甚至除加密路由外不知 Alice 与 Bob 为参与方。

延伸阅读


本文由 CC Privacy Club 根据 Canton Network 官方文档(CC-BY-4.0)整理翻译,仅供学习;实现细节以官方最新版本为准。