目前以太坊基于零知识证明的扩容方案是ZK-rollup,但其实还有另外两种解决方案——Validium和Volitions。本文简单介绍以上3种基于零知识证明的扩容方案。
ZKrollup
ZK-rollup的运作简单来说是将多笔交易打包在一起,发布到L1上,同时发布一个证明来声称这些交易有效,一旦在L1上验证确实有效,那么zk-rollup的状态就会更新。这套证明机制也被称作「有效性证明」,目前ZK-rollup主要采用的证明机制是zkSNARK和zkSTARK。尤其是zk-SNARK应用最为广泛,而zk-SNARK则是它的改进版,目前使用者并不多。zk-SNARK即zero-knowledgesuccinctnon-interactiveargumentonknowledge,是一种文件很小且很容易验证的加密证明,而简洁jiu就在于非交互式。传统方案是交互式证明,即示证者和验证者之间反复确认。你可以理解为示证者不断向验证者询问「是或不是?」,然后验证者不断给出回答,直到最后碰出一个正确答案来,所以效率很低。而SNARK的解决方案是提前先搞一个「可信初始化」,从而生成公共参考字符串,这样所有的示证者直接访问它就可以了。你可以理解为有一个标准答案,示证者就像批改试卷那样去验证。但SNARK提前生成公共参考字符串提高了效率,但也留下了隐患——万一公共参考字符串泄漏了呢?于是就催生出了STARK。STARK是交互式证明,但它是一种巧妙的交互式证明——通过哈希函数碰撞来保证安全性,因此也比较高效。Validiums
慢雾:GenomesDAO被黑简析:据慢雾区hacktivist消息,MATIC上@GenomesDAO项目遭受黑客攻击,导致其LPSTAKING合约中资金被非预期的取出。慢雾安全团队进行分析有以下原因:
1.由于GenomesDAO的LPSTAKING合约的initialized函数公开可调用且无权限与不可能重复初始化限制,攻击者利用initialized函数将合约的stakingToken设置为攻击者创建的虚假LP代币。
2.随后攻击者通过stake函数进行虚假LP代币的抵押操作,以获得大量的LPSTAKING抵押凭证。
3.获得凭证后再次通过initialized函数将合约的stakingToken设置为原先真是的LP代币,随后通过withdraw函数销毁LPSTAKING凭证获取合约中真实的LP抵押物。
4.最后将LP发送至DEX中移除流动性获利。
本次事件是因为GenomesDAO的LPSTAKING合约可被任意重复初始化设置关键参数而导致合约中的抵押物被恶意耗尽。[2022/8/7 12:07:06]
ZK-rollup是将交易分批发送到L1上去执行,是一种无需信任的「自定义安全性」。Validiums则是直接在链下执行,并通过零知识证明来维护数据,只有需要的时候才在主网上验证取款请求的有效性证明。所以Validiums可扩展性要高于ZK-rollup,但它是把信任交给链外第三方的「弱信任扩容」,会被攻击导致数据不可用或者用户无法取出资金。解决安全的方式是采用PoS机制,用经济激励来确保数据储存在各个节点之中并且随时可用。目前采用Validiums方案的代表项目是ImmutableX,以NFT为中心的扩展解决方案。Vitalik认为Validiums其实被严重低估,因为大多数Dapp用Validiums就已经可以满足运行需求了。Volitions
安全公司: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]
StarkWare团队结合ZK-rollup和validium,创造性地推出了Volitions方案,顾名思义是关于「决断能力」。Volitions方案本质上是同时提供ZK-rollup和validium这两种服务,它们共享同一个状态根,用户可以自行选择每笔交易的DA模式。即便Validium那部分被攻破,ZK-rollup上的资金仍然安全。用户就可以在涉及重要资金往来时选择ZK-rollup模式,共享以太坊的安全性,如果是日常娱乐、社交或者小额交易,自然选择Validium模式来提高速度并节省成本。结语
慢雾: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]
以太坊扩容战争还在刚开始,目前占据优势的是Optimisticrollups阵营,它们可以做到EVM兼容甚至完全等效,另外社区运营能力也非常强劲。ZK-rollup落于下风很大程度上是因为一开始就要定制VM,这意味着来自EVM的代码要从头开始编写。不过长远来看,相比于Optimisticrollups,ZKrollups具有内置的隐私和安全优势,未来实现EVM兼容性,很可能胜过Optimisticrollups。而且可以在ZK-rollup和validium之间做决断的Volitions方案,也不失为一种兼顾了各种场景的解决方案。原地址
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]
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。