Circle Arc 代码分析

调研日期: 2026-05-13
主要来源: GitHub circlefin/ org(公开开源 Apache-2.0)
克隆位置: ark/repos/


1. 仓库地图

Circle 把 Arc 完整开源在 circlefin/ GitHub org 下。共 87+ 公开仓库,与 Arc 直接相关的核心仓库:

仓库 角色 状态
circlefin/arc-node L1 节点本身(核心仓库) alpha, undergoing audits
circlefin/malachite 共识引擎(Tendermint BFT in Rust) alpha
circlefin/malachite-mempool Mempool 实现 active
circlefin/malaketh-turbo Malachite + 增强 ETH 执行客户端 active
circlefin/malaketh-layered Malachite 作为 ETH 执行客户端共识(via Engine API) active
circlefin/arc-remote-signer AWS Nitro Enclaves 签名服务 active
circlefin/arc-nanopayments 无 gas USDC 微支付 sample sample
circlefin/arc-p2p-payments P2P 支付 sample sample
circlefin/arc-fintech 多链国库 sample sample
circlefin/arc-multichain-wallet USDC 跨链钱包 sample sample
circlefin/arc-commerce USDC 商业支付 sample sample
circlefin/arc-defi-lending-and-borrowing DeFi 借贷 sample(cirBTC 抵押借 USDC) sample
circlefin/arc-stablecoin-fx StableFX swap sample sample
circlefin/arc-prediction-markets UMA 协议预测市场 sample sample
circlefin/arc-escrow AI 验证托管工作流 sample sample
circlefin/skills Circle 开源的 AI 辅助开发 skills active

旁支但相关的 Circle 生态仓库:
- circlefin/evm-cctp-contractscirclefin/aptos-cctpcirclefin/sui-cctpcirclefin/stellar-cctpcirclefin/solana-cctp-contractscirclefin/starknet-cctpcirclefin/cctp-go
- circlefin/stablecoin-evmcirclefin/stablecoin-nearcirclefin/stablecoin-xlmcirclefin/noble-fiattokenfactory
- circlefin/evm-gateway-contractscirclefin/solana-gateway-contracts
- circlefin/evm-xreserve-contractscirclefin/evm-cpn-contracts(Circle Payments Network)
- circlefin/hyperevm-circle-contractscirclefin/buidl-wallet-contractscirclefin/modularwallets-web-sdk
- circlefin/circle-bridge-kit-transfercirclefin/circle-cctp-crosschain-transfer
- circlefin/refund-protocol(链上支付争议合约)
- circlefin/chainmail(链上认证邮件 —— 很有意思的实验)


2. arc-node 详细结构

2.1 顶层布局

arc-node/
├── Cargo.toml          # Workspace root (resolver = "2", edition 2024, Rust 1.91+)
├── Makefile
├── README.md
├── arcup               # 工具脚本
├── assets/             # Genesis 文件等
├── buf.yaml            # Protobuf 配置
├── contracts/          # Solidity 合约(系统级)
│   ├── src/
│   │   ├── Denylist.sol
│   │   ├── Precompiles.sol
│   │   ├── batch/Multicall3From.sol
│   │   ├── call-from/ICallFrom.sol
│   │   ├── memo/Memo.sol
│   │   ├── pq/IPQ.sol
│   │   ├── protocol-config/ProtocolConfig.sol
│   │   ├── proxy/AdminUpgradeableProxy.sol
│   │   └── validator-manager/
│   │       ├── PermissionedValidatorManager.sol
│   │       └── ValidatorRegistry.sol
│   └── lib/{forge-std, openzeppelin-contracts, openzeppelin-contracts-upgradeable}
├── crates/             # Rust workspace (25 crates)
├── deployments/
├── docker-bake.hcl
├── docs/
│   ├── ARCHITECTURE.md
│   ├── installation.md
│   ├── running-an-arc-node.md
│   ├── monitoring.md
│   └── PROFILING.md
├── foundry.toml
├── hardhat.config.ts
├── package.json        # Node.js dependencies for contracts
├── rust-toolchain.toml
├── scripts/
└── tests/

