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
b98ba6e9
Commit
b98ba6e9
authored
Sep 09, 2023
by
Hamdi Allam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
improve logging
parent
19eb157f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
31 deletions
+42
-31
legacy.go
indexer/processors/bridge/legacy.go
+42
-31
No files found.
indexer/processors/bridge/legacy.go
View file @
b98ba6e9
package
bridge
import
(
"errors"
"fmt"
"math/big"
...
...
@@ -22,6 +21,9 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, chain
if
err
!=
nil
{
return
err
}
if
len
(
ctcTxDepositEvents
)
>
0
{
log
.
Info
(
"detected legacy transaction deposits"
,
"size"
,
len
(
ctcTxDepositEvents
))
}
ctcTxDeposits
:=
make
(
map
[
logKey
]
*
contracts
.
LegacyCTCDepositEvent
,
len
(
ctcTxDepositEvents
))
transactionDeposits
:=
make
([]
database
.
L1TransactionDeposit
,
len
(
ctcTxDepositEvents
))
...
...
@@ -36,9 +38,7 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, chain
Tx
:
deposit
.
Tx
,
}
}
if
len
(
ctcTxDepositEvents
)
>
0
{
log
.
Info
(
"detected legacy transaction deposits"
,
"size"
,
len
(
transactionDeposits
))
if
err
:=
db
.
BridgeTransactions
.
StoreL1TransactionDeposits
(
transactionDeposits
);
err
!=
nil
{
return
err
}
...
...
@@ -49,6 +49,10 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, chain
if
err
!=
nil
{
return
err
}
if
len
(
crossDomainSentMessages
)
>
0
{
log
.
Info
(
"detected legacy sent messages"
,
"size"
,
len
(
crossDomainSentMessages
))
}
sentMessages
:=
make
(
map
[
logKey
]
*
contracts
.
CrossDomainMessengerSentMessageEvent
,
len
(
crossDomainSentMessages
))
l1BridgeMessages
:=
make
([]
database
.
L1BridgeMessage
,
len
(
crossDomainSentMessages
))
for
i
:=
range
crossDomainSentMessages
{
...
...
@@ -64,9 +68,7 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, chain
l1BridgeMessages
[
i
]
=
database
.
L1BridgeMessage
{
TransactionSourceHash
:
ctcTxDeposit
.
TxHash
,
BridgeMessage
:
sentMessage
.
BridgeMessage
}
}
if
len
(
l1BridgeMessages
)
>
0
{
log
.
Info
(
"detected legacy L1CrossDomainMessenger messages"
,
"size"
,
len
(
l1BridgeMessages
))
if
err
:=
db
.
BridgeMessages
.
StoreL1BridgeMessages
(
l1BridgeMessages
);
err
!=
nil
{
return
err
}
...
...
@@ -77,6 +79,10 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, chain
if
err
!=
nil
{
return
err
}
if
len
(
initiatedBridges
)
>
0
{
log
.
Info
(
"detected iegacy bridge deposits"
,
"size"
,
len
(
initiatedBridges
))
}
l1BridgeDeposits
:=
make
([]
database
.
L1BridgeDeposit
,
len
(
initiatedBridges
))
for
i
:=
range
initiatedBridges
{
initiatedBridge
:=
initiatedBridges
[
i
]
...
...
@@ -101,9 +107,7 @@ func LegacyL1ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, chain
BridgeTransfer
:
initiatedBridge
.
BridgeTransfer
,
}
}
if
len
(
l1BridgeDeposits
)
>
0
{
log
.
Info
(
"detected legacy L1StandardBridge deposits"
,
"size"
,
len
(
l1BridgeDeposits
))
if
err
:=
db
.
BridgeTransfers
.
StoreL1BridgeDeposits
(
l1BridgeDeposits
);
err
!=
nil
{
return
err
}
...
...
@@ -119,6 +123,11 @@ func LegacyL2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, fromH
if
err
!=
nil
{
return
err
}
if
len
(
crossDomainSentMessages
)
>
0
{
log
.
Info
(
"detected legacy transaction withdrawals (via L2CrossDomainMessenger)"
,
"size"
,
len
(
crossDomainSentMessages
))
}
sentMessages
:=
make
(
map
[
logKey
]
*
contracts
.
CrossDomainMessengerSentMessageEvent
,
len
(
crossDomainSentMessages
))
l2BridgeMessages
:=
make
([]
database
.
L2BridgeMessage
,
len
(
crossDomainSentMessages
))
l2TransactionWithdrawals
:=
make
([]
database
.
L2TransactionWithdrawal
,
len
(
crossDomainSentMessages
))
...
...
@@ -145,7 +154,6 @@ func LegacyL2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, fromH
}
if
len
(
l2BridgeMessages
)
>
0
{
log
.
Info
(
"detected legacy transaction withdrawals (via L2CrossDomainMessenger)"
,
"size"
,
len
(
l2BridgeMessages
))
if
err
:=
db
.
BridgeTransactions
.
StoreL2TransactionWithdrawals
(
l2TransactionWithdrawals
);
err
!=
nil
{
return
err
}
...
...
@@ -159,6 +167,10 @@ func LegacyL2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, fromH
if
err
!=
nil
{
return
err
}
if
len
(
initiatedBridges
)
>
0
{
log
.
Info
(
"detected legacy bridge withdrawals"
,
"size"
,
len
(
initiatedBridges
))
}
l2BridgeWithdrawals
:=
make
([]
database
.
L2BridgeWithdrawal
,
len
(
initiatedBridges
))
for
i
:=
range
initiatedBridges
{
initiatedBridge
:=
initiatedBridges
[
i
]
...
...
@@ -168,7 +180,7 @@ func LegacyL2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, fromH
// - Event Flow: TransactionEnqueued -> SentMessage -> DepositInitiated
sentMessage
,
ok
:=
sentMessages
[
logKey
{
initiatedBridge
.
Event
.
BlockHash
,
initiatedBridge
.
Event
.
LogIndex
-
1
}]
if
!
ok
{
log
.
Error
(
"
missing cross domain message for bridge transfer
"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
log
.
Error
(
"
expected SentMessage preceding DepositInitiated event
"
,
"tx_hash"
,
initiatedBridge
.
Event
.
TransactionHash
.
String
())
return
fmt
.
Errorf
(
"expected SentMessage preceding DepositInitiated event. tx_hash = %s"
,
initiatedBridge
.
Event
.
TransactionHash
)
}
...
...
@@ -178,9 +190,7 @@ func LegacyL2ProcessInitiatedBridgeEvents(log log.Logger, db *database.DB, fromH
BridgeTransfer
:
initiatedBridge
.
BridgeTransfer
,
}
}
if
len
(
l2BridgeWithdrawals
)
>
0
{
log
.
Info
(
"detected legacy L2StandardBridge withdrawals"
,
"size"
,
len
(
l2BridgeWithdrawals
))
if
err
:=
db
.
BridgeTransfers
.
StoreL2BridgeWithdrawals
(
l2BridgeWithdrawals
);
err
!=
nil
{
return
err
}
...
...
@@ -199,6 +209,9 @@ func LegacyL1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, l1Cli
if
err
!=
nil
{
return
err
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
log
.
Info
(
"detected relayed messages"
,
"size"
,
len
(
crossDomainRelayedMessages
))
}
skippedPreRegenesisMessages
:=
0
for
i
:=
range
crossDomainRelayedMessages
{
...
...
@@ -213,13 +226,15 @@ func LegacyL1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, l1Cli
if
err
!=
nil
{
return
err
}
else
if
tx
==
nil
{
return
errors
.
New
(
"missing l1 tx hash for relayed message"
)
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
())
}
relayMessageData
:=
tx
.
Data
()[
4
:
]
inputs
,
err
:=
contracts
.
CrossDomainMessengerLegacyRelayMessageEncoding
.
Inputs
.
Unpack
(
relayMessageData
)
if
err
!=
nil
||
inputs
==
nil
{
return
fmt
.
Errorf
(
"unable to extract XDomainCallData from relayMessage transaction: %w"
,
err
)
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
())
}
// NOTE: Since OP-Mainnet is the only network to go through a regensis we can simply harcode the
...
...
@@ -230,33 +245,29 @@ func LegacyL1ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, l1Cli
skippedPreRegenesisMessages
++
continue
}
else
{
log
.
Error
(
"missing indexed legacy L2CrossDomainMessenger message"
,
"
message_hash"
,
relayedMessage
.
MessageHash
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
)
return
fmt
.
Errorf
(
"missing indexed L2CrossDomainMessager message
"
)
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
()
)
}
}
// Mark the associated tx withdrawal as proven/finalized with the same event
if
err
:=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalProvenEvent
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to mark withdrawal as proven"
,
"err"
,
err
)
return
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
}
if
err
:=
db
.
BridgeMessages
.
MarkRelayedL2BridgeMessage
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to relay cross domain message"
,
"err"
,
err
)
return
err
}
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
relayedMessages
:=
len
(
crossDomainRelayedMessages
)
-
skippedPreRegenesisMessages
if
skippedPreRegenesisMessages
>
0
{
// Logged as a warning just for visibility
log
.
Warn
(
"skipped pre-regensis relayed L2CrossDomainMessenger withdrawals"
,
"size"
,
skippedPreRegenesisMessages
)
}
if
relayedMessages
>
0
{
log
.
Info
(
"relayed legacy L2CrossDomainMessenger messages"
,
"size"
,
len
(
crossDomainRelayedMessages
))
}
if
skippedPreRegenesisMessages
>
0
{
// Logged as a warning just for visibility
log
.
Warn
(
"skipped pre-regensis relayed L2CrossDomainMessenger withdrawals"
,
"size"
,
skippedPreRegenesisMessages
)
}
// (2) L1StandardBridge
...
...
@@ -272,6 +283,9 @@ func LegacyL2ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, fromH
if
err
!=
nil
{
return
err
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
log
.
Info
(
"detected relayed legacy messages"
,
"size"
,
len
(
crossDomainRelayedMessages
))
}
for
i
:=
range
crossDomainRelayedMessages
{
relayedMessage
:=
crossDomainRelayedMessages
[
i
]
...
...
@@ -279,19 +293,16 @@ func LegacyL2ProcessFinalizedBridgeEvents(log log.Logger, db *database.DB, fromH
if
err
!=
nil
{
return
err
}
else
if
message
==
nil
{
log
.
Error
(
"missing indexed legacy L1CrossDomainMessenger message"
,
"
message_hash"
,
relayedMessage
.
MessageHash
,
"tx_hash"
,
relayedMessage
.
Event
.
TransactionHash
)
return
fmt
.
Errorf
(
"missing indexed L1CrossDomainMessager message
"
)
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
()
)
}
if
err
:=
db
.
BridgeMessages
.
MarkRelayedL1BridgeMessage
(
relayedMessage
.
MessageHash
,
relayedMessage
.
Event
.
GUID
);
err
!=
nil
{
log
.
Error
(
"failed to relay cross domain message"
,
"err"
,
err
)
return
err
}
}
if
len
(
crossDomainRelayedMessages
)
>
0
{
log
.
Info
(
"relayed legacy L1CrossDomainMessenger messages"
,
"size"
,
len
(
crossDomainRelayedMessages
))
}
// (2) L2StandardBridge
// no-op for now as there's nothing actionable to do here besides sanity checks that we'll skip for now
...
...
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