在坚实性上,通过tx.origin和msg.sender可以很容易地区分原点和发送方。
是否也可以从区块链本身的数据获取特定事务的发件人和来源?使用getTransaction和getTransactionReceipt获得的from字段似乎总是tx.origin。
具体来说,我想用JS API来做。我怀疑在事务收据中以某种方式处理事务日志中的信息可能是一种方式,但还没有弄清楚(虽然我也希望有一些更简单的方法)。
发布于 2016-06-14 09:08:11
msg.sender .在以太协议中,只有事务和消息调用。事务是一种消息调用类型,tx.origin和msg.sender都是from字段的值。
事务可以执行其他消息调用,但这些不是事务(即使流行的区块链资源管理器将它们不准确地标记为“内部事务”)。这些(内部)消息调用没有发布在块链上,因此没有简单的方法或API来获取它们的msg.sender。要了解合同如何相互调用,需要通过EVM (例如,https://github.com/ethereumjs/ethereumjs-vm)处理事务。
如果您是契约的作者,那么每次调用契约时,它都可以使用一个事件来发出msg.sender的值,然后您就可以使用getTransactionReceipt解析日志。了。
https://ethereum.stackexchange.com/questions/6006
复制相似问题