区块链技术资源分享
追寻中本聪先生的脚步

Gravity跨链桥:cosmos跨链到以太坊 @十一地主

以太坊的上USDC、DAI、WETH可以通过跨链桥(重力桥)跨到cosmos生态了,格局有点打开了。
跨链网站:O网页链接,https://spacestation.zone/ 重力桥也是一条区块链,目前已经和osmosis、cosmos、junonetwork、stargaze打通了IBC(跨链转账\通信),见图一。

https://mapofzones.com/?testnet=false&period=24&tableOrderBy=totalIbcTxs&tableOrderSort=desc&zone=gravity-bridge-3
重力桥工作原理:O网页链接 https://www.gravitybridge.net/post/how-gravity-works
官方治理论坛:O网页链接(可以通过提案内容,看到接下来的消息)

利益相关:尚未进行跨链转账,勇士先去送死。

https://weibo.com/1735433913/LcYKnxW91

https://mirror.xyz/solscan.eth/dSMQn_cz95Qj7a_CK0gjDI0bBd2vc9_9ZHJnNnzEkng


Gravity 是以太坊和基于 Cosmos 的区块链之间的桥梁。在这篇文章中,我将尝试以一种易于理解的方式,以中等细节水平记录整个系统的工作原理。

首先,高级概述:Gravity 允许人们通过在以太坊端锁定代币并在 Cosmos 端铸造等价代币,将代币从以太坊转移到 Cosmos 并再次返回。与许多桥接器不同,Gravity 是完全非托管的——你只需要信任 Cosmos 链的安全性,而不是一些可以用你的资金跑掉的第三方桥接器管理员。

 

以下是重力的使用方法:

  • 你向以太坊上的 Gravity 合约发送 25 DAI,指定你在 Cosmos 上的地址应该接收 DAI。

  • Cosmos 链上的验证者看到这已经发生,并在 Cosmos 上为您的地址铸造了 25 个 DAI。

  • 现在 DAI 可以发送到 Cosmos 上的其他账户,用于 Cosmos 应用程序,通过 IBC 转移到其他 Cosmos 链等。

  • 要回到以太坊,你将 DAI 发送到 Cosmos 链上的 Gravity 模块,指定你在以太坊上的地址应该接收它。

  • Cosmos 验证者在 Cosmos 链上销毁 DAI,并发送以太坊交易,导致 Gravity.sol 合约将 25 DAI 发送到您的以太坊地址。

 

 

重力的一部分

 

重力由4部分组成:

  • 一个名为 Gravity.sol 的以太坊合约

  • 引力宇宙模块

  • 由 Cosmos 验证器与 Cosmos 区块链代码一起运行的编排程序

  • 中继者市场,他们竞争代表 Cosmos 验证者向以太坊提交交易

 

重力溶胶

 

Gravity.sol 的主要功能是将 ERC20 代币锁定在以太坊上,以便在 Cosmos 上进行铸造。锁定在 Gravity.sol 中的代币返回 Cosmos 上的代币。

 

当前的 Cosmos 验证者控制 Gravity.sol,与其在 Cosmos 上的验证能力成正比。Gravity.sol 存储一个检查点——这对应于在给定时刻在 Cosmos 端设置的活动验证器。检查点是一组地址及其验证能力。地址的验证能力越强,它的投票就越重要。Gravity.sol 上的方法是公开的,可以被任何中继者调用,但它们必须包含当前检查点中 2/3 的验证者集合的签名。

更新Valset

 

Cosmos 上设置的验证人总是在变化,因为 Cosmos 代币持有者将代币委托给不同的验证人,从而改变他们的权力。Cosmos 验证器使用 Gravity.sol 上的 updateValset 方法将其存储的检查点更新为最新的验证器集。如果验证者没有签署更新,或者更糟糕的是,签署了欺诈性更新,他们可能会被削减,从而在 Cosmos 上损失资金。

发送到宇宙

 

要将代币从以太坊转移到 Cosmos,用户调用 sendToCosmos 方法。该方法从用户那里接收一定数量的 ERC20 代币并将它们锁定在 Gravity.sol 中。它还发出一个事件,让 Cosmos 验证者知道他们应该为 Cosmos 端的用户铸造该数量的代币。

提交批处理

 

