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
80b2ce0d
Commit
80b2ce0d
authored
Aug 14, 2023
by
Hamdi Allam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
query events using filter. Fill in some derived fields
parent
3531c1d9
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
79 additions
and
78 deletions
+79
-78
blocks.go
indexer/database/blocks.go
+3
-3
contract_events.go
indexer/database/contract_events.go
+8
-8
types.go
indexer/database/types.go
+6
-6
contract_events.go
indexer/processor/contract_events.go
+6
-6
cross_domain_messenger.go
indexer/processor/cross_domain_messenger.go
+7
-7
l1_processor.go
indexer/processor/l1_processor.go
+17
-16
l2_processor.go
indexer/processor/l2_processor.go
+12
-12
l2_to_l1_message_passer.go
indexer/processor/l2_to_l1_message_passer.go
+3
-3
optimism_portal.go
indexer/processor/optimism_portal.go
+9
-9
standard_bridge.go
indexer/processor/standard_bridge.go
+8
-8
No files found.
indexer/database/blocks.go
View file @
80b2ce0d
...
...
@@ -23,17 +23,17 @@ type BlockHeader struct {
Number
U256
Timestamp
uint64
GethHeader
*
Geth
Header
`gorm:"serializer:rlp;column:rlp_bytes"`
RLPHeader
*
RLP
Header
`gorm:"serializer:rlp;column:rlp_bytes"`
}
func
BlockHeaderFrom
Geth
Header
(
header
*
types
.
Header
)
BlockHeader
{
func
BlockHeaderFromHeader
(
header
*
types
.
Header
)
BlockHeader
{
return
BlockHeader
{
Hash
:
header
.
Hash
(),
ParentHash
:
header
.
ParentHash
,
Number
:
U256
{
Int
:
header
.
Number
},
Timestamp
:
header
.
Time
,
GethHeader
:
(
*
Geth
Header
)(
header
),
RLPHeader
:
(
*
RLP
Header
)(
header
),
}
}
...
...
indexer/database/contract_events.go
View file @
80b2ce0d
...
...
@@ -29,11 +29,11 @@ type ContractEvent struct {
Timestamp
uint64
// NOTE: NOT ALL THE DERIVED FIELDS ON `types.Log` ARE
// AVAILABLE.
ONLY THE ONES LISTED ABOVE.
Geth
Log
*
types
.
Log
`gorm:"serializer:rlp;column:rlp_bytes"`
// AVAILABLE.
FIELDS LISTED ABOVE ARE FILLED IN
RLP
Log
*
types
.
Log
`gorm:"serializer:rlp;column:rlp_bytes"`
}
func
ContractEventFrom
Geth
Log
(
log
*
types
.
Log
,
timestamp
uint64
)
ContractEvent
{
func
ContractEventFromLog
(
log
*
types
.
Log
,
timestamp
uint64
)
ContractEvent
{
eventSig
:=
common
.
Hash
{}
if
len
(
log
.
Topics
)
>
0
{
eventSig
=
log
.
Topics
[
0
]
...
...
@@ -51,16 +51,16 @@ func ContractEventFromGethLog(log *types.Log, timestamp uint64) ContractEvent {
Timestamp
:
timestamp
,
Geth
Log
:
log
,
RLP
Log
:
log
,
}
}
func
(
c
*
ContractEvent
)
AfterFind
(
tx
*
gorm
.
DB
)
error
{
// Fill in some of the derived fields that are not
// populated when decoding the
Geth
Log from RLP
c
.
Geth
Log
.
BlockHash
=
c
.
BlockHash
c
.
Geth
Log
.
TxHash
=
c
.
TransactionHash
c
.
Geth
Log
.
Index
=
uint
(
c
.
LogIndex
)
// populated when decoding the
RLP
Log from RLP
c
.
RLP
Log
.
BlockHash
=
c
.
BlockHash
c
.
RLP
Log
.
TxHash
=
c
.
TransactionHash
c
.
RLP
Log
.
Index
=
uint
(
c
.
LogIndex
)
return
nil
}
...
...
indexer/database/types.go
View file @
80b2ce0d
...
...
@@ -68,13 +68,13 @@ func (u256 U256) Value() (driver.Value, error) {
return
numeric
.
Value
()
}
type
Geth
Header
types
.
Header
type
RLP
Header
types
.
Header
func
(
h
*
Geth
Header
)
EncodeRLP
(
w
io
.
Writer
)
error
{
func
(
h
*
RLP
Header
)
EncodeRLP
(
w
io
.
Writer
)
error
{
return
types
.
NewBlockWithHeader
((
*
types
.
Header
)(
h
))
.
EncodeRLP
(
w
)
}
func
(
h
*
Geth
Header
)
DecodeRLP
(
s
*
rlp
.
Stream
)
error
{
func
(
h
*
RLP
Header
)
DecodeRLP
(
s
*
rlp
.
Stream
)
error
{
block
:=
new
(
types
.
Block
)
err
:=
block
.
DecodeRLP
(
s
)
if
err
!=
nil
{
...
...
@@ -82,14 +82,14 @@ func (h *GethHeader) DecodeRLP(s *rlp.Stream) error {
}
header
:=
block
.
Header
()
*
h
=
(
Geth
Header
)(
*
header
)
*
h
=
(
RLP
Header
)(
*
header
)
return
nil
}
func
(
h
*
Geth
Header
)
Header
()
*
types
.
Header
{
func
(
h
*
RLP
Header
)
Header
()
*
types
.
Header
{
return
(
*
types
.
Header
)(
h
)
}
func
(
h
*
Geth
Header
)
Hash
()
common
.
Hash
{
func
(
h
*
RLP
Header
)
Hash
()
common
.
Hash
{
return
h
.
Header
()
.
Hash
()
}
indexer/processor/contract_events.go
View file @
80b2ce0d
...
...
@@ -31,16 +31,16 @@ func NewProcessedContractEvents() *ProcessedContractEvents {
}
func
(
p
*
ProcessedContractEvents
)
AddLog
(
log
*
types
.
Log
,
time
uint64
)
*
database
.
ContractEvent
{
contractEvent
:=
database
.
ContractEventFromGeth
Log
(
log
,
time
)
event
:=
database
.
ContractEventFrom
Log
(
log
,
time
)
emptyHash
:=
common
.
Hash
{}
p
.
events
=
append
(
p
.
events
,
&
contractE
vent
)
p
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
}]
=
&
contractE
vent
if
contractEvent
.
EventSignature
!=
emptyHash
{
// ignore anon events
p
.
eventsBySignature
[
contractEvent
.
EventSignature
]
=
append
(
p
.
eventsBySignature
[
contractEvent
.
EventSignature
],
&
contractE
vent
)
p
.
events
=
append
(
p
.
events
,
&
e
vent
)
p
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
}]
=
&
e
vent
if
event
.
EventSignature
!=
emptyHash
{
p
.
eventsBySignature
[
event
.
EventSignature
]
=
append
(
p
.
eventsBySignature
[
event
.
EventSignature
],
&
e
vent
)
}
return
&
contractE
vent
return
&
e
vent
}
func
UnpackLog
(
out
interface
{},
log
*
types
.
Log
,
name
string
,
contractAbi
*
abi
.
ABI
)
error
{
...
...
indexer/processor/cross_domain_messenger.go
View file @
80b2ce0d
...
...
@@ -40,12 +40,12 @@ type CrossDomainMessengerSentMessageEvent struct {
Value
*
big
.
Int
MessageHash
common
.
Hash
RawEvent
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
type
CrossDomainMessengerRelayedMessageEvent
struct
{
*
bindings
.
CrossDomainMessengerRelayedMessage
Raw
Event
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
func
CrossDomainMessengerSentMessageEvents
(
events
*
ProcessedContractEvents
)
([]
CrossDomainMessengerSentMessageEvent
,
error
)
{
...
...
@@ -60,7 +60,7 @@ func CrossDomainMessengerSentMessageEvents(events *ProcessedContractEvents) ([]C
processedSentMessageEvents
:=
events
.
eventsBySignature
[
sentMessageEventAbi
.
ID
]
crossDomainMessageEvents
:=
make
([]
CrossDomainMessengerSentMessageEvent
,
len
(
processedSentMessageEvents
))
for
i
,
sentMessageEvent
:=
range
processedSentMessageEvents
{
log
:=
sentMessageEvent
.
Geth
Log
log
:=
sentMessageEvent
.
RLP
Log
var
sentMsgData
bindings
.
CrossDomainMessengerSentMessage
sentMsgData
.
Raw
=
*
log
...
...
@@ -70,7 +70,7 @@ func CrossDomainMessengerSentMessageEvents(events *ProcessedContractEvents) ([]C
}
var
sentMsgExtensionData
bindings
.
CrossDomainMessengerSentMessageExtension1
extensionLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
Geth
Log
extensionLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
RLP
Log
sentMsgExtensionData
.
Raw
=
*
extensionLog
err
=
UnpackLog
(
&
sentMsgExtensionData
,
extensionLog
,
sentMessageEventExtensionAbi
.
Name
,
crossDomainMessengerABI
)
if
err
!=
nil
{
...
...
@@ -86,7 +86,7 @@ func CrossDomainMessengerSentMessageEvents(events *ProcessedContractEvents) ([]C
CrossDomainMessengerSentMessage
:
&
sentMsgData
,
Value
:
sentMsgExtensionData
.
Value
,
MessageHash
:
msgHash
,
RawEvent
:
sentMessageEvent
,
Event
:
sentMessageEvent
,
}
}
...
...
@@ -103,7 +103,7 @@ func CrossDomainMessengerRelayedMessageEvents(events *ProcessedContractEvents) (
processedRelayedMessageEvents
:=
events
.
eventsBySignature
[
relayedMessageEventAbi
.
ID
]
crossDomainMessageEvents
:=
make
([]
CrossDomainMessengerRelayedMessageEvent
,
len
(
processedRelayedMessageEvents
))
for
i
,
relayedMessageEvent
:=
range
processedRelayedMessageEvents
{
log
:=
relayedMessageEvent
.
Geth
Log
log
:=
relayedMessageEvent
.
RLP
Log
var
relayedMsgData
bindings
.
CrossDomainMessengerRelayedMessage
relayedMsgData
.
Raw
=
*
log
...
...
@@ -114,7 +114,7 @@ func CrossDomainMessengerRelayedMessageEvents(events *ProcessedContractEvents) (
crossDomainMessageEvents
[
i
]
=
CrossDomainMessengerRelayedMessageEvent
{
CrossDomainMessengerRelayedMessage
:
&
relayedMsgData
,
RawEvent
:
relayedMessageEvent
,
Event
:
relayedMessageEvent
,
}
}
...
...
indexer/processor/l1_processor.go
View file @
80b2ce0d
...
...
@@ -197,7 +197,7 @@ func l1ProcessFn(processLog log.Logger, ethClient node.EthClient, l1Contracts L1
continue
}
indexedL1Headers
=
append
(
indexedL1Headers
,
&
database
.
L1BlockHeader
{
BlockHeader
:
database
.
BlockHeaderFrom
Geth
Header
(
header
)})
indexedL1Headers
=
append
(
indexedL1Headers
,
&
database
.
L1BlockHeader
{
BlockHeader
:
database
.
BlockHeaderFromHeader
(
header
)})
}
/** Update Database **/
...
...
@@ -275,7 +275,7 @@ func l1ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
transactionDeposits
[
i
]
=
&
database
.
L1TransactionDeposit
{
SourceHash
:
depositTx
.
SourceHash
,
L2TransactionHash
:
types
.
NewTx
(
depositTx
)
.
Hash
(),
InitiatedL1EventGUID
:
depositEvent
.
Raw
Event
.
GUID
,
InitiatedL1EventGUID
:
depositEvent
.
Event
.
GUID
,
Version
:
database
.
U256
{
Int
:
depositEvent
.
Version
},
OpaqueData
:
depositEvent
.
OpaqueData
,
GasLimit
:
database
.
U256
{
Int
:
new
(
big
.
Int
)
.
SetUint64
(
depositTx
.
Gas
)},
...
...
@@ -284,7 +284,7 @@ func l1ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
ToAddress
:
depositTx
.
From
,
Amount
:
database
.
U256
{
Int
:
depositTx
.
Value
},
Data
:
depositTx
.
Data
,
Timestamp
:
depositEvent
.
Raw
Event
.
Timestamp
,
Timestamp
:
depositEvent
.
Event
.
Timestamp
,
},
}
...
...
@@ -340,7 +340,7 @@ func l1ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
if
withdrawal
==
nil
{
// We need to ensure we are in a caught up state before claiming a missing event. Since L2 timestamps
// are derived from L1, we can simply compare the timestamp of this event with the latest L2 header.
if
provenWithdrawal
.
Raw
Event
.
Timestamp
>
latestL2Header
.
Timestamp
{
if
provenWithdrawal
.
Event
.
Timestamp
>
latestL2Header
.
Timestamp
{
processLog
.
Warn
(
"behind on indexed L2 withdrawals"
)
return
errors
.
New
(
"waiting for L2Processor to catch up"
)
}
else
{
...
...
@@ -349,7 +349,7 @@ func l1ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
}
}
err
=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalProvenEvent
(
withdrawalHash
,
provenWithdrawal
.
Raw
Event
.
GUID
)
err
=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalProvenEvent
(
withdrawalHash
,
provenWithdrawal
.
Event
.
GUID
)
if
err
!=
nil
{
return
err
}
...
...
@@ -376,7 +376,7 @@ func l1ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
return
errors
.
New
(
"withdrawal missing!"
)
}
err
=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalFinalizedEvent
(
withdrawalHash
,
finalizedWithdrawal
.
Raw
Event
.
GUID
,
finalizedWithdrawal
.
Success
)
err
=
db
.
BridgeTransactions
.
MarkL2TransactionWithdrawalFinalizedEvent
(
withdrawalHash
,
finalizedWithdrawal
.
Event
.
GUID
,
finalizedWithdrawal
.
Success
)
if
err
!=
nil
{
return
err
}
...
...
@@ -399,10 +399,10 @@ func l1ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
sentMessages
:=
make
([]
*
database
.
L1BridgeMessage
,
len
(
sentMessageEvents
))
for
i
,
sentMessageEvent
:=
range
sentMessageEvents
{
log
:=
sentMessageEvent
.
RawEvent
.
Geth
Log
log
:=
sentMessageEvent
.
Event
.
RLP
Log
// extract the deposit hash from the previous TransactionDepositedEvent
transactionDepositedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
-
1
}]
.
Geth
Log
transactionDepositedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
-
1
}]
.
RLP
Log
depositTx
,
err
:=
derive
.
UnmarshalDepositLogEvent
(
transactionDepositedLog
)
if
err
!=
nil
{
return
err
...
...
@@ -413,14 +413,14 @@ func l1ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
BridgeMessage
:
database
.
BridgeMessage
{
Nonce
:
database
.
U256
{
Int
:
sentMessageEvent
.
MessageNonce
},
MessageHash
:
sentMessageEvent
.
MessageHash
,
SentMessageEventGUID
:
sentMessageEvent
.
Raw
Event
.
GUID
,
SentMessageEventGUID
:
sentMessageEvent
.
Event
.
GUID
,
GasLimit
:
database
.
U256
{
Int
:
sentMessageEvent
.
GasLimit
},
Tx
:
database
.
Transaction
{
FromAddress
:
sentMessageEvent
.
Sender
,
ToAddress
:
sentMessageEvent
.
Target
,
Amount
:
database
.
U256
{
Int
:
sentMessageEvent
.
Value
},
Data
:
sentMessageEvent
.
Message
,
Timestamp
:
sentMessageEvent
.
Raw
Event
.
Timestamp
,
Timestamp
:
sentMessageEvent
.
Event
.
Timestamp
,
},
},
}
...
...
@@ -454,7 +454,7 @@ func l1ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
return
fmt
.
Errorf
(
"missing indexed L2CrossDomainMessager mesesage: 0x%x"
,
relayedMessage
.
MsgHash
)
}
err
=
db
.
BridgeMessages
.
MarkRelayedL2BridgeMessage
(
relayedMessage
.
MsgHash
,
relayedMessage
.
Raw
Event
.
GUID
)
err
=
db
.
BridgeMessages
.
MarkRelayedL2BridgeMessage
(
relayedMessage
.
MsgHash
,
relayedMessage
.
Event
.
GUID
)
if
err
!=
nil
{
return
err
}
...
...
@@ -479,11 +479,12 @@ func l1ProcessContractEventsStandardBridge(processLog log.Logger, db *database.D
deposits
:=
make
([]
*
database
.
L1BridgeDeposit
,
len
(
initiatedDepositEvents
))
for
i
,
initiatedBridgeEvent
:=
range
initiatedDepositEvents
{
log
:=
initiatedBridgeEvent
.
RawEvent
.
Geth
Log
log
:=
initiatedBridgeEvent
.
Event
.
RLP
Log
// extract the deposit hash from the following TransactionDeposited event
transactionDepositedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
GethLog
depositTx
,
err
:=
derive
.
UnmarshalDepositLogEvent
(
transactionDepositedLog
)
// extract the deposit hash from the following TransactionDeposited event. The `BlockHash` and `LogIndex`
// fields are filled in for `RLPLog` which is required for `DepositTx#SourceHash` to be computed correctly
transactionDepositedRLPLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
RLPLog
depositTx
,
err
:=
derive
.
UnmarshalDepositLogEvent
(
transactionDepositedRLPLog
)
if
err
!=
nil
{
return
err
}
...
...
@@ -497,7 +498,7 @@ func l1ProcessContractEventsStandardBridge(processLog log.Logger, db *database.D
ToAddress
:
initiatedBridgeEvent
.
To
,
Amount
:
database
.
U256
{
Int
:
initiatedBridgeEvent
.
Amount
},
Data
:
initiatedBridgeEvent
.
ExtraData
,
Timestamp
:
initiatedBridgeEvent
.
Raw
Event
.
Timestamp
,
Timestamp
:
initiatedBridgeEvent
.
Event
.
Timestamp
,
},
}
}
...
...
indexer/processor/l2_processor.go
View file @
80b2ce0d
...
...
@@ -106,7 +106,7 @@ func l2ProcessFn(processLog log.Logger, ethClient node.EthClient, l2Contracts L2
l2Headers
:=
make
([]
*
database
.
L2BlockHeader
,
len
(
headers
))
l2HeaderMap
:=
make
(
map
[
common
.
Hash
]
*
types
.
Header
)
for
i
,
header
:=
range
headers
{
l2Headers
[
i
]
=
&
database
.
L2BlockHeader
{
BlockHeader
:
database
.
BlockHeaderFrom
Geth
Header
(
header
)}
l2Headers
[
i
]
=
&
database
.
L2BlockHeader
{
BlockHeader
:
database
.
BlockHeaderFromHeader
(
header
)}
l2HeaderMap
[
l2Headers
[
i
]
.
Hash
]
=
header
}
...
...
@@ -183,7 +183,7 @@ func l2ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
for
i
,
withdrawalEvent
:=
range
messagesPassed
{
transactionWithdrawals
[
i
]
=
&
database
.
L2TransactionWithdrawal
{
WithdrawalHash
:
withdrawalEvent
.
WithdrawalHash
,
InitiatedL2EventGUID
:
withdrawalEvent
.
Raw
Event
.
GUID
,
InitiatedL2EventGUID
:
withdrawalEvent
.
Event
.
GUID
,
Nonce
:
database
.
U256
{
Int
:
withdrawalEvent
.
Nonce
},
GasLimit
:
database
.
U256
{
Int
:
withdrawalEvent
.
GasLimit
},
Tx
:
database
.
Transaction
{
...
...
@@ -191,7 +191,7 @@ func l2ProcessContractEventsBridgeTransactions(processLog log.Logger, db *databa
ToAddress
:
withdrawalEvent
.
Target
,
Amount
:
database
.
U256
{
Int
:
withdrawalEvent
.
Value
},
Data
:
withdrawalEvent
.
Data
,
Timestamp
:
withdrawalEvent
.
Raw
Event
.
Timestamp
,
Timestamp
:
withdrawalEvent
.
Event
.
Timestamp
,
},
}
...
...
@@ -246,10 +246,10 @@ func l2ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
sentMessages
:=
make
([]
*
database
.
L2BridgeMessage
,
len
(
sentMessageEvents
))
for
i
,
sentMessageEvent
:=
range
sentMessageEvents
{
log
:=
sentMessageEvent
.
RawEvent
.
Geth
Log
log
:=
sentMessageEvent
.
Event
.
RLP
Log
// extract the withdrawal hash from the previous MessagePassed event
msgPassedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
-
1
}]
.
Geth
Log
msgPassedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
-
1
}]
.
RLP
Log
msgPassedEvent
,
err
:=
l2ToL1MessagePasserABI
.
ParseMessagePassed
(
*
msgPassedLog
)
if
err
!=
nil
{
return
err
...
...
@@ -260,14 +260,14 @@ func l2ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
BridgeMessage
:
database
.
BridgeMessage
{
Nonce
:
database
.
U256
{
Int
:
sentMessageEvent
.
MessageNonce
},
MessageHash
:
sentMessageEvent
.
MessageHash
,
SentMessageEventGUID
:
sentMessageEvent
.
Raw
Event
.
GUID
,
SentMessageEventGUID
:
sentMessageEvent
.
Event
.
GUID
,
GasLimit
:
database
.
U256
{
Int
:
sentMessageEvent
.
GasLimit
},
Tx
:
database
.
Transaction
{
FromAddress
:
sentMessageEvent
.
Sender
,
ToAddress
:
sentMessageEvent
.
Target
,
Amount
:
database
.
U256
{
Int
:
sentMessageEvent
.
Value
},
Data
:
sentMessageEvent
.
Message
,
Timestamp
:
sentMessageEvent
.
Raw
Event
.
Timestamp
,
Timestamp
:
sentMessageEvent
.
Event
.
Timestamp
,
},
},
}
...
...
@@ -307,7 +307,7 @@ func l2ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
// Since the transaction processor running prior does not ensure the deposit inclusion, we need to
// ensure we are in a caught up state before claiming a missing event. Since L2 timestamps are derived
// from L1, we can simply compare the timestamp of this event with the latest L1 header.
if
latestL1Header
==
nil
||
relayedMessage
.
Raw
Event
.
Timestamp
>
latestL1Header
.
Timestamp
{
if
latestL1Header
==
nil
||
relayedMessage
.
Event
.
Timestamp
>
latestL1Header
.
Timestamp
{
processLog
.
Warn
(
"waiting for L1Processor to catch up on L1CrossDomainMessages"
)
return
errors
.
New
(
"waiting for L1Processor to catch up"
)
}
else
{
...
...
@@ -316,7 +316,7 @@ func l2ProcessContractEventsBridgeCrossDomainMessages(processLog log.Logger, db
}
}
err
=
db
.
BridgeMessages
.
MarkRelayedL1BridgeMessage
(
relayedMessage
.
MsgHash
,
relayedMessage
.
Raw
Event
.
GUID
)
err
=
db
.
BridgeMessages
.
MarkRelayedL1BridgeMessage
(
relayedMessage
.
MsgHash
,
relayedMessage
.
Event
.
GUID
)
if
err
!=
nil
{
return
err
}
...
...
@@ -346,10 +346,10 @@ func l2ProcessContractEventsStandardBridge(processLog log.Logger, db *database.D
withdrawals
:=
make
([]
*
database
.
L2BridgeWithdrawal
,
len
(
initiatedWithdrawalEvents
))
for
i
,
initiatedBridgeEvent
:=
range
initiatedWithdrawalEvents
{
log
:=
initiatedBridgeEvent
.
RawEvent
.
Geth
Log
log
:=
initiatedBridgeEvent
.
Event
.
RLP
Log
// extract the withdrawal hash from the following MessagePassed event
msgPassedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
Geth
Log
msgPassedLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
RLP
Log
msgPassedEvent
,
err
:=
l2ToL1MessagePasserABI
.
ParseMessagePassed
(
*
msgPassedLog
)
if
err
!=
nil
{
return
err
...
...
@@ -364,7 +364,7 @@ func l2ProcessContractEventsStandardBridge(processLog log.Logger, db *database.D
ToAddress
:
initiatedBridgeEvent
.
To
,
Amount
:
database
.
U256
{
Int
:
initiatedBridgeEvent
.
Amount
},
Data
:
initiatedBridgeEvent
.
ExtraData
,
Timestamp
:
initiatedBridgeEvent
.
Raw
Event
.
Timestamp
,
Timestamp
:
initiatedBridgeEvent
.
Event
.
Timestamp
,
},
}
}
...
...
indexer/processor/l2_to_l1_message_passer.go
View file @
80b2ce0d
...
...
@@ -7,7 +7,7 @@ import (
type
L2ToL1MessagePasserMessagePassed
struct
{
*
bindings
.
L2ToL1MessagePasserMessagePassed
Raw
Event
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
func
L2ToL1MessagePasserMessagesPassed
(
events
*
ProcessedContractEvents
)
([]
L2ToL1MessagePasserMessagePassed
,
error
)
{
...
...
@@ -20,7 +20,7 @@ func L2ToL1MessagePasserMessagesPassed(events *ProcessedContractEvents) ([]L2ToL
processedMessagePassedEvents
:=
events
.
eventsBySignature
[
l2ToL1MessagePasserAbi
.
Events
[
eventName
]
.
ID
]
messagesPassed
:=
make
([]
L2ToL1MessagePasserMessagePassed
,
len
(
processedMessagePassedEvents
))
for
i
,
messagePassedEvent
:=
range
processedMessagePassedEvents
{
log
:=
messagePassedEvent
.
Geth
Log
log
:=
messagePassedEvent
.
RLP
Log
var
messagePassed
bindings
.
L2ToL1MessagePasserMessagePassed
messagePassed
.
Raw
=
*
log
...
...
@@ -31,7 +31,7 @@ func L2ToL1MessagePasserMessagesPassed(events *ProcessedContractEvents) ([]L2ToL
messagesPassed
[
i
]
=
L2ToL1MessagePasserMessagePassed
{
L2ToL1MessagePasserMessagePassed
:
&
messagePassed
,
RawEvent
:
messagePassedEvent
,
Event
:
messagePassedEvent
,
}
}
...
...
indexer/processor/optimism_portal.go
View file @
80b2ce0d
...
...
@@ -14,17 +14,17 @@ import (
type
OptimismPortalTransactionDepositEvent
struct
{
*
bindings
.
OptimismPortalTransactionDeposited
DepositTx
*
types
.
DepositTx
RawEvent
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
type
OptimismPortalWithdrawalProvenEvent
struct
{
*
bindings
.
OptimismPortalWithdrawalProven
Raw
Event
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
type
OptimismPortalWithdrawalFinalizedEvent
struct
{
*
bindings
.
OptimismPortalWithdrawalFinalized
Raw
Event
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
type
OptimismPortalProvenWithdrawal
struct
{
...
...
@@ -47,7 +47,7 @@ func OptimismPortalTransactionDepositEvents(events *ProcessedContractEvents) ([]
processedTxDepositedEvents
:=
events
.
eventsBySignature
[
derive
.
DepositEventABIHash
]
txDeposits
:=
make
([]
OptimismPortalTransactionDepositEvent
,
len
(
processedTxDepositedEvents
))
for
i
,
txDepositEvent
:=
range
processedTxDepositedEvents
{
log
:=
txDepositEvent
.
Geth
Log
log
:=
txDepositEvent
.
RLP
Log
depositTx
,
err
:=
derive
.
UnmarshalDepositLogEvent
(
log
)
if
err
!=
nil
{
...
...
@@ -64,7 +64,7 @@ func OptimismPortalTransactionDepositEvents(events *ProcessedContractEvents) ([]
txDeposits
[
i
]
=
OptimismPortalTransactionDepositEvent
{
OptimismPortalTransactionDeposited
:
&
txDeposit
,
DepositTx
:
depositTx
,
RawEvent
:
txDepositEvent
,
Event
:
txDepositEvent
,
}
}
...
...
@@ -81,7 +81,7 @@ func OptimismPortalWithdrawalProvenEvents(events *ProcessedContractEvents) ([]Op
processedWithdrawalProvenEvents
:=
events
.
eventsBySignature
[
optimismPortalAbi
.
Events
[
eventName
]
.
ID
]
provenEvents
:=
make
([]
OptimismPortalWithdrawalProvenEvent
,
len
(
processedWithdrawalProvenEvents
))
for
i
,
provenEvent
:=
range
processedWithdrawalProvenEvents
{
log
:=
provenEvent
.
Geth
Log
log
:=
provenEvent
.
RLP
Log
var
withdrawalProven
bindings
.
OptimismPortalWithdrawalProven
withdrawalProven
.
Raw
=
*
log
...
...
@@ -92,7 +92,7 @@ func OptimismPortalWithdrawalProvenEvents(events *ProcessedContractEvents) ([]Op
provenEvents
[
i
]
=
OptimismPortalWithdrawalProvenEvent
{
OptimismPortalWithdrawalProven
:
&
withdrawalProven
,
RawEvent
:
provenEvent
,
Event
:
provenEvent
,
}
}
...
...
@@ -109,7 +109,7 @@ func OptimismPortalWithdrawalFinalizedEvents(events *ProcessedContractEvents) ([
processedWithdrawalFinalizedEvents
:=
events
.
eventsBySignature
[
optimismPortalAbi
.
Events
[
eventName
]
.
ID
]
finalizedEvents
:=
make
([]
OptimismPortalWithdrawalFinalizedEvent
,
len
(
processedWithdrawalFinalizedEvents
))
for
i
,
finalizedEvent
:=
range
processedWithdrawalFinalizedEvents
{
log
:=
finalizedEvent
.
Geth
Log
log
:=
finalizedEvent
.
RLP
Log
var
withdrawalFinalized
bindings
.
OptimismPortalWithdrawalFinalized
err
:=
UnpackLog
(
&
withdrawalFinalized
,
log
,
eventName
,
optimismPortalAbi
)
...
...
@@ -119,7 +119,7 @@ func OptimismPortalWithdrawalFinalizedEvents(events *ProcessedContractEvents) ([
finalizedEvents
[
i
]
=
OptimismPortalWithdrawalFinalizedEvent
{
OptimismPortalWithdrawalFinalized
:
&
withdrawalFinalized
,
RawEvent
:
finalizedEvent
,
Event
:
finalizedEvent
,
}
}
...
...
indexer/processor/standard_bridge.go
View file @
80b2ce0d
...
...
@@ -20,7 +20,7 @@ type StandardBridgeInitiatedEvent struct {
*
bindings
.
StandardBridgeERC20BridgeInitiated
CrossDomainMessengerNonce
*
big
.
Int
RawEvent
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
type
StandardBridgeFinalizedEvent
struct
{
...
...
@@ -29,7 +29,7 @@ type StandardBridgeFinalizedEvent struct {
*
bindings
.
StandardBridgeERC20BridgeFinalized
CrossDomainMessengerNonce
*
big
.
Int
RawEvent
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
}
// StandardBridgeInitiatedEvents extracts all initiated bridge events from the contracts that follow the StandardBridge ABI. The
...
...
@@ -97,7 +97,7 @@ func _standardBridgeInitiatedEvents[BridgeEvent bindings.StandardBridgeETHBridge
processedInitiatedBridgeEvents
:=
events
.
eventsBySignature
[
StandardBridgeABI
.
Events
[
eventName
]
.
ID
]
initiatedBridgeEvents
:=
make
([]
StandardBridgeInitiatedEvent
,
len
(
processedInitiatedBridgeEvents
))
for
i
,
bridgeInitiatedEvent
:=
range
processedInitiatedBridgeEvents
{
log
:=
bridgeInitiatedEvent
.
Geth
Log
log
:=
bridgeInitiatedEvent
.
RLP
Log
var
bridgeData
BridgeEvent
err
:=
UnpackLog
(
&
bridgeData
,
log
,
eventName
,
StandardBridgeABI
)
...
...
@@ -109,7 +109,7 @@ func _standardBridgeInitiatedEvents[BridgeEvent bindings.StandardBridgeETHBridge
// - L1: BridgeInitiated -> Portal#DepositTransaction -> SentMessage ...
// - L1: BridgeInitiated -> L2ToL1MessagePasser#MessagePassed -> SentMessage ...
var
sentMsgData
bindings
.
L1CrossDomainMessengerSentMessage
sentMsgLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
2
}]
.
Geth
Log
sentMsgLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
2
}]
.
RLP
Log
sentMsgData
.
Raw
=
*
sentMsgLog
err
=
UnpackLog
(
&
sentMsgData
,
sentMsgLog
,
sentMessageEventAbi
.
Name
,
l1CrossDomainMessengerABI
)
if
err
!=
nil
{
...
...
@@ -152,7 +152,7 @@ func _standardBridgeInitiatedEvents[BridgeEvent bindings.StandardBridgeETHBridge
initiatedBridgeEvents
[
i
]
=
StandardBridgeInitiatedEvent
{
StandardBridgeERC20BridgeInitiated
:
erc20BridgeData
,
CrossDomainMessengerNonce
:
sentMsgData
.
MessageNonce
,
RawEvent
:
bridgeInitiatedEvent
,
Event
:
bridgeInitiatedEvent
,
}
}
...
...
@@ -197,7 +197,7 @@ func _standardBridgeFinalizedEvents[BridgeEvent bindings.StandardBridgeETHBridge
processedFinalizedBridgeEvents
:=
events
.
eventsBySignature
[
StandardBridgeABI
.
Events
[
eventName
]
.
ID
]
finalizedBridgeEvents
:=
make
([]
StandardBridgeFinalizedEvent
,
len
(
processedFinalizedBridgeEvents
))
for
i
,
bridgeFinalizedEvent
:=
range
processedFinalizedBridgeEvents
{
log
:=
bridgeFinalizedEvent
.
Geth
Log
log
:=
bridgeFinalizedEvent
.
RLP
Log
var
bridgeData
BridgeEvent
err
:=
UnpackLog
(
&
bridgeData
,
log
,
eventName
,
StandardBridgeABI
)
...
...
@@ -206,7 +206,7 @@ func _standardBridgeFinalizedEvents[BridgeEvent bindings.StandardBridgeETHBridge
}
// Look for the RelayedMessage event that follows right after the BridgeFinalized Event
relayedMsgLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
Geth
Log
relayedMsgLog
:=
events
.
eventByLogIndex
[
ProcessedContractEventLogIndexKey
{
log
.
BlockHash
,
log
.
Index
+
1
}]
.
RLP
Log
if
relayedMsgLog
.
Topics
[
0
]
!=
relayedMessageEventAbi
.
ID
{
return
nil
,
errors
.
New
(
"unexpected bridge event ordering"
)
}
...
...
@@ -280,7 +280,7 @@ func _standardBridgeFinalizedEvents[BridgeEvent bindings.StandardBridgeETHBridge
finalizedBridgeEvents
[
i
]
=
StandardBridgeFinalizedEvent
{
StandardBridgeERC20BridgeFinalized
:
erc20BridgeData
,
CrossDomainMessengerNonce
:
nonce
,
RawEvent
:
bridgeFinalizedEvent
,
Event
:
bridgeFinalizedEvent
,
}
}
...
...
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