我是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。我猜该合同可能没有正确运行。而且问题很少。
- 我真的能成功运行这份合同吗?
- 我如何
b
在这份合同中打印我的返回值? - evm 如何找到并运行合约中的函数?
--input
(文件中有一个选项./build/evmc/bin/evmc
,我尝试在这个选项后面加上renderHelloWorld()
'签名操作码942ae0a7
。但结果是一样的。) - 如果我构建一个函数需要一些输入,我该如何给出这些输入值?
先感谢您。