简析波卡平行链与以太坊2.0架构设计异同_ETH:POS

来源:?谈谈区块链

撰文:谈国鹏,Ownbit创始人

前天晚上,波卡生态链项目Moonbeam和Ownbit进行了技术交流,期望未来Ownbit对波卡生态链进行更好地支持。Moonbeam也将竞争成为第一批波卡平行链。借着交流的机会,我对波卡平行链也有了更深的理解,遂成此文。

ETH2.0和波卡平行链是未来的两个重要技术,他们虽分属于两个不同的重量级项目,但在设计上却有惊人的相似。

波卡平行链

在波卡的设计里,有两个重要的概念,一个是波卡平行链,另一个是波卡平行线程。理解这两个概念是理解整个波卡生态的重要环节。

波卡平行链,故名思议,是与波卡主链平行的其他链。要成为平行链,需要占用波卡系统的一个插槽。波卡系统的插槽数量是有限的。波卡设计出了一套插槽拍卖的系统,通过出价拍卖获得一个插槽有限的使用权。

Beosin:sDAO项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin?EagleEye 安全风险监控、预警与阻断平台监测显示,BNB链上的sDAO项目遭受漏洞攻击,Beosin分析发现由于sDAO合约的业务逻辑错误导致,getReward函数是根据合约拥有的LP代币和用户添加的LP代币作为参数来计算的,计算的奖励与用户添加LP代币数量正相关,与合约拥有总LP代币数量负相关,但合约提供了一个withdrawTeam的方法,可以将合约拥有的BNB以及指定代币全部发送给合约指定地址,该函数任何人都可调用。而本次攻击者向其中添加了LP代币之后,调用withdrawTeam函数将LP代币全部发送给了指定地址,并立刻又向合约转了一个极小数量的LP代币,导致攻击者在随后调用getReward获取奖励的时候,使用的合约拥有总LP代币数量是一个极小的值,使得奖励异常放大。最终攻击者通过该漏洞获得的奖励兑换为13662枚BUSD离场。Beosin Trace追踪发现被盗金额仍在攻击者账户,将持续关注资金走向。[2022/11/21 7:53:09]

因此每次插槽的占有都是有限时间内,到期后要重新进行插槽竞拍。用于竞拍的DOT将在插槽使用到期后归还,因此使用插槽,只是占用金额,而不花费资金。

Beosin:SheepFarm项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,BNB链上的SheepFarm项目遭受漏洞攻击,Beosin分析发现由于SheepFarm合约的register函数可以多次调用,导致攻击者0x2131c67ed7b6aa01b7aa308c71991ef5baedd049多次利用register函数增大自身的gems,再利用upgradeVillage函数在消耗gems的同时累加yield属性,最后调用sellVillage方法把yield转换为money后再提款。本次攻击导致项目损失了约262个BNB,约7.2万美元。Beosin Trace追踪发现被盗金额仍在攻击者账户,将持续关注资金走向。[2022/11/16 13:10:39]

为什么要成为波卡平行链?

安全团队:获利约900万美元,Moola协议遭受黑客攻击事件简析:10月19日消息,据Beosin EagleEye Web3安全预警与监控平台监测显示,Celo上的Moola协议遭受攻击,黑客获利约900万美元。Beosin安全团队第一时间对事件进行了分析,结果如下:

第一步:攻击者进行了多笔交易,用CELO买入MOO,攻击者起始资金(182000枚CELO).

第二步:攻击者使用MOO作为抵押品借出CELO。根据抵押借贷的常见逻辑,攻击者抵押了价值a的MOO,可借出价值b的CELO。

第三步:攻击者用贷出的CELO购买MOO,从而继续提高MOO的价格。每次交换之后,Moo对应CELO的价格变高。

第四步:由于抵押借贷合约在借出时会使用交易对中的实时价格进行判断,导致用户之前的借贷数量,并未达到价值b,所以用户可以继续借出CELO。通过不断重复这个过程,攻击者把MOO的价格从0.02 CELO提高到0.73 CELO。

第五步:攻击者进行了累计4次抵押MOO,10次swap(CELO换MOO),28次借贷,达到获利过程。

