通过一个蜜罐合约来理解以太坊上的抢跑者

in HuaRen.News5 years ago

开发特殊的“蜜罐(honey pot)”合约,该合约允许任何人以足够快的速度提取一些以太币。让以太坊的抢跑者这样做,以便研究他们的行为。

可能这不是最好的方法,因为你应该允许一些人窃取你真实的 ETH。最好的办法是监视内存池,并尝试识别高 gas 优先的交易(PGA:Priority Gas Auctions)。但这不是一件容易的事,需要更多的开发,所以从简单的研究开始。

蜜罐合约
为了演示,编写了一个简洁但功能强大的智能合约。只能通过两种方式与合约交互 - 锁定以太币和解锁(撤回)以太币。过程很简单:

  1. 想象一些难以猜测的强密码。
  2. 计算密码的哈希值(假设为 sha256)
  3. 通过提供密码的哈希值来锁定你的以太币
  4. 通过提供原始密码来解锁你的以太币。合约将自行计算哈希并将其与步骤 2 中指定的哈希运算进行比较。如果哈希匹配 - 合约将向你发送锁定的以太币。

很容易看到 - 只有你可以提取以太币,因为没有人知道原始密码。真的吗?

pragma solidity ^0.6.0;

contract TryToGetYourMoney {
    mapping(bytes32 => uint) passwordHashToBalance;
    
    function lockEthersWithPassword(
        bytes32 passwordHash
    ) public payable {
        passwordHashToBalance[passwordHash] += msg.value;
    }
    
    function getHash(string memory raw) public view returns(bytes32) {
        return keccak256(abi.encodePacked(raw));
    }
    
    function unlockEthersWithPassword(
        string memory password
    ) public {
        bytes32 passwordHash = getHash(password);

        require(
            passwordHashToBalance[passwordHash] > 0,
            "No Ethers locked with specified password"
        );
        
        msg.sender.transfer(passwordHashToBalance[passwordHash]);

        passwordHashToBalance[passwordHash] = 0;
    }
}

好吧,可能不是。任何抢跑者都可以在交易处于待处理状态时看到该交易,提取原始密码,并以更高的 gas 价格发送自己的解锁交易。由于较高的 gas 价格意味着更快的确认,因此抢跑者的交易可能将首先被挖出,并且他会收到你的以太币。

已经在以太坊主网络中部署了以上合约([0x9478abe9244872274808d324b968c30f29e1a442] (https://etherscan.io/address/0x9478abe9244872274808d324b968c30f29e1a442)).已经尝试过两次锁定以太坊并对其进行解锁-两项解锁交易均已在前端进行!

两个锁-0.1 ETH 和 0.05 ETH。 两个失败的交易是解锁交易。 他们失败了,因为有人已经窃取了锁定的 ETH!

看看为什么交易失败。你可以看到原因相同:“No Ethers locked with specified password”。但是怎么可能呢?为了回答这个问题,看一下 Etherscan 的 Internal txns 部分:

通过这些交易,抢跑者窃取了 ETH。让我们比较一下我的交易 0xa88 ..和 0x3fa ....他们俩都试图解锁 0.1 以太币。

我的交易在左边,抢跑交易在右边。

查看 gas 价格如何影响确认时间。我的交易价格为 50 Gwei ,在 3 分钟内得到确认。抢跑者指定了 58 Gwei - 在 30 秒内进行了确认!即使我先发送了解锁交易,但他的交易被确认比我早 11 个区块。

他们是怎么做到的?
打造抢跑机器人没有任何技术上的障碍。首先,你需要监视所有新的以太坊交易。由于你想成为第一个了解新交易的人,因此你可能需要在世界各地使用多个交易侦听器。

收到有关新交易的通知后,你需要模拟相同的调用,但是使用你自己的地址。如果交易未还原(即没有失败),而你的收益超过了支出,请将其发送到主网!此外,别忘了设定更高的 gas 价格以取代原始交易。仅此而已。

本帖同步首发

通过一个蜜罐合约来理解以太坊上的抢跑者

最近新帖

  1. 以太坊2.0“阶段0”正式上线
  2. 孟尝君放债
  3. 用“信用”谋变
  4. DeFi并购之王AC
  5. The TRX and Steemit Integration is now Live !
  6. 抓住下一波DeFi蓝筹股的机会
  7. 未来defi潮流
  8. 聚合器活跃在DeFi底层产品之上
  9. DeFi底层产品
  10. 链接传统世界的桥梁Synthetix
  11. OKEx恢复提币引发暴跌
  12. 1小时25亿爆仓
  13. 在趋势中寻找
  14. 97%的比特币地址盈利
  15. 传统大所流量端具有更多优势
  16. DeFi代挖服务
  17. 设计衍生产品定价功能
  18. 锁定资产超过10亿美元的DeFi
  19. DeFi借贷和DEX
  20. DEX突围
  21. DeFi项目攻击的诱惑
  22. 币安铁心要做DeFi
  23. 2020的DeFi新机遇
  24. IPFS写入国家广电总局区块链应用白皮书
  25. DeFi如何进入主流金融世界
  26. 建行宣布支持比特币交易
  27. DeFi正在成为加密黑客的新“提款机”
  28. 阿修罗DEFI生态体系YASHA
  29. 关于 ETH 上 Gas 的误解
  30. 加密货币和区块链是变革催化剂
  31. 71 万人炒币被骗了 77 亿
  32. 波卡的DeFi生态系统正在扩展
  33. 分散投资
  34. 日渐壮大的波卡DeFi生态
  35. DeFi Pulse推出风险评估工具
  36. DeFi的安全难题
  37. 跨链+Defi融合
  38. 数字金融走向分布式 DeFi
  39. @hnt 尝试提供STEEM流动性服务,目前处于测试阶段
  40. BTC跌破$7000之际,STEEM暴跌20%创新低,投资者缺乏信心 steem | hive
  41. BTC突破$7000后蓄势待发,STEEM却突然出现异动?!恐有要事发生? steem | hive
  42. FileCoin继续跳票,IPFS矿机骗局还能搞多久? steem | hive
  43. steem 新分叉HF22.8888 和 hive 今日暴跌,或影响hive网络发展 steem | hive
  44. hive 硬分叉延缓了steem的SMT进度 steem | hive
Sort:  

You got a 34.64% upvote from @votemypost Send any amount of Steem to @votemypost with your post link in the memo for a proportional upvote. Earn a passive income by delegating Steem Power to @votemypost

If you are looking to earn a passive no hassle return on your Steem Power, delegate your SP to @votemypost by clicking on one of the ready to
delegate links:
25SP | 50SP | 75SP | 100SP | 250SP | 500SP | 1000SP | 2500SP | 5000SP

Another Amount


You will earn 85% of the voting bot's earnings based on your delegated SP's prorated share of the bot's SP each day! You can also undelegate at anytime.

This post has received a 34.49 % upvote from @boomerang.

This post was resteemed by @steemvote and received a 33.43% Upvote. Send 0.5 SBD or STEEM to @steemvote

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.080
BTC 60288.06
ETH 1572.33
USDT 1.00
SBD 0.47