Я новичок со всем, что связано с надежностью и умными контрактами. Может, я просто упускаю что-то действительно очевидное, но в любом случае Итак, у меня есть паритет, работающий локально в режиме цепочки разработки. У меня довольно простой умный контракт, только модифицированный Hello World.
pragma solidity ^0.6.0;
contract HelloWorld {
function getContractAddress() public returns (address) {
return address(this);
}
function getContractBalance() public view returns (uint256) {
return address(this).balance;
}
}
Я сейчас вызываю функции и внедряю умный контракт в консоль rails, я использую gem ethereum, поэтому для меня это выглядит так (я используйте цепочку разработчиков, поэтому она принимает учетную запись разработчика по умолчанию
contract = Ethereum::Contract.create(file: "/home/work/greeter.sol")
contract.deploy_and_wait
В качестве вывода для команды deploy
я вижу адрес смарт-контракта. В качестве вывода для contract.call.get_contract_address
я вижу действительный адрес И когда я вызов contract.call.get_contract_balance
я получаю ошибку IOError: VM execution
, в соответствующих логах его
I, [2020-04-26T21:32:57.469694 #7580] INFO -- : Sending {"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x0faf2f31ab165b55f42e55c8065c0ec7170a0d45","from":"0x00a329c0648769a73afac7f9381e08fb43dbea72","data":"0x6f9fb98a0000000000000000000000000000000000000000000000000000000000000000","gas":"0x3d0900","gasPrice":"0x51f4d5c00"},"latest"],"id":1}
I, [2020-04-26T21:32:57.470292 #7580] INFO -- : Received {"jsonrpc":"2.0","error":{"code":-32015,"message":"VM execution error.","data":"Bad instruction 47"},"id":1}