Address Details
contract

0xc44831f5f424A95465720bda94110AB0140Afc93

Contract Name
BlocklessTCO2eOracle
Creator
0x437c69–882e3a at 0xda15a7–0ee2dd
Balance
0 CELO ( )
Locked CELO Balance
0.00 CELO
Voting CELO Balance
0.00 CELO
Pending Unlocked Gold
0.00 CELO
Tokens
Fetching tokens...
Transactions
1,338 Transactions
Transfers
0 Transfers
Gas Used
47,654,254
Last Balance Update
18926834
This contract has been verified via Sourcify. View contract in Sourcify repository
Contract name:
BlocklessTCO2eOracle




Optimization enabled
false
Compiler version
v0.8.7+commit.e28d00a7




EVM Version
london




Verified at
2023-01-24T21:41:40.051482Z

contracts/BlocklessTCO2eOracle.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./BlsOracleInterface.sol";

contract BlocklessTCO2eOracle is BlsOracleInterface {
    string private _id;
    string private _description;
    uint8 private _decimals;

    int256 private _latestAnswer;
    uint256 private _latestTimestamp;
    uint256 private _latestRound;
    
    address public _owner;

    event NewBlsOraclePrice(
        int256 indexed current,
        uint256 indexed roundId,
        uint256 updatedAt
    );

    event NewBlsOracleQuery(
        address indexed _from,
        string indexed _id,
        uint timestamp
    );

    event NewOwner(address oldOwner, address newOwner);

    modifier onlyOwner() {
        require(msg.sender == _owner, "only admin may call");
        _;
    }

    constructor(
        string memory id,
        string memory description,
        uint8 decimals_
    ) {
        _owner = msg.sender;
        _id = id;
        _description = description;
        _decimals = decimals_;
    }

    function setOwner(address newOwner) external onlyOwner {
        address oldOwner = _owner;
        _owner = newOwner;

        emit NewOwner(oldOwner, newOwner);
    }

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    function latestAnswer() external view override returns (int256) {
        return _latestAnswer;
    }

    function latestTimestamp() external view override returns (uint256) {
        return _latestTimestamp;
    }

    function latestRound() external view override returns (uint256) {
        return _latestRound;
    }

    /**
     * Emit a Blockless Oracle Query here
     *
     */
    function update() external {
        require(msg.sender == _owner);
        
        emit NewBlsOracleQuery(msg.sender, _id, block.timestamp);
    }

    function __callback(int256 _price) external {
        require(msg.sender == _owner);

        _latestAnswer = _price;
        _latestRound = block.number;
        _latestTimestamp = block.timestamp;

        emit NewBlsOraclePrice(_price, _latestRound, _latestTimestamp);
    }
}
        

