简析账户抽象和EIP-4337:未来智能合约钱包落地情况如何?_比特币:MOO

最近,账户抽象以及EIP-4337在开发者圈子里很火。账户抽象指的是未来钱包签名机制概念化。目前,主流钱包(EOA钱包)采用的签名机制是CDSA(椭圆曲线数字算法签名),而未来钱包的签名机制可以多样化:采用多签、其他的加密算法以及ZK验证等。EIP-4337的提出则推动账户抽象概念的落地,未来将可能开启智能合约钱包新纪元。

那么,账户抽象所带来的钱包改革会带来什么实质性的好处吗?在Metamask、Math Wallet等钱包已经成了主流应用的情况下,智能合约钱包还机会兴起吗?本文在科普的基础上也对上述话题进行探讨。

(本文由Fenbushi Capital原创,有匪撰文,感谢Math Wallet CTO Eric 的分享。)

EOA钱包 & 智能合约钱包

钱包的账户都有两部分构成:分别为外部账户(externally owned account) 和合约账户(contract account)。EOA钱包是用户通过私钥直接控制账户的钱包(Metamask、Math Wallet)。其中,钱包账户的创建是通过随机生成私钥、根据私钥计算出公钥、根据公钥计算出地址的方式。用户发送交易的过程实际上是用私钥为交易数据签名的过程,由外部账户触发。

安全团队:获利约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]

慢雾: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]

Grim Finance 被黑简析:攻击者通过闪电贷借出 WFTM 与 BTC 代币:据慢雾区情报,2021 年 12 月 19 日,Fantom 链上 Grim Finance 项目遭受攻击。慢雾安全团队进行分析后以简讯的形式分享给大家。

1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,并在 SpiritSwap 中添加流动性获得 SPIRIT-LP 流动性凭证。

2. 随后攻击者通过 Grim Finance 的 GrimBoostVault 合约中的 depositFor 函数进行流动性抵押操作,而 depositFor 允许用户指定转入的 token 并通过 safeTransferFrom 将用户指定的代币转入 GrimBoostVault 中,depositFor 会根据用户转账前后本合约与策略池预期接收代币(预期接收 want 代币,本次攻击中应为 SPIRIT-LP)的差值为用户铸造抵押凭证。

3. 但由于 depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者在调用 depositFor 函数时传入了由攻击者恶意创建的代币合约地址。当 GrimBoostVault 通过 safeTransferFrom 函数调用恶意合约的 transferFrom 函数时,恶意合约再次重入调用了 depositFor 函数。攻击者进行了多次重入并在最后一次转入真正的 SPIRIT-LP 流动性凭证进行抵押,此操作确保了在重入前后 GrimBoostVault 预期接收代币的差值存在。随后 depositFor 函数根据此差值计算并为攻击者铸造对应的抵押凭证。

4. 由于攻击者对 GrimBoostVault 合约重入了多次,因此 GrimBoostVault 合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在 GrimBoostVault 合约中取出了远多于之前抵押的 SPIRIT-LP 流动性凭证。随后攻击者使用此 SPIRIT-LP 流动性凭证移除流动性获得 WFTM 与 BTC 代币并归还闪电贷完成获利。

此次攻击是由于 GrimBoostVault 合约的 depositFor 函数未对用户传入的 token 的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对 depositFor 进行重入获得远多于预期的抵押凭证。慢雾安全团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。[2021/12/19 7:49:04]

EOA钱包的优劣势包括,优势:

慢雾:BSC项目Value DeFi vSwap 模块被黑简析:据慢雾区情报,币安智能链项目 Value DeFi 的 vSwap 模块被黑,慢雾安全团队第一时间介入分析,并将结果以简讯的形式分享,供大家参考:

1. 攻击者首先使用 0.05 枚 WBNB 通过 vSwap 合约兑换出 vBSWAP 代币;

2. 攻击者在兑换的同时也进行闪电贷操作,因此 vSwap 合约会将兑换的 vBSWAP 代币与闪电贷借出的 WBNB 转给攻击者;

3. 而在完成整个兑换流程并更新池子中代币数量前,会根据池子的 tokenWeight0 参数是否为 50 来选择不同的算法来检查池子中的代币数量是否符合预期;

