From aa27c54a1b176b17a2334b40582645bb4860ed61 Mon Sep 17 00:00:00 2001 From: MoonBoi9001 Date: Mon, 30 Sep 2024 17:56:02 +0100 Subject: [PATCH 1/4] fix: emit amount authorized + rescuded token in AuthorizedCollector/TokensRescued respectively. --- .../contracts/data-service/extensions/DataServiceRescuable.sol | 2 +- .../data-service/interfaces/IDataServiceRescuable.sol | 2 +- packages/horizon/contracts/interfaces/IPaymentsEscrow.sol | 3 ++- packages/horizon/contracts/payments/PaymentsEscrow.sol | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/horizon/contracts/data-service/extensions/DataServiceRescuable.sol b/packages/horizon/contracts/data-service/extensions/DataServiceRescuable.sol index 081950b8d..0d2f0750d 100644 --- a/packages/horizon/contracts/data-service/extensions/DataServiceRescuable.sol +++ b/packages/horizon/contracts/data-service/extensions/DataServiceRescuable.sol @@ -70,6 +70,6 @@ abstract contract DataServiceRescuable is DataService, IDataServiceRescuable { if (Denominations.isNativeToken(_token)) Address.sendValue(payable(_to), _tokens); else SafeERC20.safeTransfer(IERC20(_token), _to, _tokens); - emit TokensRescued(msg.sender, _to, _tokens); + emit TokensRescued(msg.sender, _to, _token, _tokens); } } diff --git a/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol b/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol index 811d3b92e..07e97ee8c 100644 --- a/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol +++ b/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol @@ -12,7 +12,7 @@ interface IDataServiceRescuable is IDataService { /** * @notice Emitted when tokens are rescued from the contract. */ - event TokensRescued(address indexed from, address indexed to, uint256 tokens); + event TokensRescued(address indexed from, address indexed to, address token, uint256 tokens); /** * @notice Emitted when a rescuer is set. diff --git a/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol b/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol index 4b98cf0a5..40394900f 100644 --- a/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol +++ b/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol @@ -38,8 +38,9 @@ interface IPaymentsEscrow { * @notice Emitted when a payer authorizes a collector to collect funds * @param payer The address of the payer * @param collector The address of the collector + * @param allowance The number of tokens the collector is allowed to collect */ - event AuthorizedCollector(address indexed payer, address indexed collector); + event AuthorizedCollector(address indexed payer, address indexed collector, uint256 allowance); /** * @notice Emitted when a payer thaws a collector diff --git a/packages/horizon/contracts/payments/PaymentsEscrow.sol b/packages/horizon/contracts/payments/PaymentsEscrow.sol index 5d0694346..4b76e2bc6 100644 --- a/packages/horizon/contracts/payments/PaymentsEscrow.sol +++ b/packages/horizon/contracts/payments/PaymentsEscrow.sol @@ -82,7 +82,7 @@ contract PaymentsEscrow is Initializable, MulticallUpgradeable, GraphDirectory, require(allowance != 0, PaymentsEscrowInvalidZeroTokens()); Collector storage collector = authorizedCollectors[msg.sender][collector_]; collector.allowance += allowance; - emit AuthorizedCollector(msg.sender, collector_); + emit AuthorizedCollector(msg.sender, collector_, collector.allowance); } /** From 96b5c3c1eef410fec4dbc6e3ef673fdae267b7d5 Mon Sep 17 00:00:00 2001 From: MoonBoi9001 Date: Mon, 30 Sep 2024 18:32:18 +0100 Subject: [PATCH 2/4] fix: emit both amount authorized and total authorized commit to now emit both the amount for which the collector was authorized and also the total amount for which they are now authorized --- .../data-service/interfaces/IDataServiceRescuable.sol | 4 ++++ .../horizon/contracts/interfaces/IPaymentsEscrow.sol | 10 ++++++++-- packages/horizon/contracts/payments/PaymentsEscrow.sol | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol b/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol index 07e97ee8c..67026f2d4 100644 --- a/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol +++ b/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol @@ -11,6 +11,10 @@ import { IDataService } from "./IDataService.sol"; interface IDataServiceRescuable is IDataService { /** * @notice Emitted when tokens are rescued from the contract. + * @param from The address initiating the rescue + * @param to The address receiving the rescued tokens + * @param token The address of the token being rescued + * @param tokens The amount of tokens rescued */ event TokensRescued(address indexed from, address indexed to, address token, uint256 tokens); diff --git a/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol b/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol index 40394900f..cae2558e7 100644 --- a/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol +++ b/packages/horizon/contracts/interfaces/IPaymentsEscrow.sol @@ -38,9 +38,15 @@ interface IPaymentsEscrow { * @notice Emitted when a payer authorizes a collector to collect funds * @param payer The address of the payer * @param collector The address of the collector - * @param allowance The number of tokens the collector is allowed to collect + * @param addedAllowance The amount of tokens added to the collector's allowance + * @param newTotalAllowance The new total allowance after addition */ - event AuthorizedCollector(address indexed payer, address indexed collector, uint256 allowance); + event AuthorizedCollector( + address indexed payer, + address indexed collector, + uint256 addedAllowance, + uint256 newTotalAllowance + ); /** * @notice Emitted when a payer thaws a collector diff --git a/packages/horizon/contracts/payments/PaymentsEscrow.sol b/packages/horizon/contracts/payments/PaymentsEscrow.sol index 4b76e2bc6..0c775cd47 100644 --- a/packages/horizon/contracts/payments/PaymentsEscrow.sol +++ b/packages/horizon/contracts/payments/PaymentsEscrow.sol @@ -82,7 +82,7 @@ contract PaymentsEscrow is Initializable, MulticallUpgradeable, GraphDirectory, require(allowance != 0, PaymentsEscrowInvalidZeroTokens()); Collector storage collector = authorizedCollectors[msg.sender][collector_]; collector.allowance += allowance; - emit AuthorizedCollector(msg.sender, collector_, collector.allowance); + emit AuthorizedCollector(msg.sender, collector_, allowance, collector.allowance); } /** From dcbcf7e5d001aa54c52575c3c5b6537ced6bec4e Mon Sep 17 00:00:00 2001 From: MoonBoi9001 Date: Wed, 2 Oct 2024 19:11:55 +0100 Subject: [PATCH 3/4] fix: fix broken test --- packages/horizon/test/escrow/collector.t.sol | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/horizon/test/escrow/collector.t.sol b/packages/horizon/test/escrow/collector.t.sol index 3e5b71bc0..ed5c05384 100644 --- a/packages/horizon/test/escrow/collector.t.sol +++ b/packages/horizon/test/escrow/collector.t.sol @@ -16,7 +16,12 @@ contract GraphEscrowCollectorTest is GraphEscrowTest { function _approveCollector(uint256 tokens) internal { (uint256 beforeAllowance,) = escrow.authorizedCollectors(users.gateway, users.verifier); vm.expectEmit(address(escrow)); - emit IPaymentsEscrow.AuthorizedCollector(users.gateway, users.verifier); + emit IPaymentsEscrow.AuthorizedCollector( + users.gateway, // payer + users.verifier, // collector + tokens, // addedAllowance + beforeAllowance + tokens // newTotalAllowance after the added allowance + ); escrow.approveCollector(users.verifier, tokens); (uint256 allowance, uint256 thawEndTimestamp) = escrow.authorizedCollectors(users.gateway, users.verifier); assertEq(allowance - beforeAllowance, tokens); From d459928cd7d05c3b1cf6aaa04905ddc76c8d6180 Mon Sep 17 00:00:00 2001 From: MoonBoi9001 <67825802+MoonBoi9001@users.noreply.github.com> Date: Wed, 2 Oct 2024 19:23:43 +0100 Subject: [PATCH 4/4] Update packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tomás Migone --- .../contracts/data-service/interfaces/IDataServiceRescuable.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol b/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol index 67026f2d4..0c5b2c8f6 100644 --- a/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol +++ b/packages/horizon/contracts/data-service/interfaces/IDataServiceRescuable.sol @@ -16,7 +16,7 @@ interface IDataServiceRescuable is IDataService { * @param token The address of the token being rescued * @param tokens The amount of tokens rescued */ - event TokensRescued(address indexed from, address indexed to, address token, uint256 tokens); + event TokensRescued(address indexed from, address indexed to, address indexed token, uint256 tokens); /** * @notice Emitted when a rescuer is set.