Contract 0xfadff79ba04f169386646a43869b66b39c7e0858 2

Contract Overview

Balance:
0 BNB

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc6c154400a407eccef96e9475dd5eb6342cb14fe661872dee0283544098e1a0aFulfill Oracle R...86586182021-05-08 9:35:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0xe9f95946d67806cc9bccbc3b424f3d1fcb4a9d128d5ac0887029588e70b70249Fulfill Oracle R...86586172021-05-08 9:35:14170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168798
0x2d062134683b08284660b77dd3d889c19c66c0370085134dd74ba7cfaa91ac0aFulfill Oracle R...86585972021-05-08 9:34:14170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168798
0x75b353965010728e71b22764e601db3c5bf848001a63342af3b5039fea41f56dFulfill Oracle R...86585962021-05-08 9:34:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0xdbeaaba6558e6dba2b5452aac6bbae3159da3c924dc679671e02b0d42b90e018Fulfill Oracle R...86585582021-05-08 9:32:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.001556982
0x999240a7bd9953d785aca5b5c6b5d8b8eab0eb014f80a8ebadc8f7d020962572Fulfill Oracle R...86585572021-05-08 9:32:14170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.001519398
0x9e5dd3fe05d020e16e64f86e6e96ef5f4c50143be2b2fd8a880eeed307d964fcFulfill Oracle R...86585362021-05-08 9:31:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.001772379
0x43862f9768d99113ec0cac6e9e91a48972e8c03c11e4c868ab52b86192e88e07Fulfill Oracle R...86585362021-05-08 9:31:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.001772631
0x0d0105fb5487c2258afd852ce0ff8528c2c550f8767e4087af8029c424dbbfbcFulfill Oracle R...86585182021-05-08 9:30:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168798
0xdf9edf1ba2e55763d7ba2712217d36bec18ecf2cb9bf22632d991ffb8b36d870Fulfill Oracle R...86585182021-05-08 9:30:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0x181766e3833c0c52bb3cc1bc8ce3db5d3729ab7a3a2820d804c13b421b979f80Fulfill Oracle R...86584992021-05-08 9:29:20170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168798
0xf392b5b134cfc1f3ec10a7fd86daee0fed8c7c8abdf6101196f3fd6e9f7ae693Fulfill Oracle R...86584962021-05-08 9:29:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0x4731b315a99d28e5004db4b74bb02ead9f45af26d2007a4375f71f689f267d2cFulfill Oracle R...86584582021-05-08 9:27:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00172986
0xc8556ede8ee473deb4a7eba1cc0679861a0f3f52b1ffc375ddfa4ae72eb000a4Fulfill Oracle R...86584572021-05-08 9:27:14170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0xf8613e739d260e77b33f1571fa6e828c2211cb7fc5027ff4b0ad0ac7c1b2b33aFulfill Oracle R...86583782021-05-08 9:23:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00172998
0x71e458a084073770da9aaad909a9dae645f8a6ae37bc6580b0d7fd5749022722Fulfill Oracle R...86583762021-05-08 9:23:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0x73380aaa5fb65a6fa15a32b5647c64bfb9270dc603ca8861d137d4ec72a73612Fulfill Oracle R...86583372021-05-08 9:21:14170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168786
0xb371dc7f28f89751705af1d0bf01e941e51916fd722fc369673e1045b8ce5d02Fulfill Oracle R...86583362021-05-08 9:21:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0x3ebe04a636dc191af78142cdda97bf9a29c9c2dc2f8f7554fdd4a751f0ac52a5Fulfill Oracle R...86582582021-05-08 9:17:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00172998
0x7324491f1bfaed248d2de936439b43f2c06cff6d5e25ad4f05504a2f184a4445Fulfill Oracle R...86582562021-05-08 9:17:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0xab0f60a76c7f991ffe813282061c9522735748d85cd9d8c325f947780dce05ccFulfill Oracle R...86582362021-05-08 9:16:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168798
0xd6524a56cc29b1bc328c681f8dee1b25aea29b04107eebbc7ad6cb065de5b10eFulfill Oracle R...86582362021-05-08 9:16:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0x2d8dbf0bc3d7469306183c013fa22707b547d37991afd12b90c5a843a005b0e1Fulfill Oracle R...86581982021-05-08 9:14:17170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00172986
0xeb6d1030f0a43510b466d528854228039906f20e9ee8107d8be5403662a3b130Fulfill Oracle R...86581972021-05-08 9:14:14170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168822
0x4e2613e3c66d9d339e9beaeaf65b582e614c328a607dd0f9b997ad5ab2affd5aFulfill Oracle R...86581362021-05-08 9:11:11170 days 5 hrs ago0x2e890f481704ea37c6f137292804f108bc160fe5 IN  0xfadff79ba04f169386646a43869b66b39c7e08580 BNB0.00168798
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x85596f6447211d41594c80050212183ed4113a1b39a68df079bd851ea0428c5786586342021-05-08 9:36:05170 days 4 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0x85596f6447211d41594c80050212183ed4113a1b39a68df079bd851ea0428c5786586342021-05-08 9:36:05170 days 4 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xc0b7d0eceb43ba375370a9c8aa9bec3af540e4b8d7f85e42c753b8deec4f32e086586342021-05-08 9:36:05170 days 4 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xc0b7d0eceb43ba375370a9c8aa9bec3af540e4b8d7f85e42c753b8deec4f32e086586342021-05-08 9:36:05170 days 4 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xc6c154400a407eccef96e9475dd5eb6342cb14fe661872dee0283544098e1a0a86586182021-05-08 9:35:17170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0x9d3425ce0f3766a949e622e535ce16edf50984480 BNB
0xe9f95946d67806cc9bccbc3b424f3d1fcb4a9d128d5ac0887029588e70b7024986586172021-05-08 9:35:14170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xdec6ba5a1025117b07596a88cbb2f45ddfeda2500 BNB
0x2b9f65296a7c1f3ebd834288824bdfdfd933cd74f3111c7a9028197effe72d0e86586162021-05-08 9:35:11170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0x2b9f65296a7c1f3ebd834288824bdfdfd933cd74f3111c7a9028197effe72d0e86586162021-05-08 9:35:11170 days 5 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xcc2340e54db50094480c95f8e63f032f665f846c5863e1c5a895dab985f271cd86586142021-05-08 9:35:05170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xcc2340e54db50094480c95f8e63f032f665f846c5863e1c5a895dab985f271cd86586142021-05-08 9:35:05170 days 5 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0x2d062134683b08284660b77dd3d889c19c66c0370085134dd74ba7cfaa91ac0a86585972021-05-08 9:34:14170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xdec6ba5a1025117b07596a88cbb2f45ddfeda2500 BNB
0x75b353965010728e71b22764e601db3c5bf848001a63342af3b5039fea41f56d86585962021-05-08 9:34:11170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0x9d3425ce0f3766a949e622e535ce16edf50984480 BNB
0xbc7f588a7720f1fc31f968f7a997ea88cd35bd0d3f676fddb8aaf607dcdacf8486585942021-05-08 9:34:05170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xbc7f588a7720f1fc31f968f7a997ea88cd35bd0d3f676fddb8aaf607dcdacf8486585942021-05-08 9:34:05170 days 5 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xaad90470c3af66a77d3722480978041c96cc0cc311cbbbc2c64c252316f6687d86585942021-05-08 9:34:05170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xaad90470c3af66a77d3722480978041c96cc0cc311cbbbc2c64c252316f6687d86585942021-05-08 9:34:05170 days 5 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xdbeaaba6558e6dba2b5452aac6bbae3159da3c924dc679671e02b0d42b90e01886585582021-05-08 9:32:17170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xdec6ba5a1025117b07596a88cbb2f45ddfeda2500 BNB
0x999240a7bd9953d785aca5b5c6b5d8b8eab0eb014f80a8ebadc8f7d02096257286585572021-05-08 9:32:14170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0x9d3425ce0f3766a949e622e535ce16edf50984480 BNB
0xf2ff158a78686174cb83895471b6a324827dae5f8e0e2f2bc846b7d2b3610de886585542021-05-08 9:32:05170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xf2ff158a78686174cb83895471b6a324827dae5f8e0e2f2bc846b7d2b3610de886585542021-05-08 9:32:05170 days 5 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xb67678a955116202e312b10990bac7862dbd6639acb7ef68f00ca3fdf76ac73e86585542021-05-08 9:32:05170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0xb67678a955116202e312b10990bac7862dbd6639acb7ef68f00ca3fdf76ac73e86585542021-05-08 9:32:05170 days 5 hrs ago 0x84b9b910527ad5c03a9ca831909e21e236ea7b06 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
0x9e5dd3fe05d020e16e64f86e6e96ef5f4c50143be2b2fd8a880eeed307d964fc86585362021-05-08 9:31:11170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xdec6ba5a1025117b07596a88cbb2f45ddfeda2500 BNB
0x43862f9768d99113ec0cac6e9e91a48972e8c03c11e4c868ab52b86192e88e0786585362021-05-08 9:31:11170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0x9d3425ce0f3766a949e622e535ce16edf50984480 BNB
0xdde4b90858ab170d8c99a46bfd93bbdd91b8d2dac5216f6c843582c71d5b43fd86585342021-05-08 9:31:05170 days 5 hrs ago 0xfadff79ba04f169386646a43869b66b39c7e0858 0xfadff79ba04f169386646a43869b66b39c7e08580 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Oracle

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-03
*/