本次遭受攻击的抵押借贷实现合约并未开源,根据攻击特征可以猜测攻击属于价格操纵攻击。截止发文时,通过Beosin Trace追踪发现攻击者将约93.1%的所得资金 返还给了Moola Market项目方,将50万CELO 捐给了impact market。自己留下了总计65万个CELO作为赏金。[2022/10/19 17:32:31]

成为波卡平行链主要获得两个好处:链本身更加安全,以及拥有和其他平行链的互操作性。

慢雾:Inverse Finance遭遇闪电贷攻击简析:据慢雾安全团队链上情报,Inverse Finance遭遇闪电贷攻击,损失53.2445WBTC和99,976.29USDT。慢雾安全团队以简讯的形式将攻击原理分享如下:

1.攻击者先从AAVE闪电贷借出27,000WBTC,然后存225WBTC到CurveUSDT-WETH-WBTC的池子获得5,375.5个crv3crypto和4,906.7yvCurve-3Crypto,随后攻击者把获得的2个凭证存入Inverse Finance获得245,337.73个存款凭证anYvCrv3Crypto。

2.接下来攻击者在CurveUSDT-WETH-WBTC的池子进行了一次swap,用26,775个WBTC兑换出了75,403,376.18USDT,由于anYvCrv3Crypto的存款凭证使用的价格计算合约除了采用Chainlink的喂价之外还会根据CurveUSDT-WETH-WBTC的池子的WBTC,WETH,USDT的实时余额变化进行计算所以在攻击者进行swap之后anYvCrv3Crypto的价格被拉高从而导致攻击者可以从合约中借出超额的10,133,949.1个DOLA。

3.借贷完DOLA之后攻击者在把第二步获取的75,403,376.18USDT再次swap成26,626.4个WBTC,攻击者在把10,133,949.1DOLAswap成9,881,355个3crv,之后攻击者通过移除3crv的流动性获得10,099,976.2个USDT。

4.最后攻击者把去除流动性的10,000,000个USDTswap成451.0个WBT,归还闪电贷获利离场。

针对该事件,慢雾给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/6/16 4:32:58]

为了更好理解链更加安全这个概念,我们可以把波卡系统想象成可以容纳多条平行链的容器。每个平行链会有自己的共识机制,以及产生区块的方式。容器定时将所有平行链产生的区块收集起来,形成容器层面的区块。该容器在波卡中被称为:中继链。被中继链打包对于平行链而言,称为区块的?finalize。

Harvest.Finance被黑事件简析:10月26号,据慢雾区消息 Harvest Finance 项目遭受闪电贷攻击,损失超过 400 万美元。以下为慢雾安全团队对此事件的简要分析。

1. 攻击者通过 Tornado.cash 转入 20ETH 作为后续攻击手续费;

2. 攻击者通过 UniswapV2 闪电贷借出巨额 USDC 与 USDT;

3. 攻击者先通过 Curve 的 exchange_underlying 函数将 USDT 换成 USDC,此时 Curve yUSDC 池中的 investedUnderlyingBalance 将相对应的变小;

4. 随后攻击者通过 Harvest 的 deposit 将巨额 USDC 充值进 Vault 中,充值的同时 Harvest 的 Vault 将铸出 fUSDC,而铸出的数量计算方式如下:

amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());

计算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的变化将导致 Vault 铸出更多的 fUSDC;

5. 之后再通过 Curve 把 USDC 换成 USDT 将失衡的价格拉回正常;

6. 最后只需要把 fUSDC 归还给 Vault 即可获得比充值时更多的 USDC;

7. 随后攻击者开始重复此过程持续获利;

其他攻击流程与上诉分析过程类似。参考交易哈希:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877。

此次攻击主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在铸币时采用的是 Curve y池中的报价(即使用 Curve 作为喂价来源),导致攻击者可以通过巨额兑换操控预言机的价格来控制 Harvest Finance 中 fToken 的铸币数量,从而使攻击者有利可图。[2020/10/26]

波卡中继链对平行连区块的最终确认让平行链更加安全。这样每个平行链可以得益于波卡系统的强大共识,而不用担心本链可能存在各种共识层面的攻击或问题。

