@reality.eth/contracts 4.0.0-rc.2 → 4.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abi/solc-0.8.20/RealityETH-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETHFreezableExample_ERC20-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETHReopenable-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETHReopenable_ERC20-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETH_ERC20-4.0.abi.json +1 -1
- package/bytecode/Arbitrator.bin +1 -1
- package/bytecode/RealityETH-4.0.bin +1 -1
- package/bytecode/RealityETHFreezableExample_ERC20-4.0.bin +1 -1
- package/bytecode/RealityETHReopenable-4.0.bin +1 -1
- package/bytecode/RealityETHReopenable_ERC20-4.0.bin +1 -1
- package/bytecode/RealityETH_ERC20-4.0.bin +1 -1
- package/development/contracts/IRealityETHErrors.sol +4 -0
- package/development/contracts/IRealityETHFreezable.sol +7 -0
- package/development/contracts/RealityETHCore_Common.sol +8 -2
- package/development/contracts/RealityETHFreezableExample_ERC20-4.0.sol +2 -2
- package/development/contracts/RealityETHFreezable_ERC20.sol +4 -6
- package/development/contracts/RealityETHReopenable-4.0.sol +6 -6
- package/development/contracts/RealityETHReopenable_ERC20-4.0.sol +6 -6
- package/package.json +1 -1
- package/tests/python/test.py +4 -4
- package/abi/solc-0.8.20/Arbitrator.abi.json +0 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
pragma solidity ^0.8.20;
|
|
4
4
|
|
|
5
5
|
import {RealityETH_ERC20_v4_0} from "./RealityETH_ERC20-4.0.sol";
|
|
6
|
+
import {IRealityETHFreezable} from "./IRealityETHFreezable.sol";
|
|
6
7
|
|
|
7
8
|
/*
|
|
8
9
|
* This version of reality.eth provides the ability to freeze the entire contract.
|
|
@@ -12,14 +13,11 @@ import {RealityETH_ERC20_v4_0} from "./RealityETH_ERC20-4.0.sol";
|
|
|
12
13
|
|
|
13
14
|
// solhint-disable-next-line contract-name-camelcase
|
|
14
15
|
abstract contract RealityETHFreezable_ERC20 is RealityETH_ERC20_v4_0 {
|
|
15
|
-
/// @notice msg.sender must be arbitrator
|
|
16
|
-
error ContractIsFrozen();
|
|
17
|
-
|
|
18
16
|
// The timestamp when the contract was frozen.
|
|
19
|
-
uint32 public
|
|
17
|
+
uint32 public freezeTs;
|
|
20
18
|
|
|
21
19
|
modifier notFrozen() override {
|
|
22
|
-
if (
|
|
20
|
+
if (freezeTs > 0) revert ContractIsFrozen();
|
|
23
21
|
_;
|
|
24
22
|
}
|
|
25
23
|
|
|
@@ -28,7 +26,7 @@ abstract contract RealityETHFreezable_ERC20 is RealityETH_ERC20_v4_0 {
|
|
|
28
26
|
/// @return Return true if finalized
|
|
29
27
|
function isFinalized(bytes32 question_id) public view override returns (bool) {
|
|
30
28
|
// Nothing that finalizes after the freeze is finalized.
|
|
31
|
-
if (
|
|
29
|
+
if (freezeTs > 0 && questions[question_id].finalize_ts >= freezeTs) {
|
|
32
30
|
return false;
|
|
33
31
|
}
|
|
34
32
|
|
|
@@ -6,12 +6,12 @@ import {IRealityETHReopenable} from "./IRealityETHReopenable.sol";
|
|
|
6
6
|
import {RealityETH_v4_0} from "./RealityETH-4.0.sol";
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
* This version of reality.eth provides the ability to answer a question as "answered too soon", allowing it to be reopened.
|
|
10
|
+
* This is useful when you want to ask a question but you don't know when the answer will be available.
|
|
11
|
+
* You can set the settlement time at the earliest date it may be available, then if someone answers it too soon, it can be answered at such then later reopened.
|
|
12
|
+
* NB In v3 of reality.eth this feature was built in and there was no way to turn it off.
|
|
13
|
+
* From v4, we ship two versions: RealityETH without it, and RealityETHReopenable with it.
|
|
14
|
+
*/
|
|
15
15
|
|
|
16
16
|
// solhint-disable-next-line contract-name-camelcase
|
|
17
17
|
contract RealityETHReopenable_v4_0 is IRealityETHReopenable, RealityETH_v4_0 {
|
|
@@ -6,12 +6,12 @@ import {IRealityETHReopenable_ERC20} from "./IRealityETHReopenable_ERC20.sol";
|
|
|
6
6
|
import {RealityETH_ERC20_v4_0} from "./RealityETH_ERC20-4.0.sol";
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
* This version of reality.eth provides the ability to answer a question as "answered too soon", allowing it to be reopened.
|
|
10
|
+
* This is useful when you want to ask a question but you don't know when the answer will be available.
|
|
11
|
+
* You can set the settlement time at the earliest date it may be available, then if someone answers it too soon, it can be answered at such then later reopened.
|
|
12
|
+
* NB In v3 of reality.eth this feature was built in and there was no way to turn it off.
|
|
13
|
+
* From v4, we ship two versions: RealityETH_ERC20 without it, and RealityETHReopenable_ERC20 with it.
|
|
14
|
+
*/
|
|
15
15
|
|
|
16
16
|
// solhint-disable-next-line contract-name-camelcase
|
|
17
17
|
contract RealityETHReopenable_v4_0 is IRealityETHReopenable_ERC20, RealityETH_ERC20_v4_0 {
|
package/package.json
CHANGED
package/tests/python/test.py
CHANGED
|
@@ -2770,11 +2770,11 @@ class TestRealitio(TestCase):
|
|
|
2770
2770
|
st = self.submitAnswerReturnUpdatedState( st, question_id, 1001, 0, 200, k3)
|
|
2771
2771
|
st = self.submitAnswerReturnUpdatedState( st, question_id, 1001, 200, 400, k3)
|
|
2772
2772
|
|
|
2773
|
-
|
|
2774
|
-
self.assertTrue(
|
|
2773
|
+
freezeTs = self.rc0.functions.freezeTs().call()
|
|
2774
|
+
self.assertTrue(freezeTs == 0, "Freeze timestamp should be zero before freeze")
|
|
2775
2775
|
self.rc0.functions.setFreezeTimestamp(self._block_timestamp()).transact(self._txargs())
|
|
2776
|
-
|
|
2777
|
-
self.assertTrue(
|
|
2776
|
+
freezeTs = self.rc0.functions.freezeTs().call()
|
|
2777
|
+
self.assertTrue(freezeTs > 0, "Freeze timestamp should be not zero after freeze")
|
|
2778
2778
|
|
|
2779
2779
|
# You can no longer answer a question
|
|
2780
2780
|
with self.assertRaises(TransactionFailed):
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"TheArbitratorMustHaveSetANonZeroFeeForTheQuestion","type":"error"},{"inputs":[],"name":"TheQuestionMustNotHaveBeenFinalized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"question_id","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"fee_paid","type":"uint256"},{"indexed":false,"internalType":"address","name":"requester","type":"address"},{"indexed":false,"internalType":"uint256","name":"remaining","type":"uint256"}],"name":"LogRequestArbitration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"question_id","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LogSetCustomDisputeFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LogSetDisputeFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LogSetQuestionFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"realitio","type":"address"}],"name":"LogSetRealitio","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"arbitration_bounties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"bytes32","name":"answer","type":"bytes32"},{"internalType":"address","name":"payee_if_wrong","type":"address"},{"internalType":"bytes32","name":"last_history_hash","type":"bytes32"},{"internalType":"bytes32","name":"last_answer_or_commitment_id","type":"bytes32"},{"internalType":"address","name":"last_answerer","type":"address"}],"name":"assignWinnerAndSubmitAnswerByArbitrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"callWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"}],"name":"cancelArbitration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"}],"name":"getDisputeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadata","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitio","outputs":[{"internalType":"contract IRealityETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitycheck","outputs":[{"internalType":"contract IRealityETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"uint256","name":"max_previous","type":"uint256"}],"name":"requestArbitration","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setCustomDisputeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setDisputeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_metadata","type":"string"}],"name":"setMetaData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setQuestionFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setRealitio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"bytes32","name":"answer","type":"bytes32"},{"internalType":"address","name":"answerer","type":"address"}],"name":"submitAnswerByArbitrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
|