false
false

Contract Address Details
contract

0x2bf1BFb0eB6276a4F4B60044068Cb8CdEB89f79B

Contract Name
RealitioProxy
Creator
0x5d5fb4–92281c at 0xc57922–0b72d7
Balance
0 xDai ( )
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
27092267
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
RealitioProxy




Optimization enabled
false
Compiler version
v0.5.12+commit.7709ece9




EVM Version
default




Verified at
2020-12-03T18:33:30.088307Z

Constructor Arguments

000000000000000000000000ceafdd6bc0bef976fdcd1112955828e00543c0ce00000000000000000000000090a617ed516ab7faaba56cceda0c5d952f294d030000000000000000000000000000000000000000000000000000000000000005

Arg [0] (address) : 0xceafdd6bc0bef976fdcd1112955828e00543c0ce
Arg [1] (address) : 0x90a617ed516ab7faaba56cceda0c5d952f294d03
Arg [2] (uint256) : 5

              

Contract source code

Sol2uml
new
// File: contracts/Interfaces.sol

pragma solidity ^0.5.12;

interface IConditionalTokens {
    function reportPayouts(bytes32 questionId, uint256[] calldata payouts) external;
}

interface IRealitio {
    function getContentHash(bytes32 questionId) external view returns (bytes32);
    function getOpeningTS(bytes32 questionId) external view returns (uint32);
    function resultFor(bytes32 questionId) external view returns (bytes32);
}

// File: contracts/RealitioProxy.sol

pragma solidity ^0.5.12;


