Skip to content

Commit 09a6fa8

Browse files
committed
chore: add paymentId to TAPCollector tokens tracking
1 parent 8f922a1 commit 09a6fa8

File tree

5 files changed

+194
-109
lines changed

5 files changed

+194
-109
lines changed

packages/horizon/contracts/interfaces/IPaymentsCollector.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ interface IPaymentsCollector {
2323
* @param tokens The amount of tokens being collected
2424
*/
2525
event PaymentCollected(
26-
IGraphPayments.PaymentTypes indexed paymentType,
26+
IGraphPayments.PaymentTypes paymentType,
27+
address indexed paymentId,
2728
address indexed payer,
2829
address receiver,
2930
address indexed dataService,

packages/horizon/contracts/interfaces/ITAPCollector.sol

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ interface ITAPCollector is IPaymentsCollector {
2525

2626
/// @notice The Receipt Aggregate Voucher (RAV) struct
2727
struct ReceiptAggregateVoucher {
28+
// The ID of the payment
29+
address paymentId;
2830
// The address of the payer the RAV was issued by
2931
address payer;
3032
// The address of the data service the RAV was issued to

packages/horizon/contracts/payments/collectors/TAPCollector.sol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
3636
mapping(address signer => PayerAuthorization authorizedSigner) public authorizedSigners;
3737

3838
/// @notice Tracks the amount of tokens already collected by a data service from a payer to a receiver
39-
mapping(address dataService => mapping(address receiver => mapping(address payer => uint256 tokens)))
39+
mapping(address dataService => mapping(address paymentId => mapping(address receiver => mapping(address payer => uint256 tokens))))
4040
public tokensCollected;
4141

4242
/// @notice The duration (in seconds) in which a signer is thawing before they can be revoked
@@ -182,6 +182,7 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
182182
address payer = authorizedSigners[signer].payer;
183183
require(signedRAV.rav.payer == payer, TAPCollectorInvalidRAVPayer(payer, signedRAV.rav.payer));
184184

185+
address paymentId = signedRAV.rav.paymentId;
185186
address dataService = signedRAV.rav.dataService;
186187
address receiver = signedRAV.rav.serviceProvider;
187188

@@ -199,7 +200,7 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
199200
uint256 tokensToCollect = 0;
200201
{
201202
uint256 tokensRAV = signedRAV.rav.valueAggregate;
202-
uint256 tokensAlreadyCollected = tokensCollected[dataService][receiver][payer];
203+
uint256 tokensAlreadyCollected = tokensCollected[dataService][paymentId][receiver][payer];
203204
require(
204205
tokensRAV > tokensAlreadyCollected,
205206
TAPCollectorInconsistentRAVTokens(tokensRAV, tokensAlreadyCollected)
@@ -217,11 +218,11 @@ contract TAPCollector is EIP712, GraphDirectory, ITAPCollector {
217218
}
218219

219220
if (tokensToCollect > 0) {
220-
tokensCollected[dataService][receiver][payer] += tokensToCollect;
221+
tokensCollected[dataService][paymentId][receiver][payer] += tokensToCollect;
221222
_graphPaymentsEscrow().collect(_paymentType, payer, receiver, tokensToCollect, dataService, dataServiceCut);
222223
}
223224

224-
emit PaymentCollected(_paymentType, payer, receiver, dataService, tokensToCollect);
225+
emit PaymentCollected(_paymentType, paymentId, payer, receiver, dataService, tokensToCollect);
225226
emit RAVCollected(
226227
payer,
227228
dataService,

packages/horizon/test/payments/tap-collector/TAPCollector.t.sol

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ contract TAPCollectorTest is HorizonStakingSharedTest, PaymentsEscrowSharedTest
142142
(address _payer, , ) = tapCollector.authorizedSigners(_signer);
143143
uint256 tokensAlreadyCollected = tapCollector.tokensCollected(
144144
signedRAV.rav.dataService,
145+
signedRAV.rav.paymentId,
145146
signedRAV.rav.serviceProvider,
146147
_payer
147148
);
@@ -152,6 +153,7 @@ contract TAPCollectorTest is HorizonStakingSharedTest, PaymentsEscrowSharedTest
152153
vm.expectEmit(address(tapCollector));
153154
emit IPaymentsCollector.PaymentCollected(
154155
_paymentType,
156+
signedRAV.rav.paymentId,
155157
_payer,
156158
signedRAV.rav.serviceProvider,
157159
signedRAV.rav.dataService,
@@ -173,6 +175,7 @@ contract TAPCollectorTest is HorizonStakingSharedTest, PaymentsEscrowSharedTest
173175

174176
uint256 tokensCollectedAfter = tapCollector.tokensCollected(
175177
signedRAV.rav.dataService,
178+
signedRAV.rav.paymentId,
176179
signedRAV.rav.serviceProvider,
177180
_payer
178181
);

0 commit comments

Comments
 (0)