波卡平行链和其他平行链的互操作性是另一个优点。波卡在系统层面设计了一套消息传递系统,可以让各平行链之间相互传递消息、执行指令、转移token等等。各平行链根据XCMP定义自己可以接收处理的消息类型,便可以让自己拥有和其他平行链的互操作性。

如果把平行链比喻成操作系统里的进程,那么XCMP可以理解为进程间通信机制IPC(InterProcessCommunication)。

平行链资源是有限的

因为平行链资源有限,大部分链可能无法竞拍到平行链插槽。这时,波卡官方给出的方案是,使用测试网络KUSAMA,或者平行线程。

平行线程和平行链之间的区别仅在于一点:平行链永久占用中继链资源,而平行线程只在需要时占用。平行线程需要中继链对其区块进行确认时,便提出请求,并给予一定的费用。因为同时会有多个平行线程提出确认需求,中继链会按照给予的费用高低进行优先选择。如下图所示:

比起平行链而言,使用平行线程,无需参与插槽竞拍,因此无需大额的启动资金。对于一些不需要频繁确认的应用,使用平行线程更加适合。

ETH2.0

ETH2.0的线路图按照分片技术在前进。分片技术最早出现在数据库技术中。为了让数据库拥有更大的执行查询或插入的能力,将一个数据库拆分成多个数据库,并且部署到多个机器上,让执行能力成倍地提升。

ETH2.0将以太坊网络拆分成多片,将以太坊的执行能力提升相应的倍数。每个分片就是一个子网络。处理ETH2.0共识,以及系统各个子分片之间通信的模块被成为:BeaconChain,这相当于波卡网络里的中继链。ETH2.0分片示意图如下:

可以看出,在大的架构方面,ETH2.0和波卡有着惊人的相似。但在细节和理念层面又有很多的不同。

波卡平行链VSETH2.0

从设计目的而言,波卡平行链主要是为了跨链目的,通过平行链水平扩张,进而解决性能吞吐问题。而ETH2.0的设计完全是为了解决性能吞吐问题。

波卡和ETH2.0都有状态确认的功能。ETH2.0每一个时代finalize一次,一个时代定义为64个区块,所以6-12分钟finalize一次。而波卡网络的finalize时间则更短,一般1分钟以内。

从共识机制而言,ETH2.0和波卡也有明显的区别。ETH2.0采用PoS机制。质押32ETH可以成为验证者。每个分片至少需要256个验证者才能进行finalize操作。以64个分片计算,ETH2.0需验证者16,384名。而波卡采用提名者PoS机制,所需验证者数量远小于ETH2.0,大约每个平行链需10个验证者,以整个系统100个平行链计算,共需1000个验证者。

另外一个不同点在于,波卡是不同系统间互联的框架。而ETH2.0是同一套系统间互联的框架。

波卡更关注其他链,而ETH2.0只是更关注本身,这也反应出它们对未来不同的展望。波卡打造的是多链并存、互联互通的场景。而ETH2.0则打造的强大统一的底层区块链系统,上层繁荣的DApp则通过应用接口彼此互通的场景。

跨链

波卡对于平行链之间,天然具有跨链优势。而ETH2.0不具有跨链能力。但这并不意味这波卡比在跨链方面ETH2.0强大很多。

例如对于跨链比特币网络而言,波卡需要使用比特币桥才能完成跨链。而这点,跟以太坊跨链比特币方案是一致的。因此,对于跨链而言,波卡只是对于未来部署在波卡网络上的平行链之间才具有优势。

结语

目前波卡生态的平行链项目正如火如荼地进行。它们是否会在未来占有非常重要的地位,将是区块链最大的看点之一。

从时间而言,波卡主网的上线时间较迟,错过了以太坊发展的这几年黄金时间。然而,ETH2.0上线又将是2年以后的事情,而波卡平行链项目有望在今年年底或明年初上线波卡主网。这也给波卡留下了更多追赶以太坊的时间。所以未来波卡网络能否像以太坊那样大放异彩,非常值得我们关注!

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-7:220ms