用户将 Cosmos 上的代币发送到 Gravity 模块,并指定以太坊上的哪个地址应该接收它们。他们还收取费用以补偿任何转发其交易的人。代币分批从 Cosmos 转移到以太坊,以节省燃料。Gravity 模块创建一批交易类型的令牌,然后验证者对其进行签名。

中继者可以将批次提交到 submitBatch 方法。重力溶胶:

  • 首先检查一个批次是否有来自当前检查点中 2/3 的验证器集的签名。

  • 然后检查该批次的随机数是否高于已提交的任何其他相同令牌类型的批次。

  • 然后发送 ERC20 以太坊交易,将代币转移到目的地。Gravity.sol 还将交易费用发送给中继者 msg.sender。

 

Gravity Cosmos 模块和编排器

Gravity 模块是基于 Cosmos SDK 构建的模块。Cosmos 区块链由许多这样的模块组成,由它们的验证者同步运行。每个验证器都运行与其他所有验证器完全相同的确定性逻辑。验证者就键值存储的状态达成共识。各个模块拥有此状态的不同部分。

Gravity 模块负责在以太坊上铸造代表 ERC20 代币的 Cosmos 代币。它与编排器密切合作。编排器是一个在每个验证器上运行的程序,以及 Cosmos 代码。由于每个验证器上的 Cosmos 模块都在同步运行相同的逻辑,因此它们无法使用验证器的唯一密钥对消息或交易进行签名。运行安装了 Gravity 模块的链的验证器使用协调器来执行这些操作。

以太坊预言机

Gravity 模块必须知道以太坊链上发生了什么。这样,当人们将代币发送到以太坊上的 Gravity.sol 合约时,它就能够在 Cosmos 上为人们铸造代币。它还允许它查看从 Cosmos 到以太坊的一批交易何时已成功处理。

带有 Gravity 模块的 Cosmos 链上的每个验证者都必须运行一个以太坊全节点。每个验证器上的编排器使用此完整节点监控以太坊事件。有一个参数叫做 EthBlockDelay。编排器在以太坊链上监控这么远的事件。这种延迟是为了让验证者确信给定事件在以太坊链上是完全最终的,并确保每个验证者对链有相同的看法。当协调器从 Gravity.sol 合约中看到事件时,它会将事件放入 Cosmos 消息中,对其进行签名,然后将其广播到 Cosmos 链。

 Gravity 模块接收这些消息并跟踪哪些验证者为每个单独的以太坊事件投票。当一个事件超过 2/3s 的投票给它的验证权力的阈值时,它被认为是“观察到的”,它会改变 Cosmos 的状态。

当观察到 SendToCosmosEvent 时,Gravity 模块会为目标地址铸造令牌。

当观察到 TransactionBatchExecutedEvent 时,Gravity 模块会从批处理池中删除已执行的批处理,并取消该令牌类型的任何早期批处理。稍后将详细介绍此过程。

事务批处理

 

从 Cosmos 到以太坊的交易在发送到以太坊链之前被分批。这是因为在以太坊上处理交易成本很高,并且批处理将大部分成本分摊到批处理中的所有交易中。

 

当用户想要将代币从 Cosmos 发送到以太坊上的地址时,他们会将代币发送到 Gravity 模块。Gravity 从他们的账户中扣除代币,然后将一笔交易放入交易池中。交易池存储所有尚未成批的 Cosmos 到以太坊的交易。

 

任何人都可以发送请求重力模块组装一批特定代币类型的交易。这很可能由希望中继一批代币以获取利润的中继者完成。当 Gravity 模块收到此消息时,它会按照以下过程组装批次:

  • 查找令牌的所有交易

  • 选择费用最高的 100 笔交易,并将它们放在一起。未来的交易数量可能不会是1oo。它可能是可配置的,甚至是动态的。

  • 如果批次池中有一个批次的费用总和高于新组装的批次,则丢弃新批次。如果没有,请将其包含在批处理池中。稍后再谈。

然后它将批次放入批次池中。一旦批次进入批次池,所有验证者的编排器都会对该批次进行签名并在 Cosmos 消息中提交。每个签名与其批次一起存储。

