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