@@ -35,8 +35,10 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
35
35
/// @notice Authorization details for payer-signer pairs
36
36
mapping (address signer = > PayerAuthorization authorizedSigner ) public authorizedSigners;
37
37
38
- /// @notice Tracks the amount of tokens already collected by a data service from a payer to a receiver
39
- mapping (address dataService = > mapping (bytes32 collectorId = > mapping (address receiver = > mapping (address payer = > uint256 tokens ))))
38
+ /// @notice Tracks the amount of tokens already collected by a data service from a payer to a receiver.
39
+ /// @dev The collectionId provides a secondary key for grouping payment tracking if needed. Data services that do not require
40
+ /// grouping can use the same collectionId for all payments (0x00 or some other default value).
41
+ mapping (address dataService = > mapping (bytes32 collectionId = > mapping (address receiver = > mapping (address payer = > uint256 tokens ))))
40
42
public tokensCollected;
41
43
42
44
/// @notice The duration (in seconds) in which a signer is thawing before they can be revoked
@@ -182,7 +184,7 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
182
184
address payer = authorizedSigners[signer].payer;
183
185
require (signedRAV.rav.payer == payer, TAPCollectorInvalidRAVPayer (payer, signedRAV.rav.payer));
184
186
185
- bytes32 collectorId = signedRAV.rav.collectorId ;
187
+ bytes32 collectionId = signedRAV.rav.collectionId ;
186
188
address dataService = signedRAV.rav.dataService;
187
189
address receiver = signedRAV.rav.serviceProvider;
188
190
@@ -200,7 +202,7 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
200
202
uint256 tokensToCollect = 0 ;
201
203
{
202
204
uint256 tokensRAV = signedRAV.rav.valueAggregate;
203
- uint256 tokensAlreadyCollected = tokensCollected[dataService][collectorId ][receiver][payer];
205
+ uint256 tokensAlreadyCollected = tokensCollected[dataService][collectionId ][receiver][payer];
204
206
require (
205
207
tokensRAV > tokensAlreadyCollected,
206
208
TAPCollectorInconsistentRAVTokens (tokensRAV, tokensAlreadyCollected)
@@ -218,20 +220,24 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
218
220
}
219
221
220
222
if (tokensToCollect > 0 ) {
221
- tokensCollected[dataService][collectorId ][receiver][payer] += tokensToCollect;
223
+ tokensCollected[dataService][collectionId ][receiver][payer] += tokensToCollect;
222
224
_graphPaymentsEscrow ().collect (_paymentType, payer, receiver, tokensToCollect, dataService, dataServiceCut);
223
225
}
224
226
225
- emit PaymentCollected (_paymentType, collectorId, payer, receiver, dataService, tokensToCollect);
227
+ emit PaymentCollected (_paymentType, collectionId, payer, receiver, dataService, tokensToCollect);
228
+
229
+ // This event is emitted to allow reconstructing RAV history with onchain data.
226
230
emit RAVCollected (
231
+ collectionId,
227
232
payer,
228
- dataService,
229
233
receiver,
234
+ dataService,
230
235
signedRAV.rav.timestampNs,
231
236
signedRAV.rav.valueAggregate,
232
237
signedRAV.rav.metadata,
233
238
signedRAV.signature
234
239
);
240
+
235
241
return tokensToCollect;
236
242
}
237
243
0 commit comments