Skip to content

Commit b1fe866

Browse files
authored
chore(contracts): add events when prover bound (#147)
1 parent ffa81a8 commit b1fe866

File tree

5 files changed

+115
-88
lines changed

5 files changed

+115
-88
lines changed

contracts/.gas-snapshot

Lines changed: 87 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,120 @@
1-
SuccinctGovernorTest:test_Cancel_WhenValid() (gas: 443615)
2-
SuccinctGovernorTest:test_Propose_WhenValid() (gas: 544396)
3-
SuccinctGovernorTest:test_RevertCancel_WhenNotProverOwner() (gas: 433338)
4-
SuccinctGovernorTest:test_RevertCastVote_WhenNotProverOwner() (gas: 441022)
1+
SuccinctGovernorTest:test_Cancel_WhenValid() (gas: 445127)
2+
SuccinctGovernorTest:test_Propose_WhenValid() (gas: 545908)
3+
SuccinctGovernorTest:test_RevertCancel_WhenNotProverOwner() (gas: 434850)
4+
SuccinctGovernorTest:test_RevertCastVote_WhenNotProverOwner() (gas: 442534)
55
SuccinctGovernorTest:test_RevertPropose_WhenNotEnoughVotingPower() (gas: 43780)
6-
SuccinctGovernorTest:test_RevertPropose_WhenNotProverOwner() (gas: 369789)
7-
SuccinctStakingDispenseTests:test_Dispense_WhenConsecutiveWithWaiting() (gas: 556856)
8-
SuccinctStakingDispenseTests:test_Dispense_WhenExactLimit() (gas: 468151)
9-
SuccinctStakingDispenseTests:test_Dispense_WhenMaxUint() (gas: 470286)
6+
SuccinctGovernorTest:test_RevertPropose_WhenNotProverOwner() (gas: 371301)
7+
SuccinctStakingDispenseTests:test_Dispense_WhenConsecutiveWithWaiting() (gas: 558066)
8+
SuccinctStakingDispenseTests:test_Dispense_WhenExactLimit() (gas: 469360)
9+
SuccinctStakingDispenseTests:test_Dispense_WhenMaxUint() (gas: 471496)
1010
SuccinctStakingDispenseTests:test_Dispense_WhenMaxUintNoStake() (gas: 146978)
1111
SuccinctStakingDispenseTests:test_Dispense_WhenNoStake() (gas: 65285)
12-
SuccinctStakingDispenseTests:test_Dispense_WhenRateChangeEffects() (gas: 562924)
13-
SuccinctStakingDispenseTests:test_Dispense_WhenRateLimit() (gas: 482394)
14-
SuccinctStakingDispenseTests:test_Dispense_WhenValid() (gas: 525030)
15-
SuccinctStakingDispenseTests:test_Dispense_WhenVeryLargeTimePeriod() (gas: 555135)
12+
SuccinctStakingDispenseTests:test_Dispense_WhenRateChangeEffects() (gas: 564133)
13+
SuccinctStakingDispenseTests:test_Dispense_WhenRateLimit() (gas: 483604)
14+
SuccinctStakingDispenseTests:test_Dispense_WhenValid() (gas: 527464)
15+
SuccinctStakingDispenseTests:test_Dispense_WhenVeryLargeTimePeriod() (gas: 556344)
1616
SuccinctStakingDispenseTests:test_RevertDispense_WhenNotEnoughPROVE() (gas: 35660)
1717
SuccinctStakingDispenseTests:test_Revert_WhenSetDispenseRate_WhenNotDispenser() (gas: 13542)
1818
SuccinctStakingDispenseTests:test_Revert_WhenSetDispenser_WhenNotOwner() (gas: 15711)
1919
SuccinctStakingDispenseTests:test_SetDispenseRate_WhenValid() (gas: 29697)
2020
SuccinctStakingDispenseTests:test_SetDispenser_WhenValid() (gas: 22230)
2121
SuccinctStakingFulfillmentTests:test_RevertReward_WhenProverNotFound() (gas: 12766)
22-
SuccinctStakingFulfillmentTests:test_Reward_WhenPartialUnstake() (gas: 860584)
23-
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersOneProverRewardDistributedAfterBothStake() (gas: 1010015)
24-
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersOneProverRewardOnlyDistributedAfterFirstStake() (gas: 1028588)
25-
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersTwoProversBothRewarded() (gas: 1258820)
26-
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersTwoProversOneRewarded() (gas: 1117124)
27-
SuccinctStakingFulfillmentTests:test_Reward_WhenUnstaked() (gas: 741624)
28-
SuccinctStakingFulfillmentTests:test_Reward_WhenValid() (gas: 611071)
22+
SuccinctStakingFulfillmentTests:test_Reward_WhenPartialUnstake() (gas: 863018)
23+
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersOneProverRewardDistributedAfterBothStake() (gas: 1014882)
24+
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersOneProverRewardOnlyDistributedAfterFirstStake() (gas: 1033455)
25+
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersTwoProversBothRewarded() (gas: 1263687)
26+
SuccinctStakingFulfillmentTests:test_Reward_WhenTwoStakersTwoProversOneRewarded() (gas: 1121992)
27+
SuccinctStakingFulfillmentTests:test_Reward_WhenUnstaked() (gas: 744057)
28+
SuccinctStakingFulfillmentTests:test_Reward_WhenValid() (gas: 612280)
2929
SuccinctStakingInitalizationTests:test_RevertInitialize_WhenAlreadyInitialized() (gas: 27217)
30-
SuccinctStakingInitalizationTests:test_RevertInitialize_WhenNotOwner() (gas: 4285108)
30+
SuccinctStakingInitalizationTests:test_RevertInitialize_WhenNotOwner() (gas: 4301155)
3131
SuccinctStakingMiscellaneousTests:test_Misc_BelowMinimumStake() (gas: 144965)
32-
SuccinctStakingMiscellaneousTests:test_Misc_CannotAvoidSlashingByUnstaking() (gas: 560237)
33-
SuccinctStakingMiscellaneousTests:test_Misc_CannotSwitchProvers() (gas: 454796)
34-
SuccinctStakingMiscellaneousTests:test_Misc_ConcurrentOperations() (gas: 1114674)
32+
SuccinctStakingMiscellaneousTests:test_Misc_CannotAvoidSlashingByUnstaking() (gas: 562671)
33+
SuccinctStakingMiscellaneousTests:test_Misc_CannotSwitchProvers() (gas: 456006)
34+
SuccinctStakingMiscellaneousTests:test_Misc_ConcurrentOperations() (gas: 1117093)
3535
SuccinctStakingMiscellaneousTests:test_Misc_DispenseOneWei() (gas: 142900)
3636
SuccinctStakingMiscellaneousTests:test_Misc_DispenseOverflow() (gas: 142832)
3737
SuccinctStakingMiscellaneousTests:test_Misc_DispenseZeroTime() (gas: 145660)
38-
SuccinctStakingMiscellaneousTests:test_Misc_DustAmountsCanBeUnstaked() (gas: 677824)
39-
SuccinctStakingMiscellaneousTests:test_Misc_ExactMinimumStake() (gas: 554693)
40-
SuccinctStakingMiscellaneousTests:test_Misc_ExactTimingBoundaries() (gas: 460692)
41-
SuccinctStakingMiscellaneousTests:test_Misc_ExchangeRateManipulation() (gas: 718104)
42-
SuccinctStakingMiscellaneousTests:test_Misc_FinishUnstakeNoClaims() (gas: 366018)
43-
SuccinctStakingMiscellaneousTests:test_Misc_FrontrunningRewardDistribution() (gas: 609984)
44-
SuccinctStakingMiscellaneousTests:test_Misc_MaxUint256Operations() (gas: 387496)
45-
SuccinctStakingMiscellaneousTests:test_Misc_MaximumStakeValues() (gas: 554117)
46-
SuccinctStakingMiscellaneousTests:test_Misc_MultiplePartialUnstakesExceedBalance() (gas: 463903)
47-
SuccinctStakingMiscellaneousTests:test_Misc_MultipleUnstakeRequestsCannotDrainFunds() (gas: 1468353)
48-
SuccinctStakingMiscellaneousTests:test_Misc_NonOwnerCannotSlash() (gas: 441559)
38+
SuccinctStakingMiscellaneousTests:test_Misc_DustAmountsCanBeUnstaked() (gas: 680258)
39+
SuccinctStakingMiscellaneousTests:test_Misc_ExactMinimumStake() (gas: 557127)
40+
SuccinctStakingMiscellaneousTests:test_Misc_ExactTimingBoundaries() (gas: 463125)
41+
SuccinctStakingMiscellaneousTests:test_Misc_ExchangeRateManipulation() (gas: 720524)
42+
SuccinctStakingMiscellaneousTests:test_Misc_FinishUnstakeNoClaims() (gas: 367530)
43+
SuccinctStakingMiscellaneousTests:test_Misc_FrontrunningRewardDistribution() (gas: 612403)
44+
SuccinctStakingMiscellaneousTests:test_Misc_MaxUint256Operations() (gas: 388706)
45+
SuccinctStakingMiscellaneousTests:test_Misc_MaximumStakeValues() (gas: 556551)
46+
SuccinctStakingMiscellaneousTests:test_Misc_MultiplePartialUnstakesExceedBalance() (gas: 465415)
47+
SuccinctStakingMiscellaneousTests:test_Misc_MultipleUnstakeRequestsCannotDrainFunds() (gas: 1470787)
48+
SuccinctStakingMiscellaneousTests:test_Misc_NonOwnerCannotSlash() (gas: 443071)
4949
SuccinctStakingMiscellaneousTests:test_Misc_PermitExpiredDeadline() (gas: 33854)
50-
SuccinctStakingMiscellaneousTests:test_Misc_RestakeAfterFullUnstake() (gas: 807946)
51-
SuccinctStakingMiscellaneousTests:test_Misc_RewardAndSlashSameBlock() (gas: 506261)
52-
SuccinctStakingMiscellaneousTests:test_Misc_RoundingErrorsDoNotAccumulate() (gas: 3481699)
53-
SuccinctStakingMiscellaneousTests:test_Misc_SlashExactTimingBoundary() (gas: 435869)
54-
SuccinctStakingMiscellaneousTests:test_Misc_SlashInvalidIndex() (gas: 443917)
55-
SuccinctStakingMiscellaneousTests:test_Misc_UnstakeMoreThanBalance() (gas: 368757)
56-
SuccinctStakingMiscellaneousTests:test_Misc_UnstakeQueueDoS() (gas: 14051765)
57-
SuccinctStakingMiscellaneousTests:test_Misc_VaultReturnsZero() (gas: 454014)
50+
SuccinctStakingMiscellaneousTests:test_Misc_RestakeAfterFullUnstake() (gas: 811589)
51+
SuccinctStakingMiscellaneousTests:test_Misc_RewardAndSlashSameBlock() (gas: 507773)
52+
SuccinctStakingMiscellaneousTests:test_Misc_RoundingErrorsDoNotAccumulate() (gas: 3506035)
53+
SuccinctStakingMiscellaneousTests:test_Misc_SlashExactTimingBoundary() (gas: 437381)
54+
SuccinctStakingMiscellaneousTests:test_Misc_SlashInvalidIndex() (gas: 445429)
55+
SuccinctStakingMiscellaneousTests:test_Misc_UnstakeMoreThanBalance() (gas: 370269)
56+
SuccinctStakingMiscellaneousTests:test_Misc_UnstakeQueueDoS() (gas: 14054199)
57+
SuccinctStakingMiscellaneousTests:test_Misc_VaultReturnsZero() (gas: 455224)
5858
SuccinctStakingMiscellaneousTests:test_Misc_ZeroProverAddress() (gas: 19676)
5959
SuccinctStakingRegistryTests:test_CreateProver_WhenValid() (gas: 1645936)
6060
SuccinctStakingRegistryTests:test_RevertCreateProver_WhenAlreadyCreated() (gas: 1640443)
6161
SuccinctStakingSetupTests:test_SetUp() (gas: 107291)
62-
SuccinctStakingSlashTests:test_RevertSlash_WhenFinishTooEarly() (gas: 465760)
63-
SuccinctStakingSlashTests:test_RevertSlash_WhenProverNotFound() (gas: 410141)
64-
SuccinctStakingSlashTests:test_Slash_WhenCancelled() (gas: 560867)
65-
SuccinctStakingSlashTests:test_Slash_WhenCumulativeSlashAmountExceedsBalance() (gas: 614508)
66-
SuccinctStakingSlashTests:test_Slash_WhenDispenseAfterFullSlash() (gas: 603418)
67-
SuccinctStakingSlashTests:test_Slash_WhenDispenseBeforeFullSlash() (gas: 587611)
68-
SuccinctStakingSlashTests:test_Slash_WhenFullAmount() (gas: 582625)
69-
SuccinctStakingSlashTests:test_Slash_WhenPartialAmount() (gas: 615040)
62+
SuccinctStakingSlashTests:test_RevertSlash_WhenFinishTooEarly() (gas: 466969)
63+
SuccinctStakingSlashTests:test_RevertSlash_WhenProverNotFound() (gas: 411653)
64+
SuccinctStakingSlashTests:test_Slash_WhenCancelled() (gas: 563300)
65+
SuccinctStakingSlashTests:test_Slash_WhenCumulativeSlashAmountExceedsBalance() (gas: 616941)
66+
SuccinctStakingSlashTests:test_Slash_WhenDispenseAfterFullSlash() (gas: 605852)
67+
SuccinctStakingSlashTests:test_Slash_WhenDispenseBeforeFullSlash() (gas: 590044)
68+
SuccinctStakingSlashTests:test_Slash_WhenFullAmount() (gas: 585059)
69+
SuccinctStakingSlashTests:test_Slash_WhenPartialAmount() (gas: 617473)
7070
SuccinctStakingSlashTests:test_Slash_WhenRequestingWhenProverHasNoStake() (gas: 85564)
71-
SuccinctStakingSlashTests:test_Slash_WhenRewardAfterFullSlash() (gas: 523179)
72-
SuccinctStakingSlashTests:test_Slash_WhenSingleSlashAmountExceedsBalance() (gas: 568908)
73-
SuccinctStakingSlashTests:test_Slash_WhenTwoProversDispenseAfterOneFullSlash() (gas: 967245)
74-
SuccinctStakingSlashTests:test_Slash_WhenTwoStakersDispenseBeforeFullSlash() (gas: 836257)
75-
SuccinctStakingSlashTests:test_Slash_WhenTwoStakersFullSlash() (gas: 817236)
76-
SuccinctStakingStakeTests:test_PermitAndStake_WhenAttackerFrontruns() (gas: 398693)
77-
SuccinctStakingStakeTests:test_PermitAndStake_WhenLessThanApproved() (gas: 416295)
78-
SuccinctStakingStakeTests:test_PermitAndStake_WhenValid() (gas: 411739)
71+
SuccinctStakingSlashTests:test_Slash_WhenRewardAfterFullSlash() (gas: 524388)
72+
SuccinctStakingSlashTests:test_Slash_WhenSingleSlashAmountExceedsBalance() (gas: 571341)
73+
SuccinctStakingSlashTests:test_Slash_WhenTwoProversDispenseAfterOneFullSlash() (gas: 972112)
74+
SuccinctStakingSlashTests:test_Slash_WhenTwoStakersDispenseBeforeFullSlash() (gas: 841124)
75+
SuccinctStakingSlashTests:test_Slash_WhenTwoStakersFullSlash() (gas: 822104)
76+
SuccinctStakingStakeTests:test_PermitAndStake_WhenAttackerFrontruns() (gas: 400205)
77+
SuccinctStakingStakeTests:test_PermitAndStake_WhenLessThanApproved() (gas: 417807)
78+
SuccinctStakingStakeTests:test_PermitAndStake_WhenValid() (gas: 413251)
7979
SuccinctStakingStakeTests:test_RevertPermitAndStake_WhenDeadlineExpired() (gas: 42986)
8080
SuccinctStakingStakeTests:test_RevertPermitAndStake_WhenNotEnoughApproved() (gas: 75449)
8181
SuccinctStakingStakeTests:test_RevertPermitAndStake_WhenSignatureInvalid() (gas: 73250)
8282
SuccinctStakingStakeTests:test_RevertStake_WhenBelowMinStakeAmount() (gas: 47830)
8383
SuccinctStakingStakeTests:test_RevertStake_WhenProverHasSlashRequest() (gas: 117620)
84-
SuccinctStakingStakeTests:test_RevertStake_WhenProverNReceiptAmountIsZero() (gas: 590832)
84+
SuccinctStakingStakeTests:test_RevertStake_WhenProverNReceiptAmountIsZero() (gas: 593252)
8585
SuccinctStakingStakeTests:test_RevertStake_WhenProverNotFound() (gas: 45501)
86-
SuccinctStakingStakeTests:test_RevertStake_WhenStakedToADifferentProver() (gas: 418389)
86+
SuccinctStakingStakeTests:test_RevertStake_WhenStakedToADifferentProver() (gas: 419901)
8787
SuccinctStakingStakeTests:test_RevertStake_WhenZeroAmount() (gas: 37390)
88-
SuccinctStakingStakeTests:test_RevertStake_WheniPROVEReceiptAmountIsZero() (gas: 560631)
89-
SuccinctStakingStakeTests:test_Stake_WhenValid() (gas: 417622)
88+
SuccinctStakingStakeTests:test_RevertStake_WheniPROVEReceiptAmountIsZero() (gas: 563655)
89+
SuccinctStakingStakeTests:test_Stake_WhenValid() (gas: 424359)
9090
SuccinctStakingTransferTests:test_RevertDeposit_WhenDirectiPROVE() (gas: 66532)
9191
SuccinctStakingTransferTests:test_RevertMint_WhenDirectiPROVE() (gas: 66591)
92-
SuccinctStakingTransferTests:test_RevertRedeem_WhenDirectiPROVEFromProver() (gas: 373252)
93-
SuccinctStakingTransferTests:test_RevertRedeem_WhenDirectiPROVERFromStaker() (gas: 382009)
94-
SuccinctStakingTransferTests:test_RevertTransfer_WhenPROVER() (gas: 367389)
95-
SuccinctStakingTransferTests:test_RevertTransfer_WheniPROVE() (gas: 375824)
96-
SuccinctStakingTransferTests:test_RevertTransfer_WhenstPROVE() (gas: 367508)
97-
SuccinctStakingTransferTests:test_RevertWithdraw_WhenDirectiPROVEFromProver() (gas: 375273)
98-
SuccinctStakingTransferTests:test_RevertWithdraw_WhenDirectiPROVEFromStaker() (gas: 383968)
92+
SuccinctStakingTransferTests:test_RevertRedeem_WhenDirectiPROVEFromProver() (gas: 374764)
93+
SuccinctStakingTransferTests:test_RevertRedeem_WhenDirectiPROVERFromStaker() (gas: 383521)
94+
SuccinctStakingTransferTests:test_RevertTransfer_WhenPROVER() (gas: 368901)
95+
SuccinctStakingTransferTests:test_RevertTransfer_WheniPROVE() (gas: 377336)
96+
SuccinctStakingTransferTests:test_RevertTransfer_WhenstPROVE() (gas: 369020)
97+
SuccinctStakingTransferTests:test_RevertWithdraw_WhenDirectiPROVEFromProver() (gas: 376785)
98+
SuccinctStakingTransferTests:test_RevertWithdraw_WhenDirectiPROVEFromStaker() (gas: 385480)
9999
SuccinctStakingTransferTests:test_Transfer_WhenProve() (gas: 23892)
100-
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenAmountExceedsBalance() (gas: 406927)
101-
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenFinishUnstakeWhileProverHasSlashRequest() (gas: 571503)
102-
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenRequestUnstakeWhileProverHasSlashRequest() (gas: 476898)
103-
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenTooManyUnstakeRequests() (gas: 11304483)
104-
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenZeroAmount() (gas: 397069)
105-
SuccinctStakingUnstakeTests:test_Unstake_WhenEarlyAttempt() (gas: 488934)
106-
SuccinctStakingUnstakeTests:test_Unstake_WhenManySmallStakesUnstakes() (gas: 2233640)
107-
SuccinctStakingUnstakeTests:test_Unstake_WhenManySmallStakesUnstakesTimeBetween() (gas: 2241425)
108-
SuccinctStakingUnstakeTests:test_Unstake_WhenManySmallUnstakes() (gas: 1494933)
109-
SuccinctStakingUnstakeTests:test_Unstake_WhenMultipleRewards() (gas: 697256)
110-
SuccinctStakingUnstakeTests:test_Unstake_WhenMultipleUnstakes() (gas: 704236)
111-
SuccinctStakingUnstakeTests:test_Unstake_WhenOneStakerTwoProversRewardNonDelegated() (gas: 916907)
112-
SuccinctStakingUnstakeTests:test_Unstake_WhenRewardDuringUnstakePeriod() (gas: 851160)
113-
SuccinctStakingUnstakeTests:test_Unstake_WhenSlashDuringUnstakePeriod() (gas: 565824)
114-
SuccinctStakingUnstakeTests:test_Unstake_WhenSomeoneElseFinishesUnstake() (gas: 507314)
115-
SuccinctStakingUnstakeTests:test_Unstake_WhenTwoStakersOneProverReward() (gas: 1038776)
116-
SuccinctStakingUnstakeTests:test_Unstake_WhenTwoStakersTwoProversDispenseOnly() (gas: 878302)
117-
SuccinctStakingUnstakeTests:test_Unstake_WhenValid() (gas: 573080)
100+
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenAmountExceedsBalance() (gas: 408439)
101+
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenFinishUnstakeWhileProverHasSlashRequest() (gas: 573015)
102+
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenRequestUnstakeWhileProverHasSlashRequest() (gas: 478410)
103+
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenTooManyUnstakeRequests() (gas: 11305995)
104+
SuccinctStakingUnstakeTests:test_RevertUnstake_WhenZeroAmount() (gas: 398581)
105+
SuccinctStakingUnstakeTests:test_Unstake_WhenEarlyAttempt() (gas: 491368)
106+
SuccinctStakingUnstakeTests:test_Unstake_WhenManySmallStakesUnstakes() (gas: 2236073)
107+
SuccinctStakingUnstakeTests:test_Unstake_WhenManySmallStakesUnstakesTimeBetween() (gas: 2243859)
108+
SuccinctStakingUnstakeTests:test_Unstake_WhenManySmallUnstakes() (gas: 1497367)
109+
SuccinctStakingUnstakeTests:test_Unstake_WhenMultipleRewards() (gas: 699689)
110+
SuccinctStakingUnstakeTests:test_Unstake_WhenMultipleUnstakes() (gas: 706670)
111+
SuccinctStakingUnstakeTests:test_Unstake_WhenOneStakerTwoProversRewardNonDelegated() (gas: 921774)
112+
SuccinctStakingUnstakeTests:test_Unstake_WhenRewardDuringUnstakePeriod() (gas: 853593)
113+
SuccinctStakingUnstakeTests:test_Unstake_WhenSlashDuringUnstakePeriod() (gas: 568257)
114+
SuccinctStakingUnstakeTests:test_Unstake_WhenSomeoneElseFinishesUnstake() (gas: 509748)
115+
SuccinctStakingUnstakeTests:test_Unstake_WhenTwoStakersOneProverReward() (gas: 1043643)
116+
SuccinctStakingUnstakeTests:test_Unstake_WhenTwoStakersTwoProversDispenseOnly() (gas: 883169)
117+
SuccinctStakingUnstakeTests:test_Unstake_WhenValid() (gas: 579673)
118118
SuccinctTokenTest:test_InitialOwner() (gas: 12700)
119119
SuccinctTokenTest:test_Mint_WhenOwner() (gas: 60886)
120120
SuccinctTokenTest:test_RevertMint_WhenNotOwner() (gas: 10986)

contracts/src/SuccinctStaking.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ contract SuccinctStaking is
290290
if (balanceOf(_staker) == 0) {
291291
// Remove the staker's prover delegation.
292292
stakerToProver[_staker] = address(0);
293+
294+
emit ProverUnbound(_staker, prover);
293295
}
294296
}
295297

