-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: relative timestamps #47
Changes from all commits
8765757
e05ece5
98752b6
59593a5
4cdbddc
af0a946
845f0a3
cf7e664
18dceb3
cec6226
a79426e
850c1c7
b7cd5fd
c9b283e
544f7ac
665c755
a32cb19
4586c6a
1332a39
312dbaf
0dca1b7
aa8934e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,7 +44,7 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
_pledgeAgainstDispute(_requestId, _disputeId); | ||
|
||
// Pass the dispute deadline | ||
vm.warp(disputeDeadline + 1); | ||
vm.warp(oracle.disputeCreatedAt(_disputeId) + disputeDeadline + 1); | ||
|
||
// Escalate the dispute | ||
_escalateDispute(_requestId, _responseId, _disputeId); | ||
|
@@ -57,13 +57,6 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
vm.expectRevert(ICouncilArbitrator.CouncilArbitrator_InvalidAward.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Escalated); | ||
|
||
// Revert if the request is finalized before the response deadline | ||
vm.expectRevert(IBondedResponseModule.BondedResponseModule_TooEarlyToFinalize.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Won); | ||
|
||
// Pass the response deadline | ||
vm.roll(block.number + responseDeadline); | ||
|
||
// Arbitrate and resolve the dispute, and finalize the request without response | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Won); | ||
|
||
|
@@ -103,7 +96,7 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0); | ||
assertEq(horizonAccountingExtension.totalBonded(_disputer), 0); | ||
// Assert Oracle::finalize | ||
assertEq(oracle.finalizedAt(_requestId), block.number); | ||
assertEq(oracle.finalizedAt(_requestId), block.timestamp); | ||
assertEq(oracle.finalizedResponseId(_requestId), 0); | ||
|
||
// Revert if the dispute has already been arbitrated | ||
|
@@ -135,7 +128,7 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
_pledgeAgainstDispute(_requestId, _disputeId); | ||
|
||
// Pass the dispute deadline | ||
vm.warp(disputeDeadline + 1); | ||
vm.warp(oracle.disputeCreatedAt(_disputeId) + disputeDeadline + 1); | ||
|
||
// Escalate the dispute | ||
_escalateDispute(_requestId, _responseId, _disputeId); | ||
|
@@ -148,19 +141,15 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
vm.expectRevert(ICouncilArbitrator.CouncilArbitrator_InvalidAward.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Escalated); | ||
|
||
// Revert if the request is finalized before the response deadline | ||
vm.expectRevert(IBondedResponseModule.BondedResponseModule_TooEarlyToFinalize.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Lost); | ||
|
||
// Pass the response deadline | ||
vm.roll(block.number + responseDeadline); | ||
vm.warp(oracle.responseCreatedAt(_responseId) + responseDeadline); | ||
Comment on lines
144
to
+145
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Also, shouldn't it add the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 100% |
||
|
||
// Revert if the request is finalized with response before the dispute window | ||
vm.expectRevert(IBondedResponseModule.BondedResponseModule_TooEarlyToFinalize.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Lost); | ||
|
||
// Pass the dispute window | ||
vm.roll(block.number + responseDisputeWindow - responseDeadline); | ||
vm.warp(oracle.disputeCreatedAt(_disputeId) + disputeDeadline + 1); | ||
Comment on lines
151
to
+152
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Pass the dispute window or pass the dispute deadline? Also, bear in mind whether they should be computed from the response creation timestamp or the dispute creation timestamp. |
||
|
||
// Arbitrate and resolve the dispute, and finalize the request with response | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Lost); | ||
|
@@ -198,7 +187,7 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
assertEq(graphToken.balanceOf(_proposer), disputeBondSize); | ||
assertEq(graphToken.balanceOf(_disputer), 0); | ||
// Assert Oracle::finalize | ||
assertEq(oracle.finalizedAt(_requestId), block.number); | ||
assertEq(oracle.finalizedAt(_requestId), block.timestamp); | ||
assertEq(oracle.finalizedResponseId(_requestId), _responseId); | ||
// Assert HorizonAccountingExtension::release | ||
assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), 0); | ||
|
@@ -233,7 +222,7 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
_pledgeAgainstDispute(_requestId, _disputeId); | ||
|
||
// Pass the dispute deadline | ||
vm.warp(disputeDeadline + 1); | ||
vm.warp(oracle.disputeCreatedAt(_disputeId) + disputeDeadline + 1); | ||
|
||
// Escalate the dispute | ||
_escalateDispute(_requestId, _responseId, _disputeId); | ||
|
@@ -246,13 +235,6 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
vm.expectRevert(ICouncilArbitrator.CouncilArbitrator_InvalidAward.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.Escalated); | ||
|
||
// Revert if the request is finalized before the response deadline | ||
vm.expectRevert(IBondedResponseModule.BondedResponseModule_TooEarlyToFinalize.selector); | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.NoResolution); | ||
|
||
// Pass the response deadline | ||
vm.roll(block.number + responseDeadline); | ||
|
||
// Arbitrate and resolve the dispute, and finalize the request without response | ||
_arbitrateDispute(_disputeId, IOracle.DisputeStatus.NoResolution); | ||
|
||
|
@@ -281,7 +263,7 @@ contract IntegrationArbitrateDispute is IntegrationBase { | |
assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), responseBondSize); | ||
assertEq(horizonAccountingExtension.totalBonded(_proposer), responseBondSize); | ||
// Assert Oracle::finalize | ||
assertEq(oracle.finalizedAt(_requestId), block.number); | ||
assertEq(oracle.finalizedAt(_requestId), block.timestamp); | ||
assertEq(oracle.finalizedResponseId(_requestId), 0); | ||
|
||
// Revert if the dispute has already been arbitrated | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,33 +30,35 @@ | |
// Propose the response | ||
bytes32 _responseId = _proposeResponse(_requestId); | ||
|
||
uint256 _responseCreation = oracle.responseCreatedAt(_responseId); | ||
|
||
// Pass the dispute window | ||
vm.roll(block.number + disputeDisputeWindow + 1); | ||
vm.warp(_responseCreation + disputeDisputeWindow + 1); | ||
|
||
// Revert if the dispute window has passed | ||
vm.expectRevert(IBondEscalationModule.BondEscalationModule_DisputeWindowOver.selector); | ||
_disputeResponse(_requestId, _responseId); | ||
|
||
// Do not pass the dispute window | ||
vm.roll(block.number - disputeDisputeWindow - 1); | ||
// TODO: Commented out because of a bug in prophet core dispute module | ||
// Fix after this task is done https://linear.app/defi-wonderland/issue/OPO-669/incorrect-validation-in-bondescalationmodule | ||
|
||
// Pass the dispute deadline | ||
vm.warp(disputeDeadline + 1); | ||
// vm.warp(_responseCreation + disputeDeadline + 1); | ||
|
||
// Revert if the bond escalation deadline has passed | ||
vm.expectRevert(IBondEscalationModule.BondEscalationModule_BondEscalationOver.selector); | ||
_disputeResponse(_requestId, _responseId); | ||
// vm.expectRevert(IBondEscalationModule.BondEscalationModule_BondEscalationOver.selector); | ||
// _disputeResponse(_requestId, _responseId); | ||
|
||
// Do not pass the dispute deadline | ||
vm.warp(disputeDeadline); | ||
vm.warp(_responseCreation + disputeDisputeWindow - 1); | ||
Comment on lines
52
to
+53
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do not pass the dispute deadline or do not pass the dispute window? |
||
|
||
// Dispute the response | ||
bytes32 _disputeId = _disputeResponse(_requestId, _responseId); | ||
|
||
// Assert Oracle::disputeResponse | ||
assertEq(uint8(oracle.disputeStatus(_disputeId)), uint8(IOracle.DisputeStatus.Active)); | ||
assertEq(oracle.disputeOf(_responseId), _disputeId); | ||
assertEq(oracle.disputeCreatedAt(_disputeId), block.number); | ||
assertEq(oracle.disputeCreatedAt(_disputeId), block.timestamp); | ||
// Assert BondEscalationModule::disputeResponse | ||
IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId); | ||
assertEq(_escalation.disputeId, _disputeId); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could still be tested in case that
disputeDeadline
were less than what's left ofresponseDeadline
at that moment.