以太坊清扫机器人肆虐,用户该如何挽救泄露地址资金?

了解 TAICHI、自毁智能合约和 Flashbots 三种方法,以挽救泄露地址中未被清扫的资金。

原文标题:《以太坊清扫机器人肆虐,一文了解三种解决方案》 撰文:Harry Denley 编译:洒脱喜

你是否遇到过这样的情况,当你发送一笔以太坊资金,然后就发现钱包里的钱立即被清空了,你可能被清扫器(sweeper)盯上了,这篇文章旨在帮你解决这个问题,原文作者是 MyCrypto 安全 & 反钓鱼工程师 Harry Denley。

当你的秘密遭到泄露时,恶意方通常会给你的账户设置一个清扫器(sweeper),以利用将来该地址上所发生的任何事情,比如当用户存入 ETH 以尝试提取一些代币,发生空投或其它情况时。

本文概述了用户的资金是如何被清扫走的,以及三种独特的方法来挽救任何未被清扫的资金(例如质押资金)。

近期,我们看到有大量用户在冒充 Telegram 群管理员,这些假的管理员会向在主频道中请求帮助的用户提供帮助(尽管他们不是真正的管理员,他们复制了管理员简介信息,但用户名有一些小的差异)。这些冒名顶替者经常会说很多行话来迷惑用户,并分享一个看似合法网站的链接,但它最终会要求你输入助记词或私钥。

然后,你的加密资产就不见了,上面有一个清扫器。

这是这些假网站之一的示例:

清扫器是一些监控区块链(包括 txpool,从技术上讲,它没有在链上)的代码,其以编程方式对一组规则的特定事务进行签名的反应,要比人类更快。

这意味着,对于你在区块链浏览器上查看你的地址或将其「连接」到 dapp 的 UI,清扫器(sweeper)是看不见的。只有在你签名并向网络广播交易后,清扫器(sweeper)才能看到你的活动。

随着时间的推移,我们看到了清扫器(sweeper)和利用它们的活动的演变。

2017 年期间,有相当一部分活动利用了具有锁定功能(即,你无法成功调用 transfer() )但包含喂价的代币。Dave Appleton 发表了一篇关于这些活动的文章。

恶意方利用这种骗局的方式是,他们会将私钥发布到这个地址(以某种看起来无辜或错误的方式),并等待人们将 ETH 存入该地址(以转移地址中的代币)。然后恶意方会有一个该账户的清扫器程序,以将存入该地址的 ETH 快速转移到他自己的账户。从理论上来说,锁定的代币被认为是毫无价值的,因此他们试图从那些毫无戒心的「贪婪」用户那里获取利润。

如今,遭泄露的的地址基本被部署了 ETH 清扫器程序,一些组织则使用更高级的清扫器程序逻辑来清扫基于喂价的 ERC20 代币。

今年早些时候,我对一个泄露地址做了一些侦察研究,发现清扫器在不断进化:

描述清扫器的文章,第一次出现是在 2017 年,而现在我们观察到的清扫器已变得更加先进,它们的设计目的是最大化运行者的利润,同时对受害者造成最大的损失。

首先,作为人类,我们是无法比代码更快的,所以我们的解决方案只能涉及编码。你可以选择几条不同的路线,它们均无法提供 100% 的保证,但对我们而言是有利的。

你需要创建一个想要尝试抢救的代币列表,按优先级排序,这样你就可以轻松地确定你的计划,你需要列出:

关键是你要有条不紊地完成这件事,这样你才能快速有效地执行。正如一句名言:「如果你疏于计划,那你就是计划走向失败」。

清扫器的工作方式是监视 txpool 中转到其清扫地址的传入交易,而 TAICHI 允许你将签名的交易直接提交给矿工(SparkPool),而无需通过公共 txpool 进行广播,这意味着清扫器程序将是看不到的,并且很可能你的交易不会被清扫程序机器人抢先完成(至少以我的经验来看)。