pragma solidity 0.4.24;

interface LinkTokenInterface {
  function allowance(address owner, address spender) external view returns (uint256 remaining);
  function approve(address spender, uint256 value) external returns (bool success);
  function balanceOf(address owner) external view returns (uint256 balance);
  function decimals() external view returns (uint8 decimalPlaces);
  function decreaseApproval(address spender, uint256 addedValue) external returns (bool success);
  function increaseApproval(address spender, uint256 subtractedValue) external;
  function name() external view returns (string tokenName);
  function symbol() external view returns (string tokenSymbol);
  function totalSupply() external view returns (uint256 totalTokensIssued);
  function transfer(address to, uint256 value) external returns (bool success);
  function transferAndCall(address to, uint256 value, bytes data) external returns (bool success);
  function transferFrom(address from, address to, uint256 value) external returns (bool success);
}


interface OracleInterface {
  function fulfillOracleRequest(
    bytes32 requestId,
    uint256 payment,
    address callbackAddress,
    bytes4 callbackFunctionId,
    uint256 expiration,
    bytes32 data
  ) external returns (bool);
  function getAuthorizationStatus(address node) external view returns (bool);
  function setFulfillmentPermission(address node, bool allowed) external;
  function withdraw(address recipient, uint256 amount) external;
  function withdrawable() external view returns (uint256);
}


