11import { expect } from "chai" ;
22import { ethers } from "hardhat" ;
3- import { BigNumber } from "ethers" ;
3+ import { toBigInt , ContractTransactionReceipt , EventLog } from "ethers" ;
44const hre = require ( "hardhat" ) ;
5+ import { ModeratedEvidenceModule , CentralizedArbitrator , DisputeTemplateRegistry } from "../../typechain-types" ;
56
67const Party = {
78 None : 0 ,
89 Submitter : 1 ,
910 Moderator : 2 ,
1011} ;
1112
12- function getEmittedEvent ( eventName : any , receipt : any ) {
13- return receipt . events . find ( ( { event } ) => event === eventName ) ;
13+ function getEmittedEvent ( eventName : any , receipt : ContractTransactionReceipt ) : EventLog {
14+ const logs = receipt . logs as Array < EventLog > ;
15+ const event = logs . find ( ( log ) => log . eventName === eventName ) ;
16+ if ( event === undefined ) process . exit ( ) ;
17+ return event ;
1418}
1519
1620describe ( "Home Evidence contract" , async ( ) => {
@@ -22,10 +26,10 @@ describe("Home Evidence contract", async () => {
2226 const totalCostMultiplier = 15000 ;
2327 const initialDepositMultiplier = 625 ;
2428 const disputeTemplate = '{ "disputeTemplate": "foo"}' ;
25- const MULTIPLIER_DIVISOR = BigNumber . from ( 10000 ) ;
26- const totalCost = BigNumber . from ( arbitrationFee ) . mul ( BigNumber . from ( totalCostMultiplier ) ) . div ( MULTIPLIER_DIVISOR ) ;
27- const minRequiredDeposit = totalCost . mul ( BigNumber . from ( initialDepositMultiplier ) ) . div ( MULTIPLIER_DIVISOR ) ;
28- const ZERO = BigNumber . from ( 0 ) ;
29+ const MULTIPLIER_DIVISOR = toBigInt ( 10000 ) ;
30+ const totalCost = ( toBigInt ( arbitrationFee ) * toBigInt ( toBigInt ( totalCostMultiplier ) ) ) / toBigInt ( MULTIPLIER_DIVISOR ) ;
31+ const minRequiredDeposit = ( totalCost * toBigInt ( toBigInt ( initialDepositMultiplier ) ) ) / toBigInt ( MULTIPLIER_DIVISOR ) ;
32+ const ZERO = toBigInt ( 0 ) ;
2933
3034 let deployer ;
3135 let user1 ;
@@ -34,9 +38,9 @@ describe("Home Evidence contract", async () => {
3438 let user4 ;
3539 let evidenceID ;
3640
37- let arbitrator ;
38- let evidenceModule ;
39- let disputeTemplateRegistry ;
41+ let arbitrator : CentralizedArbitrator ;
42+ let evidenceModule : ModeratedEvidenceModule ;
43+ let disputeTemplateRegistry : DisputeTemplateRegistry ;
4044
4145 beforeEach ( "Setup contracts" , async ( ) => {
4246 [ deployer , user1 , user2 , user3 , user4 ] = await ethers . getSigners ( ) ;
@@ -49,9 +53,9 @@ describe("Home Evidence contract", async () => {
4953
5054 const EvidenceModule = await ethers . getContractFactory ( "ModeratedEvidenceModule" ) ;
5155 evidenceModule = await EvidenceModule . deploy (
52- arbitrator . address ,
56+ arbitrator . target ,
5357 deployer . address , // governor
54- disputeTemplateRegistry . address ,
58+ disputeTemplateRegistry . target ,
5559 totalCostMultiplier ,
5660 initialDepositMultiplier ,
5761 bondTimeout ,
@@ -82,22 +86,22 @@ describe("Home Evidence contract", async () => {
8286 let receipt = await tx . wait ( ) ;
8387 let lastArbitratorIndex = await evidenceModule . getCurrentArbitratorIndex ( ) ;
8488 let newArbitratorData = await evidenceModule . arbitratorDataList ( lastArbitratorIndex ) ;
85- let oldArbitratorData = await evidenceModule . arbitratorDataList ( lastArbitratorIndex . sub ( BigNumber . from ( 1 ) ) ) ;
89+ let oldArbitratorData = await evidenceModule . arbitratorDataList ( lastArbitratorIndex - toBigInt ( toBigInt ( 1 ) ) ) ;
8690
87- expect ( newArbitratorData . disputeTemplateId ) . to . equal ( oldArbitratorData . disputeTemplateId . add ( BigNumber . from ( 1 ) ) ) ;
91+ expect ( newArbitratorData . disputeTemplateId ) . to . equal ( oldArbitratorData . disputeTemplateId + toBigInt ( 1 ) ) ;
8892 expect ( newArbitratorData . arbitratorExtraData ) . to . equal ( oldArbitratorData . arbitratorExtraData ) ;
8993 const disputeTemplateEvents = await disputeTemplateRegistry . queryFilter (
9094 disputeTemplateRegistry . filters . DisputeTemplate ( ) ,
91- receipt . blockNumber ,
92- receipt . blockNumber
95+ receipt ? .blockNumber ,
96+ receipt ? .blockNumber
9397 ) ;
9498 const [ _templateId , _ , _templateData ] = disputeTemplateEvents [ 0 ] . args ;
9599 expect ( _templateData ) . to . equal ( newDisputeTemplate , "Wrong Template Data." ) ;
96100 expect ( _templateId ) . to . equal ( newArbitratorData . disputeTemplateId , "Wrong Template ID." ) ;
97101
98102 const newArbitratorExtraData = "0x86" ;
99103 await evidenceModule . changeArbitratorExtraData ( newArbitratorExtraData ) ;
100- newArbitratorData = await evidenceModule . arbitratorDataList ( lastArbitratorIndex . add ( BigNumber . from ( 1 ) ) ) ;
104+ newArbitratorData = await evidenceModule . arbitratorDataList ( lastArbitratorIndex + toBigInt ( 1 ) ) ;
101105 expect ( newArbitratorData . arbitratorExtraData ) . to . equal ( newArbitratorExtraData , "Wrong extraData" ) ;
102106 } ) ;
103107
@@ -135,17 +139,18 @@ describe("Home Evidence contract", async () => {
135139 value : minRequiredDeposit ,
136140 } ) ; // id: 0
137141 const receipt = await tx . wait ( ) ;
138- const evidenceID = ethers . utils . solidityKeccak256 ( [ "uint" , "string" ] , [ 1234 , newEvidence ] ) ;
142+ if ( receipt === null ) return ;
143+ const evidenceID = ethers . solidityPackedKeccak256 ( [ "uint" , "string" ] , [ 1234 , newEvidence ] ) ;
139144
140145 const [ _arbitrator , _externalDisputeID , _party , _evidence ] = getEmittedEvent ( "ModeratedEvidence" , receipt ) . args ;
141- expect ( _arbitrator ) . to . equal ( arbitrator . address , "Wrong arbitrator." ) ;
146+ expect ( _arbitrator ) . to . equal ( arbitrator . target , "Wrong arbitrator." ) ;
142147 expect ( _externalDisputeID ) . to . equal ( 1234 , "Wrong external dispute ID." ) ;
143148 expect ( _party ) . to . equal ( user1 . address , "Wrong submitter." ) ;
144149 expect ( _evidence ) . to . equal ( newEvidence , "Wrong evidence message." ) ;
145150
146151 let contributions = await evidenceModule . getContributions ( evidenceID , 0 , user1 . address ) ;
147152 expect ( contributions [ 0 ] ) . to . equal ( ZERO ) ; // it's 1am and to.deep.equal() won't work, can't be bothered
148- expect ( contributions [ 1 ] ) . to . equal ( BigNumber . from ( "93" ) ) ;
153+ expect ( contributions [ 1 ] ) . to . equal ( toBigInt ( "93" ) ) ;
149154 expect ( contributions [ 2 ] ) . to . equal ( ZERO ) ;
150155 expect ( contributions . length ) . to . equal ( 3 ) ;
151156 } ) ;
@@ -166,7 +171,7 @@ describe("Home Evidence contract", async () => {
166171 const newEvidence = "Irrefutable evidence" ;
167172 await expect (
168173 evidenceModule . submitEvidence ( 1234 , newEvidence , {
169- value : minRequiredDeposit . sub ( BigNumber . from ( 1 ) ) ,
174+ value : minRequiredDeposit - toBigInt ( 1 ) ,
170175 } )
171176 ) . to . be . revertedWith ( "Insufficient funding." ) ;
172177 } ) ;
@@ -178,7 +183,7 @@ describe("Home Evidence contract", async () => {
178183 await evidenceModule . connect ( user1 ) . submitEvidence ( 1234 , newEvidence , {
179184 value : minRequiredDeposit ,
180185 } ) ;
181- evidenceID = ethers . utils . solidityKeccak256 ( [ "uint" , "string" ] , [ 1234 , newEvidence ] ) ;
186+ evidenceID = ethers . solidityPackedKeccak256 ( [ "uint" , "string" ] , [ 1234 , newEvidence ] ) ;
182187 } ) ;
183188
184189 it ( "Should not allow moderation after bond timeout passed." , async ( ) => {
@@ -205,50 +210,50 @@ describe("Home Evidence contract", async () => {
205210
206211 it ( "Should create dispute after moderation escalation is complete." , async ( ) => {
207212 await evidenceModule . connect ( user2 ) . moderate ( evidenceID , Party . Moderator , {
208- value : minRequiredDeposit . mul ( 2 ) ,
213+ value : minRequiredDeposit * toBigInt ( 2 ) ,
209214 } ) ;
210215
211216 let moderationInfo = await evidenceModule . getModerationInfo ( evidenceID , 0 ) ;
212217 let paidFees = moderationInfo . paidFees ;
213- let depositRequired = paidFees [ Party . Moderator ] . mul ( 2 ) . sub ( paidFees [ Party . Submitter ] ) ;
218+ let depositRequired = paidFees [ Party . Moderator ] * toBigInt ( 2 ) - toBigInt ( paidFees [ Party . Submitter ] ) ;
214219 await evidenceModule . connect ( user4 ) . moderate ( evidenceID , Party . Submitter , {
215220 value : depositRequired ,
216221 } ) ;
217222
218223 moderationInfo = await evidenceModule . getModerationInfo ( evidenceID , 0 ) ;
219224 paidFees = moderationInfo . paidFees ;
220- depositRequired = paidFees [ Party . Submitter ] . mul ( 2 ) . sub ( paidFees [ Party . Moderator ] ) ;
225+ depositRequired = paidFees [ Party . Submitter ] * toBigInt ( 2 ) - toBigInt ( paidFees [ Party . Moderator ] ) ;
221226 await evidenceModule . connect ( user2 ) . moderate ( evidenceID , Party . Moderator , {
222227 value : depositRequired ,
223228 } ) ;
224229
225230 moderationInfo = await evidenceModule . getModerationInfo ( evidenceID , 0 ) ;
226231 paidFees = moderationInfo . paidFees ;
227- depositRequired = paidFees [ Party . Moderator ] . mul ( 2 ) . sub ( paidFees [ Party . Submitter ] ) ;
232+ depositRequired = paidFees [ Party . Moderator ] * toBigInt ( 2 ) - toBigInt ( paidFees [ Party . Submitter ] ) ;
228233 await evidenceModule . connect ( user4 ) . moderate ( evidenceID , Party . Submitter , {
229234 value : depositRequired ,
230235 } ) ;
231236
232237 moderationInfo = await evidenceModule . getModerationInfo ( evidenceID , 0 ) ;
233238 paidFees = moderationInfo . paidFees ;
234- depositRequired = paidFees [ Party . Submitter ] . mul ( 2 ) . sub ( paidFees [ Party . Moderator ] ) ;
239+ depositRequired = paidFees [ Party . Submitter ] * toBigInt ( 2 ) - toBigInt ( paidFees [ Party . Moderator ] ) ;
235240 await evidenceModule . connect ( user2 ) . moderate ( evidenceID , Party . Moderator , {
236241 value : depositRequired ,
237242 } ) ;
238243
239244 moderationInfo = await evidenceModule . getModerationInfo ( evidenceID , 0 ) ;
240245 paidFees = moderationInfo . paidFees ;
241- depositRequired = paidFees [ Party . Moderator ] . mul ( 2 ) . sub ( paidFees [ Party . Submitter ] ) ;
246+ depositRequired = paidFees [ Party . Moderator ] * toBigInt ( 2 ) - toBigInt ( paidFees [ Party . Submitter ] ) ;
242247 let tx = await evidenceModule . connect ( user4 ) . moderate ( evidenceID , Party . Submitter , {
243248 value : depositRequired , // Less is actually needed. Overpaid fees are reimbursed
244249 } ) ;
245250 let receipt = await tx . wait ( ) ;
246-
251+ if ( receipt === null ) return ;
247252 let [ _arbitrator , _arbitrableDisputeID , _externalDisputeID , _templateId , _templateUri ] = getEmittedEvent (
248253 "DisputeRequest" ,
249254 receipt
250255 ) . args ;
251- expect ( _arbitrator ) . to . equal ( arbitrator . address , "Wrong arbitrator." ) ;
256+ expect ( _arbitrator ) . to . equal ( arbitrator . target , "Wrong arbitrator." ) ;
252257 expect ( _arbitrableDisputeID ) . to . equal ( 0 , "Wrong dispute ID." ) ;
253258 expect ( _templateId ) . to . equal ( 0 , "Wrong template ID." ) ;
254259 expect ( _externalDisputeID ) . to . equal ( evidenceID , "Wrong external dispute ID." ) ;
0 commit comments