4. 由于 vSwap 合约的 tokenWeight0 参数设置为 70,因此将会采用第二种算法对池子中的代币数量进行检查;

5. 而漏洞的关键点就在于采用第二种算法进行检查时,可以通过特殊构造的数据来使检查通过;

6. 第二种算法是通过调用 formula 合约的 ensureConstantValue 函数并传入池子中缓存的代币数量与实时的代币数量进行检查的;

7. 在通过对此算法进行具体分析调试后我们可以发现,在使用 WBNB 兑换最小单位(即 0.000000000000000001) vBSWAP 时,池子中缓存的 WBNB 值与实时的值之间允许有一个巨大的波动范围,在此范围内此算法检查都将通过;

8. 因此攻击者可以转入 WBNB 进行最小单位的 vBSWAP 代币兑换的同时,将池子中的大量 WBNB 代币通过闪电贷的方式借出,由于算法问题,在不归还闪电贷的情况下仍可以通过 vSwap 的检查;

9. 攻击者只需要在所有的 vSwap 池子中,不断的重复此过程,即可将池子中的流动性盗走完成获利。详情见原文链接。[2021/5/8 21:37:37]

1. 可以免费创建钱包。

慢雾:Polkatrain 薅羊毛事故简析:据慢雾区消息,波卡生态IDO平台Polkatrain于今早发生事故,慢雾安全团队第一时间介入分析,并定位到了具体问题。本次出现问题的合约为Polkatrain项目的POLT_LBP合约,该合约有一个swap函数,并存在一个返佣机制,当用户通过swap函数购买PLOT代币的时候获得一定量的返佣,该笔返佣会通过合约里的_update函数调用transferFrom的形式转发送给用户。由于_update函数没有设置一个池子的最多的返佣数量,也未在返佣的时候判断总返佣金是否用完了,导致恶意的套利者可通过不断调用swap函数进行代币兑换来薅取合约的返佣奖励。慢雾安全团队提醒DApp项目方在设计AMM兑换机制的时候需充分考虑项目的业务场景及其经济模型,防止意外情况发生。[2021/4/5 19:46:39]

2. 转账是gas费用较为低廉。

3. 可以同时操作多个账户。

劣势:

1. 用户在生成一个钱包后,需要保留相应的私钥。一旦私钥流出,钱包因资产将面临被盗风险而被弃用。

2. 用户在转账操作时经常需要授权应用,这给到恶意账户可乘之机,智能合约可以瞬间把资产转走(参考TP钱包漏洞的案例)。

3. 用户必须用ETH进行支付gas费用。

而合约钱包在保留公私钥的同时,不同点在于钱包本身由智能合约操作,发起交易则直接通过合约账户(contract account)来完成。

合约钱包具备以下优劣势,优势:

1. 无需助记词,可恢复钱包并更换私钥。

2. 无需购买ETH作为gas费用支付。

3. 可管理,在基础的转账上增添更多功能:隐私交易、多签、代付gas费用等。

4. 可编程、可升级,定制化。

1. 创建钱包需要一定的成本,无法批量创建免费钱包。

2. 在Layer1的gas费成本高昂,之后搭建在Layer2上会好一点。

3. 一笔交易一次操作,多笔交易无法打包成一次。

4. 合约漏洞会影响钱包安全。

对比下来,EOA钱包像是ATM机,只支持存取、转账、余额查询等基本服务。而合约钱包则更像是智能化的银行系统,用户可以设置白名单账户、最大提取额度;在转账操作上更加宽宥,允许项目方(补贴)、好朋友代付等等。由于各种操作都需要调用智能合约,提高了用户管理钱包的便捷度。安全方面,EOA钱包和智能合约钱包各自存在隐患:前者容易在私钥泄露和授权应用上出问题,后者则可能出现合约漏洞。有一点坏处是,用户在使用合约钱包时每次调用智能合约费用较高。不过,此次以太坊基金会强推账户抽象,必有深意,下文继续分说。

以太坊路线图 & EIP-4337

