github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/blockchain-scrapers/blockchains/ethereum/diaOracleServiceV2/DIAOracleV2.sol (about)

     1  // compiled using solidity 0.7.4
     2  
     3  pragma solidity 0.7.4;
     4  
     5  contract DIAOracleV2 {
     6      mapping (string => uint256) public values;
     7      address oracleUpdater;
     8      
     9      event OracleUpdate(string key, uint128 value, uint128 timestamp);
    10      event UpdaterAddressChange(address newUpdater);
    11      
    12      constructor() {
    13          oracleUpdater = msg.sender;
    14      }
    15      
    16      function setValue(string memory key, uint128 value, uint128 timestamp) public {
    17          require(msg.sender == oracleUpdater);
    18          uint256 cValue = (((uint256)(value)) << 128) + timestamp;
    19          values[key] = cValue;
    20          emit OracleUpdate(key, value, timestamp);
    21      }
    22      
    23      function getValue(string memory key) external view returns (uint128, uint128) {
    24          uint256 cValue = values[key];
    25          uint128 timestamp = (uint128)(cValue % 2**128);
    26          uint128 value = (uint128)(cValue >> 128);
    27          return (value, timestamp);
    28      }
    29      
    30      function updateOracleUpdaterAddress(address newOracleUpdaterAddress) public {
    31          require(msg.sender == oracleUpdater);
    32          oracleUpdater = newOracleUpdaterAddress;
    33          emit UpdaterAddressChange(newOracleUpdaterAddress);
    34      }
    35  }