Merkle Bridge的目标是成为区块链之间资产转移的简单而轻量的协议,同时提供分散的监管和审查阻力。第一个应用是将Aergo ERC20令牌转移到Aergo的主网络本地令牌。一旦部署了网桥,任何以太网或Aergo资产都可以在这些网络之间直接传输在本文中,我们将介绍该协议的一些技术细节。
我们可以通过以下两种方式锚定(2WP)资产转移:首先在区块链a上存放令牌,然后将令牌转移到区块链b,我们必须首先锁定区块链a上的令牌,以1: 1的比例在区块链b上创建副本,最后在区块链b上销毁副本后解锁区块链a上锁定的令牌
保持固定汇率的一个简单方法是将资产锁定在单个密钥或多重签名合同中(大多数交易所如何存储资金)
第一种情况(单个密钥)不安全,因为密钥可能被盗或丢失
第二种情况(multisig)更安全,但传输成本昂贵,因为每次传输都需要在链上进行2/3签名验证。允许每个传输都是多签名的也意味着很容易检查单个用户的传输。还有其他更安全、更不可信的方法,比如ETH-ETC的平桥,但抵押贷款和贷款减免需要资金锁定。
我们的目标是实现分散的资金锁定/解锁,允许超过20个验证者,但同时通过设计简单的协议将桥接转移费用保持在低水平(不需要桥接运营商来处理单个转移)
德国桥梁设计
9阿尔戈·墨克尔桥可以实现资产的分散存储和有效铸造
PoA侧链通常使用其状态根在公共链上的锚定来提供可验证的真理来源Merkle bridge使用这些锚状态根来允许用户提交侧链状态的证明
基金保管
本设计的安全性取决于锚根的有效性。固定的区块链状态根包含关于锁和已用余额的信息,因此任何无效的状态根都可以被用来窃取锁定的用户资金
为了确保状态根的有效性,锚定使用一种类似于multisig oracle的简单形式的DAO(分散自治组织)。DAO的成员被称为验证者
验证者有以下职责:
就要锚定的根本原因达成了共识(因此它们必须是具有可信度的已知实体,以确保有效锚定)
同意更新验证者集合的建议(使用当前验证者签名的2/3添加或删除验证者)同意默克莱大桥安装更新建议(需要2/3验证人批准)。操作模式
赞助商(愿意支付锚定费)将定期在桥接链上发布桥接合同的状态根仅当状态根由2/3验证者签名时才记录
然后,用户钱包可以通过使用锚状态根来验证其锁定资产的Merkle证明,从而在目标桥契约上独立地投射资产
锁定和跟踪帐户的令牌总余额包含此平衡的Merkle校样被创建,令牌平衡可以在桥的另一侧铸造铸造厂记录硬币的总余额,所以账户中硬币的数量永远不会超过存款的数量。相同的过程用于燃烧和解锁天平。
的设计简化了合同的存储管理和操作,因为它不需要记录传输随机数或返回值。限制在于,随着用户数量和固定令牌数量的增加,Merkle证明的大小将会增加(合同状态树将会更深),这使得传输更加昂贵。

使用Merkle桥将ERC20令牌从以太网通道传输到Aergo
福利:
验证器易于实现,因为它们只需要签署它们认为有效的最终状态根(通过在桥的两端运行完整的节点)验证者不需要监控和验证用户的传输。
用户的钱包在未经验证人批准的情况下通过桥接合同直接转移。
的锚定周期是灵活的,并且状态根可以由许多验证者签名(20)
如果不超过2/3的验证者共同批准并广播无效的侧链状态根,则不能任意审查令牌传输。
可以进行小额转账,并可以随时对存款余额总额进行投/解锁。
链上的Merkle验证比签名验证更便宜
任何新的资产都可以在未经验证者批准的情况下通过桥梁转移(第一次转移的成本将会更高,因为在铸造期间将部署新的固定合同)
可以通过一个交易完成对另一个链上同一账户的多次转账,并提取发送到该账户的总锁定余额。
限制:
一旦启动,传输应在网桥的另一端完成(没有超时限制),但这意味着传输不能取消。
如果超过1/3的验证者停止合作,桥将无限期中止(不可能有新的退出)
部署
版 在两个Aergo块链之间的Merkle桥的POC实现可以在这个存储库中找到:https://Merkle-Bridge。读取光盘。Io
以太网广场和阿尔戈区块链之间的默克莱桥的概念验证实施可在以下存储库中找到
用于在以太网和Aergo之间传输资产的JavaScript SDK可在此存储库中找到:https://github.com/aergoio/eth-merkle-bridge-js?源=post_page - 32bd0f06c308 -
桥的操作员199他们想为每个区块链桥运行一个完整的节点定期(每10分钟?),他们将获得最新的最终状态根,并将其注册到桥契约的根和高度状态变量中的相对块链上。
有两种类型的桥操作符:广播set_root事务的提议者和为提议者请求的两个桥链的状态根签名的验证者。任何人都可以成为提议者:桥接合同只允许在锚定期之后使用有效签名进行状态根更新验证器的数量可以根据所需的多重安全设置而变化。如果请求的状态根是有效的,验证者将对其签名。

