From 22ce4b6cf1b900d8f87c400d1c4c28000621e914 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Wed, 6 Nov 2024 00:24:09 -0500 Subject: [PATCH 01/10] evm: Add `sourceChain` to `MessageAttestedTo` and `TransferRedeemed` events --- evm/src/interfaces/IManagerBase.sol | 7 ++++--- evm/src/interfaces/INttManager.sol | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/evm/src/interfaces/IManagerBase.sol b/evm/src/interfaces/IManagerBase.sol index c4d1d565f..26df03902 100644 --- a/evm/src/interfaces/IManagerBase.sol +++ b/evm/src/interfaces/IManagerBase.sol @@ -32,12 +32,13 @@ interface IManagerBase { } /// @notice Emitted when a message has been attested to. - /// @dev Topic0 - /// 0x35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e5. + /// @dev + /// + /// @param sourceChain The source chain. /// @param digest The digest of the message. /// @param transceiver The address of the transceiver. /// @param index The index of the transceiver in the bitmap. - event MessageAttestedTo(bytes32 digest, address transceiver, uint8 index); + event MessageAttestedTo(uint16 indexed sourceChain, bytes32 digest, address transceiver, uint8 index); /// @notice Emmitted when the threshold required transceivers is changed. /// @dev Topic0 diff --git a/evm/src/interfaces/INttManager.sol b/evm/src/interfaces/INttManager.sol index 3ace687fe..8dd043df7 100644 --- a/evm/src/interfaces/INttManager.sol +++ b/evm/src/interfaces/INttManager.sol @@ -56,10 +56,11 @@ interface INttManager is IManagerBase { /// @notice Emitted when a transfer has been redeemed /// (either minted or unlocked on the recipient chain). - /// @dev Topic0 - /// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. + /// @dev + /// + /// @param sourceChain The source chain. /// @param digest The digest of the message. - event TransferRedeemed(bytes32 indexed digest); + event TransferRedeemed(uint16 indexed sourceChain, bytes32 indexed digest); /// @notice Emitted when an outbound transfer has been cancelled /// @dev Topic0 From 188aaddbc2b005a3df59611d6250d4aca0953a74 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Wed, 6 Nov 2024 12:13:24 -0500 Subject: [PATCH 02/10] evm: Updated topic hashes for `TransferRedeemed` and `MessageAttestedTo` events --- evm/src/interfaces/IManagerBase.sol | 4 ++-- evm/src/interfaces/INttManager.sol | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/evm/src/interfaces/IManagerBase.sol b/evm/src/interfaces/IManagerBase.sol index 26df03902..97f138a6f 100644 --- a/evm/src/interfaces/IManagerBase.sol +++ b/evm/src/interfaces/IManagerBase.sol @@ -32,8 +32,8 @@ interface IManagerBase { } /// @notice Emitted when a message has been attested to. - /// @dev - /// + /// @dev Topic0 + /// 0xf1ec44311dd9bf51a389c38e415716ad070edf9e303ea55ed7ae11472a5f031d. /// @param sourceChain The source chain. /// @param digest The digest of the message. /// @param transceiver The address of the transceiver. diff --git a/evm/src/interfaces/INttManager.sol b/evm/src/interfaces/INttManager.sol index 8dd043df7..ef692c13f 100644 --- a/evm/src/interfaces/INttManager.sol +++ b/evm/src/interfaces/INttManager.sol @@ -56,8 +56,8 @@ interface INttManager is IManagerBase { /// @notice Emitted when a transfer has been redeemed /// (either minted or unlocked on the recipient chain). - /// @dev - /// + /// @dev Topic0 + /// 0x822760cb8aef838664db98515460929d89d5799b7546e9269dffdc09e2cbb995. /// @param sourceChain The source chain. /// @param digest The digest of the message. event TransferRedeemed(uint16 indexed sourceChain, bytes32 indexed digest); From 50d4de306a39654f8b4280b620ee0be71b7c83d6 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Mon, 2 Dec 2024 20:07:44 -0500 Subject: [PATCH 03/10] evm: Pass `chainId` along to `MessageAttestedTo` event --- evm/src/NttManager/ManagerBase.sol | 2 +- evm/src/interfaces/IManagerBase.sol | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/evm/src/NttManager/ManagerBase.sol b/evm/src/NttManager/ManagerBase.sol index 8a336fccc..e3ec7bef6 100644 --- a/evm/src/NttManager/ManagerBase.sol +++ b/evm/src/NttManager/ManagerBase.sol @@ -423,7 +423,7 @@ abstract contract ManagerBase is _setTransceiverAttestedToMessage(digest, _getTransceiverInfosStorage()[transceiver].index); emit MessageAttestedTo( - digest, transceiver, _getTransceiverInfosStorage()[transceiver].index + chainId, digest, transceiver, _getTransceiverInfosStorage()[transceiver].index ); } diff --git a/evm/src/interfaces/IManagerBase.sol b/evm/src/interfaces/IManagerBase.sol index 97f138a6f..ec1e5bf83 100644 --- a/evm/src/interfaces/IManagerBase.sol +++ b/evm/src/interfaces/IManagerBase.sol @@ -38,7 +38,9 @@ interface IManagerBase { /// @param digest The digest of the message. /// @param transceiver The address of the transceiver. /// @param index The index of the transceiver in the bitmap. - event MessageAttestedTo(uint16 indexed sourceChain, bytes32 digest, address transceiver, uint8 index); + event MessageAttestedTo( + uint16 indexed sourceChain, bytes32 digest, address transceiver, uint8 index + ); /// @notice Emmitted when the threshold required transceivers is changed. /// @dev Topic0 From 62ec8096c660d4406cd55000662b4c0808a67d16 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Mon, 2 Dec 2024 20:11:02 -0500 Subject: [PATCH 04/10] evm: Propogate sourceChainId to `TransferRedeemed` event --- evm/src/NttManager/NttManager.sol | 24 +++++++++++++++++++----- evm/src/interfaces/IRateLimiter.sol | 4 ++++ evm/src/libraries/RateLimiter.sol | 4 ++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/evm/src/NttManager/NttManager.sol b/evm/src/NttManager/NttManager.sol index 7ac021b91..8ca575999 100644 --- a/evm/src/NttManager/NttManager.sol +++ b/evm/src/NttManager/NttManager.sol @@ -256,7 +256,9 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { sourceChainId, sourceNttManagerAddress, message.id, message.sender, nativeTokenTransfer ); - _mintOrUnlockToRecipient(digest, transferRecipient, nativeTransferAmount, false); + _mintOrUnlockToRecipient( + sourceChainId, digest, transferRecipient, nativeTransferAmount, false + ); } /// @dev Override this function to process an additional payload on the NativeTokenTransfer @@ -284,7 +286,7 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { bool isRateLimited = _isInboundAmountRateLimited(nativeTransferAmount, sourceChainId); if (isRateLimited) { // queue up the transfer - _enqueueInboundTransfer(digest, nativeTransferAmount, transferRecipient); + _enqueueInboundTransfer(sourceChainId, digest, nativeTransferAmount, transferRecipient); // end execution early return true; @@ -317,7 +319,13 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { delete _getInboundQueueStorage()[digest]; // run it through the mint/unlock logic - _mintOrUnlockToRecipient(digest, queuedTransfer.recipient, queuedTransfer.amount, false); + _mintOrUnlockToRecipient( + queuedTransfer.sourceChain, + digest, + queuedTransfer.recipient, + queuedTransfer.amount, + false + ); } /// @inheritdoc INttManager @@ -370,7 +378,11 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { // return the queued funds to the sender _mintOrUnlockToRecipient( - bytes32(uint256(messageSequence)), msg.sender, queuedTransfer.amount, true + queuedTransfer.sourceChain, + bytes32(uint256(messageSequence)), + msg.sender, + queuedTransfer.amount, + true ); } @@ -494,6 +506,7 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { // queue up and return _enqueueOutboundTransfer( + chainId, sequence, trimmedAmount, recipientChain, @@ -611,6 +624,7 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { } function _mintOrUnlockToRecipient( + uint16 sourceChain, bytes32 digest, address recipient, TrimmedAmount amount, @@ -626,7 +640,7 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { if (cancelled) { emit OutboundTransferCancelled(uint256(digest), recipient, untrimmedAmount); } else { - emit TransferRedeemed(digest); + emit TransferRedeemed(sourceChain, digest); } if (mode == Mode.LOCKING) { diff --git a/evm/src/interfaces/IRateLimiter.sol b/evm/src/interfaces/IRateLimiter.sol index 05aec9751..31741ed99 100644 --- a/evm/src/interfaces/IRateLimiter.sol +++ b/evm/src/interfaces/IRateLimiter.sol @@ -57,6 +57,7 @@ interface IRateLimiter { /// @notice Parameters for an outbound queued transfer. /// @dev + /// - sourceChain: the chain of the sender. /// - recipient: the recipient of the transfer. /// - amount: the amount of the transfer, trimmed. /// - txTimestamp: the timestamp of the transfer. @@ -64,6 +65,7 @@ interface IRateLimiter { /// - sender: the sender of the transfer. /// - transceiverInstructions: additional instructions to be forwarded to the recipient chain. struct OutboundQueuedTransfer { + uint16 sourceChain; bytes32 recipient; bytes32 refundAddress; TrimmedAmount amount; @@ -75,10 +77,12 @@ interface IRateLimiter { /// @notice Parameters for an inbound queued transfer. /// @dev + /// - sourceChain: the chain of the sender. /// - amount: the amount of the transfer, trimmed. /// - txTimestamp: the timestamp of the transfer. /// - recipient: the recipient of the transfer. struct InboundQueuedTransfer { + uint16 sourceChain; TrimmedAmount amount; uint64 txTimestamp; address recipient; diff --git a/evm/src/libraries/RateLimiter.sol b/evm/src/libraries/RateLimiter.sol index 877c86ee1..3fbcbe42e 100644 --- a/evm/src/libraries/RateLimiter.sol +++ b/evm/src/libraries/RateLimiter.sol @@ -296,6 +296,7 @@ abstract contract RateLimiter is IRateLimiter, IRateLimiterEvents { } function _enqueueOutboundTransfer( + uint16 sourceChain, uint64 sequence, TrimmedAmount amount, uint16 recipientChain, @@ -305,6 +306,7 @@ abstract contract RateLimiter is IRateLimiter, IRateLimiterEvents { bytes memory transceiverInstructions ) internal { _getOutboundQueueStorage()[sequence] = OutboundQueuedTransfer({ + sourceChain: sourceChain, amount: amount, recipientChain: recipientChain, recipient: recipient, @@ -318,11 +320,13 @@ abstract contract RateLimiter is IRateLimiter, IRateLimiterEvents { } function _enqueueInboundTransfer( + uint16 sourceChain, bytes32 digest, TrimmedAmount amount, address recipient ) internal { _getInboundQueueStorage()[digest] = InboundQueuedTransfer({ + sourceChain: sourceChain, amount: amount, recipient: recipient, txTimestamp: uint64(block.timestamp) From dafb3fe3bedd02e2916869a049f964ddc8c58177 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Mon, 2 Dec 2024 20:12:11 -0500 Subject: [PATCH 05/10] evm: Update test to account for updated event signature --- evm/test/IntegrationStandalone.t.sol | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/evm/test/IntegrationStandalone.t.sol b/evm/test/IntegrationStandalone.t.sol index ecaa2b310..6e990ce1e 100755 --- a/evm/test/IntegrationStandalone.t.sol +++ b/evm/test/IntegrationStandalone.t.sol @@ -184,7 +184,7 @@ contract TestEndToEndBase is Test, IRateLimiterEvents { vm.stopPrank(); - // Get the TransferSent(bytes32) event to ensure it matches up with the TransferRedeemed(bytes32) event later + // Get the TransferSent(bytes32) event digest to ensure it matches up with the TransferRedeemed(uint16,bytes32) event digest later Vm.Log[] memory recordedLogs = vm.getRecordedLogs(); bytes32 sentEventDigest; for (uint256 i = 0; i < recordedLogs.length; i++) { @@ -220,18 +220,24 @@ contract TestEndToEndBase is Test, IRateLimiterEvents { ); } - // Get the TransferRedeemed(bytes32) event to ensure it matches up with the TransferSent(bytes32) event earlier + // Get the TransferRedeemed(uint16,bytes32) event digest to ensure it matches up with the TransferSent(bytes32) event digest earlier recordedLogs = vm.getRecordedLogs(); bytes32 recvEventDigest; + bytes32 recvSourceChain; for (uint256 i = 0; i < recordedLogs.length; i++) { - if (recordedLogs[i].topics[0] == keccak256("TransferRedeemed(bytes32)")) { - recvEventDigest = recordedLogs[i].topics[1]; + if (recordedLogs[i].topics[0] == keccak256("TransferRedeemed(uint16,bytes32)")) { + recvSourceChain = recordedLogs[i].topics[1]; + recvEventDigest = recordedLogs[i].topics[2]; break; } } + require( + recvSourceChain == bytes32(uint256(chainId1)), + "Incorrect TransferRedeemed(uint16,bytes32) event sourceChain" + ); require( sentEventDigest == recvEventDigest, - "TransferRedeemed(bytes32) event should match TransferSent(bytes32)" + "TransferRedeemed(uint16,bytes32) event digest should match TransferSent(bytes32) event digest" ); // Can't resubmit the same message twice From a95edc8c06f714ae068f914fcca4e960e925ff17 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Mon, 2 Dec 2024 20:12:34 -0500 Subject: [PATCH 06/10] evm: Update docs to account for updated event signature --- evm/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/evm/README.md b/evm/README.md index 8888b52b8..61744f614 100644 --- a/evm/README.md +++ b/evm/README.md @@ -150,9 +150,10 @@ _Events_ /// @notice Emitted when a transfer has been redeemed /// (either minted or unlocked on the recipient chain). /// @dev Topic0 -/// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. +/// 0x822760cb8aef838664db98515460929d89d5799b7546e9269dffdc09e2cbb995. +/// @param sourceChain The source chain. /// @param digest The digest of the message. -event TransferRedeemed(bytes32 indexed digest); +event TransferRedeemed(uint16 indexed sourceChain, bytes32 indexed digest); ``` ## Prerequisites From 037a2d6c5f3a2e87609d5aecc6673e108ecb3498 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Wed, 4 Dec 2024 22:59:32 -0500 Subject: [PATCH 07/10] evm: Reorder struct fields --- evm/src/interfaces/IRateLimiter.sol | 8 ++++---- evm/src/libraries/RateLimiter.sol | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/evm/src/interfaces/IRateLimiter.sol b/evm/src/interfaces/IRateLimiter.sol index 31741ed99..3849e652d 100644 --- a/evm/src/interfaces/IRateLimiter.sol +++ b/evm/src/interfaces/IRateLimiter.sol @@ -57,15 +57,14 @@ interface IRateLimiter { /// @notice Parameters for an outbound queued transfer. /// @dev - /// - sourceChain: the chain of the sender. /// - recipient: the recipient of the transfer. /// - amount: the amount of the transfer, trimmed. /// - txTimestamp: the timestamp of the transfer. /// - recipientChain: the chain of the recipient. /// - sender: the sender of the transfer. /// - transceiverInstructions: additional instructions to be forwarded to the recipient chain. + /// - sourceChain: the chain of the sender. struct OutboundQueuedTransfer { - uint16 sourceChain; bytes32 recipient; bytes32 refundAddress; TrimmedAmount amount; @@ -73,19 +72,20 @@ interface IRateLimiter { uint16 recipientChain; address sender; bytes transceiverInstructions; + uint16 sourceChain; } /// @notice Parameters for an inbound queued transfer. /// @dev - /// - sourceChain: the chain of the sender. /// - amount: the amount of the transfer, trimmed. /// - txTimestamp: the timestamp of the transfer. /// - recipient: the recipient of the transfer. + /// - sourceChain: the chain of the sender. struct InboundQueuedTransfer { - uint16 sourceChain; TrimmedAmount amount; uint64 txTimestamp; address recipient; + uint16 sourceChain; } /// @notice Returns the currently remaining outbound capacity allowed diff --git a/evm/src/libraries/RateLimiter.sol b/evm/src/libraries/RateLimiter.sol index 3fbcbe42e..fc5531709 100644 --- a/evm/src/libraries/RateLimiter.sol +++ b/evm/src/libraries/RateLimiter.sol @@ -306,14 +306,14 @@ abstract contract RateLimiter is IRateLimiter, IRateLimiterEvents { bytes memory transceiverInstructions ) internal { _getOutboundQueueStorage()[sequence] = OutboundQueuedTransfer({ - sourceChain: sourceChain, amount: amount, recipientChain: recipientChain, recipient: recipient, refundAddress: refundAddress, txTimestamp: uint64(block.timestamp), sender: senderAddress, - transceiverInstructions: transceiverInstructions + transceiverInstructions: transceiverInstructions, + sourceChain: sourceChain }); emit OutboundTransferQueued(sequence); @@ -326,10 +326,10 @@ abstract contract RateLimiter is IRateLimiter, IRateLimiterEvents { address recipient ) internal { _getInboundQueueStorage()[digest] = InboundQueuedTransfer({ - sourceChain: sourceChain, amount: amount, recipient: recipient, - txTimestamp: uint64(block.timestamp) + txTimestamp: uint64(block.timestamp), + sourceChain: sourceChain }); emit InboundTransferQueued(digest); From 01c2ef11ad3e8828debe1941c63d68bae19ca45d Mon Sep 17 00:00:00 2001 From: nvsriram Date: Wed, 4 Dec 2024 23:01:43 -0500 Subject: [PATCH 08/10] evm: Pass `sourceChainId` from function param to `MessageAttestedTo` event --- evm/src/NttManager/ManagerBase.sol | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/evm/src/NttManager/ManagerBase.sol b/evm/src/NttManager/ManagerBase.sol index e3ec7bef6..f19723af6 100644 --- a/evm/src/NttManager/ManagerBase.sol +++ b/evm/src/NttManager/ManagerBase.sol @@ -150,7 +150,7 @@ abstract contract ManagerBase is ) { revert TransceiverAlreadyAttestedToMessage(nttManagerMessageHash); } - _setTransceiverAttestedToMessage(nttManagerMessageHash, msg.sender); + _setTransceiverAttestedToMessage(sourceChainId, nttManagerMessageHash, msg.sender); return nttManagerMessageHash; } @@ -419,11 +419,15 @@ abstract contract ManagerBase is _getMessageAttestationsStorage()[digest].attestedTransceivers |= uint64(1 << index); } - function _setTransceiverAttestedToMessage(bytes32 digest, address transceiver) internal { + function _setTransceiverAttestedToMessage( + uint16 sourceChainId, + bytes32 digest, + address transceiver + ) internal { _setTransceiverAttestedToMessage(digest, _getTransceiverInfosStorage()[transceiver].index); emit MessageAttestedTo( - chainId, digest, transceiver, _getTransceiverInfosStorage()[transceiver].index + sourceChainId, digest, transceiver, _getTransceiverInfosStorage()[transceiver].index ); } From 534d9b08f6b0bde2506319a55f1a74ae0aa95a8e Mon Sep 17 00:00:00 2001 From: nvsriram Date: Thu, 5 Dec 2024 15:32:43 -0500 Subject: [PATCH 09/10] evm: Revert existing events and overload them to return `sourceChainId` --- evm/src/NttManager/ManagerBase.sol | 3 ++- evm/src/NttManager/NttManager.sol | 3 ++- evm/src/interfaces/IManagerBase.sol | 13 ++++++++----- evm/src/interfaces/INttManager.sol | 12 +++++++++--- evm/test/IntegrationStandalone.t.sol | 16 +++++----------- 5 files changed, 26 insertions(+), 21 deletions(-) diff --git a/evm/src/NttManager/ManagerBase.sol b/evm/src/NttManager/ManagerBase.sol index f19723af6..506cab3f1 100644 --- a/evm/src/NttManager/ManagerBase.sol +++ b/evm/src/NttManager/ManagerBase.sol @@ -427,8 +427,9 @@ abstract contract ManagerBase is _setTransceiverAttestedToMessage(digest, _getTransceiverInfosStorage()[transceiver].index); emit MessageAttestedTo( - sourceChainId, digest, transceiver, _getTransceiverInfosStorage()[transceiver].index + digest, transceiver, _getTransceiverInfosStorage()[transceiver].index ); + emit MessageAttestedTo(sourceChainId); } /// @dev Returns the bitmap of attestations from enabled transceivers for a given message. diff --git a/evm/src/NttManager/NttManager.sol b/evm/src/NttManager/NttManager.sol index 8ca575999..25e5c716c 100644 --- a/evm/src/NttManager/NttManager.sol +++ b/evm/src/NttManager/NttManager.sol @@ -640,7 +640,8 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { if (cancelled) { emit OutboundTransferCancelled(uint256(digest), recipient, untrimmedAmount); } else { - emit TransferRedeemed(sourceChain, digest); + emit TransferRedeemed(digest); + emit TransferRedeemed(sourceChain); } if (mode == Mode.LOCKING) { diff --git a/evm/src/interfaces/IManagerBase.sol b/evm/src/interfaces/IManagerBase.sol index ec1e5bf83..749e2f86c 100644 --- a/evm/src/interfaces/IManagerBase.sol +++ b/evm/src/interfaces/IManagerBase.sol @@ -33,14 +33,17 @@ interface IManagerBase { /// @notice Emitted when a message has been attested to. /// @dev Topic0 - /// 0xf1ec44311dd9bf51a389c38e415716ad070edf9e303ea55ed7ae11472a5f031d. - /// @param sourceChain The source chain. + /// 0x35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e5. /// @param digest The digest of the message. /// @param transceiver The address of the transceiver. /// @param index The index of the transceiver in the bitmap. - event MessageAttestedTo( - uint16 indexed sourceChain, bytes32 digest, address transceiver, uint8 index - ); + event MessageAttestedTo(bytes32 digest, address transceiver, uint8 index); + + /// @notice Emitted when a message has been attested to. + /// @dev Topic0 + /// 0x9fbae37d6867991331ee754b07fe4cc479ea8f0cd952e61f450740d6c350e580. + /// @param sourceChain The source chain. + event MessageAttestedTo(uint16 indexed sourceChain); /// @notice Emmitted when the threshold required transceivers is changed. /// @dev Topic0 diff --git a/evm/src/interfaces/INttManager.sol b/evm/src/interfaces/INttManager.sol index ef692c13f..f1f558dbc 100644 --- a/evm/src/interfaces/INttManager.sol +++ b/evm/src/interfaces/INttManager.sol @@ -57,10 +57,16 @@ interface INttManager is IManagerBase { /// @notice Emitted when a transfer has been redeemed /// (either minted or unlocked on the recipient chain). /// @dev Topic0 - /// 0x822760cb8aef838664db98515460929d89d5799b7546e9269dffdc09e2cbb995. - /// @param sourceChain The source chain. + /// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. /// @param digest The digest of the message. - event TransferRedeemed(uint16 indexed sourceChain, bytes32 indexed digest); + event TransferRedeemed(bytes32 indexed digest); + + /// @notice Emitted when a transfer has been redeemed + /// (either minted or unlocked on the recipient chain). + /// @dev Topic0 + /// 0x56b025e18da6f1f65995c2b538c47cabdb4103d11c9bb3ebbacb098d14fa12c6. + /// @param sourceChain The source chain. + event TransferRedeemed(uint16 indexed sourceChain); /// @notice Emitted when an outbound transfer has been cancelled /// @dev Topic0 diff --git a/evm/test/IntegrationStandalone.t.sol b/evm/test/IntegrationStandalone.t.sol index 6e990ce1e..ecaa2b310 100755 --- a/evm/test/IntegrationStandalone.t.sol +++ b/evm/test/IntegrationStandalone.t.sol @@ -184,7 +184,7 @@ contract TestEndToEndBase is Test, IRateLimiterEvents { vm.stopPrank(); - // Get the TransferSent(bytes32) event digest to ensure it matches up with the TransferRedeemed(uint16,bytes32) event digest later + // Get the TransferSent(bytes32) event to ensure it matches up with the TransferRedeemed(bytes32) event later Vm.Log[] memory recordedLogs = vm.getRecordedLogs(); bytes32 sentEventDigest; for (uint256 i = 0; i < recordedLogs.length; i++) { @@ -220,24 +220,18 @@ contract TestEndToEndBase is Test, IRateLimiterEvents { ); } - // Get the TransferRedeemed(uint16,bytes32) event digest to ensure it matches up with the TransferSent(bytes32) event digest earlier + // Get the TransferRedeemed(bytes32) event to ensure it matches up with the TransferSent(bytes32) event earlier recordedLogs = vm.getRecordedLogs(); bytes32 recvEventDigest; - bytes32 recvSourceChain; for (uint256 i = 0; i < recordedLogs.length; i++) { - if (recordedLogs[i].topics[0] == keccak256("TransferRedeemed(uint16,bytes32)")) { - recvSourceChain = recordedLogs[i].topics[1]; - recvEventDigest = recordedLogs[i].topics[2]; + if (recordedLogs[i].topics[0] == keccak256("TransferRedeemed(bytes32)")) { + recvEventDigest = recordedLogs[i].topics[1]; break; } } - require( - recvSourceChain == bytes32(uint256(chainId1)), - "Incorrect TransferRedeemed(uint16,bytes32) event sourceChain" - ); require( sentEventDigest == recvEventDigest, - "TransferRedeemed(uint16,bytes32) event digest should match TransferSent(bytes32) event digest" + "TransferRedeemed(bytes32) event should match TransferSent(bytes32)" ); // Can't resubmit the same message twice From 26051aa1ba5a26041429d6f503619d12fa640040 Mon Sep 17 00:00:00 2001 From: nvsriram Date: Thu, 5 Dec 2024 15:34:51 -0500 Subject: [PATCH 10/10] evm: Revert README --- evm/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/evm/README.md b/evm/README.md index 61744f614..8888b52b8 100644 --- a/evm/README.md +++ b/evm/README.md @@ -150,10 +150,9 @@ _Events_ /// @notice Emitted when a transfer has been redeemed /// (either minted or unlocked on the recipient chain). /// @dev Topic0 -/// 0x822760cb8aef838664db98515460929d89d5799b7546e9269dffdc09e2cbb995. -/// @param sourceChain The source chain. +/// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. /// @param digest The digest of the message. -event TransferRedeemed(uint16 indexed sourceChain, bytes32 indexed digest); +event TransferRedeemed(bytes32 indexed digest); ``` ## Prerequisites