Skip to content

Commit f81d8ff

Browse files
committedMar 21, 2025
fix: limit allowed thawing period range in the subgraph service (OZ M-01)
Signed-off-by: Tomás Migone <tomas@edgeandnode.com>
1 parent 3447bd9 commit f81d8ff

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed
 

‎packages/subgraph-service/contracts/SubgraphService.sol

+5-3
Original file line numberDiff line numberDiff line change
@@ -431,12 +431,14 @@ contract SubgraphService is
431431
// -- Data service parameter getters --
432432
/**
433433
* @notice Getter for the accepted thawing period range for provisions
434+
* The accepted range is just the dispute period defined by {DisputeManager-getDisputePeriod}
434435
* @dev This override ensures {ProvisionManager} uses the thawing period from the {DisputeManager}
435-
* @return The minimum thawing period which is defined by {DisputeManager-getDisputePeriod}
436-
* @return The maximum is unbounded
436+
* @return The minimum thawing period - the dispute period
437+
* @return The maximum thawing period - the dispute period
437438
*/
438439
function _getThawingPeriodRange() internal view override returns (uint64, uint64) {
439-
return (_disputeManager().getDisputePeriod(), DEFAULT_MAX_THAWING_PERIOD);
440+
uint64 disputePeriod = _disputeManager().getDisputePeriod();
441+
return (disputePeriod, disputePeriod);
440442
}
441443

442444
/**

‎packages/subgraph-service/test/subgraphService/provision/accept.t.sol

+17-7
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,19 @@ contract SubgraphServiceProvisionAcceptTest is SubgraphServiceTest {
1717
uint256 tokens,
1818
uint32 newVerifierCut,
1919
uint64 newDisputePeriod
20-
) public useIndexer {
20+
) public {
2121
tokens = bound(tokens, minimumProvisionTokens, MAX_TOKENS);
2222
vm.assume(newVerifierCut >= fishermanRewardPercentage);
2323
vm.assume(newVerifierCut <= MAX_PPM);
24-
newDisputePeriod = uint64(bound(newDisputePeriod, disputePeriod, MAX_WAIT_PERIOD));
24+
newDisputePeriod = uint64(bound(newDisputePeriod, 1, MAX_WAIT_PERIOD));
25+
26+
// Set the dispute period to the new value
27+
resetPrank(users.governor);
28+
disputeManager.setDisputePeriod(newDisputePeriod);
2529

2630
// Setup indexer
27-
_createProvision(users.indexer, tokens, fishermanRewardPercentage, disputePeriod);
31+
resetPrank(users.indexer);
32+
_createProvision(users.indexer, tokens, fishermanRewardPercentage, newDisputePeriod);
2833
_register(users.indexer, abi.encode("url", "geoHash", address(0)));
2934

3035
// Update parameters with new values
@@ -38,14 +43,19 @@ contract SubgraphServiceProvisionAcceptTest is SubgraphServiceTest {
3843
uint256 tokens,
3944
uint32 newVerifierCut,
4045
uint64 newDisputePeriod
41-
) public useIndexer {
46+
) public {
4247
tokens = bound(tokens, minimumProvisionTokens, MAX_TOKENS);
4348
vm.assume(newVerifierCut >= fishermanRewardPercentage);
4449
vm.assume(newVerifierCut <= MAX_PPM);
45-
newDisputePeriod = uint64(bound(newDisputePeriod, disputePeriod, MAX_WAIT_PERIOD));
50+
newDisputePeriod = uint64(bound(newDisputePeriod, 1, MAX_WAIT_PERIOD));
51+
52+
// Set the dispute period to the new value
53+
resetPrank(users.governor);
54+
disputeManager.setDisputePeriod(newDisputePeriod);
4655

4756
// Setup indexer but dont register
48-
_createProvision(users.indexer, tokens, fishermanRewardPercentage, disputePeriod);
57+
resetPrank(users.indexer);
58+
_createProvision(users.indexer, tokens, fishermanRewardPercentage, newDisputePeriod);
4959

5060
// Update parameters with new values
5161
_setProvisionParameters(users.indexer, address(subgraphService), newVerifierCut, newDisputePeriod);
@@ -114,7 +124,7 @@ contract SubgraphServiceProvisionAcceptTest is SubgraphServiceTest {
114124
"thawingPeriod",
115125
newDisputePeriod,
116126
disputePeriod,
117-
type(uint64).max
127+
disputePeriod
118128
)
119129
);
120130
subgraphService.acceptProvisionPendingParameters(users.indexer, "");

0 commit comments

Comments
 (0)
Please sign in to comment.