话务员呼叫新呼叫(…)以锚定新状态根
网桥验证器集更新:
如果2/3的当前验证者同意新的验证者集合,则可以定义新的验证者集合

桥验证器集更新
版本2
在Merkle Bridge的第2版中,签名验证将在一个单独的甲骨文合同中重新构建,该合同将完全控制网桥合同这可以升级oracle合同的共识机制,并为用户转移保留相同的桥接合同。这座桥的安全属性保持不变。
用户资产转移:256以上
为了传输令牌,用户将令牌锁定在桥接合同中,并等待目标区块链上的下一个锚点

lock(…)记录用户存入的总余额
用户钱包将读取目标区块链上的新锚状态根(根、高度),并从节点请求Merkle证书,包括状态根的锁定余额用户的锁余额记录在锁状态映射中,其中密钥用于令牌帐户引用。帐户引用是用户地址和令牌地址的串联锁令牌的Merkle证明可用于证明在目标区块链上正在进行薄荷交易用户的硬币金额不能超过合同中存储和记录的总金额。

分(…)验证Merkle存单并铸造正确数量的代币如果令牌从未被强制转换,则部署新的固定令牌协定
如果桥操作者在用户生成余额之前锚定新的状态根,用户的钱包可以简单地为新锚定的状态根创建新的Merkle证书
名用户的钱包将重复类似的过程,在区块链原厂解锁之前,先燃烧代币。
关于墨克尔大桥合同中墨克尔认证验证的更多信息,请参见:
以太网中帕特里夏树的
墨克尔验证相关作品
Merkle Bridge采用的方法是尽可能使用最简单、最可靠的设计,这样验证者不需要就用户转移达成一致意见,而是将所有资源集中在他们所锚定的区块链的状态根的有效性上。此外,用户完成转账没有时间限制,可以通过一次交易完成多次转账到同一个账户。这是与以下协议的主要区别:
ICS(链间标准)
其他项目,如cosmos ibc,采用不同的方法将所有单个跨链资产传输抽象为数据包(也可以支持合同调用),并且peg区域验证者就这些数据包达成共识这是一个非常有趣的方法来减少对跨链资产的信任,但是当被peg验证者锁定的资金的价值超过所涉及的原子的价值时,这种设计最终将依赖于验证者的声誉,这将导致问题。
应当注意,为了连接比特币和EOS等区块链,有必要将存款事件转发到传输令牌,而EOS不是Merkelize状态
等离子体
马克桥的设计灵感来源于等离子体的研究,解决了等离子体上运行合同的问题。默克尔桥并不简单,因为它没有同样的安全性:退出侧链可以在没有退出提示的情况下受到挑战,而且退出必须在侧链上进行默克莱大桥的安全性取决于锚固剂的分散性由于单个状态根可以进行无限数量的传输,因此该状态根所需的签名数量可能非常高用户不需要注意区块链的无效取款和大规模取款,而是应该信任分散的验证者。此外,在POA企业侧链的情况下,我们通常假设一致安全性,因此在侧链上发起撤销是可以接受的,并且侧链运营商不需要监控父链链接的撤销。
结论
Merkle桥由一个简单的DAO(multisig oracle)组成,用于验证锚、更新验证器集和桥设置用户的钱包可以独立地为其锁定/烧毁的余额创建Merkle证书,用于跨链转账,而无需验证者观看转账事件。
以太网网桥将用于在Aergo和以太网主网络之间发送Aergoer20和任何其他令牌
aaergo-aaergo桥将由企业侧链的用户使用,以经济高效和安全的方式在aaergo的主网络之间转移他们的资产。
这使得MakerDAO的DAI稳定的货币和任何其他令人兴奋的应用程序,如ERC20,可供阿尔戈主网络的用户使用,并由默克莱桥锚定和保护