Skip to content

Commit

Permalink
test: integrate HorizonAccountingExtension
Browse files Browse the repository at this point in the history
  • Loading branch information
0xJabberwock committed Sep 25, 2024
1 parent af0a946 commit 845f0a3
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 26 deletions.
5 changes: 2 additions & 3 deletions script/Deploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ contract Deploy is Script {
IEBOFinalityModule public eboFinalityModule;

// Extensions
IBondEscalationAccounting public bondEscalationAccounting;
IHorizonAccountingExtension public horizonAccountingExtension;

// Periphery
Expand Down Expand Up @@ -94,12 +93,12 @@ contract Deploy is Script {
// TODO: Set production request module params
paymentAmount = 0.1 ether;

// TODO: Set production response module params
// TODO: Set production response module params (responseBondSize == disputeBondSize)
responseBondSize = 0.5 ether;
responseDeadline = block.timestamp + 5 days;
responseDisputeWindow = block.timestamp + 1 weeks;

// TODO: Set production dispute module params
// TODO: Set production dispute module params (disputeBondSize == responseBondSize)
disputeBondSize = 0.3 ether;
maxNumberOfEscalations = 1;
disputeDeadline = block.timestamp + 10 days;
Expand Down
45 changes: 28 additions & 17 deletions test/integration/arbitrum/ArbitrateDispute.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,18 @@ contract IntegrationArbitrateDispute is IntegrationBase {
IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId);
assertEq(_escalation.disputeId, _disputeId);
assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.DisputerWon));
// Assert BondEscalationAccounting::pay
assertEq(
bondEscalationAccounting.bondedAmountOf(_proposer, graphToken, _requestId), responseBondSize - disputeBondSize
);
assertEq(bondEscalationAccounting.balanceOf(_proposer, graphToken), 0);
// Assert BondEscalationAccounting::release
assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), 0);
assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), disputeBondSize * 2);
// Assert HorizonAccountingExtension::pay
assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), responseBondSize - disputeBondSize);
assertEq(horizonAccountingExtension.totalBonded(_proposer), responseBondSize - disputeBondSize);
// Assert HorizonStaking::slash
IHorizonStaking.Provision memory _provision =
horizonStaking.getProvision(_proposer, address(horizonAccountingExtension));
assertEq(_provision.tokens, responseBondSize - disputeBondSize);
// Assert GraphToken::transfer
assertEq(graphToken.balanceOf(_disputer), disputeBondSize);
// Assert HorizonAccountingExtension::release
assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0);
assertEq(horizonAccountingExtension.totalBonded(_disputer), 0);
// Assert Oracle::finalize
assertEq(oracle.finalizedAt(_requestId), block.number);
assertEq(oracle.finalizedResponseId(_requestId), 0);
Expand Down Expand Up @@ -152,15 +156,21 @@ contract IntegrationArbitrateDispute is IntegrationBase {
IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId);
assertEq(_escalation.disputeId, _disputeId);
assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.DisputerLost));
// Assert BondEscalationAccounting::pay
assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), 0);
assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), 0);
// Assert HorizonAccountingExtension::pay
assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0);
assertEq(horizonAccountingExtension.totalBonded(_disputer), 0);
// Assert HorizonStaking::slash
IHorizonStaking.Provision memory _provision =
horizonStaking.getProvision(_disputer, address(horizonAccountingExtension));
assertEq(_provision.tokens, 0);
// Assert GraphToken::transfer
assertEq(graphToken.balanceOf(_proposer), disputeBondSize);
// Assert Oracle::finalize
assertEq(oracle.finalizedAt(_requestId), block.number);
assertEq(oracle.finalizedResponseId(_requestId), _responseId);
// Assert BondEscalationAccounting::release
assertEq(bondEscalationAccounting.bondedAmountOf(_proposer, graphToken, _requestId), 0);
assertEq(bondEscalationAccounting.balanceOf(_proposer, graphToken), responseBondSize + disputeBondSize);
// Assert HorizonAccountingExtension::release
assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), 0);
assertEq(horizonAccountingExtension.totalBonded(_proposer), 0);

// Revert if the dispute has already been arbitrated
vm.expectRevert(ICouncilArbitrator.CouncilArbitrator_DisputeAlreadyArbitrated.selector);
Expand Down Expand Up @@ -221,9 +231,10 @@ contract IntegrationArbitrateDispute is IntegrationBase {
IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId);
assertEq(_escalation.disputeId, _disputeId);
assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.Escalated));
// Assert BondEscalationAccounting::release
assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), 0);
assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), disputeBondSize);
// Assert HorizonAccountingExtension::release
assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), 0);
assertEq(horizonAccountingExtension.totalBonded(_disputer), 0);
// TODO: Why isn't proposer's bond released?
// Assert Oracle::finalize
assertEq(oracle.finalizedAt(_requestId), block.number);
assertEq(oracle.finalizedResponseId(_requestId), 0);
Expand Down
6 changes: 3 additions & 3 deletions test/integration/arbitrum/DisputeResponse.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ contract IntegrationDisputeResponse is IntegrationBase {
IBondEscalationModule.BondEscalation memory _escalation = bondEscalationModule.getEscalation(_requestId);
assertEq(_escalation.disputeId, _disputeId);
assertEq(uint8(_escalation.status), uint8(IBondEscalationModule.BondEscalationStatus.Active));
// Assert BondEscalationAccounting::bond
assertEq(bondEscalationAccounting.bondedAmountOf(_disputer, graphToken, _requestId), disputeBondSize);
assertEq(bondEscalationAccounting.balanceOf(_disputer, graphToken), 0);
// Assert HorizonAccountingExtension::bond
assertEq(horizonAccountingExtension.bondedForRequest(_disputer, _requestId), disputeBondSize);
assertEq(horizonAccountingExtension.totalBonded(_disputer), disputeBondSize);

// Revert if the response has already been disputed
vm.expectRevert(abi.encodeWithSelector(IOracle.Oracle_ResponseAlreadyDisputed.selector, _responseId));
Expand Down
6 changes: 3 additions & 3 deletions test/integration/arbitrum/ProposeResponse.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ contract IntegrationProposeResponse is IntegrationBase {

// Assert Oracle::proposeResponse
assertEq(oracle.responseCreatedAt(_responseId), block.number);
// Assert BondEscalationAccounting::bond
assertEq(bondEscalationAccounting.bondedAmountOf(_proposer, graphToken, _requestId), responseBondSize);
assertEq(bondEscalationAccounting.balanceOf(_proposer, graphToken), 0);
// Assert HorizonAccountingExtension::bond
assertEq(horizonAccountingExtension.bondedForRequest(_proposer, _requestId), responseBondSize);
assertEq(horizonAccountingExtension.totalBonded(_proposer), responseBondSize);

// Revert if the response has already been proposed
vm.expectRevert(IOracle.Oracle_InvalidResponseBody.selector);
Expand Down

0 comments on commit 845f0a3

Please sign in to comment.