contract RealitioProxy {
  IConditionalTokens public conditionalTokens;
  IRealitio public realitio;
  uint256 public nuancedBinaryTemplateId;

  constructor(
    IConditionalTokens _conditionalTokens,
    IRealitio _realitio,
    uint256 _nuancedBinaryTemplateId
  ) public {
    conditionalTokens = _conditionalTokens;
    realitio = _realitio;
    nuancedBinaryTemplateId = _nuancedBinaryTemplateId;
  }

  function resolve(
    bytes32 questionId,
    uint256 templateId,
    string calldata question,
    uint256 numOutcomes
  ) external {
    // check that the given templateId and question match the questionId
    bytes32 contentHash = keccak256(abi.encodePacked(templateId, realitio.getOpeningTS(questionId), question));
    require(contentHash == realitio.getContentHash(questionId), "Content hash mismatch");

    uint256[] memory payouts;

    if (templateId == 0 || templateId == 2) {
      // binary or single-select
      payouts = getSingleSelectPayouts(questionId, numOutcomes);
    } else if (templateId == nuancedBinaryTemplateId) {
      payouts = getNuancedBinaryPayouts(questionId, numOutcomes);
    } else {
      revert("Unknown templateId");
    }

    conditionalTokens.reportPayouts(questionId, payouts);
  }

  function getSingleSelectPayouts(bytes32 questionId, uint256 numOutcomes) internal view returns (uint256[] memory) {
    uint256[] memory payouts = new uint256[](numOutcomes);

    uint256 answer = uint256(realitio.resultFor(questionId));

    if (answer == uint256(-1)) {
      for (uint256 i = 0; i < numOutcomes; i++) {
        payouts[i] = 1;
      }
    } else {
      require(answer < numOutcomes, "Answer must be between 0 and numOutcomes");
      payouts[answer] = 1;
    }

    return payouts;
  }

  function getNuancedBinaryPayouts(bytes32 questionId, uint256 numOutcomes) internal view returns (uint256[] memory) {
    require(numOutcomes == 2, "Number of outcomes expected to be 2");
    uint256[] memory payouts = new uint256[](2);

    uint256 answer = uint256(realitio.resultFor(questionId));

    if (answer == uint256(-1)) {
      payouts[0] = 1;
      payouts[1] = 1;
    } else {
      require(answer < 5, "Answer must be between 0 and 4");
      payouts[0] = 4 - answer;
      payouts[1] = answer;
    }

    return payouts;
  }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"address","name":"_conditionalTokens","internalType":"contract IConditionalTokens"},{"type":"address","name":"_realitio","internalType":"contract IRealitio"},{"type":"uint256","name":"_nuancedBinaryTemplateId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"contract IConditionalTokens"}],"name":"conditionalTokens","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"nuancedBinaryTemplateId","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"contract IRealitio"}],"name":"realitio","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"resolve","inputs":[{"type":"bytes32","name":"questionId","internalType":"bytes32"},{"type":"uint256","name":"templateId","internalType":"uint256"},{"type":"string","name":"question","internalType":"string"},{"type":"uint256","name":"numOutcomes","internalType":"uint256"}],"constant":false}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50604051610b3a380380610b3a8339818101604052606081101561003357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505050610a48806100f26000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635bd9e29914610051578063bc8802a21461009b578063d41f2556146100e5578063dbc0e6351461017c575b600080fd5b61005961019a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a36101bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017a600480360360808110156100fb57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561012c57600080fd5b82018360208201111561013e57600080fd5b8035906020019184600183028401116401000000008311171561016057600080fd5b9091929391929390803590602001909291905050506101e5565b005b610184610596565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e63fa6a886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561025b57600080fd5b505afa15801561026f573d6000803e3d6000fd5b505050506040513d602081101561028557600080fd5b81019080805190602001909291905050508585604051602001808581526020018463ffffffff1663ffffffff1660e01b815260040183838082843780830192505050945050505050604051602081830303815290604052805190602001209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351577ea9876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561035857600080fd5b505afa15801561036c573d6000803e3d6000fd5b505050506040513d602081101561038257600080fd5b81019080805190602001909291905050508114610407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436f6e74656e742068617368206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b606060008614806104185750600286145b1561042e57610427878461059c565b90506104b8565b600254861415610449576104428784610767565b90506104b7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e6b6e6f776e2074656d706c6174654964000000000000000000000000000081525060200191505060405180910390fd5b5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c49298ac88836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561054f578082015181840152602081019050610534565b505050509050019350505050600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b5050505050505050505050565b60025481565b606080826040519080825280602002602001820160405280156105ce5781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d602081101561067057600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114156106e95760008090505b848110156106e35760018382815181106106ca57fe5b60200260200101818152505080806001019150506106b4565b5061075c565b838110610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806109ec6028913960400191505060405180910390fd5b600182828151811061074f57fe5b6020026020010181815250505b819250505092915050565b6060600282146107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806109c96023913960400191505060405180910390fd5b606060026040519080825280602002602001820160405280156107f45781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d602081101561089657600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561090f576001826000815181106108e357fe5b6020026020010181815250506001826001815181106108fe57fe5b6020026020010181815250506109bd565b60058110610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416e73776572206d757374206265206265747765656e203020616e642034000081525060200191505060405180910390fd5b806004038260008151811061099657fe5b60200260200101818152505080826001815181106109b057fe5b6020026020010181815250505b81925050509291505056fe4e756d626572206f66206f7574636f6d657320657870656374656420746f2062652032416e73776572206d757374206265206265747765656e203020616e64206e756d4f7574636f6d6573a265627a7a72315820cea9fac4aa74e09d8481d2f0110b0f56fb771b8b5192f504939aaefd67d194e864736f6c634300050c0032000000000000000000000000ceafdd6bc0bef976fdcd1112955828e00543c0ce00000000000000000000000090a617ed516ab7faaba56cceda0c5d952f294d030000000000000000000000000000000000000000000000000000000000000005

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635bd9e29914610051578063bc8802a21461009b578063d41f2556146100e5578063dbc0e6351461017c575b600080fd5b61005961019a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a36101bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017a600480360360808110156100fb57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561012c57600080fd5b82018360208201111561013e57600080fd5b8035906020019184600183028401116401000000008311171561016057600080fd5b9091929391929390803590602001909291905050506101e5565b005b610184610596565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e63fa6a886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561025b57600080fd5b505afa15801561026f573d6000803e3d6000fd5b505050506040513d602081101561028557600080fd5b81019080805190602001909291905050508585604051602001808581526020018463ffffffff1663ffffffff1660e01b815260040183838082843780830192505050945050505050604051602081830303815290604052805190602001209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351577ea9876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561035857600080fd5b505afa15801561036c573d6000803e3d6000fd5b505050506040513d602081101561038257600080fd5b81019080805190602001909291905050508114610407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436f6e74656e742068617368206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b606060008614806104185750600286145b1561042e57610427878461059c565b90506104b8565b600254861415610449576104428784610767565b90506104b7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e6b6e6f776e2074656d706c6174654964000000000000000000000000000081525060200191505060405180910390fd5b5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c49298ac88836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561054f578082015181840152602081019050610534565b505050509050019350505050600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b5050505050505050505050565b60025481565b606080826040519080825280602002602001820160405280156105ce5781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d602081101561067057600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114156106e95760008090505b848110156106e35760018382815181106106ca57fe5b60200260200101818152505080806001019150506106b4565b5061075c565b838110610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806109ec6028913960400191505060405180910390fd5b600182828151811061074f57fe5b6020026020010181815250505b819250505092915050565b6060600282146107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806109c96023913960400191505060405180910390fd5b606060026040519080825280602002602001820160405280156107f45781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d602081101561089657600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561090f576001826000815181106108e357fe5b6020026020010181815250506001826001815181106108fe57fe5b6020026020010181815250506109bd565b60058110610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416e73776572206d757374206265206265747765656e203020616e642034000081525060200191505060405180910390fd5b806004038260008151811061099657fe5b60200260200101818152505080826001815181106109b057fe5b6020026020010181815250505b81925050509291505056fe4e756d626572206f66206f7574636f6d657320657870656374656420746f2062652032416e73776572206d757374206265206265747765656e203020616e64206e756d4f7574636f6d6573a265627a7a72315820cea9fac4aa74e09d8481d2f0110b0f56fb771b8b5192f504939aaefd67d194e864736f6c634300050c0032