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
d6ee0138
Commit
d6ee0138
authored
Nov 13, 2023
by
Hamdi Allam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
indexer.bridge.starting.height
parent
b00cc29e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
42 deletions
+14
-42
bridge_transactions.go
indexer/database/bridge_transactions.go
+14
-41
metrics.go
indexer/processors/bridge/metrics.go
+0
-1
No files found.
indexer/database/bridge_transactions.go
View file @
d6ee0138
...
...
@@ -133,10 +133,10 @@ func (db *bridgeTransactionsDB) L1LatestFinalizedBlockHeader() (*L1BlockHeader,
provenQuery
=
provenQuery
.
Order
(
"l1_contract_events.timestamp DESC"
)
.
Select
(
"l1_contract_events.*"
)
finalizedQuery
:=
db
.
gorm
.
Table
(
"l2_transaction_withdrawals"
)
.
Order
(
"timestamp DESC"
)
.
Limit
(
1
)
finalizedQuery
=
finalizedQuery
.
Joins
(
"INNER JOIN l1_contract_events ON l1_contract_events.guid = l2_transaction_withdrawals.
proven
_l1_event_guid"
)
finalizedQuery
=
finalizedQuery
.
Joins
(
"INNER JOIN l1_contract_events ON l1_contract_events.guid = l2_transaction_withdrawals.
finalized
_l1_event_guid"
)
finalizedQuery
=
finalizedQuery
.
Select
(
"l1_contract_events.*"
)
relayedQuery
:=
db
.
gorm
.
Table
(
"l2_bridge_messages"
)
.
Order
(
"timestamp DESC"
)
relayedQuery
:=
db
.
gorm
.
Table
(
"l2_bridge_messages"
)
.
Order
(
"timestamp DESC"
)
.
Limit
(
1
)
relayedQuery
=
relayedQuery
.
Joins
(
"INNER JOIN l1_contract_events ON l1_contract_events.guid = l2_bridge_messages.relayed_message_event_guid"
)
relayedQuery
=
relayedQuery
.
Select
(
"l1_contract_events.*"
)
...
...
@@ -227,49 +227,22 @@ func (db *bridgeTransactionsDB) MarkL2TransactionWithdrawalFinalizedEvent(withdr
}
func
(
db
*
bridgeTransactionsDB
)
L2LatestBlockHeader
()
(
*
L2BlockHeader
,
error
)
{
// L2: Latest Withdrawal, Latest L2 Header of indexed deposit epoch
var
latestWithdrawalHeader
,
latestL2DepositHeader
*
L2BlockHeader
var
withdrawHeader
L2BlockHeader
withdrawalQuery
:=
db
.
gorm
.
Table
(
"l2_transaction_withdrawals"
)
.
Order
(
"timestamp DESC"
)
.
Limit
(
1
)
withdrawalQuery
=
withdrawalQuery
.
Joins
(
"INNER JOIN l2_contract_events ON l2_contract_events.guid = l2_transaction_withdrawals.initiated_l2_event_guid"
)
withdrawalQuery
=
withdrawalQuery
.
Joins
(
"INNER JOIN l2_block_headers ON l2_block_headers.hash = l2_contract_events.block_hash"
)
result
:=
withdrawalQuery
.
Select
(
"l2_block_headers.*"
)
.
Take
(
&
withdrawHeader
)
if
result
.
Error
!=
nil
&&
!
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
result
.
Error
}
else
if
!
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
latestWithdrawalHeader
=
&
withdrawHeader
}
// L2: Latest Withdrawal
l2Query
:=
db
.
gorm
.
Table
(
"l2_transaction_withdrawals"
)
.
Order
(
"timestamp DESC"
)
l2Query
=
l2Query
.
Joins
(
"INNER JOIN l2_contract_events ON l2_contract_events.guid = l2_transaction_withdrawals.initiated_l2_event_guid"
)
l2Query
=
l2Query
.
Joins
(
"INNER JOIN l2_block_headers ON l2_block_headers.hash = l2_contract_events.block_hash"
)
l2Query
=
l2Query
.
Select
(
"l2_block_headers.*"
)
// Check for any deposits that may have been included after the latest withdrawal. However, since the bridge
// processor only inserts entries when the corresponding epoch has been indexed on both L1 and L2, we can
// simply look for the latest L2 block with at <= time of the latest L1 deposit.
var
l1Deposit
L1TransactionDeposit
result
=
db
.
gorm
.
Table
(
"l1_transaction_deposits"
)
.
Order
(
"timestamp DESC"
)
.
Limit
(
1
)
.
Take
(
&
l1Deposit
)
if
result
.
Error
!=
nil
&&
!
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
result
.
Error
}
else
if
!
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
var
l2DepositHeader
L2BlockHeader
result
:=
db
.
gorm
.
Table
(
"l2_block_headers"
)
.
Order
(
"timestamp DESC"
)
.
Limit
(
1
)
.
Where
(
"timestamp <= ?"
,
l1Deposit
.
Tx
.
Timestamp
)
.
Take
(
&
l2DepositHeader
)
if
result
.
Error
!=
nil
&&
!
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
result
.
Error
}
else
if
!
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
latestL2DepositHeader
=
&
l2DepositHeader
var
l2Header
L2BlockHeader
result
:=
l2Query
.
Take
(
&
l2Header
)
if
result
.
Error
!=
nil
{
if
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
nil
}
return
nil
,
result
.
Error
}
// compare
if
latestWithdrawalHeader
==
nil
{
return
latestL2DepositHeader
,
nil
}
else
if
latestL2DepositHeader
==
nil
{
return
latestWithdrawalHeader
,
nil
}
if
latestWithdrawalHeader
.
Timestamp
>=
latestL2DepositHeader
.
Timestamp
{
return
latestWithdrawalHeader
,
nil
}
else
{
return
latestL2DepositHeader
,
nil
}
return
&
l2Header
,
nil
}
func
(
db
*
bridgeTransactionsDB
)
L2LatestFinalizedBlockHeader
()
(
*
L2BlockHeader
,
error
)
{
...
...
indexer/processors/bridge/metrics.go
View file @
d6ee0138
...
...
@@ -95,7 +95,6 @@ func NewMetrics(registry *prometheus.Registry) Metricer {
}),
latestHeight
:
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
Namespace
:
MetricsNamespace
,
Subsystem
:
"l1"
,
Name
:
"height"
,
Help
:
"the latest processed l1 block height"
,
},
[]
string
{
...
...
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