很多人都在谈论SovereignRollup及其与智能合约Rollup的不同之处,但鲜有人讨论它们是如何工作的?下面我将简要介绍SovereignRollup的工作原理。
首先,我们应该了解「经典区块链」和「模块化区块链」的工作原理,请参阅我最近写的一篇文章。
Rollup的三个功能组件
Rollup有三个主要功能:执行可验证计算、确保交易数据的可用性和分叉选择规则。
安全团队:Defrost Finance被攻击事件简析:金色财经报道,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,Defrost Finance预言机被恶意修改,并且添加了假的抵押token清算当前用户,损失超1300万美元。攻击者通过setOracleAddress函数修改了预言机的地址,随后使用joinAndMint函数铸造了100,000,000个H20代币给0x6f31地址,最后调用liquidate函数通过虚假的价格预言机获取了大量的USDT。后续攻击者通过跨链的方式将被盗资金转移到了以太坊的0x4e22上,目前有490万美元的DAI在0x4e22地址上,有500万美元的DAI在0xfe71地址上,剩余300万美元的ETH被转移到了0x3517地址上。[2022/12/25 22:06:35]
A)执行可验证计算:Rollup计算都可以通过使用完整性证明来验证。
Beosin:SEAMAN合约遭受漏洞攻击简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,2022年11月29日,SEAMAN合约遭受漏洞攻击。Beosin分析发现是由于SEAMAN合约在每次transfer函数时,都会将SEAMAN代币兑换为凭证代币GVC,而SEAMAN代币和GVC代币分别处于两个交易对,导致攻击者可以利用该函数影响其中一个代币的价格。
攻击者首先通过50万BUSD兑换为GVC代币,接下来攻击者调用SEAMAN合约的transfer函数并转入最小单位的SEAMAN代币,此时会触发合约将能使用的SEAMAN代币兑换为GVC,兑换过程是合约在BUSD-SEAMAN交易对中将SEAMAN代币兑换为BUSD,接下来在BUSD-GVC交易对中将BUSD兑换为GVC,攻击者通过多次调用transfer函数触发_splitlpToken()函数,并且会将GVC分发给lpUser,会消耗BUSD-GVC交易对中GVC的数量,从而抬高了该交易对中GVC的价格。最后攻击者通过之前兑换的GVC兑换了50.7万的BUSD,获利7781 BUSD。Beosin Trace追踪发现被盗金额仍在攻击者账户(0x49fac69c51a303b4597d09c18bc5e7bf38ecf89c),将持续关注资金走向。[2022/11/29 21:10:04]
这意味着Rollup交易可以很容易地被第三方参与者验证。
慢雾简析Qubit被盗原因:对白名单代币进行转账操作时未对其是否是0地址再次进行检查:据慢雾区情报,2022 年 01 月 28 日,Qubit 项目的 QBridge 遭受攻击损失约 8000 万美金。慢雾安全团队进行分析后表示,本次攻击的主要原因在于在充值普通代币与 native 代币分开实现的情况下,在对白名单内的代币进行转账操作时未对其是否是 0 地址再次进行检查,导致本该通过 native 充值函数进行充值的操作却能顺利走通普通代币充值逻辑。慢雾安全团队建议在对充值代币进行白名单检查后仍需对充值的是否为 native 代币进行检查。[2022/1/28 9:19:19]
B)确保交易数据的可用性:由于Rollup也是区块链,它们要求数据在任何时候可以被任何需要的人访问。
在SCRollup中,智能合约负责此项任务,数据可用性规则由智能合约定义。
C)分叉选择规则:几乎所有的区块链都被设计成不可变的,除非社区协调一致同意对其进行更改,Rollup也不例外。
?SCRollup中的分叉选择规则也是由智能合约定义。
对于SCRollup,完整性证明只包括计算的有效性。分叉选择和数据可用性规则在智能合约中定义,这意味着如果你想在SCRollup中进行任何更改,你必须先更新智能合约。
所以,重要的问题是:如何升级智能合约?
升级智能合约有两种方法:第一种是DAO/Tokenizedsecurity,它违反了Rollup的「共享安全」原则。第二个是多签,它有点中心化并且自身也存在缺陷。
当前Rollup使用将两者混合的方法进行升级。
SovereignRollup工作机制
SovereignRollup中的完整性证明包括所有三个Rollup组件:分叉选择规则、数据可用性规则和执行有效性。因此,我们得到了一个用户管理的独立Rollup。
如果协议想要升级,用户必须更新他们的轻客户端以验证正确的链,这允许用户管理协议。
SCRollup与L1之间有一个信任最小化桥,而SovereignRollup则没有。
SovereignRollup可以与其它SovereignRollup之间建立信任最小化桥,只要它们使用相同的数据可用性层。
新的问题随之产生:SovereignRollup是通过基于轻客户端的智能合约桥连接的,这意味着如果一条链分叉,另一条链也必须分叉。
这个问题可以通过社区协调或由数据可用性层治理来解决。我相信解决方案在未来会出现,但现在还不清楚。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。