@@ -5,6 +5,7 @@ import { IDataServiceFees } from "../interfaces/IDataServiceFees.sol";
5
5
6
6
import { ProvisionTracker } from "../libraries/ProvisionTracker.sol " ;
7
7
import { LinkedList } from "../../libraries/LinkedList.sol " ;
8
+ import { StakeClaims } from "../libraries/StakeClaims.sol " ;
8
9
9
10
import { DataService } from "../DataService.sol " ;
10
11
import { DataServiceFeesV1Storage } from "./DataServiceFeesStorage.sol " ;
@@ -41,23 +42,17 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
41
42
* @param _unlockTimestamp The timestamp when the tokens can be released
42
43
*/
43
44
function _lockStake (address _serviceProvider , uint256 _tokens , uint256 _unlockTimestamp ) internal {
44
- require (_tokens != 0 , DataServiceFeesZeroTokens ());
45
- feesProvisionTracker.lock (_graphStaking (), _serviceProvider, _tokens, _delegationRatio);
46
-
47
- LinkedList.List storage claimsList = claimsLists[_serviceProvider];
48
-
49
- // Save item and add to list
50
- bytes32 claimId = _buildStakeClaimId (_serviceProvider, claimsList.nonce);
51
- claims[claimId] = StakeClaim ({
52
- tokens: _tokens,
53
- createdAt: block .timestamp ,
54
- releasableAt: _unlockTimestamp,
55
- nextClaim: bytes32 (0 )
56
- });
57
- if (claimsList.count != 0 ) claims[claimsList.tail].nextClaim = claimId;
58
- claimsList.addTail (claimId);
59
-
60
- emit StakeClaimLocked (_serviceProvider, claimId, _tokens, _unlockTimestamp);
45
+ StakeClaims.lockStake (
46
+ feesProvisionTracker,
47
+ claims,
48
+ claimsLists,
49
+ _graphStaking (),
50
+ address (this ),
51
+ _delegationRatio,
52
+ _serviceProvider,
53
+ _tokens,
54
+ _unlockTimestamp
55
+ );
61
56
}
62
57
63
58
/**
@@ -80,7 +75,7 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
80
75
_numClaimsToRelease
81
76
);
82
77
83
- emit StakeClaimsReleased (_serviceProvider, claimsReleased, abi.decode (data, (uint256 )));
78
+ emit StakeClaims. StakeClaimsReleased (_serviceProvider, claimsReleased, abi.decode (data, (uint256 )));
84
79
}
85
80
86
81
/**
@@ -92,23 +87,7 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
92
87
* @return The updated accumulator data
93
88
*/
94
89
function _processStakeClaim (bytes32 _claimId , bytes memory _acc ) private returns (bool , bytes memory ) {
95
- StakeClaim memory claim = _getStakeClaim (_claimId);
96
-
97
- // early exit
98
- if (claim.releasableAt > block .timestamp ) {
99
- return (true , LinkedList.NULL_BYTES);
100
- }
101
-
102
- // decode
103
- (uint256 tokensClaimed , address serviceProvider ) = abi.decode (_acc, (uint256 , address ));
104
-
105
- // process
106
- feesProvisionTracker.release (serviceProvider, claim.tokens);
107
- emit StakeClaimReleased (serviceProvider, _claimId, claim.tokens, claim.releasableAt);
108
-
109
- // encode
110
- _acc = abi.encode (tokensClaimed + claim.tokens, serviceProvider);
111
- return (false , _acc);
90
+ return StakeClaims.processStakeClaim (feesProvisionTracker, claims, _claimId, _acc);
112
91
}
113
92
114
93
/**
@@ -117,18 +96,7 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
117
96
* @param _claimId The ID of the stake claim to delete
118
97
*/
119
98
function _deleteStakeClaim (bytes32 _claimId ) private {
120
- delete claims[_claimId];
121
- }
122
-
123
- /**
124
- * @notice Gets the details of a stake claim
125
- * @param _claimId The ID of the stake claim
126
- * @return The stake claim details
127
- */
128
- function _getStakeClaim (bytes32 _claimId ) private view returns (StakeClaim memory ) {
129
- StakeClaim memory claim = claims[_claimId];
130
- require (claim.createdAt != 0 , DataServiceFeesClaimNotFound (_claimId));
131
- return claim;
99
+ StakeClaims.deleteStakeClaim (claims, _claimId);
132
100
}
133
101
134
102
/**
@@ -138,16 +106,6 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
138
106
* @return The next stake claim ID
139
107
*/
140
108
function _getNextStakeClaim (bytes32 _claimId ) private view returns (bytes32 ) {
141
- return claims[_claimId].nextClaim;
142
- }
143
-
144
- /**
145
- * @notice Builds a stake claim ID
146
- * @param _serviceProvider The address of the service provider
147
- * @param _nonce A nonce of the stake claim
148
- * @return The stake claim ID
149
- */
150
- function _buildStakeClaimId (address _serviceProvider , uint256 _nonce ) private view returns (bytes32 ) {
151
- return keccak256 (abi.encodePacked (address (this ), _serviceProvider, _nonce));
109
+ return StakeClaims.getNextStakeClaim (claims, _claimId);
152
110
}
153
111
}
0 commit comments