Реализация ETH/RUB оракула на блокчейне Ethereum; для работы с API Cryptonator используется Oraclize.
pragma solidity ^0.4.23;
interface ETHRUBOracle {
function price() public view returns (uint);
function updatedAt() public view returns (uint);
function update(uint delay) public payable;
function isOutOfSync() public view returns (bool);
}
contract ETHToRUBConverter {
ETHRUBOracle internal priceOracle;
function constructor(address priceOracleAddress) public {
priceOracle = ETHRUBOracle(priceOracleAddress);
}
function convert(uint amountInEther) public view returns (uint) {
require(!priceOracle.isOutOfSync());
return amountInEther * priceOracle.price();
}
}