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

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

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

波卡平行链

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

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

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

安全公司:AurumNodePool合约遭受漏洞攻击简析:金色财经报道,据区块链安全审计公司Beosin EagleEye监测显示,2022年11月23日,AurumNodePool合约遭受漏洞攻击。

Beosin分析发现由于漏洞合约的changeRewardPerNode函数未进行验证,导致攻击者可以调用该函数进行任意值设置。

攻击者首先调用changeRewardPerNode函数将每日奖励值设置成一个极大数,接下来调用claimNodeReward函数提取节点奖励,而节点奖励的计算取决于攻击者设置的rewardPerDay值,导致计算的节点奖励非常高。而在这一笔交易之前,攻击者便通过一笔交易(0xb3bc6ca257387eae1cea3b997eb489c1a9c208d09ec4d117198029277468e25d)向合约存入了1000AUR,创建了攻击者的节点记录,从而使得攻击者能够提取出该节点奖励。最终攻击者通过该漏洞获得约50个BNB($14,538.04)。[2022/11/23 8:01:04]

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

慢雾:跨链互操作协议Nomad桥攻击事件简析:金色财经消息,据慢雾区消息,跨链互操作协议Nomad桥遭受黑客攻击,导致资金被非预期的取出。慢雾安全团队分析如下:

1. 在Nomad的Replica合约中,用户可以通过send函数发起跨链交易,并在目标链上通过process函数进行执行。在进行process操作时会通过acceptableRoot检查用户提交的消息必须属于是可接受的根,其会在prove中被设置。因此用户必须提交有效的消息才可进行操作。

2. 项目方在进行Replica合约部署初始化时,先将可信根设置为0,随后又通过update函数对可信根设置为正常非0数据。Replica合约中会通过confirmAt映射保存可信根开始生效的时间以便在acceptableRoot中检查消息根是否有效。但在update新根时却并未将旧的根的confirmAt设置为0,这将导致虽然合约中可信根改变了但旧的根仍然在生效状态。

3. 因此攻击者可以直接构造任意消息,由于未经过prove因此此消息映射返回的根是0,而项目方由于在初始化时将0设置为可信根且其并未随着可信根的修改而失效,导致了攻击者任意构造的消息可以正常执行,从而窃取Nomad桥的资产。

综上,本次攻击是由于Nomad桥Replica合约在初始化时可信根被设置为0x0,且在进行可信根修改时并未将旧根失效,导致了攻击可以构造任意消息对桥进行资金窃取。[2022/8/2 2:52:59]

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

安全公司:Starstream Finance被黑简析:4月8日消息,据Agora DeFi消息,受 Starstream 的 distributor treasury 合约漏洞影响,Agora DeFi 中的价值约 820 万美金的资产被借出。慢雾安全团队进行分析后以简讯的形式分享给大家。

1. 在 Starstream 的 StarstreamTreasury 合约中存在 withdrawTokens 函数,此函数只能由 owner 调用以取出合约中储备的资金。而在 April-07-2022 11:58:24 PM +8UTC 时,StarstreamTreasury 合约的 owner 被转移至新的 DistributorTreasury 合约(0x6f...25)。

2. 新的 DistributorTreasury 合约中存在 execute 函数,而任意用户都可以通过此函数进行外部调用,因此攻击者直接通过此函数调用 StarstreamTreasury 合约中的 withdrawTokens 函数取出合约中储备的 532,571,155.859 个 STARS。

3. 攻击者将 STARS 抵押至 Agora DeFi 中,并借出大量资金。一部分借出的资金被用于拉高市场上 STARS 的价格以便借出更多资金。[2022/4/8 14:12:38]

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

慢雾:Avalanche链上Zabu Finance被黑简析:据慢雾区情报,9月12日,Avalanche上Zabu Finance项目遭受闪电贷攻击,慢雾安全团队进行分析后以简讯的形式分享给大家参考:

1.攻击者首先创建两个攻击合约,随后通过攻击合约1在Pangolin将WAVAX兑换成SPORE代币,并将获得的SPORE代币抵押至ZABUFarm合约中,为后续获取ZABU代币奖励做准备。

2.攻击者通过攻击合约2从Pangolin闪电贷借出SPORE代币,随后开始不断的使用SPORE代币在ZABUFarm合约中进行`抵押/提现`操作。由于SPORE代币在转账过程中需要收取一定的手续费(SPORE合约收取),而ZABUFarm合约实际接收到的SPORE代币数量是小于攻击者传入的抵押数量的。分析中我们注意到ZABUFarm合约在用户抵押时会直接记录用户传入的抵押数量,而不是记录合约实际收到的代币数量,但ZABUFarm合约在用户提现时允许用户全部提取用户抵押时合约记录的抵押数量。这就导致了攻击者在抵押时ZABUFarm合约实际接收到的SPORE代币数量小于攻击者在提现时ZABUFarm合约转出给攻击者的代币数量。

3.攻击者正是利用了ZABUFarm合约与SPORE代币兼容性问题导致的记账缺陷,从而不断通过`抵押/提现`操作将ZABUFarm合约中的SPORE资金消耗至一个极低的数值。而ZABUFarm合约的抵押奖励正是通过累积的区块奖励除合约中抵押的SPORE代币总量参与计算的,因此当ZABUFarm合约中的SPORE代币总量降低到一个极低的数值时无疑会计算出一个极大的奖励数值。

4.攻击者通过先前已在ZABUFarm中有进行抵押的攻击合约1获取了大量的ZABU代币奖励,随后便对ZABU代币进行了抛售。

此次攻击是由于ZabuFinance的抵押模型与SPORE代币不兼容导致的,此类问题导致的攻击已经发生的多起,慢雾安全团队建议:项目抵押模型在对接通缩型代币时应记录用户在转账前后合约实际的代币变化,而不是依赖于用户传入的抵押代币数量。[2021/9/12 23:19:21]

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

波卡平行链和其他平行链的互操作性是另一个优点。波卡在系统层面设计了一套消息传递系统,可以让各平行链之间相互传递消息、执行指令、转移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年以后的事情,而波卡平行链项目有望在今年年底或明年初上线波卡主网。这也给波卡留下了更多追赶以太坊的时间。所以未来波卡网络能否像以太坊那样大放异彩,非常值得我们关注!

原文标题:《波卡平行链与ETH2.0》撰文:谈国鹏,Ownbit创始人

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

金星链

[0:15ms0-0:574ms