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
19b932cc
Unverified
Commit
19b932cc
authored
Aug 22, 2023
by
mergify[bot]
Committed by
GitHub
Aug 22, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into dependabot/npm_and_yarn/nx-16.7.3
parents
f0aa02d2
211dd87e
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
158 additions
and
110 deletions
+158
-110
deposits.go
indexer/api/routes/deposits.go
+1
-1
withdrawals.go
indexer/api/routes/withdrawals.go
+1
-1
blocks.go
indexer/database/blocks.go
+5
-5
bridge_messages.go
indexer/database/bridge_messages.go
+3
-2
bridge_transactions.go
indexer/database/bridge_transactions.go
+6
-5
u256.go
indexer/database/serializers/u256.go
+60
-0
types.go
indexer/database/types.go
+5
-59
bridge_messages_e2e_test.go
indexer/e2e_tests/bridge_messages_e2e_test.go
+6
-6
bridge_transactions_e2e_test.go
indexer/e2e_tests/bridge_transactions_e2e_test.go
+5
-5
bridge_transfers_e2e_test.go
indexer/e2e_tests/bridge_transfers_e2e_test.go
+4
-4
etl_e2e_test.go
indexer/e2e_tests/etl_e2e_test.go
+5
-5
l1_etl.go
indexer/etl/l1_etl.go
+1
-1
l2_etl.go
indexer/etl/l2_etl.go
+1
-1
bridge.go
indexer/processors/bridge.go
+1
-1
cross_domain_messenger.go
indexer/processors/contracts/cross_domain_messenger.go
+3
-3
l2_to_l1_message_passer.go
indexer/processors/contracts/l2_to_l1_message_passer.go
+5
-5
optimism_portal.go
indexer/processors/contracts/optimism_portal.go
+3
-3
standard_bridge.go
indexer/processors/contracts/standard_bridge.go
+2
-2
provider.go
op-challenger/fault/cannon/provider.go
+4
-0
provider_test.go
op-challenger/fault/cannon/provider_test.go
+8
-0
player.go
op-challenger/fault/player.go
+11
-1
player_test.go
op-challenger/fault/player_test.go
+18
-0
No files found.
indexer/api/routes/deposits.go
View file @
19b932cc
...
@@ -46,7 +46,7 @@ func newDepositResponse(deposits *database.L1BridgeDepositsResponse) DepositResp
...
@@ -46,7 +46,7 @@ func newDepositResponse(deposits *database.L1BridgeDepositsResponse) DepositResp
},
},
From
:
deposit
.
L1BridgeDeposit
.
Tx
.
FromAddress
.
String
(),
From
:
deposit
.
L1BridgeDeposit
.
Tx
.
FromAddress
.
String
(),
To
:
deposit
.
L1BridgeDeposit
.
Tx
.
ToAddress
.
String
(),
To
:
deposit
.
L1BridgeDeposit
.
Tx
.
ToAddress
.
String
(),
Amount
:
deposit
.
L1BridgeDeposit
.
Tx
.
Amount
.
Int
.
String
(),
Amount
:
deposit
.
L1BridgeDeposit
.
Tx
.
Amount
.
String
(),
L1Token
:
TokenInfo
{
L1Token
:
TokenInfo
{
ChainId
:
1
,
ChainId
:
1
,
Address
:
deposit
.
L1BridgeDeposit
.
TokenPair
.
LocalTokenAddress
.
String
(),
Address
:
deposit
.
L1BridgeDeposit
.
TokenPair
.
LocalTokenAddress
.
String
(),
...
...
indexer/api/routes/withdrawals.go
View file @
19b932cc
...
@@ -60,7 +60,7 @@ func newWithdrawalResponse(withdrawals *database.L2BridgeWithdrawalsResponse) Wi
...
@@ -60,7 +60,7 @@ func newWithdrawalResponse(withdrawals *database.L2BridgeWithdrawalsResponse) Wi
From
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
FromAddress
.
String
(),
From
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
FromAddress
.
String
(),
To
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
ToAddress
.
String
(),
To
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
ToAddress
.
String
(),
TransactionHash
:
withdrawal
.
L2TransactionHash
.
String
(),
TransactionHash
:
withdrawal
.
L2TransactionHash
.
String
(),
Amount
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Amount
.
Int
.
String
(),
Amount
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Amount
.
String
(),
Proof
:
Proof
{
Proof
:
Proof
{
TransactionHash
:
withdrawal
.
ProvenL1TransactionHash
.
String
(),
TransactionHash
:
withdrawal
.
ProvenL1TransactionHash
.
String
(),
BlockTimestamp
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Timestamp
,
BlockTimestamp
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Timestamp
,
...
...
indexer/database/blocks.go
View file @
19b932cc
...
@@ -20,7 +20,7 @@ import (
...
@@ -20,7 +20,7 @@ import (
type
BlockHeader
struct
{
type
BlockHeader
struct
{
Hash
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
Hash
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
ParentHash
common
.
Hash
`gorm:"serializer:bytes"`
ParentHash
common
.
Hash
`gorm:"serializer:bytes"`
Number
U256
Number
*
big
.
Int
`gorm:"serializer:u256"`
Timestamp
uint64
Timestamp
uint64
RLPHeader
*
RLPHeader
`gorm:"serializer:rlp;column:rlp_bytes"`
RLPHeader
*
RLPHeader
`gorm:"serializer:rlp;column:rlp_bytes"`
...
@@ -30,7 +30,7 @@ func BlockHeaderFromHeader(header *types.Header) BlockHeader {
...
@@ -30,7 +30,7 @@ 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
:
header
.
Number
,
Timestamp
:
header
.
Time
,
Timestamp
:
header
.
Time
,
RLPHeader
:
(
*
RLPHeader
)(
header
),
RLPHeader
:
(
*
RLPHeader
)(
header
),
...
@@ -58,8 +58,8 @@ type LegacyStateBatch struct {
...
@@ -58,8 +58,8 @@ type LegacyStateBatch struct {
type
OutputProposal
struct
{
type
OutputProposal
struct
{
OutputRoot
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
OutputRoot
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
L2OutputIndex
U256
L2OutputIndex
*
big
.
Int
`gorm:"serializer:u256"`
L2BlockNumber
U256
L2BlockNumber
*
big
.
Int
`gorm:"serializer:u256"`
L1ContractEventGUID
uuid
.
UUID
L1ContractEventGUID
uuid
.
UUID
}
}
...
@@ -165,7 +165,7 @@ func (db *blocksDB) LatestCheckpointedOutput() (*OutputProposal, error) {
...
@@ -165,7 +165,7 @@ func (db *blocksDB) LatestCheckpointedOutput() (*OutputProposal, error) {
func
(
db
*
blocksDB
)
OutputProposal
(
index
*
big
.
Int
)
(
*
OutputProposal
,
error
)
{
func
(
db
*
blocksDB
)
OutputProposal
(
index
*
big
.
Int
)
(
*
OutputProposal
,
error
)
{
var
outputProposal
OutputProposal
var
outputProposal
OutputProposal
result
:=
db
.
gorm
.
Where
(
&
OutputProposal
{
L2OutputIndex
:
U256
{
Int
:
index
}
})
.
Take
(
&
outputProposal
)
result
:=
db
.
gorm
.
Where
(
&
OutputProposal
{
L2OutputIndex
:
index
})
.
Take
(
&
outputProposal
)
if
result
.
Error
!=
nil
{
if
result
.
Error
!=
nil
{
if
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
if
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
nil
return
nil
,
nil
...
...
indexer/database/bridge_messages.go
View file @
19b932cc
...
@@ -3,6 +3,7 @@ package database
...
@@ -3,6 +3,7 @@ package database
import
(
import
(
"errors"
"errors"
"fmt"
"fmt"
"math/big"
"gorm.io/gorm"
"gorm.io/gorm"
...
@@ -17,13 +18,13 @@ import (
...
@@ -17,13 +18,13 @@ import (
type
BridgeMessage
struct
{
type
BridgeMessage
struct
{
MessageHash
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
MessageHash
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
Nonce
U256
Nonce
*
big
.
Int
`gorm:"serializer:u256"`
SentMessageEventGUID
uuid
.
UUID
SentMessageEventGUID
uuid
.
UUID
RelayedMessageEventGUID
*
uuid
.
UUID
RelayedMessageEventGUID
*
uuid
.
UUID
Tx
Transaction
`gorm:"embedded"`
Tx
Transaction
`gorm:"embedded"`
GasLimit
U256
GasLimit
*
big
.
Int
`gorm:"serializer:u256"`
}
}
type
L1BridgeMessage
struct
{
type
L1BridgeMessage
struct
{
...
...
indexer/database/bridge_transactions.go
View file @
19b932cc
...
@@ -3,6 +3,7 @@ package database
...
@@ -3,6 +3,7 @@ package database
import
(
import
(
"errors"
"errors"
"fmt"
"fmt"
"math/big"
"github.com/google/uuid"
"github.com/google/uuid"
"gorm.io/gorm"
"gorm.io/gorm"
...
@@ -17,8 +18,8 @@ import (
...
@@ -17,8 +18,8 @@ import (
type
Transaction
struct
{
type
Transaction
struct
{
FromAddress
common
.
Address
`gorm:"serializer:bytes"`
FromAddress
common
.
Address
`gorm:"serializer:bytes"`
ToAddress
common
.
Address
`gorm:"serializer:bytes"`
ToAddress
common
.
Address
`gorm:"serializer:bytes"`
Amount
U256
Amount
*
big
.
Int
`gorm:"serializer:u256"`
Data
Bytes
`gorm:"serializer:bytes"`
Data
Bytes
`gorm:"serializer:bytes"`
Timestamp
uint64
Timestamp
uint64
}
}
...
@@ -28,12 +29,12 @@ type L1TransactionDeposit struct {
...
@@ -28,12 +29,12 @@ type L1TransactionDeposit struct {
InitiatedL1EventGUID
uuid
.
UUID
InitiatedL1EventGUID
uuid
.
UUID
Tx
Transaction
`gorm:"embedded"`
Tx
Transaction
`gorm:"embedded"`
GasLimit
U256
GasLimit
*
big
.
Int
`gorm:"serializer:u256"`
}
}
type
L2TransactionWithdrawal
struct
{
type
L2TransactionWithdrawal
struct
{
WithdrawalHash
common
.
Hash
`gorm:"serializer:bytes;primaryKey"`
WithdrawalHash
common
.
Hash
`gorm:"serializer:bytes;primaryKey"`
Nonce
U256
Nonce
*
big
.
Int
`gorm:"serializer:u256"`
InitiatedL2EventGUID
uuid
.
UUID
InitiatedL2EventGUID
uuid
.
UUID
ProvenL1EventGUID
*
uuid
.
UUID
ProvenL1EventGUID
*
uuid
.
UUID
...
@@ -41,7 +42,7 @@ type L2TransactionWithdrawal struct {
...
@@ -41,7 +42,7 @@ type L2TransactionWithdrawal struct {
Succeeded
*
bool
Succeeded
*
bool
Tx
Transaction
`gorm:"embedded"`
Tx
Transaction
`gorm:"embedded"`
GasLimit
U256
GasLimit
*
big
.
Int
`gorm:"serializer:u256"`
}
}
type
BridgeTransactionsView
interface
{
type
BridgeTransactionsView
interface
{
...
...
indexer/database/serializers/u256.go
0 → 100644
View file @
19b932cc
package
serializers
import
(
"context"
"fmt"
"math/big"
"reflect"
"github.com/jackc/pgtype"
"gorm.io/gorm/schema"
)
var
(
big10
=
big
.
NewInt
(
10
)
u256BigIntOverflow
=
new
(
big
.
Int
)
.
Exp
(
big
.
NewInt
(
2
),
big
.
NewInt
(
256
),
nil
)
)
type
U256Serializer
struct
{}
func
init
()
{
schema
.
RegisterSerializer
(
"u256"
,
U256Serializer
{})
}
func
(
U256Serializer
)
Scan
(
ctx
context
.
Context
,
field
*
schema
.
Field
,
dst
reflect
.
Value
,
dbValue
interface
{})
error
{
if
dbValue
==
nil
{
return
nil
}
else
if
field
.
FieldType
!=
reflect
.
TypeOf
((
*
big
.
Int
)(
nil
))
{
return
fmt
.
Errorf
(
"can only deserialize into a *big.Int: %T"
,
field
.
FieldType
)
}
numeric
:=
new
(
pgtype
.
Numeric
)
err
:=
numeric
.
Scan
(
dbValue
)
if
err
!=
nil
{
return
err
}
bigInt
:=
numeric
.
Int
if
numeric
.
Exp
>
0
{
factor
:=
new
(
big
.
Int
)
.
Exp
(
big10
,
big
.
NewInt
(
int64
(
numeric
.
Exp
)),
nil
)
bigInt
.
Mul
(
bigInt
,
factor
)
}
if
bigInt
.
Cmp
(
u256BigIntOverflow
)
>=
0
{
return
fmt
.
Errorf
(
"deserialized number larger than u256 can hold: %s"
,
bigInt
)
}
field
.
ReflectValueOf
(
ctx
,
dst
)
.
Set
(
reflect
.
ValueOf
(
bigInt
))
return
nil
}
func
(
U256Serializer
)
Value
(
ctx
context
.
Context
,
field
*
schema
.
Field
,
dst
reflect
.
Value
,
fieldValue
interface
{})
(
interface
{},
error
)
{
if
fieldValue
==
nil
||
(
field
.
FieldType
.
Kind
()
==
reflect
.
Pointer
&&
reflect
.
ValueOf
(
fieldValue
)
.
IsNil
())
{
return
nil
,
nil
}
else
if
field
.
FieldType
!=
reflect
.
TypeOf
((
*
big
.
Int
)(
nil
))
{
return
nil
,
fmt
.
Errorf
(
"can only serialize a *big.Int: %T"
,
field
.
FieldType
)
}
numeric
:=
pgtype
.
Numeric
{
Int
:
fieldValue
.
(
*
big
.
Int
),
Status
:
pgtype
.
Present
}
return
numeric
.
Value
()
}
indexer/database/types.go
View file @
19b932cc
package
database
package
database
import
(
import
(
"database/sql/driver"
"errors"
"io"
"io"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rlp"
"github.com/jackc/pgtype"
)
)
var
u256BigIntOverflow
=
new
(
big
.
Int
)
.
Exp
(
big
.
NewInt
(
2
),
big
.
NewInt
(
256
),
nil
)
// Wrapper over types.Header such that we can get an RLP
var
big10
=
big
.
NewInt
(
10
)
// encoder over it via a `types.Block` wrapper
var
ErrU256Overflow
=
errors
.
New
(
"number exceeds u256"
)
var
ErrU256ContainsDecimal
=
errors
.
New
(
"number contains fractional digits"
)
var
ErrU256Null
=
errors
.
New
(
"number cannot be null"
)
// U256 is a wrapper over big.Int that conforms to the database U256 numeric domain type
type
U256
struct
{
Int
*
big
.
Int
}
// Scan implements the database/sql Scanner interface.
func
(
u256
*
U256
)
Scan
(
src
interface
{})
error
{
// deserialize as a numeric
var
numeric
pgtype
.
Numeric
err
:=
numeric
.
Scan
(
src
)
if
err
!=
nil
{
return
err
}
else
if
numeric
.
Exp
<
0
{
return
ErrU256ContainsDecimal
}
else
if
numeric
.
Status
==
pgtype
.
Null
{
return
ErrU256Null
}
// factor in the powers of 10
num
:=
numeric
.
Int
if
numeric
.
Exp
>
0
{
factor
:=
new
(
big
.
Int
)
.
Exp
(
big10
,
big
.
NewInt
(
int64
(
numeric
.
Exp
)),
nil
)
num
.
Mul
(
num
,
factor
)
}
// check bounds before setting the u256
if
num
.
Cmp
(
u256BigIntOverflow
)
>=
0
{
return
ErrU256Overflow
}
else
{
u256
.
Int
=
num
}
return
nil
}
// Value implements the database/sql/driver Valuer interface.
func
(
u256
U256
)
Value
()
(
driver
.
Value
,
error
)
{
// check bounds
if
u256
.
Int
==
nil
{
return
nil
,
ErrU256Null
}
else
if
u256
.
Int
.
Cmp
(
u256BigIntOverflow
)
>=
0
{
return
nil
,
ErrU256Overflow
}
// simply encode as a numeric with no Exp set (non-decimal)
numeric
:=
pgtype
.
Numeric
{
Int
:
u256
.
Int
,
Status
:
pgtype
.
Present
}
return
numeric
.
Value
()
}
type
RLPHeader
types
.
Header
type
RLPHeader
types
.
Header
...
@@ -94,6 +37,9 @@ func (h *RLPHeader) Hash() common.Hash {
...
@@ -94,6 +37,9 @@ func (h *RLPHeader) Hash() common.Hash {
return
h
.
Header
()
.
Hash
()
return
h
.
Header
()
.
Hash
()
}
}
// Type definition for []byte to conform to the
// interface expected by the `bytes` serializer
type
Bytes
[]
byte
type
Bytes
[]
byte
func
(
b
Bytes
)
Bytes
()
[]
byte
{
func
(
b
Bytes
)
Bytes
()
[]
byte
{
...
...
indexer/e2e_tests/bridge_messages_e2e_test.go
View file @
19b932cc
...
@@ -59,9 +59,9 @@ func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
...
@@ -59,9 +59,9 @@ func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
require
.
NotNil
(
t
,
sentMessage
)
require
.
NotNil
(
t
,
sentMessage
)
require
.
NotNil
(
t
,
sentMessage
.
SentMessageEventGUID
)
require
.
NotNil
(
t
,
sentMessage
.
SentMessageEventGUID
)
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
sentMessage
.
TransactionSourceHash
)
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
sentMessage
.
TransactionSourceHash
)
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Int
.
Uint64
())
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Int
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Uint64
())
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
sentMessage
.
Tx
.
Data
)
require
.
ElementsMatch
(
t
,
calldata
,
sentMessage
.
Tx
.
Data
)
...
@@ -146,9 +146,9 @@ func TestE2EBridgeL2CrossDomainMessenger(t *testing.T) {
...
@@ -146,9 +146,9 @@ func TestE2EBridgeL2CrossDomainMessenger(t *testing.T) {
require
.
NotNil
(
t
,
sentMessage
)
require
.
NotNil
(
t
,
sentMessage
)
require
.
NotNil
(
t
,
sentMessage
.
SentMessageEventGUID
)
require
.
NotNil
(
t
,
sentMessage
.
SentMessageEventGUID
)
require
.
Equal
(
t
,
withdrawalHash
,
sentMessage
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
withdrawalHash
,
sentMessage
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Int
.
Uint64
())
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Int
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Uint64
())
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
sentMessage
.
Tx
.
Data
)
require
.
ElementsMatch
(
t
,
calldata
,
sentMessage
.
Tx
.
Data
)
...
...
indexer/e2e_tests/bridge_transactions_e2e_test.go
View file @
19b932cc
...
@@ -54,8 +54,8 @@ func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
...
@@ -54,8 +54,8 @@ func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
deposit
)
require
.
NotNil
(
t
,
deposit
)
require
.
Equal
(
t
,
depositL2TxHash
,
deposit
.
L2TransactionHash
)
require
.
Equal
(
t
,
depositL2TxHash
,
deposit
.
L2TransactionHash
)
require
.
Equal
(
t
,
big
.
NewInt
(
100
_000
),
deposit
.
GasLimit
.
Int
)
require
.
Equal
(
t
,
uint64
(
100
_000
),
deposit
.
GasLimit
.
Uint64
()
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
deposit
.
Tx
.
Data
)
require
.
ElementsMatch
(
t
,
calldata
,
deposit
.
Tx
.
Data
)
...
@@ -113,9 +113,9 @@ func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
...
@@ -113,9 +113,9 @@ func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
withdraw
,
err
:=
testSuite
.
DB
.
BridgeTransactions
.
L2TransactionWithdrawal
(
withdrawalHash
)
withdraw
,
err
:=
testSuite
.
DB
.
BridgeTransactions
.
L2TransactionWithdrawal
(
withdrawalHash
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
withdraw
)
require
.
NotNil
(
t
,
withdraw
)
require
.
Equal
(
t
,
msgPassed
.
Nonce
.
Uint64
(),
withdraw
.
Nonce
.
Int
.
Uint64
())
require
.
Equal
(
t
,
msgPassed
.
Nonce
.
Uint64
(),
withdraw
.
Nonce
.
Uint64
())
require
.
Equal
(
t
,
big
.
NewInt
(
100
_000
),
withdraw
.
GasLimit
.
Int
)
require
.
Equal
(
t
,
uint64
(
100
_000
),
withdraw
.
GasLimit
.
Uint64
()
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
withdraw
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
withdraw
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
withdraw
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdraw
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdraw
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdraw
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
withdraw
.
Tx
.
Data
)
require
.
ElementsMatch
(
t
,
calldata
,
withdraw
.
Tx
.
Data
)
...
...
indexer/e2e_tests/bridge_transfers_e2e_test.go
View file @
19b932cc
...
@@ -63,7 +63,7 @@ func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
...
@@ -63,7 +63,7 @@ func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
deposit
.
TransactionSourceHash
)
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
deposit
.
TransactionSourceHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
byte
(
1
),
deposit
.
Tx
.
Data
[
0
])
require
.
Equal
(
t
,
byte
(
1
),
deposit
.
Tx
.
Data
[
0
])
...
@@ -235,7 +235,7 @@ func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
...
@@ -235,7 +235,7 @@ func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
deposit
.
TransactionSourceHash
)
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
deposit
.
TransactionSourceHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
Len
(
t
,
deposit
.
Tx
.
Data
,
0
)
require
.
Len
(
t
,
deposit
.
Tx
.
Data
,
0
)
...
@@ -306,7 +306,7 @@ func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
...
@@ -306,7 +306,7 @@ func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
require
.
Equal
(
t
,
withdrawalHash
,
withdrawal
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
withdrawalHash
,
withdrawal
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
withdrawal
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
withdrawal
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
byte
(
1
),
withdrawal
.
Tx
.
Data
[
0
])
require
.
Equal
(
t
,
byte
(
1
),
withdrawal
.
Tx
.
Data
[
0
])
...
@@ -390,7 +390,7 @@ func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
...
@@ -390,7 +390,7 @@ func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
require
.
Equal
(
t
,
withdrawalHash
,
withdrawal
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
withdrawalHash
,
withdrawal
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
LocalTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
RemoteTokenAddress
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
withdrawal
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
withdrawal
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
ToAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdrawal
.
Tx
.
ToAddress
)
require
.
Len
(
t
,
withdrawal
.
Tx
.
Data
,
0
)
require
.
Len
(
t
,
withdrawal
.
Tx
.
Data
,
0
)
...
...
indexer/e2e_tests/etl_e2e_test.go
View file @
19b932cc
...
@@ -40,19 +40,19 @@ func TestE2EETL(t *testing.T) {
...
@@ -40,19 +40,19 @@ func TestE2EETL(t *testing.T) {
l2Header
,
err
:=
testSuite
.
DB
.
Blocks
.
L2LatestBlockHeader
()
l2Header
,
err
:=
testSuite
.
DB
.
Blocks
.
L2LatestBlockHeader
()
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
return
(
l1Header
!=
nil
&&
l1Header
.
Number
.
Int
.
Uint64
()
>=
l1Height
)
&&
(
l2Header
!=
nil
&&
l2Header
.
Number
.
Int
.
Uint64
()
>=
9
),
nil
return
(
l1Header
!=
nil
&&
l1Header
.
Number
.
Uint64
()
>=
l1Height
)
&&
(
l2Header
!=
nil
&&
l2Header
.
Number
.
Uint64
()
>=
9
),
nil
}))
}))
t
.
Run
(
"indexes all L2 blocks"
,
func
(
t
*
testing
.
T
)
{
t
.
Run
(
"indexes all L2 blocks"
,
func
(
t
*
testing
.
T
)
{
latestL2Header
,
err
:=
testSuite
.
DB
.
Blocks
.
L2LatestBlockHeader
()
latestL2Header
,
err
:=
testSuite
.
DB
.
Blocks
.
L2LatestBlockHeader
()
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
latestL2Header
)
require
.
NotNil
(
t
,
latestL2Header
)
require
.
True
(
t
,
latestL2Header
.
Number
.
Int
.
Uint64
()
>=
9
)
require
.
True
(
t
,
latestL2Header
.
Number
.
Uint64
()
>=
9
)
for
i
:=
int64
(
0
);
i
<
10
;
i
++
{
for
i
:=
int64
(
0
);
i
<
10
;
i
++
{
height
:=
big
.
NewInt
(
i
)
height
:=
big
.
NewInt
(
i
)
indexedHeader
,
err
:=
testSuite
.
DB
.
Blocks
.
L2BlockHeaderWithFilter
(
database
.
BlockHeader
{
Number
:
database
.
U256
{
Int
:
height
}
})
indexedHeader
,
err
:=
testSuite
.
DB
.
Blocks
.
L2BlockHeaderWithFilter
(
database
.
BlockHeader
{
Number
:
height
})
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
indexedHeader
)
require
.
NotNil
(
t
,
indexedHeader
)
...
@@ -60,7 +60,7 @@ func TestE2EETL(t *testing.T) {
...
@@ -60,7 +60,7 @@ func TestE2EETL(t *testing.T) {
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
indexedHeader
)
require
.
NotNil
(
t
,
indexedHeader
)
require
.
Equal
(
t
,
header
.
Number
.
Int64
(),
indexedHeader
.
Number
.
Int
.
Int
64
())
require
.
Equal
(
t
,
header
.
Number
.
Int64
(),
indexedHeader
.
Number
.
Int64
())
require
.
Equal
(
t
,
header
.
Hash
(),
indexedHeader
.
Hash
)
require
.
Equal
(
t
,
header
.
Hash
(),
indexedHeader
.
Hash
)
require
.
Equal
(
t
,
header
.
ParentHash
,
indexedHeader
.
ParentHash
)
require
.
Equal
(
t
,
header
.
ParentHash
,
indexedHeader
.
ParentHash
)
require
.
Equal
(
t
,
header
.
Time
,
indexedHeader
.
Timestamp
)
require
.
Equal
(
t
,
header
.
Time
,
indexedHeader
.
Timestamp
)
...
@@ -144,7 +144,7 @@ func TestE2EETL(t *testing.T) {
...
@@ -144,7 +144,7 @@ func TestE2EETL(t *testing.T) {
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
block
.
Hash
(),
l1BlockHeader
.
Hash
)
require
.
Equal
(
t
,
block
.
Hash
(),
l1BlockHeader
.
Hash
)
require
.
Equal
(
t
,
block
.
ParentHash
(),
l1BlockHeader
.
ParentHash
)
require
.
Equal
(
t
,
block
.
ParentHash
(),
l1BlockHeader
.
ParentHash
)
require
.
Equal
(
t
,
block
.
Number
()
,
l1BlockHeader
.
Number
.
Int
)
require
.
Equal
(
t
,
block
.
Number
()
.
Uint64
(),
l1BlockHeader
.
Number
.
Uint64
()
)
require
.
Equal
(
t
,
block
.
Time
(),
l1BlockHeader
.
Timestamp
)
require
.
Equal
(
t
,
block
.
Time
(),
l1BlockHeader
.
Timestamp
)
// ensure the right rlp encoding is stored. checking the hashes
// ensure the right rlp encoding is stored. checking the hashes
...
...
indexer/etl/l1_etl.go
View file @
19b932cc
...
@@ -38,7 +38,7 @@ func NewL1ETL(log log.Logger, db *database.DB, client node.EthClient, startHeigh
...
@@ -38,7 +38,7 @@ func NewL1ETL(log log.Logger, db *database.DB, client node.EthClient, startHeigh
// Determine the starting height for traversal
// Determine the starting height for traversal
var
fromHeader
*
types
.
Header
var
fromHeader
*
types
.
Header
if
latestHeader
!=
nil
{
if
latestHeader
!=
nil
{
log
.
Info
(
"detected last indexed block"
,
"number"
,
latestHeader
.
Number
.
Int
,
"hash"
,
latestHeader
.
Hash
)
log
.
Info
(
"detected last indexed block"
,
"number"
,
latestHeader
.
Number
,
"hash"
,
latestHeader
.
Hash
)
fromHeader
=
latestHeader
.
RLPHeader
.
Header
()
fromHeader
=
latestHeader
.
RLPHeader
.
Header
()
}
else
if
startHeight
.
BitLen
()
>
0
{
}
else
if
startHeight
.
BitLen
()
>
0
{
...
...
indexer/etl/l2_etl.go
View file @
19b932cc
...
@@ -35,7 +35,7 @@ func NewL2ETL(log log.Logger, db *database.DB, client node.EthClient) (*L2ETL, e
...
@@ -35,7 +35,7 @@ func NewL2ETL(log log.Logger, db *database.DB, client node.EthClient) (*L2ETL, e
var
fromHeader
*
types
.
Header
var
fromHeader
*
types
.
Header
if
latestHeader
!=
nil
{
if
latestHeader
!=
nil
{
log
.
Info
(
"detected last indexed block"
,
"number"
,
latestHeader
.
Number
.
Int
,
"hash"
,
latestHeader
.
Hash
)
log
.
Info
(
"detected last indexed block"
,
"number"
,
latestHeader
.
Number
,
"hash"
,
latestHeader
.
Hash
)
fromHeader
=
latestHeader
.
RLPHeader
.
Header
()
fromHeader
=
latestHeader
.
RLPHeader
.
Header
()
}
else
{
}
else
{
log
.
Info
(
"no indexed state, starting from genesis"
)
log
.
Info
(
"no indexed state, starting from genesis"
)
...
...
indexer/processors/bridge.go
View file @
19b932cc
...
@@ -107,7 +107,7 @@ func (b *BridgeProcessor) Start(ctx context.Context) error {
...
@@ -107,7 +107,7 @@ func (b *BridgeProcessor) Start(ctx context.Context) error {
continue
continue
}
}
toL1Height
,
toL2Height
:=
latestEpoch
.
L1BlockHeader
.
Number
.
Int
,
latestEpoch
.
L2BlockHeader
.
Number
.
Int
toL1Height
,
toL2Height
:=
latestEpoch
.
L1BlockHeader
.
Number
,
latestEpoch
.
L2BlockHeader
.
Number
fromL1Height
,
fromL2Height
:=
big
.
NewInt
(
0
),
big
.
NewInt
(
0
)
fromL1Height
,
fromL2Height
:=
big
.
NewInt
(
0
),
big
.
NewInt
(
0
)
if
b
.
LatestL1Header
!=
nil
{
if
b
.
LatestL1Header
!=
nil
{
// `NewBridgeProcessor` ensures that LatestL2Header must not be nil if LatestL1Header is set
// `NewBridgeProcessor` ensures that LatestL2Header must not be nil if LatestL1Header is set
...
...
indexer/processors/contracts/cross_domain_messenger.go
View file @
19b932cc
...
@@ -94,13 +94,13 @@ func CrossDomainMessengerSentMessageEvents(chainSelector string, contractAddress
...
@@ -94,13 +94,13 @@ func CrossDomainMessengerSentMessageEvents(chainSelector string, contractAddress
Event
:
&
sentMessageEvents
[
i
],
Event
:
&
sentMessageEvents
[
i
],
BridgeMessage
:
database
.
BridgeMessage
{
BridgeMessage
:
database
.
BridgeMessage
{
MessageHash
:
messageHash
,
MessageHash
:
messageHash
,
Nonce
:
database
.
U256
{
Int
:
sentMessage
.
MessageNonce
}
,
Nonce
:
sentMessage
.
MessageNonce
,
SentMessageEventGUID
:
sentMessageEvents
[
i
]
.
GUID
,
SentMessageEventGUID
:
sentMessageEvents
[
i
]
.
GUID
,
GasLimit
:
database
.
U256
{
Int
:
sentMessage
.
GasLimit
}
,
GasLimit
:
sentMessage
.
GasLimit
,
Tx
:
database
.
Transaction
{
Tx
:
database
.
Transaction
{
FromAddress
:
sentMessage
.
Sender
,
FromAddress
:
sentMessage
.
Sender
,
ToAddress
:
sentMessage
.
Target
,
ToAddress
:
sentMessage
.
Target
,
Amount
:
database
.
U256
{
Int
:
sentMessageExtension
.
Value
}
,
Amount
:
sentMessageExtension
.
Value
,
Data
:
sentMessage
.
Message
,
Data
:
sentMessage
.
Message
,
Timestamp
:
sentMessageEvents
[
i
]
.
Timestamp
,
Timestamp
:
sentMessageEvents
[
i
]
.
Timestamp
,
},
},
...
...
indexer/processors/contracts/l2_to_l1_message_passer.go
View file @
19b932cc
...
@@ -11,8 +11,8 @@ import (
...
@@ -11,8 +11,8 @@ import (
type
L2ToL1MessagePasserMessagePassed
struct
{
type
L2ToL1MessagePasserMessagePassed
struct
{
Event
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
WithdrawalHash
common
.
Hash
WithdrawalHash
common
.
Hash
GasLimit
database
.
U256
GasLimit
*
big
.
Int
Nonce
database
.
U256
Nonce
*
big
.
Int
Tx
database
.
Transaction
Tx
database
.
Transaction
}
}
...
@@ -40,12 +40,12 @@ func L2ToL1MessagePasserMessagePassedEvents(contractAddress common.Address, db *
...
@@ -40,12 +40,12 @@ func L2ToL1MessagePasserMessagePassedEvents(contractAddress common.Address, db *
messagesPassed
[
i
]
=
L2ToL1MessagePasserMessagePassed
{
messagesPassed
[
i
]
=
L2ToL1MessagePasserMessagePassed
{
Event
:
&
messagePassedEvents
[
i
]
.
ContractEvent
,
Event
:
&
messagePassedEvents
[
i
]
.
ContractEvent
,
WithdrawalHash
:
messagePassed
.
WithdrawalHash
,
WithdrawalHash
:
messagePassed
.
WithdrawalHash
,
Nonce
:
database
.
U256
{
Int
:
messagePassed
.
Nonce
}
,
Nonce
:
messagePassed
.
Nonce
,
GasLimit
:
database
.
U256
{
Int
:
messagePassed
.
GasLimit
}
,
GasLimit
:
messagePassed
.
GasLimit
,
Tx
:
database
.
Transaction
{
Tx
:
database
.
Transaction
{
FromAddress
:
messagePassed
.
Sender
,
FromAddress
:
messagePassed
.
Sender
,
ToAddress
:
messagePassed
.
Target
,
ToAddress
:
messagePassed
.
Target
,
Amount
:
database
.
U256
{
Int
:
messagePassed
.
Value
}
,
Amount
:
messagePassed
.
Value
,
Data
:
messagePassed
.
Data
,
Data
:
messagePassed
.
Data
,
Timestamp
:
messagePassedEvents
[
i
]
.
Timestamp
,
Timestamp
:
messagePassedEvents
[
i
]
.
Timestamp
,
},
},
...
...
indexer/processors/contracts/optimism_portal.go
View file @
19b932cc
...
@@ -16,7 +16,7 @@ type OptimismPortalTransactionDepositEvent struct {
...
@@ -16,7 +16,7 @@ type OptimismPortalTransactionDepositEvent struct {
Event
*
database
.
ContractEvent
Event
*
database
.
ContractEvent
DepositTx
*
types
.
DepositTx
DepositTx
*
types
.
DepositTx
Tx
database
.
Transaction
Tx
database
.
Transaction
GasLimit
database
.
U256
GasLimit
*
big
.
Int
}
}
type
OptimismPortalWithdrawalProvenEvent
struct
{
type
OptimismPortalWithdrawalProvenEvent
struct
{
...
@@ -67,11 +67,11 @@ func OptimismPortalTransactionDepositEvents(contractAddress common.Address, db *
...
@@ -67,11 +67,11 @@ func OptimismPortalTransactionDepositEvents(contractAddress common.Address, db *
optimismPortalTxDeposits
[
i
]
=
OptimismPortalTransactionDepositEvent
{
optimismPortalTxDeposits
[
i
]
=
OptimismPortalTransactionDepositEvent
{
Event
:
&
transactionDepositEvents
[
i
]
.
ContractEvent
,
Event
:
&
transactionDepositEvents
[
i
]
.
ContractEvent
,
DepositTx
:
depositTx
,
DepositTx
:
depositTx
,
GasLimit
:
database
.
U256
{
Int
:
new
(
big
.
Int
)
.
SetUint64
(
depositTx
.
Gas
)}
,
GasLimit
:
new
(
big
.
Int
)
.
SetUint64
(
depositTx
.
Gas
)
,
Tx
:
database
.
Transaction
{
Tx
:
database
.
Transaction
{
FromAddress
:
txDeposit
.
From
,
FromAddress
:
txDeposit
.
From
,
ToAddress
:
txDeposit
.
To
,
ToAddress
:
txDeposit
.
To
,
Amount
:
d
atabase
.
U256
{
Int
:
depositTx
.
Value
}
,
Amount
:
d
epositTx
.
Value
,
Data
:
depositTx
.
Data
,
Data
:
depositTx
.
Data
,
Timestamp
:
transactionDepositEvents
[
i
]
.
Timestamp
,
Timestamp
:
transactionDepositEvents
[
i
]
.
Timestamp
,
},
},
...
...
indexer/processors/contracts/standard_bridge.go
View file @
19b932cc
...
@@ -101,7 +101,7 @@ func _standardBridgeInitiatedEvents[BridgeEventType bindings.StandardBridgeETHBr
...
@@ -101,7 +101,7 @@ func _standardBridgeInitiatedEvents[BridgeEventType bindings.StandardBridgeETHBr
Tx
:
database
.
Transaction
{
Tx
:
database
.
Transaction
{
FromAddress
:
erc20Bridge
.
From
,
FromAddress
:
erc20Bridge
.
From
,
ToAddress
:
erc20Bridge
.
To
,
ToAddress
:
erc20Bridge
.
To
,
Amount
:
database
.
U256
{
Int
:
erc20Bridge
.
Amount
}
,
Amount
:
erc20Bridge
.
Amount
,
Data
:
erc20Bridge
.
ExtraData
,
Data
:
erc20Bridge
.
ExtraData
,
Timestamp
:
initiatedBridgeEvents
[
i
]
.
Timestamp
,
Timestamp
:
initiatedBridgeEvents
[
i
]
.
Timestamp
,
},
},
...
@@ -161,7 +161,7 @@ func _standardBridgeFinalizedEvents[BridgeEventType bindings.StandardBridgeETHBr
...
@@ -161,7 +161,7 @@ func _standardBridgeFinalizedEvents[BridgeEventType bindings.StandardBridgeETHBr
Tx
:
database
.
Transaction
{
Tx
:
database
.
Transaction
{
FromAddress
:
erc20Bridge
.
From
,
FromAddress
:
erc20Bridge
.
From
,
ToAddress
:
erc20Bridge
.
To
,
ToAddress
:
erc20Bridge
.
To
,
Amount
:
database
.
U256
{
Int
:
erc20Bridge
.
Amount
}
,
Amount
:
erc20Bridge
.
Amount
,
Data
:
erc20Bridge
.
ExtraData
,
Data
:
erc20Bridge
.
ExtraData
,
Timestamp
:
bridgeFinalizedEvents
[
i
]
.
Timestamp
,
Timestamp
:
bridgeFinalizedEvents
[
i
]
.
Timestamp
,
},
},
...
...
op-challenger/fault/cannon/provider.go
View file @
19b932cc
...
@@ -118,6 +118,10 @@ func (p *CannonTraceProvider) AbsolutePreState(ctx context.Context) ([]byte, err
...
@@ -118,6 +118,10 @@ func (p *CannonTraceProvider) AbsolutePreState(ctx context.Context) ([]byte, err
return
state
.
EncodeWitness
(),
nil
return
state
.
EncodeWitness
(),
nil
}
}
func
(
p
*
CannonTraceProvider
)
Cleanup
()
error
{
return
os
.
RemoveAll
(
p
.
dir
)
}
// loadProof will attempt to load or generate the proof data at the specified index
// loadProof will attempt to load or generate the proof data at the specified index
// If the requested index is beyond the end of the actual trace it is extended with no-op instructions.
// If the requested index is beyond the end of the actual trace it is extended with no-op instructions.
func
(
p
*
CannonTraceProvider
)
loadProof
(
ctx
context
.
Context
,
i
uint64
)
(
*
proofData
,
error
)
{
func
(
p
*
CannonTraceProvider
)
loadProof
(
ctx
context
.
Context
,
i
uint64
)
(
*
proofData
,
error
)
{
...
...
op-challenger/fault/cannon/provider_test.go
View file @
19b932cc
...
@@ -204,6 +204,14 @@ func TestUseGameSpecificSubdir(t *testing.T) {
...
@@ -204,6 +204,14 @@ func TestUseGameSpecificSubdir(t *testing.T) {
require
.
Equal
(
t
,
filepath
.
Join
(
dataDir
,
gameDirName
),
provider
.
dir
,
"should use game specific subdir"
)
require
.
Equal
(
t
,
filepath
.
Join
(
dataDir
,
gameDirName
),
provider
.
dir
,
"should use game specific subdir"
)
}
}
func
TestCleanup
(
t
*
testing
.
T
)
{
dataDir
,
prestate
:=
setupTestData
(
t
)
provider
,
_
:=
setupWithTestData
(
t
,
dataDir
,
prestate
)
require
.
NoError
(
t
,
provider
.
Cleanup
())
_
,
err
:=
os
.
Stat
(
dataDir
)
require
.
ErrorIs
(
t
,
err
,
os
.
ErrNotExist
)
}
func
setupPreState
(
t
*
testing
.
T
,
dataDir
string
,
filename
string
)
{
func
setupPreState
(
t
*
testing
.
T
,
dataDir
string
,
filename
string
)
{
srcDir
:=
filepath
.
Join
(
"test_data"
)
srcDir
:=
filepath
.
Join
(
"test_data"
)
path
:=
filepath
.
Join
(
srcDir
,
filename
)
path
:=
filepath
.
Join
(
srcDir
,
filename
)
...
...
op-challenger/fault/player.go
View file @
19b932cc
...
@@ -29,6 +29,7 @@ type GamePlayer struct {
...
@@ -29,6 +29,7 @@ type GamePlayer struct {
agreeWithProposedOutput
bool
agreeWithProposedOutput
bool
caller
GameInfo
caller
GameInfo
logger
log
.
Logger
logger
log
.
Logger
cleanup
func
()
error
}
}
func
NewGamePlayer
(
func
NewGamePlayer
(
...
@@ -54,18 +55,22 @@ func NewGamePlayer(
...
@@ -54,18 +55,22 @@ func NewGamePlayer(
var
provider
types
.
TraceProvider
var
provider
types
.
TraceProvider
var
updater
types
.
OracleUpdater
var
updater
types
.
OracleUpdater
var
cleanup
func
()
error
switch
cfg
.
TraceType
{
switch
cfg
.
TraceType
{
case
config
.
TraceTypeCannon
:
case
config
.
TraceTypeCannon
:
provider
,
err
=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
cfg
,
client
,
addr
)
cannonProvider
,
err
:
=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
cfg
,
client
,
addr
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"create cannon trace provider: %w"
,
err
)
return
nil
,
fmt
.
Errorf
(
"create cannon trace provider: %w"
,
err
)
}
}
cleanup
=
cannonProvider
.
Cleanup
provider
=
cannonProvider
updater
,
err
=
cannon
.
NewOracleUpdater
(
ctx
,
logger
,
txMgr
,
addr
,
client
)
updater
,
err
=
cannon
.
NewOracleUpdater
(
ctx
,
logger
,
txMgr
,
addr
,
client
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to create the cannon updater: %w"
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to create the cannon updater: %w"
,
err
)
}
}
case
config
.
TraceTypeAlphabet
:
case
config
.
TraceTypeAlphabet
:
provider
=
alphabet
.
NewTraceProvider
(
cfg
.
AlphabetTrace
,
gameDepth
)
provider
=
alphabet
.
NewTraceProvider
(
cfg
.
AlphabetTrace
,
gameDepth
)
cleanup
=
func
()
error
{
return
nil
}
updater
=
alphabet
.
NewOracleUpdater
(
logger
)
updater
=
alphabet
.
NewOracleUpdater
(
logger
)
default
:
default
:
return
nil
,
fmt
.
Errorf
(
"unsupported trace type: %v"
,
cfg
.
TraceType
)
return
nil
,
fmt
.
Errorf
(
"unsupported trace type: %v"
,
cfg
.
TraceType
)
...
@@ -90,6 +95,7 @@ func NewGamePlayer(
...
@@ -90,6 +95,7 @@ func NewGamePlayer(
agreeWithProposedOutput
:
cfg
.
AgreeWithProposedOutput
,
agreeWithProposedOutput
:
cfg
.
AgreeWithProposedOutput
,
caller
:
caller
,
caller
:
caller
,
logger
:
logger
,
logger
:
logger
,
cleanup
:
cleanup
,
},
nil
},
nil
}
}
...
@@ -129,3 +135,7 @@ func (g *GamePlayer) logGameStatus(ctx context.Context, status types.GameStatus)
...
@@ -129,3 +135,7 @@ func (g *GamePlayer) logGameStatus(ctx context.Context, status types.GameStatus)
g
.
logger
.
Error
(
"Game lost"
,
"status"
,
status
)
g
.
logger
.
Error
(
"Game lost"
,
"status"
,
status
)
}
}
}
}
func
(
g
*
GamePlayer
)
Cleanup
()
error
{
return
g
.
cleanup
()
}
op-challenger/fault/player_test.go
View file @
19b932cc
...
@@ -27,6 +27,24 @@ func TestProgressGame_LogErrorFromAct(t *testing.T) {
...
@@ -27,6 +27,24 @@ func TestProgressGame_LogErrorFromAct(t *testing.T) {
require
.
Equal
(
t
,
uint64
(
1
),
msg
.
GetContextValue
(
"claims"
))
require
.
Equal
(
t
,
uint64
(
1
),
msg
.
GetContextValue
(
"claims"
))
}
}
func
TestCleanup
(
t
*
testing
.
T
)
{
t
.
Run
(
"default cleanup"
,
func
(
t
*
testing
.
T
)
{
game
:=
&
GamePlayer
{
cleanup
:
func
()
error
{
return
nil
},
}
require
.
NoError
(
t
,
game
.
Cleanup
())
})
t
.
Run
(
"cleanup bubbles up error"
,
func
(
t
*
testing
.
T
)
{
err
:=
errors
.
New
(
"wassie"
)
game
:=
&
GamePlayer
{
cleanup
:
func
()
error
{
return
err
},
}
require
.
Error
(
t
,
err
,
game
.
Cleanup
())
})
}
func
TestProgressGame_LogGameStatus
(
t
*
testing
.
T
)
{
func
TestProgressGame_LogGameStatus
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
tests
:=
[]
struct
{
name
string
name
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