interface ChainlinkRequestInterface {
  function oracleRequest(
    address sender,
    uint256 payment,
    bytes32 id,
    address callbackAddress,
    bytes4 callbackFunctionId,
    uint256 nonce,
    uint256 version,
    bytes data
  ) external;

  function cancelOracleRequest(
    bytes32 requestId,
    uint256 payment,
    bytes4 callbackFunctionId,
    uint256 expiration
  ) external;
}



/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}






/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    c = _a * _b;
    assert(c / _a == _b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // assert(_b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold
    return _a / _b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    assert(_b <= _a);
    return _a - _b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    c = _a + _b;
    assert(c >= _a);
    return c;
  }
}





/**
 * @title The Chainlink Oracle contract
 * @notice Node operators can deploy this contract to fulfill requests sent to them
 */
contract Oracle is ChainlinkRequestInterface, OracleInterface, Ownable {
  using SafeMath for uint256;

  uint256 constant public EXPIRY_TIME = 5 minutes;
  uint256 constant private MINIMUM_CONSUMER_GAS_LIMIT = 400000;
  // We initialize fields to 1 instead of 0 so that the first invocation
  // does not cost more gas.
  uint256 constant private ONE_FOR_CONSISTENT_GAS_COST = 1;
  uint256 constant private SELECTOR_LENGTH = 4;
  uint256 constant private EXPECTED_REQUEST_WORDS = 2;
  uint256 constant private MINIMUM_REQUEST_LENGTH = SELECTOR_LENGTH + (32 * EXPECTED_REQUEST_WORDS);

  LinkTokenInterface internal LinkToken;
  mapping(bytes32 => bytes32) private commitments;
  mapping(address => bool) private authorizedNodes;
  uint256 private withdrawableTokens = ONE_FOR_CONSISTENT_GAS_COST;

  event OracleRequest(
    bytes32 indexed specId,
    address requester,
    bytes32 requestId,
    uint256 payment,
    address callbackAddr,
    bytes4 callbackFunctionId,
    uint256 cancelExpiration,
    uint256 dataVersion,
    bytes data
  );

  event CancelOracleRequest(
    bytes32 indexed requestId
  );

  /**
   * @notice Deploy with the address of the LINK token
   * @dev Sets the LinkToken address for the imported LinkTokenInterface
   * @param _link The address of the LINK token
   */
  constructor(address _link) public Ownable() {
    LinkToken = LinkTokenInterface(_link); // external but already deployed and unalterable
  }

  /**
   * @notice Called when LINK is sent to the contract via `transferAndCall`
   * @dev The data payload's first 2 words will be overwritten by the `_sender` and `_amount`
   * values to ensure correctness. Calls oracleRequest.
   * @param _sender Address of the sender
   * @param _amount Amount of LINK sent (specified in wei)
   * @param _data Payload of the transaction
   */
  function onTokenTransfer(
    address _sender,
    uint256 _amount,
    bytes _data
  )
    public
    onlyLINK
    validRequestLength(_data)
    permittedFunctionsForLINK(_data)
  {
    assembly { // solhint-disable-line no-inline-assembly
      mstore(add(_data, 36), _sender) // ensure correct sender is passed
      mstore(add(_data, 68), _amount) // ensure correct amount is passed
    }
    // solhint-disable-next-line avoid-low-level-calls
    require(address(this).delegatecall(_data), "Unable to create request"); // calls oracleRequest
  }

  /**
   * @notice Creates the Chainlink request
   * @dev Stores the hash of the params as the on-chain commitment for the request.
   * Emits OracleRequest event for the Chainlink node to detect.
   * @param _sender The sender of the request
   * @param _payment The amount of payment given (specified in wei)
   * @param _specId The Job Specification ID
   * @param _callbackAddress The callback address for the response
   * @param _callbackFunctionId The callback function ID for the response
   * @param _nonce The nonce sent by the requester
   * @param _dataVersion The specified data version
   * @param _data The CBOR payload of the request
   */
  function oracleRequest(
    address _sender,
    uint256 _payment,
    bytes32 _specId,
    address _callbackAddress,
    bytes4 _callbackFunctionId,
    uint256 _nonce,
    uint256 _dataVersion,
    bytes _data
  )
    external
    onlyLINK
    checkCallbackAddress(_callbackAddress)
  {
    bytes32 requestId = keccak256(abi.encodePacked(_sender, _nonce));
    require(commitments[requestId] == 0, "Must use a unique ID");
    // solhint-disable-next-line not-rely-on-time
    uint256 expiration = now.add(EXPIRY_TIME);

    commitments[requestId] = keccak256(
      abi.encodePacked(
        _payment,
        _callbackAddress,
        _callbackFunctionId,
        expiration
      )
    );

    emit OracleRequest(
      _specId,
      _sender,
      requestId,
      _payment,
      _callbackAddress,
      _callbackFunctionId,
      expiration,
      _dataVersion,
      _data);
  }

  /**
   * @notice Called by the Chainlink node to fulfill requests
   * @dev Given params must hash back to the commitment stored from `oracleRequest`.
   * Will call the callback address' callback function without bubbling up error
   * checking in a `require` so that the node can get paid.
   * @param _requestId The fulfillment request ID that must match the requester's
   * @param _payment The payment amount that will be released for the oracle (specified in wei)
   * @param _callbackAddress The callback address to call for fulfillment
   * @param _callbackFunctionId The callback function ID to use for fulfillment
   * @param _expiration The expiration that the node should respond by before the requester can cancel
   * @param _data The data to return to the consuming contract
   * @return Status if the external call was successful
   */
  function fulfillOracleRequest(
    bytes32 _requestId,
    uint256 _payment,
    address _callbackAddress,
    bytes4 _callbackFunctionId,
    uint256 _expiration,
    bytes32 _data
  )
    external
    onlyAuthorizedNode
    isValidRequest(_requestId)
    returns (bool)
  {
    bytes32 paramsHash = keccak256(
      abi.encodePacked(
        _payment,
        _callbackAddress,
        _callbackFunctionId,
        _expiration
      )
    );
    require(commitments[_requestId] == paramsHash, "Params do not match request ID");
    withdrawableTokens = withdrawableTokens.add(_payment);
    delete commitments[_requestId];
    require(gasleft() >= MINIMUM_CONSUMER_GAS_LIMIT, "Must provide consumer enough gas");
    // All updates to the oracle's fulfillment should come before calling the
    // callback(addr+functionId) as it is untrusted.
    // See: https://solidity.readthedocs.io/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern
    return _callbackAddress.call(_callbackFunctionId, _requestId, _data); // solhint-disable-line avoid-low-level-calls
  }

  /**
   * @notice Use this to check if a node is authorized for fulfilling requests
   * @param _node The address of the Chainlink node
   * @return The authorization status of the node
   */
  function getAuthorizationStatus(address _node) external view returns (bool) {
    return authorizedNodes[_node];
  }

  /**
   * @notice Sets the fulfillment permission for a given node. Use `true` to allow, `false` to disallow.
   * @param _node The address of the Chainlink node
   * @param _allowed Bool value to determine if the node can fulfill requests
   */
  function setFulfillmentPermission(address _node, bool _allowed) external onlyOwner {
    authorizedNodes[_node] = _allowed;
  }

  /**
   * @notice Allows the node operator to withdraw earned LINK to a given address
   * @dev The owner of the contract can be another wallet and does not have to be a Chainlink node
   * @param _recipient The address to send the LINK token to
   * @param _amount The amount to send (specified in wei)
   */
  function withdraw(address _recipient, uint256 _amount)
    external
    onlyOwner
    hasAvailableFunds(_amount)
  {
    withdrawableTokens = withdrawableTokens.sub(_amount);
    assert(LinkToken.transfer(_recipient, _amount));
  }

  /**
   * @notice Displays the amount of LINK that is available for the node operator to withdraw
   * @dev We use `ONE_FOR_CONSISTENT_GAS_COST` in place of 0 in storage
   * @return The amount of withdrawable LINK on the contract
   */
  function withdrawable() external view onlyOwner returns (uint256) {
    return withdrawableTokens.sub(ONE_FOR_CONSISTENT_GAS_COST);
  }

  /**
   * @notice Allows requesters to cancel requests sent to this oracle contract. Will transfer the LINK
   * sent for the request back to the requester's address.
   * @dev Given params must hash to a commitment stored on the contract in order for the request to be valid
   * Emits CancelOracleRequest event.
   * @param _requestId The request ID
   * @param _payment The amount of payment given (specified in wei)
   * @param _callbackFunc The requester's specified callback address
   * @param _expiration The time of the expiration for the request
   */
  function cancelOracleRequest(
    bytes32 _requestId,
    uint256 _payment,
    bytes4 _callbackFunc,
    uint256 _expiration
  ) external {
    bytes32 paramsHash = keccak256(
      abi.encodePacked(
        _payment,
        msg.sender,
        _callbackFunc,
        _expiration)
    );
    require(paramsHash == commitments[_requestId], "Params do not match request ID");
    // solhint-disable-next-line not-rely-on-time
    require(_expiration <= now, "Request is not expired");

    delete commitments[_requestId];
    emit CancelOracleRequest(_requestId);

    assert(LinkToken.transfer(msg.sender, _payment));
  }

  // MODIFIERS

  /**
   * @dev Reverts if amount requested is greater than withdrawable balance
   * @param _amount The given amount to compare to `withdrawableTokens`
   */
  modifier hasAvailableFunds(uint256 _amount) {
    require(withdrawableTokens >= _amount.add(ONE_FOR_CONSISTENT_GAS_COST), "Amount requested is greater than withdrawable balance");
    _;
  }

  /**
   * @dev Reverts if request ID does not exist
   * @param _requestId The given request ID to check in stored `commitments`
   */
  modifier isValidRequest(bytes32 _requestId) {
    require(commitments[_requestId] != 0, "Must have a valid requestId");
    _;
  }

  /**
   * @dev Reverts if `msg.sender` is not authorized to fulfill requests
   */
  modifier onlyAuthorizedNode() {
    require(authorizedNodes[msg.sender] || msg.sender == owner, "Not an authorized node to fulfill requests");
    _;
  }

  /**
   * @dev Reverts if not sent from the LINK token
   */
  modifier onlyLINK() {
    require(msg.sender == address(LinkToken), "Must use LINK token");
    _;
  }

  /**
   * @dev Reverts if the given data does not begin with the `oracleRequest` function selector
   * @param _data The data payload of the request
   */
  modifier permittedFunctionsForLINK(bytes _data) {
    bytes4 funcSelector;
    assembly { // solhint-disable-line no-inline-assembly
      funcSelector := mload(add(_data, 32))
    }
    require(funcSelector == this.oracleRequest.selector, "Must use whitelisted functions");
    _;
  }

  /**
   * @dev Reverts if the callback address is the LINK token
   * @param _to The callback address
   */
  modifier checkCallbackAddress(address _to) {
    require(_to != address(LinkToken), "Cannot callback to LINK");
    _;
  }

  /**
   * @dev Reverts if the given payload is less than needed to create a request
   * @param _data The request payload
   */
  modifier validRequestLength(bytes _data) {
    require(_data.length >= MINIMUM_REQUEST_LENGTH, "Invalid request length");
    _;
  }

}

