你没有过这样的阅历:将一笔资金发送到某个账户后,这笔资金却不翼而飞?你或许是遭了“清道夫”的毒手。咱们来帮你解除危机。

假如你的私钥被盗,作恶者通常会组织一个 “清道夫” 程序来监控你的账户,然后伺机吃掉你的账户中的财物 —— 无论你在这个账户中存入 ETH 或其它代币,仍是收到了空投,或有任何相似情况。

本文概述了 “清道夫” 是怎么吃掉用户财物的,并供给了三种办法来挽救还没有被吃掉的资金(如押金)。

用户私钥是怎么泄漏的?

咱们最近看到有很多用户冒充 Telegram 群组的管理员,然后在这些合法群组的首要频道向用户供给 “协助”(尽管他们不是真实的管理员,他们复制了正牌管理员的简介,只是略微改动了用户名)。冒牌管理员通常会运用专业话术来迷惑用户,向用户共享看似合法的网站(由于有品牌背书)的链接。这些网站会要求用户供给私钥或助记词。

然后你的代币就没了,并且会有 “清道夫” 开始监控你的账户。

这儿有一个垂钓网站的比如:

如何打败以太坊清道夫 找回你的资产

- 感谢研讨员 @dubstard 发现了很多冒充 WalletConnect 的活动! -

“清道夫” 是怎么作业的?

“清道夫” 是一段用来监控区块链(包括买卖池,从技术层面上来说,买卖池不在链上)的代码。它有着比人类更快的反应速度,依照编好的程序为符合规则的特定买卖签名。

也就是说,“清道夫”是看不到你的,它不知道你正在区块链浏览器上检查你的地址,或将你的地址 “衔接” 到某个 dApp 的用户界面。仅当你签署某个买卖并将其播送到网络时,它才会看到你的活动。

跟着时间的推移,“清道夫” 连同运用 “清道夫” 的垂钓圈套也在不断进化中。

“清道夫” 的演化

2017 年有一类圈套十分盛行,运用了具备确定功用【即,无法成功调用transfer()】一起有喂价的代币。 Dave Appleton 发文揭露了这类圈套。

在这类圈套中,骗子会先获取这类能够被确定的代币,可是区块浏览器仍然会供给这类代币【其间最盛行的是 Minerum(MNE)】的价格。然后,骗子会(假装无意间)将存有这类代币的地址的私钥发布出去,诱惑受害者来取走地址中的代币。为了取走代币,受害者会将 ETH 转到该地址上作为 gas 费。可是,骗子早就组织了 “清道夫”,以迅雷不及掩耳之势将受害者转入的 ETH 搬运到自己的账户中。 从理论上来说,被确定的代币被认为是没有价值的, 因而骗子试图从没有戒心的贪婪用户那里收回一些锁仓价值。

如今,被黑的地址现已被大范围放置了根底的 ETH “清道夫”。还有一些欺诈集团选用逻辑上更高级的 “清道夫” ,会基于喂价吃掉 ERC 20 代币。

前段时间,我对一个被黑的地址进行了研讨,发现这些 “清道夫” 还在继续进化:

1)“清道夫” 喜食高价值财物,即使这意味着需求花更多买卖费。

2)“清道夫” 会运用所有可用的 ETH 来盗取尽或许多的价值,并且其买卖在同一 nonce 上取胜的概率很高。

3)“清道夫” 有一个配对引擎,将其原生代币与质押代币进行配对(即,xKNCa = KNC),以便获得质押代币的喂价。

4)“清道夫” 有自己的内部 nonce 计数器,假如其最高 nonce 在一段时间内没有得到承认(或是被丢弃/替换),就会定时将 nonce 重置为 eth.getTransactionCount() 的输出。

5)咱们能够透过一些链上活动看出,假如某个高价值财物成了 “清道夫” 眼中的猎物,“清道夫” 甚至会向相关账户转入一些 ETH 作为 gas 费,以便迅速将该财物从账户中转出。

6)一些 “清道夫” 会为财物价值设置一个最低阈值。“清道夫” 不会吃掉低于该阈值的财物。这就意味着,你或许察觉不到你的账户里有 “清道夫”。细思极恐。

鉴于咱们第一次撰写关于 “清道夫” 的文章是在 2017 年,如今的 “清道夫” 早已今非昔比,能够协助运营者完成收益最大化,一起让受害者的损失最大化。

如何打败以太坊清道夫 找回你的资产

停手吧!清道夫!

怎么打败 “清道夫”?

首要,身为人类的你是快不过代码的,因而咱们的解决计划将触及代码。这儿为你供给了几个不同的计划,尽管不能保证 100% 有用,可是总有一款适合你。

你需求创立一个想要挽救的代币列表(按优先级排序),以便轻松拟定计划。这张列表需求包括以下内容:

  • 代币合约地址

  • 该代币是否已用于质押(解锁是否有时间限制)

  • 代币能否搬运

  • 代币价值(由用户主观判断或美元价值决定,以便确定优先级)

最重要的是,你有必要有条有理,才能快速而有用的执行该计划。正如那句金玉良言所说:“凡事预则立,不预则废。”

如何打败以太坊清道夫 找回你的资产

运用太极网络(Taichi Network)

“清道夫” 的运作原理是监控买卖池中向 “猎物” 地址转账的买卖。这样一来,“清道夫” 就能够抢在该买卖承认之前签署好另一个买卖并播送该买卖,然后取走转入资金。

太极网络能够让你直接将已签名的买卖提交给矿工(即,星火矿池),无需将其播送至公共买卖池。这意味着,你的买卖将进入 “清道夫” 的视觉盲区,也就不会被 “清道夫” 的机器人抢跑(至少以我的经历来看是这样)。

