From 98fd323abb4180aee7f3677ea17099f6e1b8d601 Mon Sep 17 00:00:00 2001 From: Andres Aiello Date: Thu, 18 Jan 2024 13:43:16 -0500 Subject: [PATCH 1/4] feat: Add events to disperse --- .../contracts/disperse/Disperse.sol | 12 ++++++++++-- packages/zevm-app-contracts/data/addresses.json | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/zevm-app-contracts/contracts/disperse/Disperse.sol b/packages/zevm-app-contracts/contracts/disperse/Disperse.sol index 2f1ae711..a20e7091 100644 --- a/packages/zevm-app-contracts/contracts/disperse/Disperse.sol +++ b/packages/zevm-app-contracts/contracts/disperse/Disperse.sol @@ -6,6 +6,8 @@ import "@openzeppelin/contracts/interfaces/IERC20.sol"; contract Disperse { bool private locked; + event disperse(address indexed token, address indexed recipient, uint256 value); + modifier noReentrancy() { require(!locked, "No reentrancy"); locked = true; @@ -19,6 +21,7 @@ contract Disperse { for (uint256 i = 0; i < recipients.length; i++) { (bool sent, ) = payable(recipients[i]).call{value: values[i]}(""); require(sent, "Failed to send Ether"); + emit disperse(address(0), recipients[i], values[i]); } uint256 balance = address(this).balance; @@ -36,7 +39,10 @@ contract Disperse { uint256 total = 0; for (uint256 i = 0; i < recipients.length; i++) total += values[i]; require(token.transferFrom(msg.sender, address(this), total)); - for (uint256 i = 0; i < recipients.length; i++) require(token.transfer(recipients[i], values[i])); + for (uint256 i = 0; i < recipients.length; i++) { + require(token.transfer(recipients[i], values[i])); + emit disperse(address(token), recipients[i], values[i]); + } } function disperseTokenSimple( @@ -44,7 +50,9 @@ contract Disperse { address[] calldata recipients, uint256[] calldata values ) external noReentrancy { - for (uint256 i = 0; i < recipients.length; i++) + for (uint256 i = 0; i < recipients.length; i++) { require(token.transferFrom(msg.sender, recipients[i], values[i])); + emit disperse(address(token), recipients[i], values[i]); + } } } diff --git a/packages/zevm-app-contracts/data/addresses.json b/packages/zevm-app-contracts/data/addresses.json index 08869c18..64dc6548 100644 --- a/packages/zevm-app-contracts/data/addresses.json +++ b/packages/zevm-app-contracts/data/addresses.json @@ -1,7 +1,7 @@ { "zevm": { "zeta_testnet": { - "disperse": "0x1E0F767F48Fb10FcF820703f116E9B0F87319d63", + "disperse": "0x110b79d085872831301f5485649864d8429bB8e2", "rewardDistributorFactory": "0x667e4C493d40015256BDC89E3ba750B2F90359E1", "zetaSwap": "0x44D1F1f9289DBA1Cf5824bd667184cEBE020aA1c", "zetaSwapBtcInbound": "0x008b393933D5CA2457Df570CA5D628380FFf6da4", From c56ec6920d603120b2632800441183a71c766412 Mon Sep 17 00:00:00 2001 From: Andres Aiello Date: Thu, 18 Jan 2024 13:46:30 -0500 Subject: [PATCH 2/4] rename --- .../zevm-app-contracts/contracts/disperse/Disperse.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/zevm-app-contracts/contracts/disperse/Disperse.sol b/packages/zevm-app-contracts/contracts/disperse/Disperse.sol index a20e7091..3406755c 100644 --- a/packages/zevm-app-contracts/contracts/disperse/Disperse.sol +++ b/packages/zevm-app-contracts/contracts/disperse/Disperse.sol @@ -6,7 +6,7 @@ import "@openzeppelin/contracts/interfaces/IERC20.sol"; contract Disperse { bool private locked; - event disperse(address indexed token, address indexed recipient, uint256 value); + event FundsDispersed(address indexed token, address indexed recipient, uint256 value); modifier noReentrancy() { require(!locked, "No reentrancy"); @@ -21,7 +21,7 @@ contract Disperse { for (uint256 i = 0; i < recipients.length; i++) { (bool sent, ) = payable(recipients[i]).call{value: values[i]}(""); require(sent, "Failed to send Ether"); - emit disperse(address(0), recipients[i], values[i]); + emit FundsDispersed(address(0), recipients[i], values[i]); } uint256 balance = address(this).balance; @@ -41,7 +41,7 @@ contract Disperse { require(token.transferFrom(msg.sender, address(this), total)); for (uint256 i = 0; i < recipients.length; i++) { require(token.transfer(recipients[i], values[i])); - emit disperse(address(token), recipients[i], values[i]); + emit FundsDispersed(address(token), recipients[i], values[i]); } } @@ -52,7 +52,7 @@ contract Disperse { ) external noReentrancy { for (uint256 i = 0; i < recipients.length; i++) { require(token.transferFrom(msg.sender, recipients[i], values[i])); - emit disperse(address(token), recipients[i], values[i]); + emit FundsDispersed(address(token), recipients[i], values[i]); } } } From 6d1bf494eade288ae0b503e33ae0a017b298bd33 Mon Sep 17 00:00:00 2001 From: Andres Aiello Date: Thu, 18 Jan 2024 13:46:55 -0500 Subject: [PATCH 3/4] deploy --- packages/zevm-app-contracts/data/addresses.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/zevm-app-contracts/data/addresses.json b/packages/zevm-app-contracts/data/addresses.json index 64dc6548..f837d8ef 100644 --- a/packages/zevm-app-contracts/data/addresses.json +++ b/packages/zevm-app-contracts/data/addresses.json @@ -1,7 +1,7 @@ { "zevm": { "zeta_testnet": { - "disperse": "0x110b79d085872831301f5485649864d8429bB8e2", + "disperse": "0x8F0e6DdEdc755771a35eFA724304fcEFC8071745", "rewardDistributorFactory": "0x667e4C493d40015256BDC89E3ba750B2F90359E1", "zetaSwap": "0x44D1F1f9289DBA1Cf5824bd667184cEBE020aA1c", "zetaSwapBtcInbound": "0x008b393933D5CA2457Df570CA5D628380FFf6da4", From 06d986578c0af77698fa5e4d7429704fbafb2005 Mon Sep 17 00:00:00 2001 From: Andres Aiello Date: Thu, 18 Jan 2024 14:23:43 -0500 Subject: [PATCH 4/4] add from to event --- .../zevm-app-contracts/contracts/disperse/Disperse.sol | 8 ++++---- packages/zevm-app-contracts/data/addresses.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/zevm-app-contracts/contracts/disperse/Disperse.sol b/packages/zevm-app-contracts/contracts/disperse/Disperse.sol index 3406755c..21efac64 100644 --- a/packages/zevm-app-contracts/contracts/disperse/Disperse.sol +++ b/packages/zevm-app-contracts/contracts/disperse/Disperse.sol @@ -6,7 +6,7 @@ import "@openzeppelin/contracts/interfaces/IERC20.sol"; contract Disperse { bool private locked; - event FundsDispersed(address indexed token, address indexed recipient, uint256 value); + event FundsDispersed(address indexed token, address indexed from, address indexed recipient, uint256 value); modifier noReentrancy() { require(!locked, "No reentrancy"); @@ -21,7 +21,7 @@ contract Disperse { for (uint256 i = 0; i < recipients.length; i++) { (bool sent, ) = payable(recipients[i]).call{value: values[i]}(""); require(sent, "Failed to send Ether"); - emit FundsDispersed(address(0), recipients[i], values[i]); + emit FundsDispersed(address(0), msg.sender, recipients[i], values[i]); } uint256 balance = address(this).balance; @@ -41,7 +41,7 @@ contract Disperse { require(token.transferFrom(msg.sender, address(this), total)); for (uint256 i = 0; i < recipients.length; i++) { require(token.transfer(recipients[i], values[i])); - emit FundsDispersed(address(token), recipients[i], values[i]); + emit FundsDispersed(address(token), msg.sender, recipients[i], values[i]); } } @@ -52,7 +52,7 @@ contract Disperse { ) external noReentrancy { for (uint256 i = 0; i < recipients.length; i++) { require(token.transferFrom(msg.sender, recipients[i], values[i])); - emit FundsDispersed(address(token), recipients[i], values[i]); + emit FundsDispersed(address(token), msg.sender, recipients[i], values[i]); } } } diff --git a/packages/zevm-app-contracts/data/addresses.json b/packages/zevm-app-contracts/data/addresses.json index f837d8ef..e040ed8f 100644 --- a/packages/zevm-app-contracts/data/addresses.json +++ b/packages/zevm-app-contracts/data/addresses.json @@ -1,7 +1,7 @@ { "zevm": { "zeta_testnet": { - "disperse": "0x8F0e6DdEdc755771a35eFA724304fcEFC8071745", + "disperse": "0xf394dc01879E39f19eDA533EFD10C82eEee5B2b1", "rewardDistributorFactory": "0x667e4C493d40015256BDC89E3ba750B2F90359E1", "zetaSwap": "0x44D1F1f9289DBA1Cf5824bd667184cEBE020aA1c", "zetaSwapBtcInbound": "0x008b393933D5CA2457Df570CA5D628380FFf6da4",