我试图在Remix上执行以下代码。
pragma solidity ^0.5.4;
contract GuessTheNumberChallenge {
constructor() public payable {
require(msg.value == 1 ether);
}
function () external payable {}
}它显示了Calldata框和Transact选项卡,如图中所示。如果我在call data框中键入10并单击transact,则得到以下事务收据:
vmfrom:0xca3...a733cto:GuessTheNumberChallenge.(fallback) 0x692.77b3value:0 weidata: 0x10 log:0xe19.310b7状态0x1事务挖掘和执行成功事务散列0xe199a02ea06f556f01175fb3e5726c60a30aee092b86f92ca72e6429fdf310b7从0xca35b7d715458ef540ade6068dfe2f44e8fa733c到GuessTheNumberChallenge(回退)0x692a70d2e424a56d2c6c27a97d1a86395877b3a天然气事务费用21086气体执行成本18 gas 0xe199a02ea06f556f01175fb3e5726c60a30aee092b86f92ca72e6429fdf310b7输入0x10解码输出-日志[]
我不明白以下几点:
vmfrom:0xca3...a733cto:GuessTheNumberChallenge.(fallback) 0x692.77b3value:0 weidata:0x10:0散列:0xe 19.310b7
如果我键入"10以太“,我将得到消息”十六进制值所需“--0的意思是:0x10日志:0是用于传输以太的Calldata和Transact吗?还是和地址有关?
谁来指点我。
祖尔菲。

发布于 2020-02-11 00:48:08
以太交易遵循一定的低层次结构:
data的前四个字节是一个函数选择器,其中选择器来自函数名(源代码)和参数的散列,截断为四个字节。在那之后,出现了争论。当EVM到达时,所有这些都是解压缩的,因此EVM知道要运行哪个函数和输入参数。
Remix是使用源代码计算出友好的函数界面,上面列出了每个函数的名称,参数被接受并方便地打包到调用数据中。
还可以自己创建消息数据(通过其他方法),并使用calldata发送原始事务数据。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/79784
复制相似问题