中继器持续监控批次池中的批次。一旦批次具有来自 Gravity.sol 存储的当前检查点中至少 2/3 的验证器集的签名,就可以将其提交给 Gravity.sol。中继者可以自己选择提交给定批次是否有利可图,并提交那些有利可图的批次。如果批次中包含的费用高于将其提交给以太坊的 gas 成本,则这是一个有利可图的批次。当然,这是一个非常细微的计算,它考虑了以太坊链上当前的平均 gas 价格、链上的拥塞以及该代币与以太坊 gas 之间的汇率。这就是为什么我们有一个自由的中继器市场。

一旦在以太坊链上执行批处理,Gravity.sol 就会发出一个 TransactionBatchExecutedEvent ,如上所述。在以太坊上的 EthBlockDelay 阻塞后,验证者将事件提交给 Gravity 模块。当完全观察到此事件时(如上文所述),该批次将从批次池中移除,因为它已完成。任何批次具有较低批次随机数的相同令牌也将从批次池中删除,但它们的交易也会放回交易池中。这是因为我们可以确定不可能提交它们,因为它们的批随机数太低。这种机制允许组装成无利可图批次的交易有机会使其成为可盈利的批次。

如上所述,Gravity 模块仅在批次池中没有具有更高费用的批次时才会组装一个新批次。这是为了防止出现以下情况:如果交易池中有很多交易费用低到无利可图,而每个区块都有一些高费用的交易,那么每笔高费用交易最终可能会成为一批无利可图的交易。交易。这些批次提交将不会有利可图,因此有利可图的交易最终将成为无利可图的批次,并且不会被提交。

 
 通过使每个新批次都必须比任何其他等待提交的批次更有利可图,它使每个区块中的少数有利可图的交易有机会建立并形成足以提交的有利可图的批次

验证器集更新

验证器集更新使 Gravity.sol 对 Cosmos 上验证器集的了解保持最新。这很重要,因为 Gravity 的信任模型要求信任 Gravity.sol 与信任运行它的 Cosmos 链相同。验证器集更新必须由 Gravity.sol 存储的检查点中当前验证器集的至少 2/3 签名。

任何人都可以发送 Cosmos 消息请求验证者集更新。发生这种情况时,Gravity 模块会保存当前验证器集的快照。然后验证者签署这个快照。一旦在 Gravity.sol 的当前检查点中设置了 2/3 的验证者签名,中继者就可以将其提交到以太坊链。有几个微妙的地方需要注意:

  • Gravity 模块实际上并不知道 Gravity.sol 存储的当前检查点是什么。由于 EthBlockDelay,Gravity 模块中关于以太坊的所有信息都是过时的。由中继者决定验证者集更新是否有足够的签名提交。

  • 提交验证者集更新的中继者没有奖励。与交易批次不同,它不收取任何费用。这可能会在以后的更新中修复。在 Cosmos 方面或在以太坊方面,有很多方法可以做到这一点。但就目前而言,运行 Gravity 的 Cosmos 链的验证者可能只会设置一个利他中继器,负责提交验证者集更新。

  • Gravity.sol 不是 Cosmos 轻客户端,它不了解完整的 Cosmos 共识和质押过程。它基本上是一个多重签名,其签名者旨在成为特定 Cosmos 链的验证者集。我们在 Cosmos 方面使用了一些削减来确保始终如此。

削减

 Slashing 是 Gravity 安全性的重要组成部分。在 Cosmos 或桥的以太坊一侧行为不正确的验证者将在 Cosmos 一侧被削减。这就是将 Gravity 桥的安全性与运行它的 Cosmos 链的安全性联系起来的原因。

批量和验证器集的活性削减

 通过参与 Cosmos 共识过程,验证者隐含地声明该过程产生的所有验证者集更新和批次都是正确的。如果该验证器未对这些验证器集和批次进行签名,则该验证器无法正常运行。在宽限期后,它将因未签名而被削减。

削减假批次和验证器集

 可以向 Gravity.sol 合约提交从未由 Cosmos 链生成的批次和验证人集,只要它们由合约当前检查点中超过 2/3 的验证人签名。为了防止恶意验证者组成卡特尔,通过伪造的交易批次或验证者集更新从桥中窃取,Gravity 削减了签名出现在区块链上的验证者和从未由链生成的验证者集更新。这是通过证据机制完成的,任何人都可以在伪造的批次或 valset 上提交签名证据,并且链将削减负责的验证者。
分享到:更多 ()

来评论吐槽 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

快手号:神吐槽shentucao

交易所地址更多手机免费挖矿APP