概念
互操作性
跨链互操作性是指不同区块链网络之间进行信息和价值交换的能力。简单来说,就是让不同的区块链能够“对话”,实现资产、数据在不同区块链之间的自由流动。
为什么需要跨链互操作性?
- 资产流动性: 将不同区块链上的资产进行整合,提高资产的流动性。
- 数据共享: 实现跨链数据共享,拓展应用场景。
- 生态互通: 打通不同区块链生态,促进创新。
实现跨链互操作性的方法:
- 中继: 通过一个中继链来传递消息。
- 侧链: 在主链上建立一个侧链,实现部分功能的隔离。
- 哈希锁: 将资产锁定在源链上,在目标链上铸造等值的资产。
- 状态通道: 在链下进行交易,定期将状态同步到链上。
最终性
跨链最终性是指跨链交易一旦完成,就不可逆转,且所有参与节点都达成一致。
为什么需要跨链最终性?
- 信任基础: 确保跨链交易的可靠性,建立用户信任。
- 避免双花: 防止同一资产在不同链上被重复花费。
- 提高安全性: 增强整个跨链系统的安全性。
实现跨链最终性的挑战:
- 共识机制差异: 不同区块链的共识机制不同,达成一致比较困难。
- 安全性风险: 跨链过程中可能存在安全漏洞,需要谨慎处理。
- 性能瓶颈: 跨链交易可能导致性能下降。
常见的跨链最终性解决方案:
- 双向锚定: 在源链和目标链上都锁定资产,确保交易的原子性。
- 验证人机制: 引入验证人来验证跨链交易的有效性。
- 侧链验证: 通过侧链来验证跨链交易。
通道
A Chainlink CCIP通道是源和目标之间的一条独特通道blockchain 。通道是单向的。例如,以太坊主网 => Polygon主网和Polygon主网 => 以太坊主网是两个不同的通道。
CCIP高层架构
术语
CCIP 能够使源区块链上的发送者能够向目标区块链上的接收者发送消息。
术语 | 描述 |
---|---|
Sender(发送者) | 一个智能合约或一个 EOA。 |
源区块链(Source Blockchain) | 发送者与 CCIP 交互的区块链。 |
Message(消息) | 任意数据(Arbitrary data)和/或代币。 |
Receiver(接收者) | 一个智能合约或 EOA。注意:EOA 不能接收“arbitrary data”。它只能接收代币。 |
Destination Blockchain(目标区块链) | 接收者所在的区块链。 |
详细架构
流程概述:
- 用户发起交易: 用户在源区块链上通过Router合约发起跨链交易。
- 数据打包与提交: Router将交易数据发送给OnRamp合约,OnRamp合约将多个交易打包成一个Merkle树,并由Committing DON生成Merkle根。这个Merkle根被提交到CommitStore合约中。
- 风险管理: Risk Management Network对提交的Merkle根进行验证,确保交易的合法性。
- 交易执行: 如果Merkle根通过验证,Executing DON会根据Merkle根中的信息,调用OffRamp合约在目标区块链上执行交易。
- 资产转移: 在整个过程中,Token Pool负责管理资产的锁定、解锁、燃烧和铸造。
链上组件
Router
- 核心功能: 作为用户与CCIP交互的主要合约。
- 职责:
- 发起跨链交互。
- 管理链上token的批准。
- 将交易路由到正确的OnRamp合约。
- 在目标链上接收消息并交付给用户或智能合约。
CommitStore
- 核心功能: 存储源链上最终化消息的Merkle根。
- 职责:
- 与Committing DON交互,存储Merkle根。
- 确保消息经过风险管理网络的批准。
- 每个链路仅存在一个CommitStore合约。
OnRamp
- 核心功能: 处理源链上的消息。
- 职责:
- 验证目标链的地址格式等信息。
- 检查消息大小和gas限制。
- 管理消息序列号。
- 处理token转账(与TokenPool交互)。
- 向Committing DON发送事件。
OffRamp
- 核心功能: 处理目标链上的消息。
- 职责:
- 验证消息的真实性,检查Merkle根证明。
- 防止重复执行交易。
- 将消息传递给Router合约。
- 处理token转账(与TokenPool交互)。
Token Pool
- 核心功能: 管理token的跨链转移。
- 职责:
- 提供token相关的操作接口。
- 实现token的锁定、解锁、燃烧和铸造。
- 提供速率限制功能,防止恶意行为。
- 机制:
- Burn and Mint: 直接燃烧和铸造token。
- Lock and Mint: 锁定源链上的token,铸造对应的包装token到目标链。
- Burn and Unlock: 燃烧目标链上的包装token,解锁源链上的token。
- Lock and Unlock: 直接锁定和解锁token。
【举例说明:】
LINK 代币
特点: 仅在以太坊主网发行,总供应量固定。
处理方式:
采用锁定和铸造机制。
- 从以太坊主网转出: 将 LINK 锁定在以太坊主网,并在目标链上铸造相同数量的 LINK。
- 从其他链转入以太坊主网: 将目标链上的 LINK 销毁,并在以太坊主网解锁对应的 LINK。
2. 包装的原生资产(如 WETH)
- 特点: 是原生资产的包装形式,可以代表多个区块链上的原生资产。
- 处理方式: 采用锁定和解锁机制。
- 跨链转账: 在源链上锁定原生资产,在目标链上解锁对应的包装资产。
3. 稳定币(如 USDC)
- 特点: 可以跨多个区块链发行,保持价值稳定。
- 处理方式:采用销毁和铸造机制。
- 跨链转账: 在源链上销毁稳定币,在目标链上铸造相同数量的稳定币。
4. 带有 PoR 的代币
- 特点: 具有证明储备的代币。
- 处理方式: 由于 PoR 的限制,通常采用锁定和铸造机制。
5. 本地 Gas 代币(如 ETH)
- 处理方式:
- 包装: 先将 ETH 包装成 WETH。
- 跨链转账: 使用 CCIP 转移 WETH。
- 解包: 在目标链上将 WETH 解包成 ETH。
6. 新支持的代币
- 流程:
- 添加: 持续支持新的代币。
- 配置: 为每个代币设置速率限制,以控制跨链转账的速度。
- 风险评估: 根据代币的风险特征和使用场景,选择合适的处理机制。
Risk Management Network
- 核心功能: 管理风险控制。
- 职责:
- 维护允许批准或拒绝的节点列表。
- 实现批准或拒绝Merkle根的逻辑。
- 确保网络的安全性。
链下组件
Committing DON
- 角色: 负责将源链上的交易数据打包成Merkle树,并提交到目标链上的CommitStore合约。
- 职责:
- 监控源链上的OnRamp合约,获取交易数据。
- 等待交易确认(达到最终性)。
- 将多个交易打包成Merkle树,并生成Merkle根。
- 对Merkle根进行签名。
- 将签名的Merkle根提交到目标链上的CommitStore合约。
Executing DON
- 角色: 负责执行已经提交到CommitStore的交易。
- 职责:
- 监控源链上的OnRamp合约,获取交易数据。
- 检查交易是否包含在CommitStore中的Merkle根中。
- 等待风险管理网络的批准。
- 生成Merkle证明,验证交易的合法性。
- 调用OffRamp合约执行交易。
Risk Management Network
- 角色: 负责监控CommitStore中的Merkle根,并决定是否允许执行交易。
- 职责:
- 验证CommitStore中的Merkle根与实际交易数据的一致性。
- 对Merkle根进行投票,决定是否批准或拒绝执行。
- 在出现异常情况时,暂停CCIP系统。
各组件之间的关系
- Committing DON负责将交易数据打包成Merkle树并提交到目标链。
- Executing DON负责检查Merkle树的有效性并执行交易。
- Risk Management Network负责对Merkle树进行风险评估,决定是否允许执行交易。
为什么要分离Committing和Executing
- 提高效率: 将打包和执行分开,可以提高系统的吞吐量。
- 增强安全性: 分离这两个过程可以增加攻击难度,提高系统的安全性。
- 灵活处理: 可以对不同的交易类型采取不同的处理策略。
- 风险管理: 可以更有效地进行风险评估和控制。