账户抽象概念自2015年就被提出,经历过多次的EIP提案也未成型。而最新的EIP-4337之所以受到以太坊基金会的重视,在于以太坊路线图的确定。在合并之后,以太坊未来升级(proto-danksharding)都会围绕着为Roll-up服务的基调。Rollup会显著降低gas费用,而Proto-danksharding在降低gas费上又添助益。这为智能合约钱包的普及奠定了良好的基础,解决了gas费用贵的主要问题。

EIP-4337无需在以太坊共识层面进行改动,而是推出了由User operation、Bundler以及Paymaster等角色构成的解决方案。解决方案如下:

1、Alice(用户)发起一个“用户操作”,并包含它想要执行的交易。

2、她将操作发送到高级别的“用户操作内存池”。

3、操作被部分验证并广播到P2P内存池节点网络。

4、操作由“Bundler”(打包者)负责,Bundler可以是任何人——MEV搜索者、验证者、你或我,等等。所有的操作被打包者打包成一笔大额交易。

5、打包者将该区块与其他交易一起包含在以太坊区块中。

接着是打包者的功能,来了解交易将如何被执行和验证。

1、打包者将交易路由到一个全局的“入口点”智能合约。

2、全局合约通过每个用户操作并调用智能合约钱包中的“验证函数”。

3、钱包运行这个函数来验证用户操作的签名,并对打包者打包这些交易进行补偿。

4、钱包运行一个执行操作来操作指定的交易。

5、执行操作后,剩余的gas会退还至钱包。

关于EIP-4337,其中新的mempool相当于在更高级别的系统中复制原先的交易内存池,bundler相当于sequencer对于交易进行排序并可能获取一定的MEV收入,entry point contract作为可信入口点用以检索和检查打包内容是否有垃圾交易(在一定意义上实现了扩容)。Paymaster的模块未来可以接入token/法币通道,代付的应用场景也很丰富:第一,允许应用开发者代用户付费;第二,允许用户以ERC20代币支付费用,合约作为中介收取ERC20并以ETH支付。总得来说,EIP-4337中的user operation mempool以及paymaster 有机会创造出全新的业态,值得开发者深入探索!

短期&长期智能合约钱包落地情况

短期来看,Argent已经实现了部分智能合约钱包的功能,包括无需助记词和私钥,仅凭手机号和邮箱账户即可创建账户;添加可信第三方“guardian”实现无私钥恢复;支持更复杂的功能,通过DAI/WETH进行gas费用支付等等(它不是原子进行gas费支付)。不过,智能合约钱包并非无后顾之忧,依旧存有风险敞口。

长期来看,智能合约钱包的普及会面对如下阻力:

1. 合约钱包的门槛较高,创建钱包需要花钱。从用户的角度来看,如果项目方不进行补贴,就难以有动力去使用产品。

2. 合约钱包的广泛应用有赖于以太坊Layer2的蓬勃生态。就短期来说,Layer2生态还远未达到成熟的水平。

3. 主流的钱包已经获取太多用户了,基于安全等因素的考虑,目前缺乏动力进行改革。

综上所述,智能合约钱包因其可编程型、智能性、复合功能而备受关注,可能成为主流钱包的发展方向。不过辩证得看,它并不是十全十美、万无一失,它的普及仍依赖于Layer2生态的成熟。最后是市场因素,这取决于用户选择对账户的”控制权“还是”便捷性“。

分布式资本

企业专栏

阅读更多

金色早8点

区块律动BlockBeats

金色财经

1435Crypto

吴说区块链

blockin

比推 Bitpush News

Block unicorn

Foresight News

Odaily星球日报

Bankless

DeFi之道

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

金智博客

狗狗币价格闪电网络:历史与现实_TNI:football币发行总量

初心 Aaron Van Wirdum的《闪电网络的历史:从头脑风暴,到测试版本》记录了2018年前闪电网络的有趣历史。 中本聪在2009年创造BTC的时候就有关于支付通道的想法,并且在Bitcoin 1.0里就已经包含了支付通道的最初代码实现,之后的几年,支付通道乃至闪电网络的想法一直在被BTC社区讨论。

[0:15ms0-6:694ms