1

我是solidity和以太坊的新手。我在 github 上构建了evmc项目以在本地运行我的智能合约。

solc我首先通过并使用以下命令编译我的合同:

solc --abi --asm --hashes --bin --overwrite -o . hello.sol

这是我的合同hello.sol

pragma solidity >0.4.0;

contract HelloWorld{
  uint a;
  uint b;
  function renderHelloWorld () public returns (uint256) {
    a = 0;
    b = a+3;
    return b;
  }
}

我成功生成了字节码,并使用 evmc 通过以下命令运行此合约:

./build/evmc/bin/evmc --vm build/evmc/examples/example_precompiles_vm/libexample-precompiles-vm.dylib run HelloWorld.bin

并得到这个结果:

Config: build/evmc/examples/example_precompiles_vm/libexample-precompiles-vm.dylib
Executing on Istanbul with 1000000 gas limit

Result:   success
Gas used: 0
Output:

我注意到我使用的 gas 是 0,但是这个合约的结果是 Success。我猜该合同可能没有正确运行。而且问题很少。

  1. 我真的能成功运行这份合同吗?
  2. 我如何b在这份合同中打印我的返回值?
  3. evm 如何找到并运行合约中的函数?--input(文件中有一个选项./build/evmc/bin/evmc,我尝试在这个选项后面加上renderHelloWorld()'签名操作码942ae0a7。但结果是一样的。)
  4. 如果我构建一个函数需要一些输入,我该如何给出这些输入值?

先感谢您。

4

0 回答 0