这里的方法是让你的所有交易预先以 nonce 顺序签名,并以编程方式提交给 TAICHI。大多数清扫器只监视公共 txpool/mempool 以获取传入的 ETH 交易,并且不在每个新区块上调用 eth_getBalance (以节省 CPU 周期和 RPC 方法调用的成本),这意味着它们将对通过专用 txpool 路由发送到帐户的 ETH 视而不见,也就不会对其进行清扫。

这需要你做一些数学工作,如果正确执行了数学运算,则尝试抢先交易的清扫器程序可能会失败!(通常,我默认 gas 价格比 GasNow 上的「快速」类别高几个百分点,因此矿工将更有可能在下一个区块中确认你的交易。)

你可以离线使用 MyCrypto 来生成已签名的交易,并在准备就绪时将其推送到 TAICHI,或者使用 ethers.js (或其他库)创建代码来创建已签名的交易。

就像使用 TAICHI 方法一样,我们可以使用智能合约让 ETH 进入账户,而不会在公共 txpool 中显示出来。我们通过从安全地址部署智能合约来做到这一点,然后在结构上将 ETH 发送到被泄露的地址(这将是一笔内部交易)。

通过部署这个合约,我们可以在构造函数参数中发送 ETH 以及遭泄露的地址字符串。该合约通过在同一交易中创建合约并自毁来工作。使用 selfdestruct ()意味着我们清除了区块链状态(因为它是一次性使用合约),并且在一次交易中将 ETH 转发到了泄露地址。(示例)

请注意,这种方法虽然有效,但它会增加额外的成本,因为我们要做的操作不仅仅是将 ETH 从一个帐户发送到另一个帐户。这种方法的成本约为 70,000 gas,在高昂的 gas 价背景下,使用这种方法的手续费成本就可能达到 0.0112ETH。

一般而言,我们需要支付 ETH 才能让一笔交易被确认(因为交易费用是由发送方支付的)。然而,由于 Flashbots‌的出现,我们可以更轻松地从 EOA 中通过用另一个帐户中的资金「贿赂」矿工,以 0 gas 价格(即 0 美元交易费用)确认交易,这意味着我们可以将代币从泄露的地址中转移出来,而无需用 ETH 支付 gas 费用,是的,就是这样。

该策略需要用到 2 个账户,一个是泄露账户,以及另一个贿赂矿工的帐户。

Flashbots 小组已发布了一个名为 Flashbots / searcher-sponsored-tx‌的项目,其具有设置此策略以从两个帐户中确认你的交易的基本原理。

由于我们将使用另一个帐户支付交易费用,因此不需要向受损害的帐户存入 ETH。

为了确保泄露帐户中没有 ETH,我们强烈建议你运行一个 Burner 机器人。

我们通常建议在每个实例上使用不同的 RPC 节点,在一台以上的计算机上运行这个 burner 机器人。例如,使用 Infura 在本地运行 burner 机器人,并在具有其他提供商(例如 Quiknode)的远程服务器上运行一个 burner 机器人。这样,你就有了一个备案计划,以防出现高网络延迟或节点问题(速率限制、同步问题)。

Flashbots/searcher-sponsored-tx 中的代码需要根据你的特定需求进行修改,但这个引擎可以帮助你将代币从泄露的地址中解救出来。这个 Flashbots 引擎足够灵活,可支持单个 transfer() 调用,或者 unstake() 以及 transfer() 调用。

如果你不太熟悉代码,你也可以尝试使用 @kendricktan/flashbots.tools ‌网站。

来源链接:www.8btc.com

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻 ChainNews 立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

链闻仅提供相关项目信息,不构成任何投资建议。

坚决杜绝各类代币发行及炒作,如发现文章含敏感信息,请点击「举报」,我们会及时处理。

举报


【资讯底部广告】添加微信送福利 高胜率百万布局等于币圈合约社区天堂,众多专业团队实力派导师拥有上万粉丝,24小时免费提供服务指导,在线解套服务,微信:B168999TC

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到irena@aicoin.com,本平台相关工作人员将会进行核查。

发表评论

暂时没有评论,赶紧抢沙发吧!