From 1324ad4d9c5b2e8b7a372f003c76dac022a66f28 Mon Sep 17 00:00:00 2001 From: 0xriptide <75756130+0xriptide@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:23:46 +0100 Subject: [PATCH] Update transferId assignment logic in BridgeTransferLib Refactor withdrawId computation for consistency in transferId assignment by checking the correct wdId instead of request.refId --- contracts/libraries/BridgeTransferLib.sol | 28 +++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/contracts/libraries/BridgeTransferLib.sol b/contracts/libraries/BridgeTransferLib.sol index afaeddb79..ec478c00b 100644 --- a/contracts/libraries/BridgeTransferLib.sol +++ b/contracts/libraries/BridgeTransferLib.sol @@ -364,18 +364,22 @@ library BridgeTransferLib { ) internal returns (ReceiveInfo memory) { ReceiveInfo memory recv; PbPegged.Withdraw memory request = PbPegged.decWithdraw(_request); - if (IOriginalTokenVaultV2(_bridgeAddr).records(request.refId)) { - recv.transferId = keccak256( - abi.encodePacked( - request.receiver, - request.token, - request.amount, - request.burnAccount, - request.refChainId, - request.refId, - _bridgeAddr - ) - ); + + // Compute the exact withdrawId (wdId) used by OriginalTokenVaultV2 + bytes32 wdId = keccak256( + abi.encodePacked( + request.receiver, + request.token, + request.amount, + request.burnAccount, + request.refChainId, + request.refId, + _bridgeAddr + ) + ); + + if (IOriginalTokenVaultV2(_bridgeAddr).records(wdId)) { + recv.transferId = wdId; } else { recv.transferId = IOriginalTokenVaultV2(_bridgeAddr).withdraw(_request, _sigs, _signers, _powers); }