私钥泄漏,defi协议收益领取就被转怎么办?

如果你的钱包私钥泄漏被盗,可是defi协议里每天都能产生收益,一领取就被黑客转走了。你会怎么办

最近碰到一个钱包被盗的案例,客户因为私钥泄漏导致里面的钱全被转走,但是因为DeFi中的收益会定时的打到这个钱包地址上,所以找到我们来寻求帮助。在和黑客抢钱的过程中,我们从提高rpc调用次数再到使用EIP-7702技术。发现了7702很多有意思的技术,所以在这里来分享一下。

EIP-7702技术可能大家感到陌生,但其实已经有很多项目方在使用了。

简单来说通过EIP-7702技术,无需签名,就可以进行很多的操作。在你的钱包编写代码,其他人可以通过调用你的钱包做到很多事情。比如需要gas就可以转账走你钱包里的钱,或者无论你往哪个地址中转钱,但最终会转到一个地址上去。

在我们讲EIP-7702的时候。我们先来简单讲一下钱包的原理。


最早期的EVM 地址其实可以分为两种。 一种是EOA外部账户,另一种是合约账户

  1. 外部拥有账户(EOA)

您可以把它理解为“传统意义上的钱包”,由个人通过私钥直接控制。

当你使用MetaMask、Trust Wallet等钱包软件创建一个新钱包时,生成的就是一个EOA。您会得到一组助记词(对应私钥)和一个以太坊地址。

EOA账户的特点:

  • 每个EOA地址都对应一个唯一的、由密码学生成的私钥。谁拥有私钥就是拥有这个钱包的掌控权
  • EOA账户是区块链上所有交易活动的起点。我们每一次交易,转账等操作,必须是由某个钱包账户来发起的
  • EOA的账户状态里只存储余额、Nonce等基本信息,没有关联任何智能合约代码。

这里需要注意的,在7702技术最大的更新,其实就相当于在EOA钱包上去存储合约代码。如果换个更形象的说法,就是在你的钱包中植入了一个病毒代码。

总结比喻: EOA就像您个人的银行账户,您用私钥(银行卡密码)控制它,可以主动向他人转账或支付账单(调用合约)。


第二个则合约账户(CA)

这类账户则是“没有私钥的地址”。它不是一个由个人直接控制的账户,而是一段部署在区块链上的、可自动执行的代码(智能合约)的化身。说白了,你们打狗的时候用的CA就是这玩意

合约账户的特点:

  • 合约账户不受任何私钥的控制,全由其内部的智能合约代码逻辑决定
  • 合约账户自己无法成为交易的发起者。它永远是“被调用者”。
  • 合约账户被创建后,其代码就被永久地存储在该地址上。这些代码决定了该合约能做什么,以及如何响应外部的调用。
  • 合约账户不仅有自己的余额,还拥有一个独立的存储空间,可以记录复杂的数据结构(比如代币余额映射、DAO的投票记录等)。

既然没有私钥,那么如何“控制”一个合约账户呢?答案是:通过其代码逻辑和权限设置。

  • 合约代码中可能定义了“所有者”或“管理员”的角色,这个角色通常是一个EOA地址。
  • 合约会提供一些特殊函数(如transferOwnershipmint等),并规定只有“所有者”地址发起的调用才能执行这些函数。
  • 所以,您是通过控制那个“所有者”EOA来间接管理合约账户的。

总结比喻: 合约账户就像一个自动售货机。您不能直接打开它(没有私钥),但您可以按照它预设的规则(智能合约代码)投入硬币(发送交易),它就会自动吐出商品(执行操作,如转账、铸造NFT)。售货机的所有者(一个EOA)即代币的创建者,可以通过调用合约方法去增发,燃烧,管理代币。

讲到这里,大家应该对账户有了一个比较清楚的概念了。那我们上面也说了EIP-7702的技术,就是在传统不能存放代码的钱包里,去部署了合约代码。

在钱包中部署了合约代码后,可以带来更多的方便和快捷,但是同样的也给了其他人有了作恶的空间。

下一期,小编会给大家演示一下,如果有人使用7702来做恶。究竟会怎么样。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部