Skip to content

Commit f00e9fd

Browse files
Improve validation for native transfers
1 parent a76ff61 commit f00e9fd

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/main/scala/units/ELUpdater.scala

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1421,9 +1421,7 @@ class ELUpdater(
14211421
actualTransferWithdrawals,
14221422
c2eLogs,
14231423
expectedTransfers,
1424-
actualDepositedTransactions,
14251424
transferTransactions,
1426-
options,
14271425
prevWithdrawalIndex,
14281426
strictC2ETransfersActivated
14291427
).leftMap(
@@ -1523,9 +1521,7 @@ class ELUpdater(
15231521
actualWithdrawals: Seq[Withdrawal],
15241522
actualTransferLogs: List[GetLogsResponseEntry],
15251523
expectedTransfers: Seq[ContractTransfer],
1526-
depositedTransactions: Seq[DepositedTransaction],
15271524
transferTransactions: Seq[DepositedTransaction],
1528-
options: ChainContractOptions,
15291525
prevWithdrawalIndex: Long,
15301526
strictC2ETransfersActivated: Boolean
15311527
): Either[String, Long] = {
@@ -1570,12 +1566,28 @@ class ELUpdater(
15701566
case expectedTransfer: ContractTransfer.NativeViaDeposit =>
15711567
if strictC2ETransfersActivated then {
15721568
actualTransferLogs match {
1573-
case Nil => s"$logPrefix Not found EL transfer log, expected $expectedTransfer transfer".asLeft
1569+
case Nil =>
1570+
val canSkipFailedTransfer = strictC2ETransfersActivated && failedTransfers.contains(expectedTransfer)
1571+
if canSkipFailedTransfer then {
1572+
logger.debug(s"Transfer $expectedTransfer has failed, skipping")
1573+
prevWithdrawalIndex.asRight
1574+
} else s"$logPrefix Not found EL transfer log, expected $expectedTransfer transfer".asLeft
15741575
case actualTransferLog :: restActualTransferLogs =>
15751576
StandardBridge.ETHBridgeFinalized
15761577
.decodeLog(actualTransferLog)
15771578
.flatMap(validateC2ENativeTransfer(actualTransferLog.logIndex, _, expectedTransfer)) match {
1578-
case Left(e) => e.asLeft
1579+
case Left(e) =>
1580+
val canSkipFailedTransfer = strictC2ETransfersActivated && failedTransfers.contains(expectedTransfer)
1581+
if canSkipFailedTransfer then {
1582+
logger.debug(s"Transfer $expectedTransfer has failed, skipping")
1583+
loop(
1584+
actualWithdrawals,
1585+
actualTransferLog :: restActualTransferLogs,
1586+
restExpectedTransfers,
1587+
prevWithdrawalIndex,
1588+
currTransferNumber + 1
1589+
)
1590+
} else e.asLeft
15791591
case _ => loop(actualWithdrawals, restActualTransferLogs, restExpectedTransfers, prevWithdrawalIndex, currTransferNumber + 1)
15801592
}
15811593
}

0 commit comments

Comments
 (0)