在研究抢跑机器人的过程中,发现有机器人可以使一个地址的转入交易和转出交易被打包在同一区块,好奇,是怎么做到的?当一个地址的余额不足以支付转出交易的手续费时,我转入一笔ETH到该地址,在该转入交易确认之前,我发起转出交易(通过监控pending,使得转入交易广播时马上提交转出交易),节点返回的错误是insufficient funds for gas * price + value。有没有大神可以指点一下研究方向。
正常情况下,交易发到节点的,会先进行预先检查,发现一些明显不能成功的交易,就会被踢出,这些检查就包括是否有足够的gas费用,详情见这里:
交易入队列 :: 以太坊技术与实现 (learnblockchain.cn)
但是,预先检查失败并不代表一定会失败,这就包括你说的这种情况,前面的交易先账号转账,使得后面的交易能够执行。
然而,通常的节点并不会允许你这样发交易,能做的,就是跟节点合作,让他不给你进行这个预先检查。所以,抢跑机器人就是这样,跟节点合作,这样才能在抢跑上有优势。