Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- RealitioScalarAdapter
- Optimization enabled
- false
- Compiler version
- v0.5.12+commit.7709ece9
- EVM Version
- default
- Verified at
- 2023-11-11T13:48:39.253954Z
Constructor Arguments
0000000000000000000000000db8c35045a830dc7f2a4dd87ef90e7a9cd0534f00000000000000000000000090a617ed516ab7faaba56cceda0c5d952f294d03
Arg [0] (address) : 0x0db8c35045a830dc7f2a4dd87ef90e7a9cd0534f
Arg [1] (address) : 0x90a617ed516ab7faaba56cceda0c5d952f294d03
.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);
}
contract RealitioScalarAdapter {
IConditionalTokens public conditionalTokens;
IRealitio public realitio;
constructor(
IConditionalTokens _conditionalTokens,
IRealitio _realitio
) public {
conditionalTokens = _conditionalTokens;
realitio = _realitio;
}
event QuestionIdAnnouncement(
bytes32 indexed realitioQuestionId,
bytes32 indexed conditionQuestionId,
uint256 low,
uint256 high
);
function announceConditionQuestionId(
bytes32 questionId,
uint256 low,
uint256 high
) external {
emit QuestionIdAnnouncement(
questionId,
keccak256(abi.encode(
questionId,
low,
high
)),
low,
high
);
}
function resolve(
bytes32 questionId,
string calldata question,
uint256 low,
uint256 high
) external {
// check that the given templateId and question match the questionId
bytes32 contentHash = keccak256(abi.encodePacked(
uint256(1),
realitio.getOpeningTS(questionId),
question
));
require(contentHash == realitio.getContentHash(questionId), "Content hash mismatch");
require(low < high, "Range invalid");
require(high != uint256(-1), "Invalid high point");
uint256[] memory payouts = new uint256[](2);
uint256 answer = uint256(realitio.resultFor(questionId));
if (answer == uint256(-1)) {
payouts[0] = 1;
payouts[1] = 1;
} else if (answer <= low) {
payouts[0] = 1;
payouts[1] = 0;
} else if (answer >= high) {
payouts[0] = 0;
payouts[1] = 1;
} else {
payouts[0] = high - answer;
payouts[1] = answer - low;
}
conditionalTokens.reportPayouts(
keccak256(abi.encode(
questionId,
low,
high
)),
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":"event","name":"QuestionIdAnnouncement","inputs":[{"type":"bytes32","name":"realitioQuestionId","internalType":"bytes32","indexed":true},{"type":"bytes32","name":"conditionQuestionId","internalType":"bytes32","indexed":true},{"type":"uint256","name":"low","internalType":"uint256","indexed":false},{"type":"uint256","name":"high","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"announceConditionQuestionId","inputs":[{"type":"bytes32","name":"questionId","internalType":"bytes32"},{"type":"uint256","name":"low","internalType":"uint256"},{"type":"uint256","name":"high","internalType":"uint256"}],"constant":false},{"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":"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":"string","name":"question","internalType":"string"},{"type":"uint256","name":"low","internalType":"uint256"},{"type":"uint256","name":"high","internalType":"uint256"}],"constant":false}]
Contract Creation Code
0x608060405234801561001057600080fd5b506040516109e83803806109e88339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610908806100e06000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635bd9e29914610051578063bc8802a21461009b578063c213c373146100e5578063fe0db7c114610127575b600080fd5b6100596101be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a36101e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610125600480360360608110156100fb57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610209565b005b6101bc6004803603608081101561013d57600080fd5b81019080803590602001909291908035906020019064010000000081111561016457600080fd5b82018360208201111561017657600080fd5b8035906020019184600183028401116401000000008311171561019857600080fd5b90919293919293908035906020019092919080359060200190929190505050610285565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b82828260405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120837fab038c0885722fffdf6864cf016c56fa921a1506541dac4fcd59d65963916cb18484604051808381526020018281526020019250505060405180910390a3505050565b600060018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e63fa6a886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156102fb57600080fd5b505afa15801561030f573d6000803e3d6000fd5b505050506040513d602081101561032557600080fd5b81019080805190602001909291905050508686604051602001808581526020018463ffffffff1663ffffffff1660e01b815260040183838082843780830192505050945050505050604051602081830303815290604052805190602001209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351577ea9876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156103f857600080fd5b505afa15801561040c573d6000803e3d6000fd5b505050506040513d602081101561042257600080fd5b810190808051906020019092919050505081146104a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436f6e74656e742068617368206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b81831061051c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f52616e676520696e76616c69640000000000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f496e76616c6964206869676820706f696e74000000000000000000000000000081525060200191505060405180910390fd5b606060026040519080825280602002602001820160405280156105e45781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114156106ff576001826000815181106106d357fe5b6020026020010181815250506001826001815181106106ee57fe5b6020026020010181815250506107be565b8481116107415760018260008151811061071557fe5b60200260200101818152505060008260018151811061073057fe5b6020026020010181815250506107bd565b8381106107835760008260008151811061075757fe5b60200260200101818152505060018260018151811061077257fe5b6020026020010181815250506107bc565b8084038260008151811061079357fe5b602002602001018181525050848103826001815181106107af57fe5b6020026020010181815250505b5b5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c49298ac89878760405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120846040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561088b578082015181840152602081019050610870565b505050509050019350505050600060405180830381600087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b50505050505050505050505056fea265627a7a72315820f688294be646d24bcfaa9053ec7f018036424f51656f29ba34b314dc3282985064736f6c634300050c00320000000000000000000000000db8c35045a830dc7f2a4dd87ef90e7a9cd0534f00000000000000000000000090a617ed516ab7faaba56cceda0c5d952f294d03
Deployed ByteCode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635bd9e29914610051578063bc8802a21461009b578063c213c373146100e5578063fe0db7c114610127575b600080fd5b6100596101be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a36101e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610125600480360360608110156100fb57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610209565b005b6101bc6004803603608081101561013d57600080fd5b81019080803590602001909291908035906020019064010000000081111561016457600080fd5b82018360208201111561017657600080fd5b8035906020019184600183028401116401000000008311171561019857600080fd5b90919293919293908035906020019092919080359060200190929190505050610285565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b82828260405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120837fab038c0885722fffdf6864cf016c56fa921a1506541dac4fcd59d65963916cb18484604051808381526020018281526020019250505060405180910390a3505050565b600060018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e63fa6a886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156102fb57600080fd5b505afa15801561030f573d6000803e3d6000fd5b505050506040513d602081101561032557600080fd5b81019080805190602001909291905050508686604051602001808581526020018463ffffffff1663ffffffff1660e01b815260040183838082843780830192505050945050505050604051602081830303815290604052805190602001209050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351577ea9876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156103f857600080fd5b505afa15801561040c573d6000803e3d6000fd5b505050506040513d602081101561042257600080fd5b810190808051906020019092919050505081146104a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436f6e74656e742068617368206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b81831061051c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f52616e676520696e76616c69640000000000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f496e76616c6964206869676820706f696e74000000000000000000000000000081525060200191505060405180910390fd5b606060026040519080825280602002602001820160405280156105e45781602001602082028038833980820191505090505b5090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b810190808051906020019092919050505060001c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114156106ff576001826000815181106106d357fe5b6020026020010181815250506001826001815181106106ee57fe5b6020026020010181815250506107be565b8481116107415760018260008151811061071557fe5b60200260200101818152505060008260018151811061073057fe5b6020026020010181815250506107bd565b8381106107835760008260008151811061075757fe5b60200260200101818152505060018260018151811061077257fe5b6020026020010181815250506107bc565b8084038260008151811061079357fe5b602002602001018181525050848103826001815181106107af57fe5b6020026020010181815250505b5b5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c49298ac89878760405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120846040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561088b578082015181840152602081019050610870565b505050509050019350505050600060405180830381600087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b50505050505050505050505056fea265627a7a72315820f688294be646d24bcfaa9053ec7f018036424f51656f29ba34b314dc3282985064736f6c634300050c0032