@@ -431,6 +433,8 @@ contract SuccinctStaking is
431433
// Set the prover as the staker's delegate.
432434
if (existingProver == address(0)) {
433435
stakerToProver[_staker] = _prover;
436+
437+
emit ProverBound(_staker, _prover);
434438
}
435439

436440
// Deposit $PROVE to mint $iPROVE, sending it to this contract.

contracts/src/interfaces/ISuccinctStaking.sol

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ interface ISuccinctStaking is IProverRegistry {
2424
uint256 timestamp;
2525
}
2626

27+
/// @dev Emitted when a staker first stakes to their delegated prover. This indicates that any
28+
/// additional stake from the staker can only be added to this prover, unless unbound.
29+
event ProverBound(address indexed staker, address indexed prover);
30+
31+
/// @dev Emitted when a staker fully unstakes from their delegated prover. This indicates that
32+
/// the staker can now stake to a different prover.
33+
event ProverUnbound(address indexed staker, address indexed prover);
34+
2735
/// @dev Emitted when a staker stakes into a prover.
2836
event Stake(
2937
address indexed staker,

contracts/test/SuccinctStaking.stake.t.sol

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,17 @@ contract SuccinctStakingStakeTests is SuccinctStakingTest {
2020
assertEq(IERC20(PROVE).balanceOf(I_PROVE), 0);
2121
assertEq(SuccinctStaking(STAKING).proverStaked(ALICE_PROVER), 0);
2222

23+
vm.prank(STAKER_1);
24+
IERC20(PROVE).approve(STAKING, stakeAmount);
25+
26+
vm.expectEmit(true, true, true, true);
27+
emit ISuccinctStaking.ProverBound(STAKER_1, ALICE_PROVER);
28+
vm.expectEmit(true, true, true, true);
29+
emit ISuccinctStaking.Stake(STAKER_1, ALICE_PROVER, stakeAmount, stakeAmount, stakeAmount);
30+
2331
// Stake to Alice prover.
24-
uint256 stPROVE = _stake(STAKER_1, ALICE_PROVER, stakeAmount);
32+
vm.prank(STAKER_1);
33+
uint256 stPROVE = SuccinctStaking(STAKING).stake(ALICE_PROVER, stakeAmount);
2534
assertEq(stPROVE, stakeAmount);
2635

2736
// Check balances

contracts/test/SuccinctStaking.unstake.t.sol

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ contract SuccinctStakingUnstakeTests is SuccinctStakingTest {
4242

4343
// Step 2: Wait for unstake period to pass and claim
4444
skip(UNSTAKE_PERIOD);
45+
46+
vm.expectEmit(true, true, true, true);
47+
emit ISuccinctStaking.Unstake(STAKER_1, ALICE_PROVER, stakeAmount, stakeAmount, stakeAmount);
48+
vm.expectEmit(true, true, true, true);
49+
emit ISuccinctStaking.ProverUnbound(STAKER_1, ALICE_PROVER);
50+
4551
_finishUnstake(STAKER_1);
4652

4753
// Verify final state

0 commit comments

Comments
 (0)