diff --git a/bold/chain-abstraction/sol-implementation/transact.go b/bold/chain-abstraction/sol-implementation/transact.go index 44c012d30d..1739cc5b71 100644 --- a/bold/chain-abstraction/sol-implementation/transact.go +++ b/bold/chain-abstraction/sol-implementation/transact.go @@ -158,12 +158,13 @@ func (a *AssertionChain) waitForTxToBeSafe( if !txSafe { var blocksLeftForTxToBeSafe int64 if receipt.BlockNumber.Uint64() > latestSafeHeaderNumber { - blocksLeftForTxToBeSafe = 0 - } else { - blocksLeftForTxToBeSafe, err = safecast.ToInt64(latestSafeHeaderNumber - receipt.BlockNumber.Uint64()) + // Wait for safe head to catch up to the receipt block + blocksLeftForTxToBeSafe, err = safecast.ToInt64(receipt.BlockNumber.Uint64() - latestSafeHeaderNumber) if err != nil { return nil, errors.Wrap(err, "could not convert blocks left for tx to be safe to int64") } + } else { + blocksLeftForTxToBeSafe = 0 } timeToWait := a.averageTimeForBlockCreation * time.Duration(blocksLeftForTxToBeSafe) select { diff --git a/bold/challenge-manager/edge-tracker/challenge_confirmation.go b/bold/challenge-manager/edge-tracker/challenge_confirmation.go index fcfda727e4..1707f0e0dd 100644 --- a/bold/challenge-manager/edge-tracker/challenge_confirmation.go +++ b/bold/challenge-manager/edge-tracker/challenge_confirmation.go @@ -319,12 +319,13 @@ func (cc *challengeConfirmer) waitForTxToBeSafe( if !txSafe { var blocksLeftForTxToBeSafe int64 if receipt.BlockNumber.Uint64() > latestSafeHeaderNumber { - blocksLeftForTxToBeSafe = 0 - } else { - blocksLeftForTxToBeSafe, err = safecast.ToInt64(latestSafeHeaderNumber - receipt.BlockNumber.Uint64()) + // Wait for safe head to catch up to the receipt block + blocksLeftForTxToBeSafe, err = safecast.ToInt64(receipt.BlockNumber.Uint64() - latestSafeHeaderNumber) if err != nil { return errors.Wrap(err, "could not convert blocks left for tx to be safe to int64") } + } else { + blocksLeftForTxToBeSafe = 0 } timeToWait := cc.averageTimeForBlockCreation * time.Duration(blocksLeftForTxToBeSafe) select {