Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
9a13504b
Unverified
Commit
9a13504b
authored
Nov 10, 2023
by
Hamdi Allam
Committed by
GitHub
Nov 10, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8093 from ethereum-optimism/indexer.bridge.logging
fix(indexer): clean up indexer bridge logging
parents
4d6bb0db
26cb4f81
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
73 deletions
+39
-73
l1_bridge_processor.go
indexer/processors/bridge/l1_bridge_processor.go
+15
-24
l2_bridge_processor.go
indexer/processors/bridge/l2_bridge_processor.go
+8
-16
legacy_bridge_processor.go
indexer/processors/bridge/legacy_bridge_processor.go
+16
-33
No files found.
indexer/processors/bridge/l1_bridge_processor.go
View file @
9a13504b
...
...
@@ -74,14 +74,15 @@ func L1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metrics L1M
// extract the deposit hash from the previous TransactionDepositedEvent
portalDeposit
,
ok
:=
portalDeposits
[
logKey
{
sentMessage
.
Event
.
BlockHash
,
sentMessage
.
Event
.
LogIndex
-
1
}]
if
!
ok
{
log
.
Error
(
"expected TransactionDeposit preceding SentMessage event"
,
"tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionDeposit preceding SentMessage event. tx_hash = %s"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
}
else
if
portalDeposit
.
Event
.
TransactionHash
!=
sentMessage
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"deposit_tx_hash"
,
portalDeposit
.
Event
.
TransactionHash
.
String
(),
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. deposit_tx_hash = %s, message_tx_hash = %s"
,
portalDeposit
.
Event
.
TransactionHash
,
sentMessage
.
Event
.
TransactionHash
)
}
bridgeMessages
[
i
]
=
database
.
L1BridgeMessage
{
TransactionSourceHash
:
portalDeposit
.
DepositTx
.
SourceHash
,
BridgeMessage
:
sentMessage
.
BridgeMessage
}
bridgeMessages
[
i
]
=
database
.
L1BridgeMessage
{
TransactionSourceHash
:
portalDeposit
.
DepositTx
.
SourceHash
,
BridgeMessage
:
sentMessage
.
BridgeMessage
,
}
}
if
len
(
bridgeMessages
)
>
0
{
if
err
:=
db
.
BridgeMessages
.
StoreL1BridgeMessages
(
bridgeMessages
);
err
!=
nil
{
...
...
@@ -107,20 +108,16 @@ func L1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metrics L1M
// extract the cross domain message hash & deposit source hash from the following events
portalDeposit
,
ok
:=
portalDeposits
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
+
1
}]
if
!
ok
{
log
.
Error
(
"expected TransactionDeposit following BridgeInitiated event"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionDeposit following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionDeposit following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
portalDeposit
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"deposit_tx_hash"
,
portalDeposit
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch, bridge_tx_hash = %s, deposit_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
portalDeposit
.
Event
.
TransactionHash
)
}
sentMessage
,
ok
:=
sentMessages
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
+
2
}]
if
!
ok
{
log
.
Error
(
"expected SentMessage following BridgeInitiated event"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
sentMessage
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. bridge_tx_hash = %s, message_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
sentMessage
.
Event
.
TransactionHash
)
}
bridgedTokens
[
initiatedBridge
.
BridgeTransfer
.
TokenPair
.
LocalTokenAddress
]
++
...
...
@@ -164,13 +161,11 @@ func L1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metrics L1M
if
err
!=
nil
{
return
err
}
else
if
withdrawal
==
nil
{
log
.
Error
(
"missing indexed withdrawal on proven event!"
,
"tx_hash"
,
proven
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed withdrawal! tx_hash = %s"
,
proven
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed withdrawal! tx_hash = %s"
,
proven
.
Event
.
TransactionHash
)
}
if
err
:=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalProvenEvent
(
proven
.
WithdrawalHash
,
provenWithdrawals
[
i
]
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to mark withdrawal as proven"
,
"err"
,
err
,
"tx_hash"
,
proven
.
Event
.
TransactionHash
.
String
())
return
err
return
fmt
.
Errorf
(
"failed to mark withdrawal as proven. tx_hash = %s: %w"
,
proven
.
Event
.
TransactionHash
,
err
)
}
}
if
len
(
provenWithdrawals
)
>
0
{
...
...
@@ -192,13 +187,11 @@ func L1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metrics L1M
if
err
!=
nil
{
return
err
}
else
if
withdrawal
==
nil
{
log
.
Error
(
"missing indexed withdrawal on finalization event!"
,
"tx_hash"
,
finalizedWithdrawal
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed withdrawal on finalization! tx_hash: %s"
,
finalizedWithdrawal
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed withdrawal on finalization! tx_hash = %s"
,
finalizedWithdrawal
.
Event
.
TransactionHash
.
String
())
}
if
err
=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalFinalizedEvent
(
finalizedWithdrawal
.
WithdrawalHash
,
finalizedWithdrawal
.
Event
.
GUID
,
finalizedWithdrawal
.
Success
);
err
!=
nil
{
log
.
Error
(
"failed to mark withdrawal as finalized"
,
"err"
,
err
,
"tx_hash"
,
finalizedWithdrawal
.
Event
.
TransactionHash
.
String
())
return
err
return
fmt
.
Errorf
(
"failed to mark withdrawal as finalized. tx_hash = %s: %w"
,
finalizedWithdrawal
.
Event
.
TransactionHash
,
err
)
}
}
if
len
(
finalizedWithdrawals
)
>
0
{
...
...
@@ -220,13 +213,11 @@ func L1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metrics L1M
if
err
!=
nil
{
return
err
}
else
if
message
==
nil
{
log
.
Error
(
"missing indexed L2CrossDomainMessenger message"
,
"tx_hash"
,
relayed
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L2CrossDomainMessager message. tx_hash %s"
,
relayed
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L2CrossDomainMessager message! tx_hash = %s"
,
relayed
.
Event
.
TransactionHash
.
String
())
}
if
err
:=
db
.
BridgeMessages
.
MarkRelayedL2BridgeMessage
(
relayed
.
MessageHash
,
relayed
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to relay cross domain message"
,
"err"
,
err
,
"tx_hash"
,
relayed
.
Event
.
TransactionHash
.
String
())
return
err
return
fmt
.
Errorf
(
"failed to relay cross domain message. tx_hash = %s: %w"
,
relayed
.
Event
.
TransactionHash
,
err
)
}
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
...
...
indexer/processors/bridge/l2_bridge_processor.go
View file @
9a13504b
...
...
@@ -72,11 +72,9 @@ func L2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metrics L2M
// extract the withdrawal hash from the previous MessagePassed event
messagePassed
,
ok
:=
messagesPassed
[
logKey
{
sentMessage
.
Event
.
BlockHash
,
sentMessage
.
Event
.
LogIndex
-
1
}]
if
!
ok
{
log
.
Error
(
"expected MessagePassedEvent preceding SentMessage"
,
"tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected MessagePassedEvent preceding SentMessage. tx_hash = %s"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected MessagePassedEvent preceding SentMessage. tx_hash = %s"
,
sentMessage
.
Event
.
TransactionHash
)
}
else
if
messagePassed
.
Event
.
TransactionHash
!=
sentMessage
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"withdraw_tx_hash"
,
messagePassed
.
Event
.
TransactionHash
.
String
(),
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. message_tx_hash = %s, withdraw_tx_hash = %s"
,
sentMessage
.
Event
.
TransactionHash
,
messagePassed
.
Event
.
TransactionHash
)
}
bridgeMessages
[
i
]
=
database
.
L2BridgeMessage
{
TransactionWithdrawalHash
:
messagePassed
.
WithdrawalHash
,
BridgeMessage
:
sentMessage
.
BridgeMessage
}
...
...
@@ -105,20 +103,16 @@ func L2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metrics L2M
// extract the cross domain message hash & withdraw hash from the following events
messagePassed
,
ok
:=
messagesPassed
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
+
1
}]
if
!
ok
{
log
.
Error
(
"expected MessagePassed following BridgeInitiated event"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected MessagePassed following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected MessagePassed following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
messagePassed
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"withdraw_tx_hash"
,
messagePassed
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. bridge_tx_hash = %s, withdraw_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
messagePassed
.
Event
.
TransactionHash
)
}
sentMessage
,
ok
:=
sentMessages
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
+
2
}]
if
!
ok
{
log
.
Error
(
"expected SentMessage following BridgeInitiated event"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage following BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
sentMessage
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. bridge_tx_hash = %s, message_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
sentMessage
.
Event
.
TransactionHash
)
}
bridgedTokens
[
initiatedBridge
.
BridgeTransfer
.
TokenPair
.
LocalTokenAddress
]
++
...
...
@@ -164,13 +158,11 @@ func L2ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metrics L2M
if
err
!=
nil
{
return
err
}
else
if
message
==
nil
{
log
.
Error
(
"missing indexed L1CrossDomainMessenger message"
,
"tx_hash"
,
relayed
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L1CrossDomainMessager message. tx_hash = %s"
,
relayed
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L1CrossDomainMessager message! tx_hash = %s"
,
relayed
.
Event
.
TransactionHash
)
}
if
err
:=
db
.
BridgeMessages
.
MarkRelayedL1BridgeMessage
(
relayed
.
MessageHash
,
relayed
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to relay cross domain message"
,
"err"
,
err
,
"tx_hash"
,
relayed
.
Event
.
TransactionHash
.
String
())
return
err
return
fmt
.
Errorf
(
"failed to relay cross domain message. tx_hash = %s: %w"
,
relayed
.
Event
.
TransactionHash
,
err
)
}
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
...
...
indexer/processors/bridge/legacy_bridge_processor.go
View file @
9a13504b
...
...
@@ -75,11 +75,9 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metri
// extract the deposit hash from the previous TransactionDepositedEvent
ctcTxDeposit
,
ok
:=
ctcTxDeposits
[
logKey
{
sentMessage
.
Event
.
BlockHash
,
sentMessage
.
Event
.
LogIndex
-
1
}]
if
!
ok
{
log
.
Error
(
"expected TransactionEnqueued preceding SentMessage event"
,
"tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionEnqueued preceding SentMessage event. tx_hash = %s"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionEnqueued preceding SentMessage event. tx_hash = %s"
,
sentMessage
.
Event
.
TransactionHash
)
}
else
if
ctcTxDeposit
.
Event
.
TransactionHash
!=
sentMessage
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"deposit_tx_hash"
,
ctcTxDeposit
.
Event
.
TransactionHash
.
String
(),
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. deposit_tx_hash = %s, message_tx_hash = %s"
,
ctcTxDeposit
.
Event
.
TransactionHash
,
sentMessage
.
Event
.
TransactionHash
)
}
bridgeMessages
[
i
]
=
database
.
L1BridgeMessage
{
TransactionSourceHash
:
ctcTxDeposit
.
TxHash
,
BridgeMessage
:
sentMessage
.
BridgeMessage
}
...
...
@@ -110,20 +108,16 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metri
// - Event Flow: TransactionEnqueued -> SentMessage -> DepositInitiated
sentMessage
,
ok
:=
sentMessages
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
-
1
}]
if
!
ok
{
log
.
Error
(
"expected SentMessage preceding BridgeInitiated event"
,
"tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage preceding DepositInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage preceding DepositInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
sentMessage
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. bridge_tx_hash = %s, message_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
sentMessage
.
Event
.
TransactionHash
)
}
ctcTxDeposit
,
ok
:=
ctcTxDeposits
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
-
2
}]
if
!
ok
{
log
.
Error
(
"expected TransactionEnqueued preceding BridgeInitiated event"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionEnqueued preceding BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected TransactionEnqueued preceding BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
ctcTxDeposit
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"deposit_tx_hash"
,
ctcTxDeposit
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. bridge_tx_hash = %s, deposit_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
ctcTxDeposit
.
Event
.
TransactionHash
)
}
initiatedBridge
.
BridgeTransfer
.
CrossDomainMessageHash
=
&
sentMessage
.
BridgeMessage
.
MessageHash
...
...
@@ -227,11 +221,9 @@ func LegacyL2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, metri
// - Event Flow: TransactionEnqueued -> SentMessage -> DepositInitiated
sentMessage
,
ok
:=
sentMessages
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
-
1
}]
if
!
ok
{
log
.
Error
(
"expected SentMessage preceding BridgeInitiated event"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage preceding BridgeInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
else
if
sentMessage
.
Event
.
TransactionHash
!=
initiatedBridge
.
Event
.
TransactionHash
{
log
.
Error
(
"correlated events tx hash mismatch"
,
"message_tx_hash"
,
sentMessage
.
Event
.
TransactionHash
.
String
(),
"bridge_tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"correlated events tx hash mismatch"
)
return
fmt
.
Errorf
(
"correlated events tx hash mismatch. bridge_tx_hash = %s, message_tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
,
sentMessage
.
Event
.
TransactionHash
)
}
bridgedTokens
[
initiatedBridge
.
BridgeTransfer
.
TokenPair
.
LocalTokenAddress
]
++
...
...
@@ -282,18 +274,15 @@ func LegacyL1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metri
// for OP-Mainnet pre-regensis withdrawals that no longer exist on L2.
tx
,
err
:=
l1Client
.
TxByHash
(
relayedMessage
.
Event
.
TransactionHash
)
if
err
!=
nil
{
log
.
Error
(
"unable to query legacy relayed tx"
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
.
String
(),
"err"
,
err
)
return
fmt
.
Errorf
(
"unable to query legacy relayed tx_hash = %s: %w"
,
relayedMessage
.
Event
.
TransactionHash
.
String
(),
err
)
return
fmt
.
Errorf
(
"unable to query legacy relayed. tx_hash = %s: %w"
,
relayedMessage
.
Event
.
TransactionHash
,
err
)
}
else
if
tx
==
nil
{
log
.
Error
(
"missing tx for relayed message"
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing tx for relayed message. tx_hash = %s"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing tx for relayed message! tx_hash = %s"
,
relayedMessage
.
Event
.
TransactionHash
)
}
relayMessageData
:=
tx
.
Data
()[
4
:
]
inputs
,
err
:=
contracts
.
CrossDomainMessengerLegacyRelayMessageEncoding
.
Inputs
.
Unpack
(
relayMessageData
)
if
err
!=
nil
||
inputs
==
nil
{
log
.
Error
(
"failed to extract XDomainCallData from relayMessage transaction"
,
"err"
,
err
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"unable to extract XDomainCallData from relayMessage transaction. err = %w. tx_hash = %s"
,
err
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"unable to extract XDomainCallData from relayMessage transaction. tx_hash = %s: %w"
,
relayedMessage
.
Event
.
TransactionHash
,
err
)
}
// NOTE: Since OP-Mainnet is the only network to go through a regensis we can simply harcode the
...
...
@@ -304,23 +293,19 @@ func LegacyL1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metri
skippedPreRegenesisMessages
++
continue
}
else
{
log
.
Error
(
"missing indexed legacy L2CrossDomainMessenger message"
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L2CrossDomainMessager message. tx_hash %s"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L2CrossDomainMessenger message! tx_hash = %s"
,
relayedMessage
.
Event
.
TransactionHash
)
}
}
// Mark the associated tx withdrawal as proven/finalized with the same event. The message hash is also the transaction withdrawal hash
if
err
:=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalProvenEvent
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to mark withdrawal as proven"
,
"err"
,
err
)
return
err
return
fmt
.
Errorf
(
"failed to mark withdrawal as proven. tx_hash = %s: %w"
,
relayedMessage
.
Event
.
TransactionHash
,
err
)
}
if
err
:=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalFinalizedEvent
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
,
true
);
err
!=
nil
{
log
.
Error
(
"failed to mark withdrawal as finalzed"
,
"err"
,
err
)
return
err
return
fmt
.
Errorf
(
"failed to mark withdrawal as finalized. tx_hash = %s: %w"
,
relayedMessage
.
Event
.
TransactionHash
,
err
)
}
if
err
:=
db
.
BridgeMessages
.
MarkRelayedL2BridgeMessage
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to relay cross domain message"
,
"err"
,
err
)
return
err
return
fmt
.
Errorf
(
"failed to relay cross domain message. tx_hash = %s: %w"
,
relayedMessage
.
Event
.
TransactionHash
,
err
)
}
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
...
...
@@ -364,13 +349,11 @@ func LegacyL2ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, metri
if
err
!=
nil
{
return
err
}
else
if
message
==
nil
{
log
.
Error
(
"missing indexed legacy L1CrossDomainMessenger message"
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L1CrossDomainMessager message. tx_hash = %s"
,
relayedMessage
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"missing indexed L1CrossDomainMessager message! tx_hash = %s"
,
relayedMessage
.
Event
.
TransactionHash
)
}
if
err
:=
db
.
BridgeMessages
.
MarkRelayedL1BridgeMessage
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to relay cross domain message"
,
"err"
,
err
)
return
err
return
fmt
.
Errorf
(
"failed to relay cross domain message: %w"
,
err
)
}
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment