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

阅读英文版

appdevmodulesm2-concept-translation

概念对照表

以太坊概念到 Canton 等价物的完整映射

遇到熟悉术语需查 Canton 对应物时,可用本页作速查。

核心协议概念

以太坊Canton关键差异
BlockchainSynchronizer协调但不存储状态
Block无直接对应交易单独排序;参与者只收到相关视图
NodeValidator / Participant只存托管 Party 数据
Global stateDistributed state无全局视图;每 Party 有自己的视图
FinalityConfirmation确认后确定性终结
Reorg不适用Canton 无链重组

身份与账户

以太坊Canton关键差异
EOA (Address)Party显式授权语义
Private keyParty keys可在验证者本地或外部持有
msg.senderController编译期声明,非运行时
Contract addressContract ID唯一标识,非由部署者派生
ENS nameCanton Name Service (CNS)人类可读的 Party 标识

Party 与地址深入对比

flowchart TB
    subgraph Ethereum
        A1[Address: 0x1234...]
        A2[Derived from public key]
        A3[No on-chain creation cost]
        A4[Anonymous by default]
    end

    subgraph Canton
        B1["Party: alice::fingerprint"]
        B2[Registered with validator]
        B3[Creates state on validator]
        B4[Identity known to validator]
    end

含义:

  • 不要像以太坊地址那样随意创建 Party
  • 创建 Party 需与验证者交互
  • Party 与以太坊地址的「假名性」不同

智能合约概念

以太坊Canton关键差异
Smart contractTemplateDaml 定义类型与 Choice
Contract instanceContract不可变;变更即新建
FunctionChoice类型化且带授权
Constructorcreate从模板创建合约
Storage variablesContract fields实例内字段不可变
ABIDaml types类型安全接口

状态模型对比

以太坊:可变状态mapping 原地修改。

Canton:不可变合约 — Choice 归档当前实例并 create 新实例。

方面以太坊Canton
修改更新存储归档旧、创建新
历史隐含于状态转移合约生命周期显式
原子性按交易按交易
回滚revert协议层处理

交易概念

以太坊Canton关键差异
TransactionTransaction / Command隐私保护
Transaction hashTransaction ID唯一标识
GasTrafficCanton Coin 支付
Gas priceTraffic cost按大小与复杂度
Nonce不需要Canton 处理排序
ReceiptCompletion命令执行确认

交易可见性

以太坊Canton
所有节点可见完整交易交易拆分为视图
人人见发送方、接收方、数据每 Party 只见自己的视图
公开 mempool加密提交
区块浏览器展示一切浏览器只展示你的交易

授权概念

以太坊Canton关键差异
msg.senderController编译期 vs 运行时
require()Signatory/controller 声明协议强制
OwnableSignatory 模式语言内置
Access controlObserver/controller显式可见性控制
Multi-sigMultiple signatories原生多方支持

事件与数据

以太坊Canton关键差异
EventsTransaction tree结构化动作记录
emit交易内隐式记录所有 create/archive 被记录
Indexed parametersContract fields经 Ledger API/PQS 查询
LogsActive Contract Set (ACS)可查询当前状态
eth_getLogsGetTransactionTrees历史交易数据

网络概念

以太坊Canton关键差异
MainNetCanton Network MainNet生产环境、真实价值
Testnet (Sepolia)DevNet / TestNet测试环境
Local (Hardhat/Anvil)LocalNet开发环境
RPC endpointLedger APIgRPC 或 JSON
Infura/AlchemyValidator service托管基础设施
Chain IDSynchronizer ID网络标识

环境对照

环境以太坊Canton
本地开发Hardhat, Anvil, GanacheLocalNet (Daml SDK)
共享测试Sepolia, GoerliDevNet(需赞助)
预生产SepoliaTestNet(需审批)
生产MainNetMainNet(完整入驻)

开发工具

以太坊Canton说明
SolidityDaml函数式 vs 命令式
Hardhat/Foundrydpm + daml build构建与测试
RemixVS Code + Daml 扩展IDE
ethers.js/web3.jsLedger API (gRPC/JSON)应用集成
MetaMaskWallet SDK用户钱包
EtherscanScan API网络浏览
The GraphPQS索引数据 SQL 查询

常见模式

以太坊模式Canton 等价
ERC-20Token Standard (CIP-0056)
ERC-721/ERC-1155dApp Standard (CIP-0103)
Proxy patternSmart Contract Upgrade (SCU)
Factory patternTemplate 实例化
Pull paymentsPropose/accept 模式
Access control listsObserver 列表
Pausable合约生命周期 Choice
Reentrancy guard不需要(顺序执行)

无法直接平移的概念

以太坊Canton 现实
Public by defaultPrivate by default
Any node can query any state只能查己方 Party 数据
Anonymous participationParty 有身份
Permissionless contract deployment包由验证者 vet
Flash loans不同执行模型
MEV/front-running交易加密,难度高得多

下一步

Canton 与以太坊隐私模型深入对比。 Daml 与 Solidity 编程模型。

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