本文为笔者研读 Darwinia Medium 系列跨链桥说明文章后的个人解读,约6000字,内容系统详实,耐心阅读定有收获,仅供社区参考。
📚 参考内容
- [Understanding Darwinia Bridge 1-1] Darwinia Relayer Incentive Scheme—Fee Market
- [Understanding Darwinia Bridge 1-2] Mapping Token Factory
- [Understanding Darwinia Bridge 1-3] The Token Bridge Solution
- [Understanding Darwinia Bridge 1-4] The New Message Protocol for the Ethereum-Darwinia Bridge
- Fee Market Strategy and Design of Relayer Fee Market details from darwinia’s Github

🧭 内容逻辑说明
为了更体系化地讲解达尔文跨链桥的设计,本文对参考文章的顺序做了重新编排,整体逻辑如下:
- 先介绍 Darwinia 异构链资产跨链核心解决方案
- 拆解方案中 Issuing 模块的子组件:映射代币工厂的实现细节
- 深入讲解资产跨链背后的核心:Ethereum-Darwinia 跨链通讯协议
- 最后聚焦协议核心角色 Relayer,详解市场化跨链费用报价机制
一、资产跨链解决方案(The Token Bridge Solution)
目前达尔文最成熟的落地应用是达尔文↔以太坊双向异构跨链桥(达尔文是基于 Substrate 开发的区块链,与以太坊属于异构架构),本部分将讲解达尔文针对异构链设计的通用资产跨链方案。
1. CBA 模型
达尔文桥基于 CBA(Cryptocurrency Backed Asset,加密资产背书模型) 设计,核心包含两个模块:
- Backing 模块(源链部署):负责锁定/解锁源链原生资产
- Issuing 模块(目标链部署):负责发行/销毁目标链上的映射资产(即 CBA,价值由源链锁定的原生资产1:1背书)
CBA 是当前跨链桥设计中最通用的模型,具体运行流程分为4步:
(1)部署与注册
💡 流程示意图:[此处可插入部署注册流程图] 桥创建者先分别在源链部署 Backing 智能合约、目标链部署 Issuing 智能合约。 用户调用 Backing 模块接口注册源链原生资产后,Relayer(中继者)会将信息同步到目标链 Issuing 合约,后者会创建对应映射合约,用于后续发行映射资产。
(2)发行映射资产
💡 流程示意图:[此处可插入资产发行流程图] 用户在源链调用 lock_and_remote_issue() 接口锁定一定数量原生代币,发起跨链申请,获得锁定证明。 Relayer 将证明提交到目标链 Issuing 模块验证,验证通过后,Issuing 模块将对应数量的映射资产发放到用户在目标链的收款地址。
(3)转账与兑换
映射资产本质就是目标链上的合规代币,支持普通转账,也可以在 DEX 中添加流动性交易对,和其他代币自由兑换。
(4)赎回原生资产
💡 流程示意图:[此处可插入资产赎回流程图] 用户在目标链调用 remote_unlock() 接口销毁对应数量的映射资产,发起赎回申请。 Relayer 将销毁证明同步到源链 Backing 模块验证,验证通过后,Backing 模块解锁对应数量的原生资产返还给用户。
2. 去中心化资产背书技术
当前行业主流的资产背书技术有三类,达尔文采用的是第三种:
- 多节点验证:通过多签节点集体托管锁定资产,去中心化程度由节点数量决定,代表项目:Parity Bridge、ChainX
- 桥资产质押+Chain Relay 结合:仅适用于高流动性同质化资产,经济模型可行性较弱,代表项目:XClaim
- 全 Chain Relay(链中继):达尔文采用的方案,完全通过链中继完成链上验证。 ✅ 优势:支持多样化原生资产,包括低流动性资产、NFT,亚线性链中继的经济模型效率更高 ❌ 限制:要求目标链支持智能合约、链上 runtime、硬分叉等特性,无法对接 Bitcoin 这类链
二、映射代币工厂(Mapping Token Factory)
映射代币工厂是目标链 Issuing 模块的核心子组件,负责在目标链上创建、发行、销毁映射资产。
1. 映射资产规则
映射资产(也叫 Wrapped 资产)和源链原生资产1:1锚定,为了便于识别,达尔文对映射资产的元数据做了统一规范:
- 符号前缀加「x」:比如原生资产 RING 跨链后映射资产为 xRING,二次跨链后为 xxRING
- 名称后缀加来源链标识:格式为
[${backing_chain_short_name}>,比如 RING 从达尔文主网跨到测试网 Crab 后,全称为Darwinia Network Native Token[Darwinia>,再次跨链后会叠加来源链标识。
💡 示例图:[此处可插入USDT跨链映射流程图]
2. 许可管理机制
映射资产的发行权限完全由系统账户控制,而非单个私钥:
- 只有源链 Backing 模块锁定原生资产后,才会激活目标链的发行许可
- 只有目标链销毁映射资产后,才会激活源链的解锁许可 这种机制从底层保证了映射资产和原生资产的1:1背书关系,映射资产的转移和原生资产转移价值完全对等。
3. 资产安全特性
不同资产的跨链桥是完全独立的,单个资产桥出现安全问题不会影响其他跨桥资产,风险完全隔离。
三、以太坊-达尔文桥信息跨链协议
跨链技术的核心是跨链信息的传递与确认,本部分基于已落地的以太坊↔达尔文跨链桥,讲解其底层信息传输协议的设计。
💡 协议架构图:[此处可插入跨链协议三层架构图]
1. 核心概念
(1)Message(信息)
信息跨链本质就是从源链发送带参数的跨链指令,调用目标链智能合约的功能,类似 RPC 调用。 Message 包含源链、目标链、指令内容、跨链费用等核心数据,达尔文采用 ABI 编码方式,生成便捷、Gas 成本低。
(2)Channel(通道)
通道是单向的,负责信息从源链到目标链的传输,分为:
- 源链上的 outbound lane(出站通道)
- 目标链上的 inbound lane(入站通道) 双向跨链场景下,两条链都会同时部署两类通道,信息层的多通道设计还具备信息保护、流量筛选的能力。
(3)Relayer(中继)
链下角色,是跨链信息的「搬运工」,负责在源链和目标链之间同步信息和证明,是跨链桥的核心组成部分。
2. 信息传输全流程
达尔文在以太坊和达尔文网络两侧都通过智能合约部署了信息传输协议,一条跨链信息的完整生命周期分为两个阶段:
💡 完整生命周期流程图:[此处可插入信息跨链全流程示意图,建议放大查看]
Phase 1:传递阶段(Delivery Phase)
- 信息接收:用户调用以太坊侧出站通道的
send_message()接口发起跨链请求,信息通过检查后会被分配 nonce 并存储,触发MessageAccepted事件 - 获取证明:Relayer 监听到事件后,请求获取信息的存储证明/收据证明
- 提交+验证证明:Relayer 调用达尔文侧入站通道的
receive_message_proof()接口提交信息和证明,达尔文链上的以太坊轻客户端(仅存储区块头,用于轻量验证)调用verify_message_proof()完成验证 - 信息送达:验证通过后,入站通道转发信息,触发
MessageDispatched事件,信息已经送达目标链,进入确认阶段
Phase 2:确认阶段(Confirmation Phase)
确认阶段主要有两个作用:一是对已送达未确认的信息做流量控制,二是给 Relayer 提供完成工作的证明,用于领取奖励。
- Relayer 将目标链的信息送达证明提交到以太坊侧,以太坊上的达尔文轻客户端完成验证
- 验证通过后触发
MessageDelivered事件,跨链信息被两侧最终确认,Relayer 可以领取对应奖励 - Relayer 将最终确认结果同步回达尔文链,后续跨链信息可以继续处理,否则信息会在入站通道排队堆积。
3. 中继激励机制
当前 Relayer 节点由达尔文官方运营保证跨链桥稳定性,同时达尔文设计了Relayer Fee Market(中继费用市场) 机制,未来将实现去中心化的中继生态,吸引更多社区参与者。
四、中继激励框架:跨链费市场(Relayer Incentive Scheme—Fee Market)
本部分讲解达尔文设计的集中竞价跨链费定价机制,解决去中心化场景下 Relayer 的激励问题。
1. 核心前提
- 仅支持源链原生代币作为跨链费支付方式
- 跨链费由源链上的 Relayer Fee Market 定价系统决定
- 目标链的交易成本由 Relayer 承担,Relayer 凭成功传递信息的证明领取跨链费用,收益必须覆盖成本;如果 Relayer 未按时传递信息会被惩罚
- 跨链费由供需关系决定,任何人都可以成为 Relayer,需要承担代币价格波动、时滞、保证金被罚没等风险
2. 分层报价市场规则
分层报价市场适用于源链 Gas 费低、确认速度快的链(如 Heco、BSC、Polygon、达尔文),报价流程如下:
- 链下定价系统发布参考价格,Relayer 提交自己的报价,同时需要在链上锁定保证金,防止作恶或失败
- 系统将报价升序排序,选出最低的 N 个报价,对应的 Relayer 成为 Assigned Relayer(指定中继),用户本次实际支付的跨链费为第 N 个最低报价 Pn
- 每个 Assigned Relayer 按报价高低分配 time slot(时间窗口),报价越低优先级越高,信息越优先在其窗口内传递
- 如果 Assigned Relayer 数量低于系统要求的最小值,会直接拒绝用户的跨链请求,保证稳定性
三类 Relayer 角色的区别:
| 角色 | 定义 | 是否需要质押保证金 |
|---|---|---|
| Assigned Relayer | 竞价选出的指定中继,集体为本次跨链负责 | ✅ 是,失败会被罚款 |
| Delivery Relayer | 执行传递阶段工作的中继,可以是指定中继也可以是普通中继 | ❌ 否 |
| Confirmation Relayer | 执行确认阶段工作的中继,可以是指定中继也可以是普通中继 | ❌ 否 |
3. 具体实现流程
(1)Relayer 注册
Relayer 调用 enroll_and_lock_collateral 接口注册并锁定保证金,调用 cancel_enrollment 可以退出,但如果已经被选为某笔跨链的 Assigned Relayer,跨链完成前无法退出,避免保证金罚没无法执行。
(2)报价
当前采用简单的固定报价模式:fn(message)=const_price * 1,后续会升级为更市场化的动态报价模式。如果 Relayer 保证金因罚款不足,补足前无法成为 Assigned Relayer。
(3)用户发起跨链
用户支付 Pn 作为跨链费,费用通过 relayer fund account 模块分配。
(4)信息传递
执行前文提到的传递和确认两个阶段流程。
(5)奖励与惩罚机制
💡 费用分配示意图:[此处可插入跨链费分配流程图] 跨链费的分配分为两种场景:
- 场景a:跨链在 Assigned Relayer 时间窗口内成功 用户支付的 Pn 中,只有最低报价 P1 用于奖励 Relayer,差值
Pn-P1上缴国库。 P1 的分配规则:- 成功完成跨链的 Assigned Relayer 获得 60% P1
- Delivery Relayer 获得剩余40%中的80%
- Confirmation Relayer 获得剩余40%中的20%
- 场景b:所有 Assigned Relayer 时间窗口内均跨链失败 跨链仍会继续完成,此时 Delivery Relayer 和 Confirmation Relayer 按8:2比例分享高于 Pn 的奖励 S(t),S(t) 全部来自所有 Assigned Relayer 保证金的罚没。
这种机制相当于「订单市场+拍卖市场」的组合:Assigned Relayer 在订单市场内需要在规定时间内完成跨链,超时未完成就进入拍卖市场,所有人都可以抢单完成跨链获得更高奖励,Assigned Relayer 也可以参与抢单对冲罚没损失。
除了上述跨链费报价市场外,达尔文还设计了预言机+链上自动定价的替代机制,以及针对非 Substrate 链跨链的 BEEFY 协议(GRANDPA 最终性协议的可选组件),感兴趣的读者可以查阅官方文档深入研究。