false
false
The Sokol Testnet is currently lacking validators. Please consider using Goerli or Mumbai for testing purposes.

Contract Address Details
contract

0xa57EBD93faa73b3491aAe396557D6ceC24fC6984

Contract Name
RealitioProxy
Creator
0x5d5fb4–92281c at 0x359da6–04686c
Balance
0 SPOA
Tokens
Fetching tokens...
Transactions
3 Transactions
Transfers
0 Transfers
Gas Used
289,970
Last Balance Update
27736955
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
2023-11-11T05:22:41.323077Z

Constructor Arguments

0000000000000000000000000db8c35045a830dc7f2a4dd87ef90e7a9cd0534f00000000000000000000000063975d9e7cf434dcd04bd808d8c79d03ef69100b0000000000000000000000000000000000000000000000000000000000000005

Arg [0] (address) : 0x0db8c35045a830dc7f2a4dd87ef90e7a9cd0534f
Arg [1] (address) : 0x63975d9e7cf434dcd04bd808d8c79d03ef69100b
Arg [2] (uint256) : 5

              

.sol

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;
  }
}
        

Compiler Settings

{"outputSelection":{"*":{"*":["*"],"":["*"]}},"optimizer":{"runs":200,"enabled":false},"libraries":{}}
              

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

0x608060405234801561001057600080fd5b50604051610b3a380380610b3a8339818101604052606081101561003357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505050610a48806100f26000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635bd9e29914610051578063bc8802a21461009b578063d41f2556146100e5578063dbc0e6351461017c575b600080fd5b61005961019a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a36101bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017a600480360360808110156100fb57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561012c57600080fd5b82018360208201111561013e57600080fd5b8035906020019184600183028401116401000000008311171561016057600080fd5b9091929391929390803590602001909291905050506101e5565b005b610184610596565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e63fa6a886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561025b57600080fd5b505afa15801561026f573d6000803e3d6000fd5b505050506040513d602081101561028557600080fd5b81019080805190602001909291905050508585604051602001808581526020018463ffffffff1663ffffffff1660e01b815260040183838082843780830192505050945050505050604051602081830303815290604052805190602001209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351577ea9876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561035857600080fd5b505afa15801561036c573d6000803e3d6000fd5b505050506040513d602081101561038257600080fd5b81019080805190602001909291905050508114610407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436f6e74656e742068617368206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b606060008614806104185750600286145b1561042e57610427878461059c565b90506104b8565b600254861415610449576104428784610767565b90506104b7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e6b6e6f776e2074656d706c6174654964000000000000000000000000000081525060200191505060405180910390fd5b5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c49298ac88836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561054f578082015181840152602081019050610534565b505050509050019350505050600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b5050505050505050505050565b60025481565b606080826040519080825280602002602001820160405280156105ce5781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d602081101561067057600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114156106e95760008090505b848110156106e35760018382815181106106ca57fe5b60200260200101818152505080806001019150506106b4565b5061075c565b838110610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806109ec6028913960400191505060405180910390fd5b600182828151811061074f57fe5b6020026020010181815250505b819250505092915050565b6060600282146107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806109c96023913960400191505060405180910390fd5b606060026040519080825280602002602001820160405280156107f45781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d602081101561089657600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561090f576001826000815181106108e357fe5b6020026020010181815250506001826001815181106108fe57fe5b6020026020010181815250506109bd565b60058110610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416e73776572206d757374206265206265747765656e203020616e642034000081525060200191505060405180910390fd5b806004038260008151811061099657fe5b60200260200101818152505080826001815181106109b057fe5b6020026020010181815250505b81925050509291505056fe4e756d626572206f66206f7574636f6d657320657870656374656420746f2062652032416e73776572206d757374206265206265747765656e203020616e64206e756d4f7574636f6d6573a265627a7a72315820cea9fac4aa74e09d8481d2f0110b0f56fb771b8b5192f504939aaefd67d194e864736f6c634300050c00320000000000000000000000000db8c35045a830dc7f2a4dd87ef90e7a9cd0534f00000000000000000000000063975d9e7cf434dcd04bd808d8c79d03ef69100b0000000000000000000000000000000000000000000000000000000000000005

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635bd9e29914610051578063bc8802a21461009b578063d41f2556146100e5578063dbc0e6351461017c575b600080fd5b61005961019a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a36101bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017a600480360360808110156100fb57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561012c57600080fd5b82018360208201111561013e57600080fd5b8035906020019184600183028401116401000000008311171561016057600080fd5b9091929391929390803590602001909291905050506101e5565b005b610184610596565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e63fa6a886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561025b57600080fd5b505afa15801561026f573d6000803e3d6000fd5b505050506040513d602081101561028557600080fd5b81019080805190602001909291905050508585604051602001808581526020018463ffffffff1663ffffffff1660e01b815260040183838082843780830192505050945050505050604051602081830303815290604052805190602001209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351577ea9876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561035857600080fd5b505afa15801561036c573d6000803e3d6000fd5b505050506040513d602081101561038257600080fd5b81019080805190602001909291905050508114610407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436f6e74656e742068617368206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b606060008614806104185750600286145b1561042e57610427878461059c565b90506104b8565b600254861415610449576104428784610767565b90506104b7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e6b6e6f776e2074656d706c6174654964000000000000000000000000000081525060200191505060405180910390fd5b5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c49298ac88836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561054f578082015181840152602081019050610534565b505050509050019350505050600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b5050505050505050505050565b60025481565b606080826040519080825280602002602001820160405280156105ce5781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d602081101561067057600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114156106e95760008090505b848110156106e35760018382815181106106ca57fe5b60200260200101818152505080806001019150506106b4565b5061075c565b838110610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806109ec6028913960400191505060405180910390fd5b600182828151811061074f57fe5b6020026020010181815250505b819250505092915050565b6060600282146107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806109c96023913960400191505060405180910390fd5b606060026040519080825280602002602001820160405280156107f45781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d602081101561089657600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561090f576001826000815181106108e357fe5b6020026020010181815250506001826001815181106108fe57fe5b6020026020010181815250506109bd565b60058110610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416e73776572206d757374206265206265747765656e203020616e642034000081525060200191505060405180910390fd5b806004038260008151811061099657fe5b60200260200101818152505080826001815181106109b057fe5b6020026020010181815250505b81925050509291505056fe4e756d626572206f66206f7574636f6d657320657870656374656420746f2062652032416e73776572206d757374206265206265747765656e203020616e64206e756d4f7574636f6d6573a265627a7a72315820cea9fac4aa74e09d8481d2f0110b0f56fb771b8b5192f504939aaefd67d194e864736f6c634300050c0032