编译器
0.6.12+commit.27d51765
文件 1 的 2:ethvindexv1.sol
pragma solidity ^0.6.0;
import "https://raw.githubusercontent.com/provable-things/ethereum-api/master/provableAPI_0.6.sol";
contract APIConsumer is usingProvable {
string public ethv;
address public owner;
event Publish(string ethv, uint256 timestamp);
event LogNewProvableQuery(string description);
constructor() public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function updateETHV() public payable {
if (provable_getPrice("URL") > address(this).balance) {
emit LogNewProvableQuery("Provable query was NOT sent, please send some ETH to cover for the query fee");
}
else {
LogNewProvableQuery("Provable query sent, standing by for the answer..");
provable_query("URL", "https://volmex-labs.firebaseio.com/current_evix/evix.json");
}
}
function __callback (bytes32 _requestId, string memory curr_ethv) public override
{
if (msg.sender != provable_cbAddress()) revert();
ethv = curr_ethv;
emit Publish(ethv, block.timestamp);
}
}
文件 2 的 2:provableAPI_0.6.sol
{
"compilationTarget": {
"browser/ethvindexv1.sol": "APIConsumer"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"LogNewProvableQuery","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"ethv","type":"string"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Publish","type":"event"},{"inputs":[{"internalType":"bytes32","name":"_requestId","type":"bytes32"},{"internalType":"string","name":"curr_ethv","type":"string"}],"name":"__callback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_myid","type":"bytes32"},{"internalType":"string","name":"_result","type":"string"},{"internalType":"bytes","name":"_proof","type":"bytes"}],"name":"__callback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethv","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateETHV","outputs":[],"stateMutability":"payable","type":"function"}]