2.2 25 个 Rust Crates 完整清单

Crate 作用
node 主执行节点(arc-node-execution
malachite-app 共识应用(arc-node-consensus
malachite-cli 共识 CLI
eth-engine Engine API 客户端(共识 ↔ 执行通信)
evm EVM 自定义层(base fee、precompile 集成)
evm-node EVM 节点封装
evm-specs-tests EVM 规范测试
precompiles 5 个自定义 precompiles
execution-config 执行层配置(含 hardforks)
execution-payload Payload 构建器
execution-txpool 交易池(自定义验证)
execution-validation 区块验证
execution-e2e 端到端执行测试
consensus-db 共识数据库
types 共享类型
shared 共享工具
signer 本地签名器
remote-signer 远程签名器(AWS Nitro)
snapshots 链快照工具
engine-bench 引擎基准测试
mesh-analysis 网络拓扑分析
quake 内部工具(test framework macro?)
spammer 压力测试工具
version 版本信息
test/framework + test/checks 测试框架

2.3 工程实践亮点

Cargo.toml 顶层 lints:

[workspace.lints.clippy]
arithmetic_side_effects = "deny"  # 拒绝所有可能的整数溢出/下溢
cast_possible_truncation = "deny" # 拒绝可能截断的类型转换
unwrap_used = "deny"              # 禁止 .unwrap(panic)

→ 这是 金融级 Rust 编码规范。意味着 Circle 把 Arc 当作生产关键基础设施处理,不是 PoC 玩具。

工具链:
- Rust 1.91+
- Rust 2024 edition
- Foundry + Hardhat 双 Solidity 工具
- Protocol Buffers (buf)
- TypeScript + Node.js (for Hardhat)
- Yarn


3. 五个 Precompiles 细节

3.1 NATIVE_COIN_AUTHORITY (0x1800...0000)

源文件:crates/precompiles/src/native_coin_authority.rs

功能:
- mint(to, amount) — 铸造原生币(USDC 上链表示)
- burn(from, amount) — 销毁
- transfer(from, to, amount) — 转账
- totalSupply — 总供应

Gas 成本(来自源码注释):
- Mint: 15,581 gas(pre-Zero5 hardfork)
- 各操作内部使用 SSTORE/SLOAD 2100/2900 gas 价格

调用者限制:ALLOWED_CALLER_ADDRESS = NATIVE_FIAT_TOKEN_ADDRESS
→ 只有 Native Fiat Token 合约(USDC on Arc)可以调用此 precompile 的 mint/burn

事件:
- NativeCoinMinted(to, amount) — 2 topics, 32 bytes data
- NativeCoinBurned(from, amount) — 2 topics
- NativeCoinTransferred(from, to, amount) — 3 topics

存储:使用 ERC-7201 storage slots,硬编码 storage keys(1, 2 等)

设计含义:USDC 不是普通 ERC-20,而是与 precompile 深度绑定的「原生币」(native coin)。这是与所有其他 EVM 链(包括 Plasma、Tempo)的根本差异——其他链上的稳定币是普通合约 token,Arc 上的 USDC 是协议级一等公民。

3.2 NATIVE_COIN_CONTROL (0x1800...0001)

源文件:crates/precompiles/src/native_coin_control.rs

功能:
- 维护链级 denylisted[address] 映射
- addToBlocklist(address)
- removeFromBlocklist(address)
- isBlocklisted(address)

错误消息常量:BLOCKLISTED_ERROR_MESSAGE = "address is blocklisted"

设计含义:合规级链上 OFAC/AML 黑名单。被 deny 的地址无法接收 USDC mint,也无法通过 NATIVE_COIN_AUTHORITY 的 transfer 收款。

3.3 SYSTEM_ACCOUNTING (0x1800...0002)

源文件:crates/precompiles/src/system_accounting.rs

功能:
- Gas 费的 ring buffer 累积
- 用于费用收集→ARC 转换的链上记账

存储:自定义 GAS_VALUES_STORAGE_KEY

设计含义:这是 USDC→ARC 经济模型的链上记账起点。fee 先在这里聚合,然后通过某个机制转换为 ARC 并分发。

3.4 CALL_FROM (0x1800...0003)

源文件:crates/precompiles/src/call_from.rs + contracts/src/call-from/ICallFrom.sol

功能:
- 原生 batch 交易支持
- Memo 字段附加
- 配套合约 Multicall3From.sol(兼容 Multicall3 标准)

设计含义:链原生的批量执行(不需要部署 multicall 合约),优化 gas 与 UX。这是 Agent Stack / Nanopayments 的基础。

3.5 PQ (0x1800...0004)

源文件:crates/precompiles/src/pq.rs + contracts/src/pq/IPQ.sol

完整接口:

interface IPQ {
    function verifySlhDsaSha2128s(bytes calldata vk, bytes calldata msg, bytes calldata sig)
        external returns (bool isValid);
}

Rust 实现关键:

use slh_dsa::{signature::Verifier, Sha2_128s, Signature, VerifyingKey as SlhDsaVerifyingKey};

pub const PQ_ADDRESS: Address = address!("1800000000000000000000000000000000000004");

const VERIFY_BASE_GAS: u64 = 230_000;          // 基础 230k gas
const GAS_PER_MSG_WORD: u64 = KECCAK256WORD;   // 每字 32 bytes 的额外 gas

// SLH-DSA-SHA2-128s hashes the message once via H_msg (SHA-256 + MGF1).
// This is comparable to KECCAK256, so we use the same per-word rate.

依赖:slh_dsa Rust crate(RustCrypto 项目维护)

签名规格:FIPS 205 标准的 SLH-DSA-SHA2-128s
- VerifyingKey: 32 bytes
- Signature: 7,856 bytes(这是为什么 gas 高的原因——签名超大)

注释中的重要警告:

“Post-quantum signature schemes and their underlying libraries are relatively new. Algorithm parameters, gas costs, and the precompile interface may change in future hardforks as the ecosystem matures.”

设计含义:Arc 主网启动后用户可选使用 PQ 签名做账户级抗量子保护。230k gas 是一次性高费用(约 $0.046 @ 200 gwei equivalent in USDC),换 Q-day 风险对冲。


4. ProtocolConfig 合约(费用 + 共识参数治理)

源文件:contracts/src/protocol-config/ProtocolConfig.sol

4.1 FeeParams 结构

struct FeeParams {
    uint256 alpha;                       // ≤ 100  (base fee 平滑系数)
    uint256 kRate;                       // ≤ 10000 (base fee 调整速度)
    uint256 minBaseFee;
    uint256 maxBaseFee;
    uint256 blockGasLimit;
    uint256 inverseElasticityMultiplier; // ≤ 10000
}

→ 与 EIP-1559 的差异:
- EIP-1559: 完全弹性,base fee 由 target gas usage 自动调整
- Arc: 有 min/max 边界 + 平滑系数,给机构提供”可预测费用上限”承诺
- 这是支持「dollar-denominated budgets」承诺的具体技术机制

4.2 ConsensusParams 结构(基于注释推测)

struct ConsensusParams {
    uint256 timeoutProposeMs;
    uint256 timeoutProposeDeltaMs;
    uint256 timeoutPrevoteMs;
    uint256 timeoutPrevoteDeltaMs;
    uint256 timeoutPrecommitMs;
    uint256 timeoutPrecommitDeltaMs;
    uint256 timeoutRebroadcastMs;
}

→ Tendermint 三阶段投票超时的 millisecond 精度治理参数。Controller 角色可调整以适应网络条件变化。

4.3 治理权限


5. Validator Manager 合约

源文件:contracts/src/validator-manager/PermissionedValidatorManager.sol

5.1 三层架构

Owner (Circle 法人)
   ↓
Controllers (受限的"批准 validator"角色)
   ↓
ValidatorRegisterers (受限的"注册 validator"角色)
   ↓
Validators (节点运营者)

5.2 关键函数

function registerValidator(bytes memory publicKey)
    external onlyValidatorRegisterer whenNotPaused
    returns (uint256);
// 默认 votingPower = 0

function activateValidator external onlyController whenNotPaused;
// 把已注册的 validator 激活

function removeValidator external onlyController whenNotPaused;

function updateValidatorVotingPower(uint64 newVotingPower)
    external onlyController whenNotPaused;
// 受 votingPowerLimit 限制

每个 controller 有 votingPowerLimitOf[msg.sender] —— 单个 controller 不能给 validator 赋予无限投票权。

5.3 存储

mapping(address => uint256) registrationOf;        // controller → validator registration ID
mapping(address => uint64) votingPowerLimitOf;     // controller → max voting power

设计含义:这是 PoA 阶段的完整链上 validator 治理。每个 controller 仅管理特定 validator(不是开放式准入),与 PermissionedValidatorManager 的命名一致。

5.4 Pausable

继承 Pausable —— 紧急情况下可暂停整个 validator manager。这是机构合规链的标准能力,但加密原生用户视为”中心化失败模式”。


6. Denylist 合约

源文件:contracts/src/Denylist.sol

contract Denylist is Initializable, Ownable2StepUpgradeable {
    mapping(address => bool) denylisted;
    mapping(address => bool) denylisters;

    error CannotDenylistOwner;   // 关键:owner 自身不能被 denylist

    modifier onlyDenylister {
        if (!$.denylisters[msg.sender]) revert CallerIsNotDenylister;
        _;
    }
}

升级机制:Ownable2StepUpgradeable —— OpenZeppelin 标准两步所有权转移 + 可升级代理。

设计含义:denylist 角色与 owner 分离,可分配给合规团队 / 监管对接人员。两步所有权转移防止意外丢失控制权。


7. 节点运行模式(来自 crates/node/README.md

7.1 Validator 模式

arc-node-consensus start \
   --home=~/.arc/consensus \
   --moniker=validator-1 \
   --validator \
   --suggested-fee-recipient=0x... \
   --eth-socket=/tmp/reth.ipc \
   --execution-socket=/tmp/auth.ipc

arc-node-execution node \
   --chain=assets/localdev/genesis.json \
   --http --http.port=8545 \
   --ipcpath=/tmp/reth.ipc \
   --full

7.2 Full Node(非 validator)

类似 validator 但不带 --validator 标志。

7.3 Unsafe RPC Node(轻量级,不参与共识)

arc-node-execution download   # 下载快照
arc-node-execution node \
   --unsafe-follow \
   --http \
   --minimal

不需要运行共识层,跟随可信节点同步。适合纯 API 提供方。

7.4 RPC Node with consensus verification

完整运行 execution + consensus,但 consensus 设为 --follow 模式。


8. Remote Signer(circlefin/arc-remote-signer

机构 validator 的硬件级签名服务:
- 基于 AWS Nitro Enclaves(独立可信执行环境)
- 私钥永不离开 Nitro Enclave
- Validator 调用远程签名 API 完成共识签名
- 这是 BlackRock、Visa、Goldman 等机构愿意做 validator 的关键基础设施


9. Malachite 共识引擎结构(circlefin/malachite

9.1 crate 拆分

Core 算法:
- core-consensus — Tendermint 核心
- core-driver — 状态机驱动
- core-state-machine — 状态机
- core-types — 核心类型
- core-votekeeper — 投票管理

Engine(应用层接入):
- app-channel — 基于 channel 的 API
- app — 应用框架
- codec — 编码
- config — 配置
- discovery — 节点发现
- engine — 引擎
- metrics — 指标
- 等

9.2 形式化验证

specs/ 目录包含:
- 英文 specification
- Quint specification(Apalache 工具链可验证的形式化规范)

→ 这是 Tendermint 实现的最高质量标准,超越 CometBFT Go 版本。

9.3 命名空间

# Cargo workspace 中所有 crate 实际发布名加前缀
arc-malachitebft-core-consensus
arc-malachitebft-core-driver
...

→ Circle 把 Malachite 重新品牌为 “arc-malachitebft-*” —— 暗示这是 Arc 专用版本,与上游 Malachite 可能存在 Arc-specific patches。


10. Sample Apps 揭示的 dApp 模式

10.1 arc-nanopayments —— Agent Stack 核心

无 gas 的 USDC 微支付(< $0.01)。可能利用 paymaster 或预付 gas。Agent 经济关键基础设施。

10.2 arc-defi-lending-and-borrowing

cirBTC(Circle 包装 BTC?)作为抵押借出 USDC。意味着 Arc 支持 wrapped BTC + Aave/Compound 风格借贷。

10.3 arc-prediction-markets (UMA 协议)

Arc 与 UMA Protocol 集成,意味着 OO(Optimistic Oracle) 在 Arc 可用,这是预测市场和保险合约的基础。

10.4 arc-escrow (AI-validated)

「AI 验证的可交付物 → 资金释放或退款」工作流。这是 Agent Stack 在自由职业/服务市场的应用。

10.5 arc-fintech

多链国库管理(multi-chain treasury),通过 CCTP/Gateway 集成 cross-chain。机构国库主用例。


11. 代码层面的安全/审计状态

来自多个 README 的明确警告:

“Arc is currently in testnet, and this is alpha software currently undergoing audits.”

“Malachite is alpha software and under heavy development. The software is provided ‘as is’ and has not been externally audited; use at your own risk.”

具体审计公司未公开(截至 2026-05-13)。


12. 与 Reth / Paradigm 的关系

观察:Reth 已成为新一代金融 L1 的事实标准,超过 Geth/Erigon。


13. 代码评级(研究员主观)

维度 评分 (1-10) 备注
工程质量 9 Rust 2024 edition + 严格 lints + 形式化验证
文档完整度 8 ARCHITECTURE.md + 各 crate README
模块化 9 25 crates 清晰拆分
安全意识 8 deny unwrap, deny arithmetic overflow, OZ 2-step
合规设施 10 Denylist + Permissioned Validator + KYB
抗量子 8 Day-1 SLH-DSA, 路线图 Dilithium/Falcon
开源透明度 9 Apache-2.0, 完整 CI/test
审计状态 4 “undergoing audits” 但未公开具体审计方
总分 8.1/10 工程级 L1 基础设施,但仍需主网实战检验

14. 研究员观察

  1. Arc 不是”VC 拍脑袋”项目:从代码到工具链到合约设计,都体现 Circle 自身和 Informal Systems 团队的多年经验。
  2. PermissionedValidatorManager 是”合规链”的诚实公开:Circle 没有用「decentralization theater」掩盖 PoA 阶段的中心化,而是把权限层级直接写在合约里。
  3. NATIVE_COIN_AUTHORITY 把 USDC 提升为协议级一等公民:这是 Arc 真正与众不同的设计——其他链上 USDC 是合约,Arc 上 USDC 是 precompile。这意味着未来即使 USDC 合约出 bug,链层还能保护用户。
  4. PQ precompile 230k gas 是合理的预备:高 gas 但实际使用频率低,给愿意支付的机构用户做 q-day 保险。
  5. 缺失但应有:Slashing 合约(PoS 过渡前)、Staking 合约、Cross-chain bridge contracts(应在另一个 repo)、StableFX 链上合约(应在另一个 repo)。

相关文档
- 身份消歧:IDENTITY-RESOLUTION.md
- 主报告:overview.md
- Circle 公司全景:circle-context.md
- 新闻时间线:news-multilingual.md
- 备选项目:alternatives.md
- 所有 URL 来源:sources.md