如何打败以太坊清道夫 找回你的资产

- 图源:TAICHI.NETWOR -

具体办法是,将你的所有买卖预先依照 nonce 次序签好名,并以编程办法提交给太极网络。大多数 “清道夫” 只监控公共买卖池中等待打包的以太坊买卖,不会调用每个新区块的 eth_getBalance(这是为了节约 CPU 循环和 RPC 调用)。也就是说,“清道夫” 是看不到经过隐私买卖池发送至 “猎物” 账户的 ETH 的,也就不会吃掉它。

你需求做一些计算,保证发送到账户中作为 gas 费的 ETH 能够充分运用到每笔已签名买卖上。假如你算得很准的话,“清道夫” 或许会抢跑失败!(通常情况下,我会默许将 gas 费设得比 GasNow 上的 “极速(Rapid)” 参考值高几个百分点,然后提高买卖被打包进下个区块的概率。)

你能够在离线状况下运用 MyCrypto 生成买卖签名,并在准备就绪时将它们发送至太极网络,或运用 ethers.js(或其它代码库)编写代码来创立已签名买卖。

如何打败以太坊清道夫 找回你的资产

运用带有自毁功用的智能合约

这个办法和运用太极网络差不多。咱们能够运用智能合约将 ETH 转入账户,一起不会在公共买卖池中露出这笔买卖。为此,咱们能够经过一个安全的地址布置智能合约,并经过其结构函数将 ETH 发送到被黑的地址上(这将是一笔内部买卖)。

pragma solidity >=0.7.0 <0.9.0;contract MoveETH https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg constructor(address sendToAddress) payable https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg address payable addr = payable(address(sendToAddress)); selfdestruct(addr); }}

经过布置该合约,咱们能够将 ETH 和被黑地址的字符串发送至结构函数的参数。该合约会在同一笔买卖中创立并自毁。其间,selfdestruct() 意味着咱们会在同一笔买卖中铲除该合约的区块链状况(因而这个合约是一次性的),并将 ETH 发送至被黑地址。

请注意,这个办法尽管有用,可是会额外增加成本,由于咱们要做的操作不只是将 ETH 从一个账户搬运到另一个账户。这个办法需求大约 7 万 gas 的成本。当 gas 价格处于高位时,仅 gas 成本就高达 0.0112 ETH。

接下来,咱们将经过太极网络播送来自被黑地址的已预先签署过的买卖(这儿也能够运用公共节点,请将账户中的悉数 ETH 余额设为 gas 费,以免被 “清道夫” 抢跑(至少尽量降低这种或许性),由于在这种情况下, “清道夫” 有必要发送更多 ETH 到被黑账户才能在 gas 费竞价中胜出)。

如何打败以太坊清道夫 找回你的资产

运用 Flashbots

一般来说,咱们需求付出 ETH 才能让买卖上链(由于买卖费由买卖发送方付出)。可是,有了 Flashbots,咱们就能够在不付出 gas 费(即买卖费)的情况下将来自外部账户的买卖上链,只需运用另一个账户中的资金来 “贿赂” 矿工即可。也就是说,咱们不需求向被黑地址转入一笔 ETH 作为手续费,就能够取走这个地址上的代币。没错,就是这样!

这个计划需求用到两个账户 —— 被黑账户和用来贿赂矿工的账户。

Flashbots 团队现已发布了一个名为 Flashbots/searcher-sponsored-tx 的项目,其间介绍了怎么经过这个计划将买卖上链的基本原理。

咱们将运用另一个账户中的资金来付出买卖费,因而不需求被黑账户中有 ETH。事实上,咱们恨不得被黑账户里没有 ETH,究竟咱们最不想看到的,就是 骗子/“清道夫” 察觉到咱们想要取走资金,运用账户内原有的 ETH 来抢跑咱们。

为了保证被黑账户中没有 ETH,咱们强烈推荐咱们运转一个燃烧器机器人(burner bot)。

咱们通常建议在一台以上的机器上运转燃烧器机器人,并针对每个实例运用不同的 RPC 节点。例如,运用 Infura 在本地运转一个燃烧器,并运用其它供给商(如 Quiknode)在长途服务器上运转一个燃烧器。这样就能够完成冗余,以防高网络延迟或节点故障等问题(例如,速率限制、同步问题等)。

Flashbots/searcher-sponsored-tx 中的代码需求依据你的具体需求进行修正,不过这儿有个引擎能够协助你挽救被黑地址中的代币。Flashbots 引擎具有很高的灵活性,能够支撑单个  transfer() 调用,或 unstake()transfer()调用。

假如你不明白代码,也能够试试 @kendricktan/flashbots.tools 网站供给的 Flashbots 功用 UI:https://flashbots.tools/。

怎么从根本上躲避 “清道夫”?

最好的防范措施当然是保护好自己的地址不被 “清道夫” 侵入,也就不需求与 “清道夫” 斗智斗勇了。

近年来,咱们现已在一些 app 的 UI 上看到了反面比如 —— 允许用户在 dapp 界面上运用原始保密信息。这是很不安全的做法,不应该被鼓舞。

永久不要在联网设备以及任何网页上输入你的原始保密信息(私钥、key store 文件和助记词)。

咱们建议运用硬件钱包来保证私钥存放在独立设备上 —— 假如你运用 MetaMask 与 dApp 进行交互,MetaMask 最近发布了一个更新,能够让用户运用多个硬件钱包地址。

视野开拓

经济学的特点在于,它研究问题的本质,而不是该问题是否具有商业性或物质性。-《人类行为的经济分析》

发表回复

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