@@ -5,12 +5,9 @@ pragma solidity ^0.8.24;
55// TODO: standard interfaces should be placed in a separated repo (?)
66import {IArbitrableV2, IArbitratorV2} from "../interfaces/IArbitrableV2.sol " ;
77import "../interfaces/IDisputeTemplateRegistry.sol " ;
8- import "../../libraries/CappedMath.sol " ;
98
109/// @title Implementation of the Evidence Standard with Moderated Submissions
1110contract ModeratedEvidenceModule is IArbitrableV2 {
12- using CappedMath for uint256 ;
13-
1411 // ************************************* //
1512 // * Enums / Structs * //
1613 // ************************************* //
@@ -205,8 +202,8 @@ contract ModeratedEvidenceModule is IArbitrableV2 {
205202 ArbitratorData storage arbitratorData = arbitratorDataList[arbitratorDataList.length - 1 ];
206203
207204 uint256 arbitrationCost = arbitrator.arbitrationCost (arbitratorData.arbitratorExtraData);
208- uint256 totalCost = arbitrationCost. mulCap ( totalCostMultiplier) / MULTIPLIER_DIVISOR;
209- uint256 depositRequired = totalCost. mulCap ( initialDepositMultiplier) / MULTIPLIER_DIVISOR;
205+ uint256 totalCost = (arbitrationCost * totalCostMultiplier) / MULTIPLIER_DIVISOR;
206+ uint256 depositRequired = (totalCost * initialDepositMultiplier) / MULTIPLIER_DIVISOR;
210207
211208 Moderation storage moderation = evidenceData.moderations.push ();
212209 // Overpaying is allowed.
@@ -245,12 +242,12 @@ contract ModeratedEvidenceModule is IArbitrableV2 {
245242 ArbitratorData storage arbitratorData = arbitratorDataList[moderation.arbitratorDataID];
246243
247244 uint256 arbitrationCost = arbitrator.arbitrationCost (arbitratorData.arbitratorExtraData);
248- uint256 totalCost = arbitrationCost. mulCap ( totalCostMultiplier) / MULTIPLIER_DIVISOR;
245+ uint256 totalCost = (arbitrationCost * totalCostMultiplier) / MULTIPLIER_DIVISOR;
249246
250247 uint256 opposition = 3 - uint256 (_side);
251248 uint256 depositRequired = moderation.paidFees[opposition] * 2 ;
252249 if (depositRequired == 0 ) {
253- depositRequired = totalCost. mulCap ( initialDepositMultiplier) / MULTIPLIER_DIVISOR;
250+ depositRequired = (totalCost * initialDepositMultiplier) / MULTIPLIER_DIVISOR;
254251 } else if (depositRequired > totalCost) {
255252 depositRequired = totalCost;
256253 }
@@ -317,7 +314,9 @@ contract ModeratedEvidenceModule is IArbitrableV2 {
317314 ) internal returns (uint256 ) {
318315 uint256 contribution;
319316 uint256 remainingETH;
320- uint256 requiredAmount = _totalRequired.subCap (_moderation.paidFees[uint256 (_side)]);
317+ uint256 requiredAmount = _moderation.paidFees[uint256 (_side)] >= _totalRequired
318+ ? 0
319+ : _totalRequired - _moderation.paidFees[uint256 (_side)];
321320 (contribution, remainingETH) = calculateContribution (_amount, requiredAmount);
322321 _moderation.contributions[_contributor][uint256 (_side)] += contribution;
323322 _moderation.paidFees[uint256 (_side)] += contribution;
0 commit comments