Contract ABI

[{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_payment","type":"uint256"},{"name":"_specId","type":"bytes32"},{"name":"_callbackAddress","type":"address"},{"name":"_callbackFunctionId","type":"bytes4"},{"name":"_nonce","type":"uint256"},{"name":"_dataVersion","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"oracleRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_requestId","type":"bytes32"},{"name":"_payment","type":"uint256"},{"name":"_callbackAddress","type":"address"},{"name":"_callbackFunctionId","type":"bytes4"},{"name":"_expiration","type":"uint256"},{"name":"_data","type":"bytes32"}],"name":"fulfillOracleRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"EXPIRY_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_requestId","type":"bytes32"},{"name":"_payment","type":"uint256"},{"name":"_callbackFunc","type":"bytes4"},{"name":"_expiration","type":"uint256"}],"name":"cancelOracleRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_node","type":"address"},{"name":"_allowed","type":"bool"}],"name":"setFulfillmentPermission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_node","type":"address"}],"name":"getAuthorizationStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_link","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"specId","type":"bytes32"},{"indexed":false,"name":"requester","type":"address"},{"indexed":false,"name":"requestId","type":"bytes32"},{"indexed":false,"name":"payment","type":"uint256"},{"indexed":false,"name":"callbackAddr","type":"address"},{"indexed":false,"name":"callbackFunctionId","type":"bytes4"},{"indexed":false,"name":"cancelExpiration","type":"uint256"},{"indexed":false,"name":"dataVersion","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"OracleRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"requestId","type":"bytes32"}],"name":"CancelOracleRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604052600160045534801561001557600080fd5b50604051602080611dd383398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611d0a806100c96000396000f3006080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806340429946146100bf5780634ab0d1901461018f5780634b60228214610243578063501883011461026e5780636ee4d55314610299578063715018a6146103075780637fcd56db1461031e5780638da5cb5b1461036d578063a4c0ed36146103c4578063d3e9c31414610457578063f2fde38b146104b2578063f3fef3a3146104f5575b600080fd5b3480156100cb57600080fd5b5061018d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610542565b005b34801561019b57600080fd5b50610229600480360381019080803560001916906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001909291908035600019169060200190929190505050610ab9565b604051808215151515815260200191505060405180910390f35b34801561024f57600080fd5b50610258610fa3565b6040518082815260200191505060405180910390f35b34801561027a57600080fd5b50610283610fa9565b6040518082815260200191505060405180910390f35b3480156102a557600080fd5b5061030560048036038101908080356000191690602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050611021565b005b34801561031357600080fd5b5061031c6113a9565b005b34801561032a57600080fd5b5061036b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506114ab565b005b34801561037957600080fd5b50610382611561565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103d057600080fd5b50610455600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611586565b005b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b604051808215151515815260200191505060405180910390f35b3480156104be57600080fd5b506104f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611911565b005b34801561050157600080fd5b50610540600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611978565b005b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561060a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b87600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742063616c6c6261636b20746f204c494e4b00000000000000000081525060200191505060405180910390fd5b8b87604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156107695780518252602082019150602081019050602083039250610744565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925060006001026002600085600019166000191681526020019081526020016000205460001916141515610832576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b61084761012c42611baf90919063ffffffff16565b91508a898984604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b60208310151561092f578051825260208201915060208101905060208303925061090a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600260008560001916600019168152602001908152602001600020816000191690555089600019167fd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c658d858e8d8d888d8d8d604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600019166000191681526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200185815260200184815260200180602001828103825284848281815260200192508082843782019150509a505050505050505050505060405180910390a2505050505050505050505050565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610b6057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420616e20617574686f72697a6564206e6f646520746f2066756c66696c81526020017f6c2072657175657374730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b876000600102600260008360001916600019168152602001908152602001600020546000191614151515610c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d757374206861766520612076616c696420726571756573744964000000000081525060200191505060405180910390fd5b87878787604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b602083101515610d7c5780518252602082019150602081019050602083039250610d57565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091508160001916600260008b600019166000191681526020019081526020016000205460001916141515610e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506172616d7320646f206e6f74206d617463682072657175657374204944000081525060200191505060405180910390fd5b610e5a88600454611baf90919063ffffffff16565b600481905550600260008a600019166000191681526020019081526020016000206000905562061a805a10151515610efa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d7573742070726f7669646520636f6e73756d657220656e6f7567682067617381525060200191505060405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff16867c010000000000000000000000000000000000000000000000000000000090048a866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018260001916600019168152602001925050506000604051808303816000875af192505050925050509695505050505050565b61012c81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100657600080fd5b61101c6001600454611bcb90919063ffffffff16565b905090565b600083338484604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b60208310151561110957805182526020820191506020810190506020830392506110e4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050600260008660001916600019168152602001908152602001600020546000191681600019161415156111d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506172616d7320646f206e6f74206d617463682072657175657374204944000081525060200191505060405180910390fd5b42821115151561124a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52657175657374206973206e6f7420657870697265640000000000000000000081525060200191505060405180910390fd5b6002600086600019166000191681526020019081526020016000206000905584600019167fa7842b9ec549398102c0d91b1b9919b2f20558aefdadf57528a95c6cd3292e9360405160405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b505050506040513d602081101561138957600080fd5b810190808051906020019092919050505015156113a257fe5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140457600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561150657600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b8060026020026004018151101515156116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c69642072657175657374206c656e6774680000000000000000000081525060200191505060405180910390fd5b8160006020820151905063404299467c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156117ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d757374207573652077686974656c69737465642066756e6374696f6e73000081525060200191505060405180910390fd5b8560248501528460448501523073ffffffffffffffffffffffffffffffffffffffff168460405180828051906020019080838360005b838110156117ff5780820151818401526020810190506117e4565b50505050905090810190601f16801561182c5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af491505015156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e61626c6520746f206372656174652072657175657374000000000000000081525060200191505060405180910390fd5b505050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196c57600080fd5b61197581611be4565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119d357600080fd5b806119e8600182611baf90919063ffffffff16565b60045410151515611a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f416d6f756e74207265717565737465642069732067726561746572207468616e81526020017f20776974686472617761626c652062616c616e6365000000000000000000000081525060400191505060405180910390fd5b611a9c82600454611bcb90919063ffffffff16565b600481905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b6757600080fd5b505af1158015611b7b573d6000803e3d6000fd5b505050506040513d6020811015611b9157600080fd5b81019080805190602001909291905050501515611baa57fe5b505050565b60008183019050828110151515611bc257fe5b80905092915050565b6000828211151515611bd957fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c2057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820e6b5a51e39f53a3ad2088b728d6e559b7b765c333bb7890d98c2e9c76574a68a002900000000000000000000000084b9b910527ad5c03a9ca831909e21e236ea7b06

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000084b9b910527ad5c03a9ca831909e21e236ea7b06

