如何通过 evm 在合约中运行函数?

问题描述

我是 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,但是这个合约的结果是成功。我猜那个合同可能没有正确运行。而且问题很少。

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

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)