imtoken钱包转账失败怎么回事,相信很多人在使用imtoken钱包的时候经常的会碰到转账失败的情况,不少人不知道这个情况是怎么引起的,下面跟着小编一起来看看吧。
imtoken钱包转账失败怎么回事
Out of gas(Gas 不足)
打个通俗易懂的比喻吧,就像你开车必须要有汽油一样,你在以太坊上转账也需要有 Gas。开车 ≈ 转账,汽油 ≈ Gas。如果你要从A 地驱车前往B 地,按照实时的交通情况,你需要消耗200 升汽油。但你为这次行程只准备了 150 升汽油,那是否能到达 B 地呢?在现实生活中,大家肯定都知道,你一定是到不了的。同时虽然你没到达 B 地,但是你的汽油却已经消耗了。
那么回到区块链的世界,也是同样的道理。如果你要进行一笔转账,就要为这笔转账设置一个 Gas。如果你设置的过低,就会出现「汽车」没到达目的地就没「油」的情况,即交易失败。失败原因就是 out of gas(汽油不足)。同时,又因为矿工们已经进行了打包的操作,但在打包过程中发现 Gas 不足,导致这笔交易打包失败了。矿工费仍然会被扣除,但这些矿工费都是由矿工们收取的,imToken 并不收你一分钱。
Bad Instruction (指令错误 )
Bad instruction 字面意思是「指令错误」。出现这种提示的原因,大概率是因为智能合约的代码本身就存在逻辑问题,从而导致合约在执行的过程中,出现「指令错误」。这就像一台坏了的机器,你输入一个指令,机器是不能正常运作的。这时候,我们该找谁解决呢?当然是智能合约的创建方,去修复这台「坏了的机器」。另外转账的矿工费仍然会被矿工收走。
Reverted(回退)
以太坊上包含两类账户,普通账户和合约账户。普通账户是由用户通过私钥控制,而合约账户是由部署在以太坊上的智能合约控制。
那么,reverted 是什么情况呢?reverted 其实是一个函数,用于立即中止合约的执行,并且把状态回滚。虽然是智能合约,比一般的合约更「聪明」,但是有些合约在执行的过程中还是会「犯错」的。
这听起来是不是过于抽象,让我们打个简单的比方。出现 reverted 的一种可能情况:你的合约规定,当你输入一块钱,你可以得到一杯喜茶。但是这个合约并没有检查库存里是否有足够的喜茶。当店里没有喜茶库存的时候,后面来的人,即使它输入一块钱,也不能得到喜茶。这时候,你原本的函数 - 即输入一块钱就会得到一杯喜茶的函数就会失败,它会发出错误的信息并回滚到当前的交易状态。
看到这里,想必大家也已经明白了,出现 bad instruction 和 reverted,都是因为智能合约的问题,所以建议大家直接去找合约的创建者,也就是项目方。