里面是否有带有合同代码的交易?(例如,创建新合同或用户从合同调用方法时)
如果没有,那么ethereum如何知道在需要时要执行哪些代码?
发布于 2018-04-21 21:35:00
坚实性文件有一个很好的章节来回答你的问题:
事务是从一个帐户发送到另一个帐户的消息(可能是相同的,也可能是特殊的零帐户,参见下面)。它可以包括二进制数据(其有效载荷)和以太。如果目标帐户包含代码,则执行该代码,并将有效负载作为输入数据提供。如果目标帐户是零帐户(地址为0的帐户),事务将创建一个新的合同。如前所述,该契约的地址不是零地址,而是从发件人及其发送的事务数(“nonce”)派生的地址。这种契约创建事务的有效负载被视为EVM字节码并执行。此执行的输出作为契约的代码永久存储。这意味着,为了创建一个契约,您不发送合同的实际代码,而是发送返回该代码的代码。
您可以看到事务这里的内容。
交易包括:
与您的问题相关的财产是data field
。这是事务可以指定它试图调用的函数以及该函数的任何输入的地方。这也是事务提供契约代码的地方,这些代码被写入到块链中。
参见创建BAT合同这里的示例。
有关代码执行的更多详细信息可以找到这里。
https://ethereum.stackexchange.com/questions/46325
复制相似问题