diff --git a/1 b/1 new file mode 100644 index 0000000..e69de29 diff --git a/log/log-1733753739.log b/log/log-1733753739.log new file mode 100644 index 0000000..e69de29 diff --git a/log/log-1733753780.log b/log/log-1733753780.log new file mode 100644 index 0000000..c333ecf --- /dev/null +++ b/log/log-1733753780.log @@ -0,0 +1,241 @@ +⇾ Compiling targets with crytic-compile +⇾ Running command: +/opt/homebrew/bin/crytic-compile test/invariants/FuzzTest.t.sol --export-format solc --compile-libraries=(ValidatorLib,0xc0ffee) +⇾ Finished compiling targets in 6s +⇾ Initializing corpus +⇾ Setting up test chain +⇾ Finished setting up test chain +⇾ Running call sequences in the corpus +⇾ Finished running call sequences in the corpus in 2s +⇾ corpus: health: 54%, sequences: 271 (147 valid, 124 invalid) +⇾ Fuzzing with 10 workers +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleAddEBORequestCreatorFinalityModule(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleSetArbitrator(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleReleaseUnutilizedResponse(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleResolveDispute(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_pledgerCanPledgeFor(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleRemoveEBORequestCreatorRequestModule(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_finalizeAfterDeadline(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handlePledge(uint256,uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handlePledgeForDispute(uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleRevokeModule(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleSetPendingCouncil(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleAmendEpoch(uint256,uint256,uint256[],uint256[]) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleApproveModule(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleArbitrateDispute(uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleClaimEscalationReward(uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId() +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleRemoveEBORequestCreatorFinalityModule(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleSlash(uint256,uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleAddEBORequestCreatorRequestModule(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleConfirmCouncil() +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleCreateRequestWrongCreator(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleOnSettleBondEscalation(uint256,uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleSettleBondEscalation(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_arbitratorCanSettle(uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_pledgerCanPledgeAgainst(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handlePledgeAgainstDispute(uint256,uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.handleSetMaxUsersToCheck(uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_disputerCanAlwaysCreateDispute(uint256,uint256) +⇾ fuzz: elapsed: 0s, calls: 0 (0/sec), seq/s: 0, coverage: 54658, corpus: 127, failures: 0/0, gas/s: 0 +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_disputerEscalateFirstDisputedResponse(uint256,uint256) +⇾ [NOT STARTED] Assertion Test: FuzzTest.property_proposerProposeBeforeDeadlineAndNoAnswer(uint256,bytes) +⇾ [Worker 1] Shrinking call sequence with 5 call(s) +⇾ [Worker 9] Shrinking call sequence with 8 call(s) +⇾ [Worker 7] Shrinking call sequence with 8 call(s) +⇾ [Worker 3] Shrinking call sequence with 8 call(s) +⇾ [Worker 6] Shrinking call sequence with 8 call(s) +⇾ [Worker 8] Shrinking call sequence with 8 call(s) +⇾ [Worker 0] Shrinking call sequence with 8 call(s) +⇾ [Worker 5] Shrinking call sequence with 8 call(s) +⇾ [Worker 4] Shrinking call sequence with 8 call(s) +⇾ [Worker 2] Shrinking call sequence with 8 call(s) +⇾ fuzz: elapsed: 3s, calls: 77 (25/sec), seq/s: 0, coverage: 54658, corpus: 127, failures: 0/0, gas/s: 16518520 +⇾ fuzz: elapsed: 6s, calls: 77 (0/sec), seq/s: 0, coverage: 54658, corpus: 127, failures: 0/0, gas/s: 0 +⇾ fuzz: elapsed: 9s, calls: 77 (0/sec), seq/s: 0, coverage: 54658, corpus: 127, failures: 0/0, gas/s: 0 +⇾ [FAILED] Assertion Test: FuzzTest.property_pledgerCanPledgeFor(uint256,uint256) +Test for method "FuzzTest.property_pledgerCanPledgeFor(uint256,uint256)" resulted in an assertion failure after the following call sequence: +[Call Sequence] +1) FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256)(169292243435926475947657618117809554715205381870477498737, 11227470702167300108676284646061054869459991254736913089273) (block=56765, time=310068, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +2) FuzzTest.property_proposerProposeBeforeDeadlineAndNoAnswer(uint256,bytes)(266036087197766605821302567521179736131332992926046023619, ) (block=86763, time=575158, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +3) FuzzTest.property_disputerCanAlwaysCreateDispute(uint256,uint256)(49039857307708443486248577169761821872565657850864711149, 42606003586655566682761513336656488723777169785197933256381) (block=108137, time=650339, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +4) FuzzTest.property_disputerEscalateFirstDisputedResponse(uint256,uint256)(1551770073714798722944864429292065626653092673101459892789, 2411935221370875900160200968152595430802304156149400094726) (block=143071, time=748820, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000070000) +5) FuzzTest.property_pledgerCanPledgeFor(uint256,uint256)(1569275433871878256366234355931346684851939149138239826201, 11140830125328699833383236776984887536228210656134932) (block=150070, time=774026, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000070000) +[Execution Trace] + => [call] FuzzTest.property_pledgerCanPledgeFor(uint256,uint256)(1569275433871878256366234355931346684851939149138239826201, 11140830125328699833383236776984887536228210656134932) (addr=0x9bAfD307270677A3C3654B40F3F43a043B81f284, value=0, sender=0x0000000000000000000000000000000000070000) + => [call] FuzzERC20.transfer(address,uint256)(0x0000000000000000000000000000000000070000, 300000000000000000) (addr=0xaF5382d65A0eEbc1C7C80a0E9A2f78BCB53956aB, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [event] Transfer(0x0000000000000000000000000000000000000000, 0x9bafd307270677a3c3654b40f3f43a043b81f284, 300000000000000000) + => [event] Transfer(0x9bafd307270677a3c3654b40f3f43a043b81f284, 0x0000000000000000000000000000000000070000, 300000000000000000) + => [return (true)] + => [call] StdCheats.prank(address)(0x0000000000000000000000000000000000070000) (addr=0x7109709ECfa91a80626fF3989D68f67F5b1DD12D, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [return ()] + => [call] FuzzERC20.approve(address,uint256)(0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) (addr=0xaF5382d65A0eEbc1C7C80a0E9A2f78BCB53956aB, value=0, sender=0x0000000000000000000000000000000000070000) + => [event] Approval(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) + => [return (true)] + => [call] StdCheats.prank(address)(0x0000000000000000000000000000000000070000) (addr=0x7109709ECfa91a80626fF3989D68f67F5b1DD12D, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [return ()] + => [call] MockHorizonStaking.stake(uint256)(300000000000000000) (addr=0xd9557D6D3aC4C8d620787Bee095FeA290cE0854c, value=0, sender=0x0000000000000000000000000000000000070000) + => [call] FuzzERC20.transferFrom(address,address,uint256)(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) (addr=0xaF5382d65A0eEbc1C7C80a0E9A2f78BCB53956aB, value=0, sender=0xd9557D6D3aC4C8d620787Bee095FeA290cE0854c) + => [event] Approval(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 0) + => [event] Transfer(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) + => [return (true)] + => [return ()] + => [event] TotalPledgesFor(0) + => [event] TotalPledgesAgainst(0) + => [call] StdCheats.prank(address)(0x0000000000000000000000000000000000070000) (addr=0x7109709ECfa91a80626fF3989D68f67F5b1DD12D, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [return ()] + => [call] BondEscalationModule.pledgeForDispute((uint96,address,address,address,address,address,address,bytes,bytes,bytes,bytes,bytes),(address,address,bytes32,bytes32))({nonce: 0, requester: 0x0db2d009dccf208b0402ec2c6bb03bc7ffb3e805, requestModule: 0x820ca92a0c7d04f56a0b3afc1af2c4e886a3a065, responseModule: 0x7be6550517d504fa555db3afaaab8823df142595, disputeModule: 0x2bb473704a33312d358718d002f50c274be1daaa, resolutionModule: 0x082915598a1fce74a5994687d3fcd9ccf0bfe11c, finalityModule: 0xc4d57a88155a38b26f3b5a460154494fd597dfbe, requestModuleData: 0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d000000000000000000000000000000000000000000000000, responseModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a80, disputeModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000127500, resolutionModuleData: 000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef974, finalityModuleData: }, {disputer: 0x0000000000000000000000000000000000030000, proposer: 0x0000000000000000000000000000000000030000, responseId: 3c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b, requestId: 47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69}) (addr=0x2Bb473704A33312d358718D002f50C274bE1daaA, value=0, sender=0x0000000000000000000000000000000000070000) + => [proxy call] BondEscalationModule -> ValidatorLib.(msg_data=ef37aa67000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300003c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69) (addr=0x2Bb473704A33312d358718D002f50C274bE1daaA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x0000000000000000000000000000000000070000) + => [return (return_data=d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1)] + => [proxy call] BondEscalationModule -> ValidatorLib.(msg_data=22c9576d00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300003c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db2d009dccf208b0402ec2c6bb03bc7ffb3e805000000000000000000000000820ca92a0c7d04f56a0b3afc1af2c4e886a3a0650000000000000000000000007be6550517d504fa555db3afaaab8823df1425950000000000000000000000002bb473704a33312d358718d002f50c274be1daaa000000000000000000000000082915598a1fce74a5994687d3fcd9ccf0bfe11c000000000000000000000000c4d57a88155a38b26f3b5a460154494fd597dfbe0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef9740000000000000000000000000000000000000000000000000000000000000000) (addr=0x2Bb473704A33312d358718D002f50C274bE1daaA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x0000000000000000000000000000000000070000) + => [return (return_data=d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1)] + => [call] Oracle.disputeCreatedAt(bytes32)(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (650339)] + => [call] Oracle.disputeCreatedAt(bytes32)(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (650339)] + => [call] HorizonAccountingExtension.pledge(address,(uint96,address,address,address,address,address,address,bytes,bytes,bytes,bytes,bytes),(address,address,bytes32,bytes32),address,uint256)(0x0000000000000000000000000000000000070000, {nonce: 0, requester: 0x0db2d009dccf208b0402ec2c6bb03bc7ffb3e805, requestModule: 0x820ca92a0c7d04f56a0b3afc1af2c4e886a3a065, responseModule: 0x7be6550517d504fa555db3afaaab8823df142595, disputeModule: 0x2bb473704a33312d358718d002f50c274be1daaa, resolutionModule: 0x082915598a1fce74a5994687d3fcd9ccf0bfe11c, finalityModule: 0xc4d57a88155a38b26f3b5a460154494fd597dfbe, requestModuleData: 0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d000000000000000000000000000000000000000000000000, responseModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a80, disputeModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000127500, resolutionModuleData: 000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef974, finalityModuleData: }, {disputer: 0x0000000000000000000000000000000000030000, proposer: 0x0000000000000000000000000000000000030000, responseId: 3c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b, requestId: 47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69}, 0xaf5382d65a0eebc1c7c80a0e9a2f78bcb53956ab, 300000000000000000) (addr=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA, value=0, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [proxy call] HorizonAccountingExtension -> ValidatorLib.(msg_data=47af57a6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db2d009dccf208b0402ec2c6bb03bc7ffb3e805000000000000000000000000820ca92a0c7d04f56a0b3afc1af2c4e886a3a0650000000000000000000000007be6550517d504fa555db3afaaab8823df1425950000000000000000000000002bb473704a33312d358718d002f50c274be1daaa000000000000000000000000082915598a1fce74a5994687d3fcd9ccf0bfe11c000000000000000000000000c4d57a88155a38b26f3b5a460154494fd597dfbe0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef9740000000000000000000000000000000000000000000000000000000000000000) (addr=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (return_data=47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69)] + => [proxy call] HorizonAccountingExtension -> ValidatorLib.(msg_data=22c9576d00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300003c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db2d009dccf208b0402ec2c6bb03bc7ffb3e805000000000000000000000000820ca92a0c7d04f56a0b3afc1af2c4e886a3a0650000000000000000000000007be6550517d504fa555db3afaaab8823df1425950000000000000000000000002bb473704a33312d358718d002f50c274be1daaa000000000000000000000000082915598a1fce74a5994687d3fcd9ccf0bfe11c000000000000000000000000c4d57a88155a38b26f3b5a460154494fd597dfbe0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef9740000000000000000000000000000000000000000000000000000000000000000) (addr=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (return_data=d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1)] + => [call] Oracle.disputeCreatedAt(bytes32)(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA) + => [return (650339)] + => [call] Oracle.allowedModule(bytes32,address)(47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69, 0x2bb473704a33312d358718d002f50c274be1daaa) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA) + => [return (true)] + => [call] MockHorizonStaking.getProvision(address,address)(0x0000000000000000000000000000000000070000, 0xffbd5d371f75a40a12085722e5ac1aca16c103ca) (addr=0xd9557D6D3aC4C8d620787Bee095FeA290cE0854c, value=, sender=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA) + => [return ({tokens: 300000000000000000, tokensThawing: 0, sharesThawing: 0, maxVerifierCut: 1000000, thawingPeriod: 86400, createdAt: 748820, maxVerifierCutPending: 0, thawingPeriodPending: 0})] + => [event] Pledged(0x0000000000000000000000000000000000070000, 47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69, d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1, 300000000000000000) + => [return ()] + => [event] PledgedForDispute(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1, 0x0000000000000000000000000000000000070000, 300000000000000000) + => [return ()] + => [event] TestFailure("property 8a: pledging for a dispute not escalated") + => [panic: assertion failed] + + +⇾ [FAILED] Assertion Test: FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId() +Test for method "FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId()" resulted in an assertion failure after the following call sequence: +[Call Sequence] +1) FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256)(10, 9707041212360705471726866045877522134324921439114044538982705458862514448890) (block=3, time=107622, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +2) FuzzTest.property_proposerProposeBeforeDeadlineAndNoAnswer(uint256,bytes)(15892930693282493097617864930261448581096427611222467858746859671693332294, 00f9410092ac45a56e6c48f50020aa8f54e73ec103ee0000f415350001058d5e73866b0f58002183986a2900b8c82be6d671f12400e23ae15d25521113) (block=29920, time=191126, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000020000) +3) FuzzTest.property_disputerCanAlwaysCreateDispute(uint256,uint256)(14474011154664524427946373126085988481658748083205070504932073000989141479270, 14474011154664524427946373126085988481658748083205070504932198000989143062560) (block=41973, time=293378, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000070000) +4) FuzzTest.property_finalizeAfterDeadline(uint256,uint256)(695245907315507039499935032987300989130610564890732487909218808307290247341, 28948022309329048855892746252171976963317496166410141009864396001978282766329) (block=72668, time=701817, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000090000) +5) FuzzTest.property_disputerEscalateFirstDisputedResponse(uint256,uint256)(1595168428146590381198079498983511911218452445360431643781060660792460137383, 317114873976849654048429147049129198431147991988200608027734237764845495007) (block=130241, time=1239575, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000060000) +6) FuzzTest.handleArbitrateDispute(uint256,uint256,uint256)(7237005577332262213973186563042994240829374041602535252466099000494570221568, 7237005577332262213973186563042994240829374041602535252466036500494571035415, 67972695252429088641906460292848161202925034077) (block=133321, time=1272520, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +7) FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256)(10, 9707041212360705471726866045877522134324921439114044538982705458862514410106) (block=133321, time=1272520, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +8) FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId()() (block=150144, time=1722821, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +[Execution Trace] + => [call] FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId()() (addr=0x9bAfD307270677A3C3654B40F3F43a043B81f284, value=0, sender=0x0000000000000000000000000000000000030000) + => [event] TestFailure("prop 13: different response id for same request") + => [panic: assertion failed] + + +⇾ Fuzzer stopped, test results follow below ... +⇾ [PASSED] Assertion Test: FuzzTest.handleAddEBORequestCreatorFinalityModule(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleAddEBORequestCreatorRequestModule(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleAmendEpoch(uint256,uint256,uint256[],uint256[]) +⇾ [PASSED] Assertion Test: FuzzTest.handleApproveModule(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleArbitrateDispute(uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleClaimEscalationReward(uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleConfirmCouncil() +⇾ [PASSED] Assertion Test: FuzzTest.handleCreateRequestWrongCreator(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleOnSettleBondEscalation(uint256,uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handlePledge(uint256,uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handlePledgeAgainstDispute(uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handlePledgeForDispute(uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleReleaseUnutilizedResponse(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleRemoveEBORequestCreatorFinalityModule(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleRemoveEBORequestCreatorRequestModule(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleResolveDispute(uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleRevokeModule(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleSetArbitrator(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleSetMaxUsersToCheck(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleSetPendingCouncil(uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleSettleBondEscalation(uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.handleSlash(uint256,uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.property_arbitratorCanSettle(uint256,uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.property_disputerCanAlwaysCreateDispute(uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.property_disputerEscalateFirstDisputedResponse(uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.property_finalizeAfterDeadline(uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.property_pledgerCanPledgeAgainst(uint256,uint256) +⇾ [PASSED] Assertion Test: FuzzTest.property_proposerProposeBeforeDeadlineAndNoAnswer(uint256,bytes) +⇾ [PASSED] Assertion Test: FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256) +⇾ [FAILED] Assertion Test: FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId() +Test for method "FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId()" resulted in an assertion failure after the following call sequence: +[Call Sequence] +1) FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256)(10, 9707041212360705471726866045877522134324921439114044538982705458862514910650) (block=3, time=107622, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +2) FuzzTest.property_proposerProposeBeforeDeadlineAndNoAnswer(uint256,bytes)(2034295128740159116495086711073465418380342734236475885919535537976749146007, b362f941e0929845a56c00f5aa8f54e73ebac103eef260f415283535016b058d5e73866b0f58002183986afb58b8002be6d671f12480005d25520013) (block=29920, time=191126, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000020000) +3) FuzzTest.property_disputerCanAlwaysCreateDispute(uint256,uint256)(56539106072908298546665520023458291688888397198401930649563319384466671854, 1809251394333065553493296640760748560207343510400633813116562250123643921572) (block=41973, time=293378, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000070000) +4) FuzzTest.property_finalizeAfterDeadline(uint256,uint256)(2780983629262028157999740131949203956522442259562929951636875233229162110295, 3618502788666131106986593281521497120414687020801267626232924500247284998140) (block=72668, time=701817, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000090000) +5) FuzzTest.property_disputerEscalateFirstDisputedResponse(uint256,uint256)(99698026759161898824879968687099696086335452838262729756974695507073055406, 2536918991814797232387433176393033587449183935905604864222073902118764346573) (block=130241, time=1239575, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000060000) +6) FuzzTest.handleArbitrateDispute(uint256,uint256,uint256)(3618502788666131106986593281521497120414687020801267626233049500247285438462, 226156424291633194186662080095093570025917938800079226639564812515455507967, 4248293453276818040119153768209260075183155901) (block=133321, time=1272520, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +7) FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256)(10, 9707041212360705471726866045877522134324921439114044538982705458862514606714) (block=133321, time=1272520, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +8) FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId()() (block=163651, time=1579336, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000010000) +[Execution Trace] + => [call] FuzzTest.prop_singleRequestIdForSingleDisputeOrResponseId()() (addr=0x9bAfD307270677A3C3654B40F3F43a043B81f284, value=0, sender=0x0000000000000000000000000000000000010000) + => [event] TestFailure("prop 13: different response id for same request") + => [panic: assertion failed] + + +⇾ [FAILED] Assertion Test: FuzzTest.property_pledgerCanPledgeFor(uint256,uint256) +Test for method "FuzzTest.property_pledgerCanPledgeFor(uint256,uint256)" resulted in an assertion failure after the following call sequence: +[Call Sequence] +1) FuzzTest.property_requesterCanAlwaysCreateRequest(uint256,uint256)(169292243435926475947657618117809554715205381870477498737, 11227470702167300108676284646061054869459991254736913089273) (block=56765, time=310068, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +2) FuzzTest.property_proposerProposeBeforeDeadlineAndNoAnswer(uint256,bytes)(266036087197766605821302567521179736131332992926046023619, ) (block=86763, time=575158, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +3) FuzzTest.property_disputerCanAlwaysCreateDispute(uint256,uint256)(49039857307708443486248577169761821872565657850864711149, 42606003586655566682761513336656488723777169785197933256381) (block=108137, time=650339, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000030000) +4) FuzzTest.property_disputerEscalateFirstDisputedResponse(uint256,uint256)(1551770073714798722944864429292065626653092673101459892789, 2411935221370875900160200968152595430802304156149400094726) (block=143071, time=748820, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000070000) +5) FuzzTest.property_pledgerCanPledgeFor(uint256,uint256)(1569275433871878256366234355931346684851939149138239826201, 11140830125328699833383236776984887536228210656134932) (block=150070, time=774026, gas=12500000, gasprice=1, value=0, sender=0x0000000000000000000000000000000000070000) +[Execution Trace] + => [call] FuzzTest.property_pledgerCanPledgeFor(uint256,uint256)(1569275433871878256366234355931346684851939149138239826201, 11140830125328699833383236776984887536228210656134932) (addr=0x9bAfD307270677A3C3654B40F3F43a043B81f284, value=0, sender=0x0000000000000000000000000000000000070000) + => [call] FuzzERC20.transfer(address,uint256)(0x0000000000000000000000000000000000070000, 300000000000000000) (addr=0xaF5382d65A0eEbc1C7C80a0E9A2f78BCB53956aB, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [event] Transfer(0x0000000000000000000000000000000000000000, 0x9bafd307270677a3c3654b40f3f43a043b81f284, 300000000000000000) + => [event] Transfer(0x9bafd307270677a3c3654b40f3f43a043b81f284, 0x0000000000000000000000000000000000070000, 300000000000000000) + => [return (true)] + => [call] StdCheats.prank(address)(0x0000000000000000000000000000000000070000) (addr=0x7109709ECfa91a80626fF3989D68f67F5b1DD12D, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [return ()] + => [call] FuzzERC20.approve(address,uint256)(0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) (addr=0xaF5382d65A0eEbc1C7C80a0E9A2f78BCB53956aB, value=0, sender=0x0000000000000000000000000000000000070000) + => [event] Approval(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) + => [return (true)] + => [call] StdCheats.prank(address)(0x0000000000000000000000000000000000070000) (addr=0x7109709ECfa91a80626fF3989D68f67F5b1DD12D, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [return ()] + => [call] MockHorizonStaking.stake(uint256)(300000000000000000) (addr=0xd9557D6D3aC4C8d620787Bee095FeA290cE0854c, value=0, sender=0x0000000000000000000000000000000000070000) + => [call] FuzzERC20.transferFrom(address,address,uint256)(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) (addr=0xaF5382d65A0eEbc1C7C80a0E9A2f78BCB53956aB, value=0, sender=0xd9557D6D3aC4C8d620787Bee095FeA290cE0854c) + => [event] Approval(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 0) + => [event] Transfer(0x0000000000000000000000000000000000070000, 0xd9557d6d3ac4c8d620787bee095fea290ce0854c, 300000000000000000) + => [return (true)] + => [return ()] + => [event] TotalPledgesFor(0) + => [event] TotalPledgesAgainst(0) + => [call] StdCheats.prank(address)(0x0000000000000000000000000000000000070000) (addr=0x7109709ECfa91a80626fF3989D68f67F5b1DD12D, value=0, sender=0x9bAfD307270677A3C3654B40F3F43a043B81f284) + => [return ()] + => [call] BondEscalationModule.pledgeForDispute((uint96,address,address,address,address,address,address,bytes,bytes,bytes,bytes,bytes),(address,address,bytes32,bytes32))({nonce: 0, requester: 0x0db2d009dccf208b0402ec2c6bb03bc7ffb3e805, requestModule: 0x820ca92a0c7d04f56a0b3afc1af2c4e886a3a065, responseModule: 0x7be6550517d504fa555db3afaaab8823df142595, disputeModule: 0x2bb473704a33312d358718d002f50c274be1daaa, resolutionModule: 0x082915598a1fce74a5994687d3fcd9ccf0bfe11c, finalityModule: 0xc4d57a88155a38b26f3b5a460154494fd597dfbe, requestModuleData: 0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d000000000000000000000000000000000000000000000000, responseModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a80, disputeModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000127500, resolutionModuleData: 000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef974, finalityModuleData: }, {disputer: 0x0000000000000000000000000000000000030000, proposer: 0x0000000000000000000000000000000000030000, responseId: 3c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b, requestId: 47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69}) (addr=0x2Bb473704A33312d358718D002f50C274bE1daaA, value=0, sender=0x0000000000000000000000000000000000070000) + => [proxy call] BondEscalationModule -> ValidatorLib.(msg_data=ef37aa67000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300003c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69) (addr=0x2Bb473704A33312d358718D002f50C274bE1daaA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x0000000000000000000000000000000000070000) + => [return (return_data=d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1)] + => [proxy call] BondEscalationModule -> ValidatorLib.(msg_data=22c9576d00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300003c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db2d009dccf208b0402ec2c6bb03bc7ffb3e805000000000000000000000000820ca92a0c7d04f56a0b3afc1af2c4e886a3a0650000000000000000000000007be6550517d504fa555db3afaaab8823df1425950000000000000000000000002bb473704a33312d358718d002f50c274be1daaa000000000000000000000000082915598a1fce74a5994687d3fcd9ccf0bfe11c000000000000000000000000c4d57a88155a38b26f3b5a460154494fd597dfbe0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef9740000000000000000000000000000000000000000000000000000000000000000) (addr=0x2Bb473704A33312d358718D002f50C274bE1daaA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x0000000000000000000000000000000000070000) + => [return (return_data=d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1)] + => [call] Oracle.disputeCreatedAt(bytes32)(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (650339)] + => [call] Oracle.disputeCreatedAt(bytes32)(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (650339)] + => [call] HorizonAccountingExtension.pledge(address,(uint96,address,address,address,address,address,address,bytes,bytes,bytes,bytes,bytes),(address,address,bytes32,bytes32),address,uint256)(0x0000000000000000000000000000000000070000, {nonce: 0, requester: 0x0db2d009dccf208b0402ec2c6bb03bc7ffb3e805, requestModule: 0x820ca92a0c7d04f56a0b3afc1af2c4e886a3a065, responseModule: 0x7be6550517d504fa555db3afaaab8823df142595, disputeModule: 0x2bb473704a33312d358718d002f50c274be1daaa, resolutionModule: 0x082915598a1fce74a5994687d3fcd9ccf0bfe11c, finalityModule: 0xc4d57a88155a38b26f3b5a460154494fd597dfbe, requestModuleData: 0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d000000000000000000000000000000000000000000000000, responseModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a80, disputeModuleData: 000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000127500, resolutionModuleData: 000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef974, finalityModuleData: }, {disputer: 0x0000000000000000000000000000000000030000, proposer: 0x0000000000000000000000000000000000030000, responseId: 3c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b, requestId: 47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69}, 0xaf5382d65a0eebc1c7c80a0e9a2f78bcb53956ab, 300000000000000000) (addr=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA, value=0, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [proxy call] HorizonAccountingExtension -> ValidatorLib.(msg_data=47af57a6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db2d009dccf208b0402ec2c6bb03bc7ffb3e805000000000000000000000000820ca92a0c7d04f56a0b3afc1af2c4e886a3a0650000000000000000000000007be6550517d504fa555db3afaaab8823df1425950000000000000000000000002bb473704a33312d358718d002f50c274be1daaa000000000000000000000000082915598a1fce74a5994687d3fcd9ccf0bfe11c000000000000000000000000c4d57a88155a38b26f3b5a460154494fd597dfbe0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef9740000000000000000000000000000000000000000000000000000000000000000) (addr=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (return_data=47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69)] + => [proxy call] HorizonAccountingExtension -> ValidatorLib.(msg_data=22c9576d00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300003c3ecf8a0d2a7b1e3535bed4db3efd66e929c6c72c7d60fc47f3645a2c45883b47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db2d009dccf208b0402ec2c6bb03bc7ffb3e805000000000000000000000000820ca92a0c7d04f56a0b3afc1af2c4e886a3a0650000000000000000000000007be6550517d504fa555db3afaaab8823df1425950000000000000000000000002bb473704a33312d358718d002f50c274be1daaa000000000000000000000000082915598a1fce74a5994687d3fcd9ccf0bfe11c000000000000000000000000c4d57a88155a38b26f3b5a460154494fd597dfbe0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001ce3a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086f7074696d69736d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab00000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000000000000000697800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffbd5d371f75a40a12085722e5ac1aca16c103ca000000000000000000000000af5382d65a0eebc1c7c80a0e9a2f78bcb53956ab0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000018eb190c5a941dee3b32bc9e37ad91352eef9740000000000000000000000000000000000000000000000000000000000000000) (addr=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA, code=0x0000000000000000000000000000000000C0FFEE, value=0, sender=0x2Bb473704A33312d358718D002f50C274bE1daaA) + => [return (return_data=d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1)] + => [call] Oracle.disputeCreatedAt(bytes32)(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA) + => [return (650339)] + => [call] Oracle.allowedModule(bytes32,address)(47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69, 0x2bb473704a33312d358718d002f50c274be1daaa) (addr=0x6c02b1132012Ba1607822f0be10C32c85681d922, value=, sender=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA) + => [return (true)] + => [call] MockHorizonStaking.getProvision(address,address)(0x0000000000000000000000000000000000070000, 0xffbd5d371f75a40a12085722e5ac1aca16c103ca) (addr=0xd9557D6D3aC4C8d620787Bee095FeA290cE0854c, value=, sender=0xffBD5D371F75A40a12085722e5aC1aCa16C103cA) + => [return ({tokens: 300000000000000000, tokensThawing: 0, sharesThawing: 0, maxVerifierCut: 1000000, thawingPeriod: 86400, createdAt: 748820, maxVerifierCutPending: 0, thawingPeriodPending: 0})] + => [event] Pledged(0x0000000000000000000000000000000000070000, 47b1ae199574446876b72a5a8f40e5b477fd9e19f8f91c4ca5d4bdf7693c5c69, d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1, 300000000000000000) + => [return ()] + => [event] PledgedForDispute(d951305493666caff1b6906450a78df42224b6d5f61e0c358b49a8472ee66dc1, 0x0000000000000000000000000000000000070000, 300000000000000000) + => [return ()] + => [event] TestFailure("property 8a: pledging for a dispute not escalated") + => [panic: assertion failed] + + +⇾ Test summary: 29 test(s) passed, 2 test(s) failed +⇾ html report(s) saved to: test/invariants/corpus/coverage/coverage_report.html +⇾ lcov report(s) saved to: test/invariants/corpus/coverage/lcov.info diff --git a/log/log-1733753814.log b/log/log-1733753814.log new file mode 100644 index 0000000..e69de29 diff --git a/test/invariants/FuzzTest.t.sol b/test/invariants/FuzzTest.t.sol index 71186d1..fc98a26 100644 --- a/test/invariants/FuzzTest.t.sol +++ b/test/invariants/FuzzTest.t.sol @@ -30,12 +30,19 @@ contract FuzzTest is PropertyParent { otherRequestResponseIdx < _ghost_activeResponses[otherRequestId].length; otherRequestResponseIdx++ ) { - // check that it is not pointing to the same request - assertTrue( + // check that it is not pointing to the same request. If it does, check it wasn't + // finalized without answer + + if ( _ghost_activeResponses[currentRequestId][currentRequestResponseIdx] - != _ghost_activeResponses[otherRequestId][otherRequestResponseIdx], - 'prop 13: different response id for same request' - ); + == _ghost_activeResponses[otherRequestId][otherRequestResponseIdx] + && ( + (oracle.finalizedAt(currentRequestId) == 0 && oracle.finalizedResponseId(currentRequestId) != 0) + || (oracle.finalizedAt(otherRequestId) == 0 && oracle.finalizedResponseId(otherRequestId) != 0) + ) + ) { + assertTrue(false, 'prop 13: same response id for different requests'); + } } } } @@ -62,12 +69,19 @@ contract FuzzTest is PropertyParent { otherRequestDisputeIdx < _ghost_disputes[otherRequestId].length; otherRequestDisputeIdx++ ) { - // check that it is not pointing to the same request - assertTrue( - _ghost_disputes[currentRequestId][currentRequestDisputeIdx] - != _ghost_disputes[otherRequestId][otherRequestDisputeIdx], - 'prop 13: different dispute id for same request' - ); + // check that it is not pointing to the same request. If it does, check it wasn't + // finalized without answer + + if ( + _ghost_activeResponses[currentRequestId][currentRequestDisputeIdx] + == _ghost_activeResponses[otherRequestId][otherRequestDisputeIdx] + && ( + (oracle.finalizedAt(currentRequestId) == 0 && oracle.finalizedResponseId(currentRequestId) != 0) + || (oracle.finalizedAt(otherRequestId) == 0 && oracle.finalizedResponseId(otherRequestId) != 0) + ) + ) { + assertTrue(false, 'prop 13: same response id for different requests'); + } } } } diff --git a/test/invariants/Reproducers.t.sol b/test/invariants/Reproducers.t.sol index 6256338..3a86013 100644 --- a/test/invariants/Reproducers.t.sol +++ b/test/invariants/Reproducers.t.sol @@ -5,32 +5,108 @@ import {FuzzTest} from './FuzzTest.t.sol'; import {IEBORequestModule, IOracle} from './Setup.t.sol'; contract Reproducers is FuzzTest { - function test_debug() public { - vm.roll(55_341); - vm.warp(292_791); - vm.prank(0x0000000000000000000000000000000000080000); + // forge test --match-test test_prop_singleRequestIdForSingleDisputeOrResponseId_0 -vv + + function test_prop_singleRequestIdForSingleDisputeOrResponseId_0() public { + vm.roll(3); + vm.warp(107_622); + vm.prank(0x0000000000000000000000000000000000030000); this.property_requesterCanAlwaysCreateRequest( - 0, 91_936_153_333_790_985_814_765_645_281_331_945_670_085_017_288_440_355_350_976_283_151_607_122_591_831 + 10, 37_029_423_570_101_568_114_192_451_652_059_639_489_459_691_769_081_285_614_258_977_732_585_787 + ); + + vm.roll(29_920); + vm.warp(191_126); + vm.prank(0x0000000000000000000000000000000000020000); + this.property_proposerProposeBeforeDeadlineAndNoAnswer( + 3_533_694_129_556_768_659_166_594_920_800_430_618_073_929_656_453_786_986_859_439_806_182_558_244, '' ); - vm.roll(114_433); - vm.warp(791_132); - vm.prank(0x0000000000000000000000000000000000080000); + vm.roll(41_973); + vm.warp(293_378); + vm.prank(0x0000000000000000000000000000000000070000); + this.property_disputerCanAlwaysCreateDispute( + 44_601_490_397_061_246_283_071_436_695_194_755_937_831_813, + 24_519_928_653_539_120_916_142_750_395_984_862_678_837_009_021_121_402_119 + ); + + vm.roll(72_668); + vm.warp(701_817); + vm.prank(0x0000000000000000000000000000000000090000); this.property_finalizeAfterDeadline( - 13_479_973_333_575_319_897_333_507_543_509_815_336_818_572_211_270_290_147_286_325_345_251, - 107_839_786_668_602_559_178_668_057_886_353_385_264_177_471_300_505_974_851_760_065_510_272 + 441_711_766_194_596_082_395_824_375_183_268_584_384_174_444_443_096_125_085_881_927_426_324_089, + 55_213_970_774_324_510_299_478_046_897_908_487_977_573_366_651_192_816_587_142_984_978_084_060 + ); + + vm.roll(130_241); + vm.warp(1_239_575); + vm.prank(0x0000000000000000000000000000000000060000); + this.property_disputerEscalateFirstDisputedResponse( + 441_711_766_194_596_082_395_824_375_183_267_903_819_727_185_636_638_495_186_960_857_860_556_558, + 601_007_113_947_101_039_560_436_606_908_369_912_464 + ); + + vm.roll(133_321); + vm.warp(1_272_520); + vm.prank(0x0000000000000000000000000000000000030000); + this.handleArbitrateDispute( + 98_079_714_617_799_838_069_981_031_751_129_814_657_974_628_780_861_328_198, + 10_543_876_310_748_807_825_434_603_100_744_632_307_071_557, + 7_369_614_386_207_023_510_276_552_037 + ); + + vm.roll(133_321); + vm.warp(1_272_520); + vm.prank(0x0000000000000000000000000000000000030000); + this.property_requesterCanAlwaysCreateRequest( + 10, 1_184_941_554_243_250_179_654_158_452_865_908_463_662_710_136_610_601_139_976_392_267_926_618_806 ); - vm.roll(164_579); - vm.warp(1_050_332); - vm.prank(0x00000000000000000000000000000000000a0000); - this.property_requesterCanAlwaysCreateRequest(0, 300_000_000_001_847_143); + vm.roll(133_469); + vm.warp(1_272_796); + vm.prank(0x0000000000000000000000000000000000060000); + this.prop_singleRequestIdForSingleDisputeOrResponseId(); + } + + // forge test --match-test test_property_pledgerCanPledgeFor_1 -vv - vm.roll(225_050); - vm.warp(1_491_370); - vm.prank(0x00000000000000000000000000000000000a0000); + function test_property_pledgerCanPledgeFor_1() public { + vm.roll(56_765); + vm.warp(310_068); + vm.prank(0x0000000000000000000000000000000000030000); this.property_requesterCanAlwaysCreateRequest( - 0, 115_792_089_237_316_195_423_570_985_008_687_907_853_269_984_665_640_564_039_456_584_007_913_130_122_499 + 23_945_252_909_255_375_823_092_408_840_274_513_180_624_399_837_945_186, 2_086_162_298_782_925_019_460 + ); + + vm.roll(86_763); + vm.warp(575_158); + vm.prank(0x0000000000000000000000000000000000030000); + this.property_proposerProposeBeforeDeadlineAndNoAnswer( + 631_432_499_075_532_304_456_395_701_379_901_335_158_300_516, '' + ); + + vm.roll(108_137); + vm.warp(650_339); + vm.prank(0x0000000000000000000000000000000000030000); + this.property_disputerCanAlwaysCreateDispute( + 862_718_293_348_820_473_429_987_288_449_076_456_476_499_045_871_166_767_810_196_422_572_057, + 1_239_938_753_245_600_703_949_804_873_417_738_265_153_932 + ); + + vm.roll(143_071); + vm.warp(748_820); + vm.prank(0x0000000000000000000000000000000000070000); + this.property_disputerEscalateFirstDisputedResponse( + 1_645_504_557_321_206_042_785_170_517_226_798_052_215_695_477_109_921_052_145_574_832, + 3_213_876_088_517_980_570_777_725_284_107_382_648_403_960_509_936_676_257_779_973 + ); + + vm.roll(150_070); + vm.warp(774_026); + vm.prank(0x0000000000000000000000000000000000070000); + this.property_pledgerCanPledgeFor( + 6_901_746_346_790_563_787_434_755_862_238_646_067_770_489_658_248_914_019_106_131_779_923_731, + 6_129_982_162_203_152_163_068_464_937_047_330_911_145_056_599_837_097_252 ); } } diff --git a/test/invariants/handlers/BaseHandler.t.sol b/test/invariants/handlers/BaseHandler.t.sol index a553fcb..ff9ae2e 100644 --- a/test/invariants/handlers/BaseHandler.t.sol +++ b/test/invariants/handlers/BaseHandler.t.sol @@ -35,6 +35,33 @@ contract BaseHandler is Setup, Actors { mapping(address _pledger => mapping(bytes32 _disputeId => uint256 _pledgedAmount)) internal _ghost_pledgesFor; mapping(address _pledger => mapping(bytes32 _disputeId => uint256 _pledgedAmount)) internal _ghost_pledgesAgainst; + // Aggregators + + function _totalPledgesFor(bytes32 _disputeId) internal view returns (uint256) { + return _aggregateSum(_ghost_pledgesFor, _disputeId); + } + + function _totalPledgesAgainst(bytes32 _disputeId) internal view returns (uint256) { + return _aggregateSum(_ghost_pledgesAgainst, _disputeId); + } + + function _aggregateSum( + mapping(address => mapping(bytes32 => uint256)) storage _data, + bytes32 _id + ) internal view returns (uint256) { + uint256 sum; + for (uint256 i; i < _ghost_actors.length; i++) { + sum += _data[_ghost_actors[i]][_id]; + } + return sum; + } + + function _forEach(bytes32[] storage _arr, function (bytes32) _fn) internal { + for (uint256 i; i < _arr.length; i++) { + _fn(_arr[i]); + } + } + // Helper functions function _getRandomChain(uint256 _seed) internal view returns (string memory) { bytes32[] memory chainIds = eboRequestCreator.getAllowedChainIds(); diff --git a/test/invariants/properties/PropertyDisputer.t.sol b/test/invariants/properties/PropertyDisputer.t.sol index 3780c11..db832a4 100644 --- a/test/invariants/properties/PropertyDisputer.t.sol +++ b/test/invariants/properties/PropertyDisputer.t.sol @@ -112,12 +112,18 @@ contract PropertyDisputer is HandlerParent { vm.prank(msg.sender); try bondEscalationModule.pledgeForDispute(_requestData, _disputeData) { - assertTrue(_ghost_escalatedDisputes[_disputeId], 'property 8a: pledging for a dispute not escalated'); + assertTrue( + _totalPledgesFor(_disputeId) <= _totalPledgesAgainst(_disputeId), 'property 8a: pledging for the wrong side' + ); } catch { - // !_ghost_escalatedDisputes or - // past deadline/tying buffer or - // already pledged this turn or - // + // add tying buffer to deadline + + assertTrue( + !_ghost_escalatedDisputes[_disputeId] + || block.timestamp > oracle.disputeCreatedAt(_disputeId) + DISPUTE_DEADLINE + || _totalPledgesFor(_disputeId) > _totalPledgesAgainst(_disputeId), + 'property 8a: fails on pledging for the correct side' + ); } }