如果您签出帐户0xe358b3b9f29c67cb810c5184e6fde27d66ce036c,您将看到多个传入事务,每个交易有100个Finney。然而,总体收支平衡是31芬尼。那件事怎么可能?
如果我想象这是我的帐户,我只是在确认与一个块资源管理器的交易,我如何才能弄清楚一个交易是否真的是我的帐户的资金?100芬尼去哪了?为什么?
发布于 2016-01-25 20:19:35
如果您查看VM跟踪,您可以看到100个Finney事务遇到了耗尽气体的异常。在出现异常的情况下,事务中包含的所有值都将返回给发件人。
要回答您问题的第二部分,我将使用http://live.ether.camp作为您的块资源管理器,因为它显示了合同生成的事务和错误。
要明确的是,虽然合同不能启动事务,但它们可以将以太发送到其他地址。由于这些操作不是单独的事务,而是合同执行的副作用,因此它们通常不与其他事务一起列出,从而造成混乱。
在ether.camp资源管理器上,这些余额转移被列为“内部事务”,位于产生它们的事务之下。

在醚链资源管理器上,它们被列为“合同调用事务”,直接位于发起它们的合同之下。不太清楚的是,这些是上述事务的一部分,但是如果您单击父事务拥有,您将看到“被调用的”事务挂牌。

发布于 2016-01-29 04:31:16
这笔交易用光了,就像在https://live.ether.camp/transaction/abddd676a2dc65dc4790463121bd77cafce4e0fb878d0b386556b055e0cae2d0/vmtrace#0上看到的那样

这是发送100个Finney的交易,它显示“气体限制”为21000:https://live.ether.camp/transaction/abddd676a2dc65

所以用户(0xbf27f.)指定事务最多可消耗21000。
21000气体正是边疆价值转移所需要的。您可以从这里 (除“值传输”之外的其他过滤器)中看到,21000气体足以发送任何数量的以太。
那么,为什么这笔交易没有汽油了呢?
因为事务是契约调用(见图像的右上方)
让我们看一下接收地址:0xe358b3b9f29c67cb810c5184e6fde27d66ce036c

看到它有什么代码了吗?每当事务被发送到带有代码的地址时,该代码就会被调用,开始执行并消耗汽油,就像汽车消耗燃料一样。如果在事务能够完成之前就耗尽了气体,则会产生一个Out of gas异常,并且基本上事务所做的所有操作都是撤消的。这就是为什么100芬尼留在寄件人那里的原因。
在事务中,如果单击"vmtrace",您将看到无气。这个事务甚至没有足够的Gas来执行一个计算步骤,但是如果提供了更多的气体,那么vmtrace应该会执行一些计算,直到gas结束为止。
指定更多的气体可以防止这一问题。指定更多的气体是安全的,因为任何未使用的气体都留在发件人手中。
例如,如果指定了123456个气体,而交易只消耗了50000个气体,那么剩下的气体(73456)将留在发送者手中。
https://ethereum.stackexchange.com/questions/642
复制相似问题