-----Decoded View---------------
Arg [0] : _link (address): 0x84b9b910527ad5c03a9ca831909e21e236ea7b06

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000084b9b910527ad5c03a9ca831909e21e236ea7b06


Deployed ByteCode Sourcemap

5279:10994:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8405:926;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8405:926:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10204:1126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10204:1126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5388:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5388:47:0;;;;;;;;;;;;;;;;;;;;;;;12849:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12849:137:0;;;;;;;;;;;;;;;;;;;;;;;13565:643;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13565:643:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3022:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3022:114:0;;;;;;11910:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11910:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2227:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2227:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7163:566;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7163:566:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11534:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11534:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3304:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3304:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12362:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12362:238:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8405:926;8712:17;8901:18;15244:9;;;;;;;;;;;15222:32;;:10;:32;;;15214:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8684:16;15942:9;;;;;;;;;;;15927:25;;:3;:25;;;;15919:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8759:7;8768:6;8742:33;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8742:33:0;;;8732:44;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8732:44:0;;;;;;;;;;;;;;;;8712:64;;8817:1;8791:27;;:11;:22;8803:9;8791:22;;;;;;;;;;;;;;;;;;:27;;;;8783:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8922:20;5426:9;8922:3;:7;;:20;;;;:::i;:::-;8901:41;;9021:8;9040:16;9067:19;9097:10;8994:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8994:122:0;;;8976:147;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8976:147:0;;;;;;;;;;;;;;;;8951:11;:22;8963:9;8951:22;;;;;;;;;;;;;;;;;:172;;;;;;;9159:7;9137:188;;;;9175:7;9191:9;9209:8;9226:16;9251:19;9279:10;9298:12;9319:5;;9137:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15285:1;8405:926;;;;;;;;;;;:::o;10204:1126::-;10481:4;10497:18;15005:15;:27;15021:10;15005:27;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;15050:5;;;;;;;;;;;15036:19;;:10;:19;;;15005:50;14997:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10455:10;14820:1;14793:28;;:11;:23;14805:10;14793:23;;;;;;;;;;;;;;;;;;:28;;;;;14785:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10563:8;10582:16;10609:19;10639:11;10536:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10536:123:0;;;10518:148;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10518:148:0;;;;;;;;;;;;;;;;10497:169;;10708:10;10681:37;;;:11;:23;10693:10;10681:23;;;;;;;;;;;;;;;;;;:37;;;;10673:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10781:32;10804:8;10781:18;;:22;;:32;;;;:::i;:::-;10760:18;:53;;;;10827:11;:23;10839:10;10827:23;;;;;;;;;;;;;;;;;10820:30;;;5494:6;10865:9;:39;;10857:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11217:16;:21;;11239:19;11217:61;;;11260:10;11272:5;11217:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11210:68;;15109:1;10204:1126;;;;;;;;;:::o;5388:47::-;5426:9;5388:47;:::o;12849:137::-;12906:7;2730:5;;;;;;;;;;;2716:19;;:10;:19;;;2708:28;;;;;;;;12929:51;5664:1;12929:18;;:22;;:51;;;;:::i;:::-;12922:58;;12849:137;:::o;13565:643::-;13716:18;13782:8;13801:10;13822:13;13846:11;13755:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13755:103:0;;;13737:128;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13737:128:0;;;;;;;;;;;;;;;;13716:149;;13894:11;:23;13906:10;13894:23;;;;;;;;;;;;;;;;;;13880:37;;;:10;:37;;;;13872:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14033:3;14018:11;:18;;14010:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14079:11;:23;14091:10;14079:23;;;;;;;;;;;;;;;;;14072:30;;;14134:10;14114:31;;;;;;;;;;;;;14161:9;;;;;;;;;;;:18;;;14180:10;14192:8;14161:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14161:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14161:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14161:40:0;;;;;;;;;;;;;;;;14154:48;;;;;;13565:643;;;;;:::o;3022:114::-;2730:5;;;;;;;;;;;2716:19;;:10;:19;;;2708:28;;;;;;;;3099:5;;;;;;;;;;;3080:25;;;;;;;;;;;;3128:1;3112:5;;:18;;;;;;;;;;;;;;;;;;3022:114::o;11910:129::-;2730:5;;;;;;;;;;;2716:19;;:10;:19;;;2708:28;;;;;;;;12025:8;12000:15;:22;12016:5;12000:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;11910:129;;:::o;2227:20::-;;;;;;;;;;;;;:::o;7163:566::-;15244:9;;;;;;;;;;;15222:32;;:10;:32;;;15214:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7305:5;5769:1;5844:2;:27;5713:1;5825:47;16189:5;:12;:38;;16181:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7343:5;15513:19;15633:2;15626:5;15622:14;15616:21;15600:37;;15674:27;;;15658:43;;;:12;:43;;;;15650:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:7;7439:2;7432:5;7428:14;7421:31;7518:7;7513:2;7506:5;7502:14;7495:31;7646:4;7638:26;;7665:5;7638:33;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7638:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7630:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16261:1;;15285;7163:566;;;:::o;11534:118::-;11604:4;11624:15;:22;11640:5;11624:22;;;;;;;;;;;;;;;;;;;;;;;;;11617:29;;11534:118;;;:::o;3304:105::-;2730:5;;;;;;;;;;;2716:19;;:10;:19;;;2708:28;;;;;;;;3374:29;3393:9;3374:18;:29::i;:::-;3304:105;:::o;12362:238::-;2730:5;;;;;;;;;;;2716:19;;:10;:19;;;2708:28;;;;;;;;12469:7;14476:40;5664:1;14476:7;:11;;:40;;;;:::i;:::-;14454:18;;:62;;14446:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12509:31;12532:7;12509:18;;:22;;:31;;;;:::i;:::-;12488:18;:52;;;;12554:9;;;;;;;;;;;:18;;;12573:10;12585:7;12554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12554:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12554:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12554:39:0;;;;;;;;;;;;;;;;12547:47;;;;;;2743:1;12362:238;;:::o;4996:132::-;5056:9;5083:2;5078;:7;5074:11;;5104:2;5099:1;:7;;5092:15;;;;;;5121:1;5114:8;;4996:132;;;;:::o;4810:119::-;4870:7;4899:2;4893;:8;;4886:16;;;;;;4921:2;4916;:7;4909:14;;4810:119;;;;:::o;3550:175::-;3642:1;3621:23;;:9;:23;;;;3613:32;;;;;;;;3685:9;3657:38;;3678:5;;;;;;;;;;;3657:38;;;;;;;;;;;;3710:9;3702:5;;:17;;;;;;;;;;;;;;;;;;3550:175;:::o

Swarm Source

bzzr://e6b5a51e39f53a3ad2088b728d6e559b7b765c333bb7890d98c2e9c76574a68a
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading