跳到主要内容

Canton 网络介绍

Rocky 交易所基于 Canton Network 构建链上结算与代币(MTC)发行能力。本文介绍 Canton 的核心概念、特性,以及 Rocky 在其中的角色定位。


一、什么是 Canton Network

Canton Network 是一个面向受监管金融机构的隐私优先公链网络,由 Digital Asset 主导设计,使用 Daml 智能合约语言。

与以太坊等"全局共享账本"不同,Canton 的核心特点是:

维度以太坊 / SolanaCanton Network
数据可见性所有数据公开每个合约只对相关方可见(默认隐私)
状态同步全网共识同一份账本多个 Synchronizer(同步域)各自仲裁,互操作时跨域结算
智能合约模型EVM 账户模型Daml 合约模型(多方签名 + 显式 stakeholder)
监管友好性完全公开难合规内建隐私+可审计,金融机构友好

Canton 适合以下场景:

  • 受监管资产的代币化(股票、债券、基金、稳定币)
  • B2B 链上结算(清算所、托管行、做市商之间)
  • 需要可证明结算 + 数据隔离的应用(如 Rocky 这种交易所)

二、核心概念 (Core Concepts)

2.1 Party(参与方)

Canton 中最基本的身份单元。一个 Party 可以是个人用户、机构、应用、托管者等。Party 有一个唯一标识符:

alice-test::1220ca15423a1b049bf8e84132360f246057aa18f5e9e36a77db535b75bd287cceff
^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
party hint participant fingerprint suffix
  • Party hint:人类可读前缀(注册时由 app 指定,如 alice-test
  • Suffix:所属 Participant 节点的密钥指纹(每个 validator 不同)

Rocky 的每个注册用户都对应一个 Canton Party,由 Validator API 在注册时分配。

2.2 Contract(合约)

Daml 合约是一个带有 stakeholder 列表的数据结构。每个合约必须明确声明:

  • Signatory(签署方):必须对合约创建和归档共识的 party
  • Observer(观察方):可以读取但不能修改的 party
  • Controller(控制方):可以行使 choice / action 的 party
template MiningReward
with
exchange : Party -- signatory: Rocky 平台 party
miner : Party -- observer: 获奖用户 party
rewardAmount : Decimal
orderHash : Text
where
signatory exchange
observer miner

choice Claim : ContractId Holding
controller miner
do
...

关键性质:合约只对其 stakeholder 可见。同一 Synchronizer 上的其他 party 不会看到这份合约。这就是 Canton 的"默认隐私"。

2.3 Synchronizer(同步域)

类似以太坊的"区块链"概念,但多个 Synchronizer 可以共存。每个 Synchronizer:

  • 对其内部的合约状态变更进行排序与共识
  • 由一组 Sequencer + Mediator 节点运行(可能是单独运营商,也可能是去中心化的)
  • 通过 Canton Network Protocol 与其他 Synchronizer 互操作

Rocky DevNet 当前接入的是 Splice / Global Synchronizer(社区共享的公共同步域)。

2.4 Participant Node(参与方节点)

Party 不能直接"在链上"。Party 必须由某个 Participant 节点托管,Participant 是真正与 Synchronizer 通信的角色。

User (Web)
↓ Ledger API
Participant Node ←→ Synchronizer ←→ Participant Node
↓ ↓
Party "alice-test" Party "bob-test"

Rocky 使用 Validator 模式:每个用户 party 都托管在 Rocky 的 Validator participant 上。

2.5 Validator

Validator = Participant + 钱包应用 + Auth0 接入。Splice 项目为应用提供的标准化 participant 部署模板。

Validator 的关键能力:

  • Party 分配POST /v0/admin/users 一次性创建 Daml User + 分配 Party
  • 代币管理:内置 wallet 视图,跟踪 party 持有的 Holding 合约
  • Auth0 接入:JWT → party 身份映射

Rocky 注册接口 POST /api/register 就是包装 Validator 的 POST /v0/admin/users,让前端不直接接触 Canton。


三、Canton 的隐私模型 (Privacy Model)

Canton 的隐私保护体现在三个层级:

  1. 合约级:每个合约的载荷只对 signatory + observer 可见
  2. Participant 级:Participant 只接收它托管 party 相关的合约(不存储与它无关的数据)
  3. Synchronizer 级:Synchronizer 只看到加密的 commitment(用于排序),看不到合约内容

举例:用户 Alice 在 Rocky 上完成一笔交易,链上写入:

  • TradeOrder 合约 — signatory: Rocky exchange + Alice — 只有 Rocky 和 Alice 可见
  • MiningReward 合约 — signatory: Rocky exchange,observer: Alice — 只有 Rocky 和 Alice 可见

Bob、其他用户、其他验证人、Splice Synchronizer 节点都无法看到这些数据。但 Synchronizer 仍然为这两份合约的状态变更提供排序保证 + 防止重复花费。


四、Rocky 在 Canton 中的角色

4.1 Party 角色划分

Party类型职责
app-provider平台 party持有合约模板的 admin 权限(如 MiningReward 的 signatory)
app-userParticipant operator托管所有终端用户 party
dso (Decentralized Synchronizer Operator)第三方运行 Splice/Canton Sync 域
<username>终端用户 party一次注册分配一个,受 app-user participant 托管

详细决策:参见仓库根目录的 party-model-decision.md

4.2 链上数据 vs 链下数据

并非所有交易动作都上链。Rocky 的设计是链下撮合 + 链上结算关键事件

数据存储位置原因
订单簿、撮合状态rocky-backend (Postgres)高频,链上不可行
用户钱包余额(USDC, CC)rocky-backend ledger.accounts高频更新
MTC 挖矿奖励Canton 链上 (MiningReward 合约)不可抵赖、可被外部审计
Daml 用户身份(Party)Canton Participant跨应用复用

4.3 用户视角的链上交互

每笔成功的 perp 交易触发 POST /api/perp/rewards/mint,由 Rocky 的 app-provider party 在 Canton 上创建 MiningReward 合约,把 Alice 作为 observer。Alice 之后可以通过 MiningReward.Claim choice 把奖励转为 Holding(标准代币合约),并最终转账或在 Splice 钱包中查看。


五、环境与部署 (Environments)

Rocky 当前部署在 Canton DevNet

环境URL 示例用途
LocalNethttp://canton:7575本地开发,单 participant 不连外网
DevNethttps://canton.network.global公开测试网,Splice 社区共享
MainNet(planned)生产环境

DevNet 的 party id suffix 是固定值(写在 PARTY_ID_SUFFIX 环境变量),所有用户共享同一 participant 指纹。


六、了解更多 (Further Reading)