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

2020-10-23 10:44 栏目:经验之谈 来源:网络整理 查看()

在本文中,我将向您展示如何在以太网中检测跑步者。为此,我开发了一个特殊的“蜜罐”合同,它允许任何人以足够快的速度提取一些以太网硬币。我们将让跑步者这样做,以便研究他们的行为。

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

也许这不是最好的办法,因为你应该允许一些人去偷你真正的ETH。最好的方法是监视内存池,并尝试识别具有高gas优先级(PGA)的事务。但这不是一件容易的事情,需要更多的发展,所以让我们从简单的学习开始。

蜜罐合同

为了演示,我写了一个简单却强大的智能契约。你只能通过两种方式与契约进行交互——锁定以太网和解锁(撤回)以太网。过程很简单:

想象一些难以猜测的强密码。

计算密码的哈希值(假设sha256)

通过提供密码的哈希值来锁定您的以太网

通过提供原始密码解锁您的以太网。契约将自己计算散列,并将其与步骤2中指定的散列操作进行比较。如果散列匹配——契约将发送给你锁定的以太网。很好看——只有你能提取Ethereum,因为没有人知道原始密码。真的吗?

务实稳健的^0.6.0;

合同试凑你的钱

映射(bytes 32=uint)PasswordHashTobalance;

函数lockEthersWithPassword(

字节32密码哈希

)应付公众{

passwordHashToBalance[passworhash]=msg . value;

{}

函数getHash(字符串内存原始)公共视图返回(字节32) {

return keccak 256(ABI . encodepacked(raw));

{}

函数解锁密码(

字符串内存密码

)公共{

bytes32 passwordHash=getHash(密码);

要求(

密码哈希全局[密码哈希] 0,

没有用指定的密码锁定的醚'

);

msg . sender . transfer(passwordHashToBalance[passworhash]);

passwordHash全局[password hash]=0;

{}

{}

或许不是。任何跑步者都可以在交易待定时看到交易,提取原始密码,以更高的汽油价格发送自己的解锁交易。由于更高的汽油价格意味着更快的确认,跑步者的交易可能会先被挖掘出来,他会收到你的以太博物馆。

进行实验

我已经部署了上述合同([0x 9478 Abe 9244872274808d 324 b 968 c 30 f 29 E1 a 442](https://ether scan。io/address/0x 9478 Abe 9244872274808d 324 b 968 c 30 f 29 E1 a 442)在Ethereum主网络中)。

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

两把锁——0.1 ETH和0.05 ETH。这两个失败的事务是解锁事务。他们失败了,因为有人偷了锁着的ETH!

让我们看看交易失败的原因。你可以看到同样的原因:“没有指定密码锁定的醚”。但是怎么可能呢?为了回答这个问题,让我们来看看以太网扫描的内部txns部分:

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

通过这些交易,跑者偷了我的ETH。让我们比较一下我的交易0xa88.和0x3fa.两人都试图解锁0.1以太网。

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

我的交易在左边,加急交易在右边。

看油价如何影响确认时间。我的成交价是50 Gwei,3分钟内确认。跑步者指定58格威-30秒内确认!虽然是我先发的解锁交易,但是他的交易被确认在我前面11个街区。

他们是怎么做到的?

制造跑步机器人没有技术障碍。首先,您需要监控所有新的以太网事务。因为您想成为第一个知道新事务的人,所以您可能需要在世界各地使用多个事务侦听器。

收到新交易的通知后,需要模拟同样的通话,但使用自己的地址。如果交易没有恢复(即没有失败),你的收入超过你的支出,请发送到主网!另外,别忘了设定更高的燃气价格,以取代原来的交易。仅此而已。

试着自己引诱跑步者

也可以尝试勾引跑步者!为此,只需使用提供的智能合同。

想象一些强密码。假设现在是中午

计算密码的哈希值。在ether scan“read contract”[page](https://ether scan . io/address/0x 9478 Abe 9244872274808d 324 b 968 c 30 f 29 E1 a 442 # read contract)上使用getHash方法,按Query,然后复制前缀为0x的长字符串。

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

转到“编写合同”部分,连接到网络3,并找到锁定密码方法。在payableAmount字段中,指定用作诱饵的Ethereum的数量(我觉得0.01就够了)。在提交的密码哈希中,填写步骤2中复制的密码哈希。点击写确认交易,然后等待交易被挖出来。

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

现在有趣的部分开始了!试着用解锁密码的方法找回你的以太货币。在密码字段中,指定原始密码(在我的情况下为nooneeverguess123)。单击写入,单击确认,然后等待。

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

在弹出的窗口中,可以尝试自定义燃气价格(详情-燃气费-编辑)来操纵被抢的成功概率。你指定的汽油价格越多,你确认交易的速度就越快,你被抢占的机会就越少。

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

如果你想获得成功,请保留默认选项。

你的交易可能会失败!参见内部通话部分,查找前端交易的发送方。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发