/contracts/BlsOracleInterface.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface BlsOracleInterface {
  function decimals() external view returns (uint8);

  function latestAnswer() external view returns (int256);

  function latestTimestamp() external view returns (uint256);

  function latestRound() external view returns (uint256);

  event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);
}
          

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"id","internalType":"string"},{"type":"string","name":"description","internalType":"string"},{"type":"uint8","name":"decimals_","internalType":"uint8"}]},{"type":"event","name":"AnswerUpdated","inputs":[{"type":"int256","name":"current","internalType":"int256","indexed":true},{"type":"uint256","name":"roundId","internalType":"uint256","indexed":true},{"type":"uint256","name":"updatedAt","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewBlsOraclePrice","inputs":[{"type":"int256","name":"current","internalType":"int256","indexed":true},{"type":"uint256","name":"roundId","internalType":"uint256","indexed":true},{"type":"uint256","name":"updatedAt","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewBlsOracleQuery","inputs":[{"type":"address","name":"_from","internalType":"address","indexed":true},{"type":"string","name":"_id","internalType":"string","indexed":true},{"type":"uint256","name":"timestamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewOwner","inputs":[{"type":"address","name":"oldOwner","internalType":"address","indexed":false},{"type":"address","name":"newOwner","internalType":"address","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"__callback","inputs":[{"type":"int256","name":"_price","internalType":"int256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"int256","name":"","internalType":"int256"}],"name":"latestAnswer","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"latestRound","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"latestTimestamp","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwner","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"update","inputs":[]}]
              

Contract Creation Code

0x60806040523480156200001157600080fd5b5060405162000c7238038062000c72833981810160405281019062000037919062000213565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000908051906020019062000090929190620000ce565b508160019080519060200190620000a9929190620000ce565b5080600260006101000a81548160ff021916908360ff16021790555050505062000458565b828054620000dc906200034f565b90600052602060002090601f0160209004810192826200010057600085556200014c565b82601f106200011b57805160ff19168380011785556200014c565b828001600101855582156200014c579182015b828111156200014b5782518255916020019190600101906200012e565b5b5090506200015b91906200015f565b5090565b5b808211156200017a57600081600090555060010162000160565b5090565b6000620001956200018f84620002d6565b620002ad565b905082815260208101848484011115620001b457620001b36200041e565b5b620001c184828562000319565b509392505050565b600082601f830112620001e157620001e062000419565b5b8151620001f38482602086016200017e565b91505092915050565b6000815190506200020d816200043e565b92915050565b6000806000606084860312156200022f576200022e62000428565b5b600084015167ffffffffffffffff81111562000250576200024f62000423565b5b6200025e86828701620001c9565b935050602084015167ffffffffffffffff81111562000282576200028162000423565b5b6200029086828701620001c9565b9250506040620002a386828701620001fc565b9150509250925092565b6000620002b9620002cc565b9050620002c7828262000385565b919050565b6000604051905090565b600067ffffffffffffffff821115620002f457620002f3620003ea565b5b620002ff826200042d565b9050602081019050919050565b600060ff82169050919050565b60005b83811015620003395780820151818401526020810190506200031c565b8381111562000349576000848401525b50505050565b600060028204905060018216806200036857607f821691505b602082108114156200037f576200037e620003bb565b5b50919050565b62000390826200042d565b810181811067ffffffffffffffff82111715620003b257620003b1620003ea565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b62000449816200030c565b81146200045557600080fd5b50565b61080a80620004686000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370324fac1161005b57806370324fac146101035780638205bf6a1461011f578063a2e620451461013d578063b2bdfa7b1461014757610088565b806313af40351461008d578063313ce567146100a957806350d25bcd146100c7578063668a0f02146100e5575b600080fd5b6100a760048036038101906100a2919061048f565b610165565b005b6100b161029a565b6040516100be9190610678565b60405180910390f35b6100cf6102b1565b6040516100dc9190610622565b60405180910390f35b6100ed6102bb565b6040516100fa919061065d565b60405180910390f35b61011d600480360381019061011891906104bc565b6102c5565b005b610127610374565b604051610134919061065d565b60405180910390f35b61014561037e565b005b61014f61043f565b60405161015c91906105de565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061063d565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364818360405161028e9291906105f9565b60405180910390a15050565b6000600260009054906101000a900460ff16905090565b6000600354905090565b6000600554905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461031f57600080fd5b806003819055504360058190555042600481905550600554817fa085aeb22c7d1cf9e526e11f37b76fbaa391d620eaeebb33ead10676473d4dd1600454604051610369919061065d565b60405180910390a350565b6000600454905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d857600080fd5b60006040516103e791906105c7565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167fc396af0b61dfe04603380121a3f3ac9d82b24b2008f8c53ac14eb167755225ac42604051610435919061065d565b60405180910390a3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081359050610474816107a6565b92915050565b600081359050610489816107bd565b92915050565b6000602082840312156104a5576104a4610778565b5b60006104b384828501610465565b91505092915050565b6000602082840312156104d2576104d1610778565b5b60006104e08482850161047a565b91505092915050565b6104f2816106c4565b82525050565b610501816106d6565b82525050565b6000815461051481610717565b61051e81866106b9565b94506001821660008114610539576001811461054a5761057d565b60ff1983168652818601935061057d565b61055385610693565b60005b8381101561057557815481890152600182019150602081019050610556565b838801955050505b50505092915050565b60006105936013836106a8565b915061059e8261077d565b602082019050919050565b6105b281610700565b82525050565b6105c18161070a565b82525050565b60006105d38284610507565b915081905092915050565b60006020820190506105f360008301846104e9565b92915050565b600060408201905061060e60008301856104e9565b61061b60208301846104e9565b9392505050565b600060208201905061063760008301846104f8565b92915050565b6000602082019050818103600083015261065681610586565b9050919050565b600060208201905061067260008301846105a9565b92915050565b600060208201905061068d60008301846105b8565b92915050565b60008190508160005260206000209050919050565b600082825260208201905092915050565b600081905092915050565b60006106cf826106e0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168061072f57607f821691505b6020821081141561074357610742610749565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f6f6e6c792061646d696e206d61792063616c6c00000000000000000000000000600082015250565b6107af816106c4565b81146107ba57600080fd5b50565b6107c6816106d6565b81146107d157600080fd5b5056fea2646970667358221220fa7cfe680f1cc1de758efee6e809cd81636fa5ef1f1b3bf61eea129e8cae26f764736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016626c732e63656c6f5f626c735f63635f6f7261636c6500000000000000000000000000000000000000000000000000000000000000000000000000000000000a42433032202f2055534400000000000000000000000000000000000000000000

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c806370324fac1161005b57806370324fac146101035780638205bf6a1461011f578063a2e620451461013d578063b2bdfa7b1461014757610088565b806313af40351461008d578063313ce567146100a957806350d25bcd146100c7578063668a0f02146100e5575b600080fd5b6100a760048036038101906100a2919061048f565b610165565b005b6100b161029a565b6040516100be9190610678565b60405180910390f35b6100cf6102b1565b6040516100dc9190610622565b60405180910390f35b6100ed6102bb565b6040516100fa919061065d565b60405180910390f35b61011d600480360381019061011891906104bc565b6102c5565b005b610127610374565b604051610134919061065d565b60405180910390f35b61014561037e565b005b61014f61043f565b60405161015c91906105de565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061063d565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364818360405161028e9291906105f9565b60405180910390a15050565b6000600260009054906101000a900460ff16905090565b6000600354905090565b6000600554905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461031f57600080fd5b806003819055504360058190555042600481905550600554817fa085aeb22c7d1cf9e526e11f37b76fbaa391d620eaeebb33ead10676473d4dd1600454604051610369919061065d565b60405180910390a350565b6000600454905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d857600080fd5b60006040516103e791906105c7565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167fc396af0b61dfe04603380121a3f3ac9d82b24b2008f8c53ac14eb167755225ac42604051610435919061065d565b60405180910390a3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081359050610474816107a6565b92915050565b600081359050610489816107bd565b92915050565b6000602082840312156104a5576104a4610778565b5b60006104b384828501610465565b91505092915050565b6000602082840312156104d2576104d1610778565b5b60006104e08482850161047a565b91505092915050565b6104f2816106c4565b82525050565b610501816106d6565b82525050565b6000815461051481610717565b61051e81866106b9565b94506001821660008114610539576001811461054a5761057d565b60ff1983168652818601935061057d565b61055385610693565b60005b8381101561057557815481890152600182019150602081019050610556565b838801955050505b50505092915050565b60006105936013836106a8565b915061059e8261077d565b602082019050919050565b6105b281610700565b82525050565b6105c18161070a565b82525050565b60006105d38284610507565b915081905092915050565b60006020820190506105f360008301846104e9565b92915050565b600060408201905061060e60008301856104e9565b61061b60208301846104e9565b9392505050565b600060208201905061063760008301846104f8565b92915050565b6000602082019050818103600083015261065681610586565b9050919050565b600060208201905061067260008301846105a9565b92915050565b600060208201905061068d60008301846105b8565b92915050565b60008190508160005260206000209050919050565b600082825260208201905092915050565b600081905092915050565b60006106cf826106e0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168061072f57607f821691505b6020821081141561074357610742610749565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f6f6e6c792061646d696e206d61792063616c6c00000000000000000000000000600082015250565b6107af816106c4565b81146107ba57600080fd5b50565b6107c6816106d6565b81146107d157600080fd5b5056fea2646970667358221220fa7cfe680f1cc1de758efee6e809cd81636fa5ef1f1b3bf61eea129e8cae26f764736f6c63430008070033