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
710850b7
Unverified
Commit
710850b7
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/wagmi/core-1.3.9
parents
17197a17
0200fa46
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
206 additions
and
158 deletions
+206
-158
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
package.json
package.json
+1
-1
pnpm-lock.yaml
pnpm-lock.yaml
+47
-47
No files found.
indexer/api/routes/deposits.go
View file @
710850b7
...
...
@@ -46,7 +46,7 @@ func newDepositResponse(deposits *database.L1BridgeDepositsResponse) DepositResp
},
From
:
deposit
.
L1BridgeDeposit
.
Tx
.
FromAddress
.
String
(),
To
:
deposit
.
L1BridgeDeposit
.
Tx
.
ToAddress
.
String
(),
Amount
:
deposit
.
L1BridgeDeposit
.
Tx
.
Amount
.
Int
.
String
(),
Amount
:
deposit
.
L1BridgeDeposit
.
Tx
.
Amount
.
String
(),
L1Token
:
TokenInfo
{
ChainId
:
1
,
Address
:
deposit
.
L1BridgeDeposit
.
TokenPair
.
LocalTokenAddress
.
String
(),
...
...
indexer/api/routes/withdrawals.go
View file @
710850b7
...
...
@@ -60,7 +60,7 @@ func newWithdrawalResponse(withdrawals *database.L2BridgeWithdrawalsResponse) Wi
From
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
FromAddress
.
String
(),
To
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
ToAddress
.
String
(),
TransactionHash
:
withdrawal
.
L2TransactionHash
.
String
(),
Amount
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Amount
.
Int
.
String
(),
Amount
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Amount
.
String
(),
Proof
:
Proof
{
TransactionHash
:
withdrawal
.
ProvenL1TransactionHash
.
String
(),
BlockTimestamp
:
withdrawal
.
L2BridgeWithdrawal
.
Tx
.
Timestamp
,
...
...
indexer/database/blocks.go
View file @
710850b7
...
...
@@ -20,7 +20,7 @@ import (
type
BlockHeader
struct
{
Hash
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
ParentHash
common
.
Hash
`gorm:"serializer:bytes"`
Number
U256
Number
*
big
.
Int
`gorm:"serializer:u256"`
Timestamp
uint64
RLPHeader
*
RLPHeader
`gorm:"serializer:rlp;column:rlp_bytes"`
...
...
@@ -30,7 +30,7 @@ func BlockHeaderFromHeader(header *types.Header) BlockHeader {
return
BlockHeader
{
Hash
:
header
.
Hash
(),
ParentHash
:
header
.
ParentHash
,
Number
:
U256
{
Int
:
header
.
Number
}
,
Number
:
header
.
Number
,
Timestamp
:
header
.
Time
,
RLPHeader
:
(
*
RLPHeader
)(
header
),
...
...
@@ -58,8 +58,8 @@ type LegacyStateBatch struct {
type
OutputProposal
struct
{
OutputRoot
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
L2OutputIndex
U256
L2BlockNumber
U256
L2OutputIndex
*
big
.
Int
`gorm:"serializer:u256"`
L2BlockNumber
*
big
.
Int
`gorm:"serializer:u256"`
L1ContractEventGUID
uuid
.
UUID
}
...
...
@@ -165,7 +165,7 @@ func (db *blocksDB) LatestCheckpointedOutput() (*OutputProposal, error) {
func
(
db
*
blocksDB
)
OutputProposal
(
index
*
big
.
Int
)
(
*
OutputProposal
,
error
)
{
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
errors
.
Is
(
result
.
Error
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
nil
...
...
indexer/database/bridge_messages.go
View file @
710850b7
...
...
@@ -3,6 +3,7 @@ package database
import
(
"errors"
"fmt"
"math/big"
"gorm.io/gorm"
...
...
@@ -17,13 +18,13 @@ import (
type
BridgeMessage
struct
{
MessageHash
common
.
Hash
`gorm:"primaryKey;serializer:bytes"`
Nonce
U256
Nonce
*
big
.
Int
`gorm:"serializer:u256"`
SentMessageEventGUID
uuid
.
UUID
RelayedMessageEventGUID
*
uuid
.
UUID
Tx
Transaction
`gorm:"embedded"`
GasLimit
U256
GasLimit
*
big
.
Int
`gorm:"serializer:u256"`
}
type
L1BridgeMessage
struct
{
...
...
indexer/database/bridge_transactions.go
View file @
710850b7
...
...
@@ -3,6 +3,7 @@ package database
import
(
"errors"
"fmt"
"math/big"
"github.com/google/uuid"
"gorm.io/gorm"
...
...
@@ -17,8 +18,8 @@ import (
type
Transaction
struct
{
FromAddress
common
.
Address
`gorm:"serializer:bytes"`
ToAddress
common
.
Address
`gorm:"serializer:bytes"`
Amount
U256
Data
Bytes
`gorm:"serializer:bytes"`
Amount
*
big
.
Int
`gorm:"serializer:u256"`
Data
Bytes
`gorm:"serializer:bytes"`
Timestamp
uint64
}
...
...
@@ -28,12 +29,12 @@ type L1TransactionDeposit struct {
InitiatedL1EventGUID
uuid
.
UUID
Tx
Transaction
`gorm:"embedded"`
GasLimit
U256
GasLimit
*
big
.
Int
`gorm:"serializer:u256"`
}
type
L2TransactionWithdrawal
struct
{
WithdrawalHash
common
.
Hash
`gorm:"serializer:bytes;primaryKey"`
Nonce
U256
Nonce
*
big
.
Int
`gorm:"serializer:u256"`
InitiatedL2EventGUID
uuid
.
UUID
ProvenL1EventGUID
*
uuid
.
UUID
...
...
@@ -41,7 +42,7 @@ type L2TransactionWithdrawal struct {
Succeeded
*
bool
Tx
Transaction
`gorm:"embedded"`
GasLimit
U256
GasLimit
*
big
.
Int
`gorm:"serializer:u256"`
}
type
BridgeTransactionsView
interface
{
...
...
indexer/database/serializers/u256.go
0 → 100644
View file @
710850b7
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 @
710850b7
package
database
import
(
"database/sql/driver"
"errors"
"io"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rlp"
"github.com/jackc/pgtype"
)
var
u256BigIntOverflow
=
new
(
big
.
Int
)
.
Exp
(
big
.
NewInt
(
2
),
big
.
NewInt
(
256
),
nil
)
var
big10
=
big
.
NewInt
(
10
)
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
()
}
// Wrapper over types.Header such that we can get an RLP
// encoder over it via a `types.Block` wrapper
type
RLPHeader
types
.
Header
...
...
@@ -94,6 +37,9 @@ func (h *RLPHeader) Hash() common.Hash {
return
h
.
Header
()
.
Hash
()
}
// Type definition for []byte to conform to the
// interface expected by the `bytes` serializer
type
Bytes
[]
byte
func
(
b
Bytes
)
Bytes
()
[]
byte
{
...
...
indexer/e2e_tests/bridge_messages_e2e_test.go
View file @
710850b7
...
...
@@ -59,9 +59,9 @@ func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
require
.
NotNil
(
t
,
sentMessage
)
require
.
NotNil
(
t
,
sentMessage
.
SentMessageEventGUID
)
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
sentMessage
.
TransactionSourceHash
)
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Int
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Int
.
Uint64
())
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
sentMessage
.
Tx
.
Data
)
...
...
@@ -146,9 +146,9 @@ func TestE2EBridgeL2CrossDomainMessenger(t *testing.T) {
require
.
NotNil
(
t
,
sentMessage
)
require
.
NotNil
(
t
,
sentMessage
.
SentMessageEventGUID
)
require
.
Equal
(
t
,
withdrawalHash
,
sentMessage
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Int
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Int
.
Uint64
())
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
nonce
.
Uint64
(),
sentMessage
.
Nonce
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
sentMessage
.
GasLimit
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
sentMessage
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
sentMessage
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
sentMessage
.
Tx
.
Data
)
...
...
indexer/e2e_tests/bridge_transactions_e2e_test.go
View file @
710850b7
...
...
@@ -54,8 +54,8 @@ func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
deposit
)
require
.
Equal
(
t
,
depositL2TxHash
,
deposit
.
L2TransactionHash
)
require
.
Equal
(
t
,
big
.
NewInt
(
100
_000
),
deposit
.
GasLimit
.
Int
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
uint64
(
100
_000
),
deposit
.
GasLimit
.
Uint64
()
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
deposit
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
deposit
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
deposit
.
Tx
.
Data
)
...
...
@@ -113,9 +113,9 @@ func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
withdraw
,
err
:=
testSuite
.
DB
.
BridgeTransactions
.
L2TransactionWithdrawal
(
withdrawalHash
)
require
.
NoError
(
t
,
err
)
require
.
NotNil
(
t
,
withdraw
)
require
.
Equal
(
t
,
msgPassed
.
Nonce
.
Uint64
(),
withdraw
.
Nonce
.
Int
.
Uint64
())
require
.
Equal
(
t
,
big
.
NewInt
(
100
_000
),
withdraw
.
GasLimit
.
Int
)
require
.
Equal
(
t
,
big
.
NewInt
(
params
.
Ether
),
withdraw
.
Tx
.
Amount
.
Int
)
require
.
Equal
(
t
,
msgPassed
.
Nonce
.
Uint64
(),
withdraw
.
Nonce
.
Uint64
())
require
.
Equal
(
t
,
uint64
(
100
_000
),
withdraw
.
GasLimit
.
Uint64
()
)
require
.
Equal
(
t
,
uint64
(
params
.
Ether
),
withdraw
.
Tx
.
Amount
.
Uint64
()
)
require
.
Equal
(
t
,
aliceAddr
,
withdraw
.
Tx
.
FromAddress
)
require
.
Equal
(
t
,
aliceAddr
,
withdraw
.
Tx
.
ToAddress
)
require
.
ElementsMatch
(
t
,
calldata
,
withdraw
.
Tx
.
Data
)
...
...
indexer/e2e_tests/bridge_transfers_e2e_test.go
View file @
710850b7
...
...
@@ -63,7 +63,7 @@ func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
deposit
.
TransactionSourceHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
LocalTokenAddress
)
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
.
ToAddress
)
require
.
Equal
(
t
,
byte
(
1
),
deposit
.
Tx
.
Data
[
0
])
...
...
@@ -235,7 +235,7 @@ func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
require
.
Equal
(
t
,
depositInfo
.
DepositTx
.
SourceHash
,
deposit
.
TransactionSourceHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
deposit
.
TokenPair
.
LocalTokenAddress
)
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
.
ToAddress
)
require
.
Len
(
t
,
deposit
.
Tx
.
Data
,
0
)
...
...
@@ -306,7 +306,7 @@ func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
require
.
Equal
(
t
,
withdrawalHash
,
withdrawal
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
LocalTokenAddress
)
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
.
ToAddress
)
require
.
Equal
(
t
,
byte
(
1
),
withdrawal
.
Tx
.
Data
[
0
])
...
...
@@ -390,7 +390,7 @@ func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
require
.
Equal
(
t
,
withdrawalHash
,
withdrawal
.
TransactionWithdrawalHash
)
require
.
Equal
(
t
,
predeploys
.
LegacyERC20ETHAddr
,
withdrawal
.
TokenPair
.
LocalTokenAddress
)
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
.
ToAddress
)
require
.
Len
(
t
,
withdrawal
.
Tx
.
Data
,
0
)
...
...
indexer/e2e_tests/etl_e2e_test.go
View file @
710850b7
...
...
@@ -40,19 +40,19 @@ func TestE2EETL(t *testing.T) {
l2Header
,
err
:=
testSuite
.
DB
.
Blocks
.
L2LatestBlockHeader
()
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
)
{
latestL2Header
,
err
:=
testSuite
.
DB
.
Blocks
.
L2LatestBlockHeader
()
require
.
NoError
(
t
,
err
)
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
++
{
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
.
NotNil
(
t
,
indexedHeader
)
...
...
@@ -60,7 +60,7 @@ func TestE2EETL(t *testing.T) {
require
.
NoError
(
t
,
err
)
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
.
ParentHash
,
indexedHeader
.
ParentHash
)
require
.
Equal
(
t
,
header
.
Time
,
indexedHeader
.
Timestamp
)
...
...
@@ -144,7 +144,7 @@ func TestE2EETL(t *testing.T) {
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
block
.
Hash
(),
l1BlockHeader
.
Hash
)
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
)
// ensure the right rlp encoding is stored. checking the hashes
...
...
indexer/etl/l1_etl.go
View file @
710850b7
...
...
@@ -38,7 +38,7 @@ func NewL1ETL(log log.Logger, db *database.DB, client node.EthClient, startHeigh
// Determine the starting height for traversal
var
fromHeader
*
types
.
Header
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
()
}
else
if
startHeight
.
BitLen
()
>
0
{
...
...
indexer/etl/l2_etl.go
View file @
710850b7
...
...
@@ -35,7 +35,7 @@ func NewL2ETL(log log.Logger, db *database.DB, client node.EthClient) (*L2ETL, e
var
fromHeader
*
types
.
Header
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
()
}
else
{
log
.
Info
(
"no indexed state, starting from genesis"
)
...
...
indexer/processors/bridge.go
View file @
710850b7
...
...
@@ -107,7 +107,7 @@ func (b *BridgeProcessor) Start(ctx context.Context) error {
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
)
if
b
.
LatestL1Header
!=
nil
{
// `NewBridgeProcessor` ensures that LatestL2Header must not be nil if LatestL1Header is set
...
...
indexer/processors/contracts/cross_domain_messenger.go
View file @
710850b7
...
...
@@ -94,13 +94,13 @@ func CrossDomainMessengerSentMessageEvents(chainSelector string, contractAddress
Event
:
&
sentMessageEvents
[
i
],
BridgeMessage
:
database
.
BridgeMessage
{
MessageHash
:
messageHash
,
Nonce
:
database
.
U256
{
Int
:
sentMessage
.
MessageNonce
}
,
Nonce
:
sentMessage
.
MessageNonce
,
SentMessageEventGUID
:
sentMessageEvents
[
i
]
.
GUID
,
GasLimit
:
database
.
U256
{
Int
:
sentMessage
.
GasLimit
}
,
GasLimit
:
sentMessage
.
GasLimit
,
Tx
:
database
.
Transaction
{
FromAddress
:
sentMessage
.
Sender
,
ToAddress
:
sentMessage
.
Target
,
Amount
:
database
.
U256
{
Int
:
sentMessageExtension
.
Value
}
,
Amount
:
sentMessageExtension
.
Value
,
Data
:
sentMessage
.
Message
,
Timestamp
:
sentMessageEvents
[
i
]
.
Timestamp
,
},
...
...
indexer/processors/contracts/l2_to_l1_message_passer.go
View file @
710850b7
...
...
@@ -11,8 +11,8 @@ import (
type
L2ToL1MessagePasserMessagePassed
struct
{
Event
*
database
.
ContractEvent
WithdrawalHash
common
.
Hash
GasLimit
database
.
U256
Nonce
database
.
U256
GasLimit
*
big
.
Int
Nonce
*
big
.
Int
Tx
database
.
Transaction
}
...
...
@@ -40,12 +40,12 @@ func L2ToL1MessagePasserMessagePassedEvents(contractAddress common.Address, db *
messagesPassed
[
i
]
=
L2ToL1MessagePasserMessagePassed
{
Event
:
&
messagePassedEvents
[
i
]
.
ContractEvent
,
WithdrawalHash
:
messagePassed
.
WithdrawalHash
,
Nonce
:
database
.
U256
{
Int
:
messagePassed
.
Nonce
}
,
GasLimit
:
database
.
U256
{
Int
:
messagePassed
.
GasLimit
}
,
Nonce
:
messagePassed
.
Nonce
,
GasLimit
:
messagePassed
.
GasLimit
,
Tx
:
database
.
Transaction
{
FromAddress
:
messagePassed
.
Sender
,
ToAddress
:
messagePassed
.
Target
,
Amount
:
database
.
U256
{
Int
:
messagePassed
.
Value
}
,
Amount
:
messagePassed
.
Value
,
Data
:
messagePassed
.
Data
,
Timestamp
:
messagePassedEvents
[
i
]
.
Timestamp
,
},
...
...
indexer/processors/contracts/optimism_portal.go
View file @
710850b7
...
...
@@ -16,7 +16,7 @@ type OptimismPortalTransactionDepositEvent struct {
Event
*
database
.
ContractEvent
DepositTx
*
types
.
DepositTx
Tx
database
.
Transaction
GasLimit
database
.
U256
GasLimit
*
big
.
Int
}
type
OptimismPortalWithdrawalProvenEvent
struct
{
...
...
@@ -67,11 +67,11 @@ func OptimismPortalTransactionDepositEvents(contractAddress common.Address, db *
optimismPortalTxDeposits
[
i
]
=
OptimismPortalTransactionDepositEvent
{
Event
:
&
transactionDepositEvents
[
i
]
.
ContractEvent
,
DepositTx
:
depositTx
,
GasLimit
:
database
.
U256
{
Int
:
new
(
big
.
Int
)
.
SetUint64
(
depositTx
.
Gas
)}
,
GasLimit
:
new
(
big
.
Int
)
.
SetUint64
(
depositTx
.
Gas
)
,
Tx
:
database
.
Transaction
{
FromAddress
:
txDeposit
.
From
,
ToAddress
:
txDeposit
.
To
,
Amount
:
d
atabase
.
U256
{
Int
:
depositTx
.
Value
}
,
Amount
:
d
epositTx
.
Value
,
Data
:
depositTx
.
Data
,
Timestamp
:
transactionDepositEvents
[
i
]
.
Timestamp
,
},
...
...
indexer/processors/contracts/standard_bridge.go
View file @
710850b7
...
...
@@ -101,7 +101,7 @@ func _standardBridgeInitiatedEvents[BridgeEventType bindings.StandardBridgeETHBr
Tx
:
database
.
Transaction
{
FromAddress
:
erc20Bridge
.
From
,
ToAddress
:
erc20Bridge
.
To
,
Amount
:
database
.
U256
{
Int
:
erc20Bridge
.
Amount
}
,
Amount
:
erc20Bridge
.
Amount
,
Data
:
erc20Bridge
.
ExtraData
,
Timestamp
:
initiatedBridgeEvents
[
i
]
.
Timestamp
,
},
...
...
@@ -161,7 +161,7 @@ func _standardBridgeFinalizedEvents[BridgeEventType bindings.StandardBridgeETHBr
Tx
:
database
.
Transaction
{
FromAddress
:
erc20Bridge
.
From
,
ToAddress
:
erc20Bridge
.
To
,
Amount
:
database
.
U256
{
Int
:
erc20Bridge
.
Amount
}
,
Amount
:
erc20Bridge
.
Amount
,
Data
:
erc20Bridge
.
ExtraData
,
Timestamp
:
bridgeFinalizedEvents
[
i
]
.
Timestamp
,
},
...
...
op-challenger/fault/cannon/provider.go
View file @
710850b7
...
...
@@ -118,6 +118,10 @@ func (p *CannonTraceProvider) AbsolutePreState(ctx context.Context) ([]byte, err
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
// 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
)
{
...
...
op-challenger/fault/cannon/provider_test.go
View file @
710850b7
...
...
@@ -204,6 +204,14 @@ func TestUseGameSpecificSubdir(t *testing.T) {
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
)
{
srcDir
:=
filepath
.
Join
(
"test_data"
)
path
:=
filepath
.
Join
(
srcDir
,
filename
)
...
...
op-challenger/fault/player.go
View file @
710850b7
...
...
@@ -29,6 +29,7 @@ type GamePlayer struct {
agreeWithProposedOutput
bool
caller
GameInfo
logger
log
.
Logger
cleanup
func
()
error
}
func
NewGamePlayer
(
...
...
@@ -54,18 +55,22 @@ func NewGamePlayer(
var
provider
types
.
TraceProvider
var
updater
types
.
OracleUpdater
var
cleanup
func
()
error
switch
cfg
.
TraceType
{
case
config
.
TraceTypeCannon
:
provider
,
err
=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
cfg
,
client
,
addr
)
cannonProvider
,
err
:
=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
cfg
,
client
,
addr
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"create cannon trace provider: %w"
,
err
)
}
cleanup
=
cannonProvider
.
Cleanup
provider
=
cannonProvider
updater
,
err
=
cannon
.
NewOracleUpdater
(
ctx
,
logger
,
txMgr
,
addr
,
client
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to create the cannon updater: %w"
,
err
)
}
case
config
.
TraceTypeAlphabet
:
provider
=
alphabet
.
NewTraceProvider
(
cfg
.
AlphabetTrace
,
gameDepth
)
cleanup
=
func
()
error
{
return
nil
}
updater
=
alphabet
.
NewOracleUpdater
(
logger
)
default
:
return
nil
,
fmt
.
Errorf
(
"unsupported trace type: %v"
,
cfg
.
TraceType
)
...
...
@@ -90,6 +95,7 @@ func NewGamePlayer(
agreeWithProposedOutput
:
cfg
.
AgreeWithProposedOutput
,
caller
:
caller
,
logger
:
logger
,
cleanup
:
cleanup
,
},
nil
}
...
...
@@ -129,3 +135,7 @@ func (g *GamePlayer) logGameStatus(ctx context.Context, status types.GameStatus)
g
.
logger
.
Error
(
"Game lost"
,
"status"
,
status
)
}
}
func
(
g
*
GamePlayer
)
Cleanup
()
error
{
return
g
.
cleanup
()
}
op-challenger/fault/player_test.go
View file @
710850b7
...
...
@@ -27,6 +27,24 @@ func TestProgressGame_LogErrorFromAct(t *testing.T) {
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
)
{
tests
:=
[]
struct
{
name
string
...
...
package.json
View file @
710850b7
...
...
@@ -68,7 +68,7 @@
"
markdownlint-cli2
"
:
"
0.4.0
"
,
"
mkdirp
"
:
"
^1.0.4
"
,
"
mocha
"
:
"
^10.2.0
"
,
"
nx
"
:
"
16.7.
2
"
,
"
nx
"
:
"
16.7.
3
"
,
"
nyc
"
:
"
^15.1.0
"
,
"
patch-package
"
:
"
^8.0.0
"
,
"
prettier
"
:
"
^2.8.0
"
,
...
...
pnpm-lock.yaml
View file @
710850b7
...
...
@@ -109,8 +109,8 @@ importers:
specifier
:
^10.2.0
version
:
10.2.0
nx
:
specifier
:
16.7.
2
version
:
16.7.
2
specifier
:
16.7.
3
version
:
16.7.
3
nyc
:
specifier
:
^15.1.0
version
:
15.1.0
...
...
@@ -2517,7 +2517,7 @@ packages:
dependencies
:
'
@lerna/child-process'
:
7.1.5
'
@npmcli/run-script'
:
6.0.2
'
@nx/devkit'
:
16.7.1(nx@16.7.
2
)
'
@nx/devkit'
:
16.7.1(nx@16.7.
3
)
'
@octokit/plugin-enterprise-rest'
:
6.0.1
'
@octokit/rest'
:
19.0.11
byte-size
:
8.1.1
...
...
@@ -2553,7 +2553,7 @@ packages:
npm-packlist
:
5.1.1
npm-registry-fetch
:
14.0.5
npmlog
:
6.0.2
nx
:
16.7.
2
nx
:
16.7.
3
p-map
:
4.0.0
p-map-series
:
2.1.0
p-queue
:
6.6.2
...
...
@@ -2838,10 +2838,10 @@ packages:
-
supports-color
dev
:
true
/@nrwl/devkit@16.7.1(nx@16.7.
2
)
:
/@nrwl/devkit@16.7.1(nx@16.7.
3
)
:
resolution
:
{
integrity
:
sha512-ysAgNju6o7QjG/ZHW0wIRJ8yWxjhErjqQ8GZ2Smqsb1myrr6UbYsuxaXjoOHI56fMmGyNPK04zzyNXXWQw/UAA==
}
dependencies
:
'
@nx/devkit'
:
16.7.1(nx@16.7.
2
)
'
@nx/devkit'
:
16.7.1(nx@16.7.
3
)
transitivePeerDependencies
:
-
nx
dev
:
true
...
...
@@ -2854,11 +2854,11 @@ packages:
-
debug
dev
:
true
/@nrwl/tao@16.7.
2
:
resolution
:
{
integrity
:
sha512-
4Wc3ic5VtZL3t4qqCMJlEad/wWuFxNUX78U5ohEStN3UFFJIjwJJpKZYZDtxhaOLWUdXbk6CI3KfSIpWgwPdbQ
==
}
/@nrwl/tao@16.7.
3
:
resolution
:
{
integrity
:
sha512-
kaH0i7ZuncSW8hGXg6DVlUBG319lUG/ene6aJUeV1spOxEsEqlckCm9HfJPfcVntvh9m1LauW+yk64cw/biVwg
==
}
hasBin
:
true
dependencies
:
nx
:
16.7.
2
nx
:
16.7.
3
tslib
:
2.6.0
transitivePeerDependencies
:
-
'
@swc-node/register'
...
...
@@ -2866,23 +2866,23 @@ packages:
-
debug
dev
:
true
/@nx/devkit@16.7.1(nx@16.7.
2
)
:
/@nx/devkit@16.7.1(nx@16.7.
3
)
:
resolution
:
{
integrity
:
sha512-PASQGd1YhcAA/hpupCsSakP71Qh1pYle4dtF+wh3KDe2kdeM6BgccClapiGcXAI46JKLUGAbNYJ8pg7GEPY5Nw==
}
peerDependencies
:
nx
:
'
>=
15
<=
17'
dependencies
:
'
@nrwl/devkit'
:
16.7.1(nx@16.7.
2
)
'
@nrwl/devkit'
:
16.7.1(nx@16.7.
3
)
ejs
:
3.1.9
enquirer
:
2.3.6
ignore
:
5.2.4
nx
:
16.7.
2
nx
:
16.7.
3
semver
:
7.5.3
tmp
:
0.2.1
tslib
:
2.6.0
dev
:
true
/@nx/nx-darwin-arm64@16.7.
2
:
resolution
:
{
integrity
:
sha512-
dkTHAzOTbqRHUQtnw7knEJq4ll6hew11u+9B0fThs9gC/X0iPK0eDXD4TqbIKEbcWAsxpuGiWPzGoNPo7Gwl9
A==
}
/@nx/nx-darwin-arm64@16.7.
3
:
resolution
:
{
integrity
:
sha512-
s1woGSGbNEzDSzNoSIIpaYkVwJmM0D89/1QmccVZIv7jvGGcqx4ONQPsBylWpDco3IeTDhNsOMzMhF3fvqhtg
A==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
darwin
]
...
...
@@ -2890,8 +2890,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-darwin-x64@16.7.
2
:
resolution
:
{
integrity
:
sha512-
EKhjX7DCRIA5U8yAxIgGXeIFaq1dhgLJy8OAG4n1Ud8c21px+bBSrcZvv0ww5VoEulhggQ+c6fW1cjKtGgLkn
Q==
}
/@nx/nx-darwin-x64@16.7.
3
:
resolution
:
{
integrity
:
sha512-
J9lE+T7Hm3hD+s33xidxa6Jkq2CCKZwwTrLO+Ff1/A2d4T13d16O/Rf3Y/nuveUjCVEYwwYkk4G5v2FPJ4i3S
Q==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
darwin
]
...
...
@@ -2899,8 +2899,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-freebsd-x64@16.7.
2
:
resolution
:
{
integrity
:
sha512-
3QhXZq0wxvi4lg1MJqwq72F7PE/d0Hcl3uwheenYQtwUvAFAmijC/Z4AVPSqbKJ+QaoqASnXRim9z3EIfeD+DQ
==
}
/@nx/nx-freebsd-x64@16.7.
3
:
resolution
:
{
integrity
:
sha512-
/1WrplEyxTkoARsCUcI2FjMVy2AFuaH2oS1vFuGtBchWoKbgFZd3Aek8+oYt0wiQ7cfBxs2y92UqvTOhLygxOw
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
freebsd
]
...
...
@@ -2908,8 +2908,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-arm-gnueabihf@16.7.
2
:
resolution
:
{
integrity
:
sha512-
7bny8NvE9iyfwRfq9/mOZjzMNWthT70Ce1N9suB2zdbgbLUEDPQQhBNbg969yT6/LbWMWuWZXeIbz/Fwndf9z
A==
}
/@nx/nx-linux-arm-gnueabihf@16.7.
3
:
resolution
:
{
integrity
:
sha512-
Z3CLZcxBnpra8nlizK97eyohI9x+JPh4wp+87x9WvIiLGd+k3hO42nth/q0xXJs2G5emQN8cSLPscGzbZodVp
A==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm
]
os
:
[
linux
]
...
...
@@ -2917,8 +2917,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-arm64-gnu@16.7.
2
:
resolution
:
{
integrity
:
sha512-
+UdeFB1HY/3GU2+mflydFWpztghFRQiVzJV6MTcjtOzE3jfgXzz9TP580pDxozTvNSRPlblH07X+iB8DhVcB9w
==
}
/@nx/nx-linux-arm64-gnu@16.7.
3
:
resolution
:
{
integrity
:
sha512-
a4E4psBgU0b7ZT99630mylxcrlLObgy4bA6JrT+4XIFAcaHkfCmWLupPyXgBCmSqQN01jsuXSYm/t7EWjKL98Q
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
linux
]
...
...
@@ -2926,8 +2926,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-arm64-musl@16.7.
2
:
resolution
:
{
integrity
:
sha512-
YfkWu+4GKXageuYiH5a77gIDAXnit5SIyfI+RWe/j04uFy171KnUt167DC417fv/fTGxeXY1tzOu112Y+x5ix
w==
}
/@nx/nx-linux-arm64-musl@16.7.
3
:
resolution
:
{
integrity
:
sha512-
vl+WONX6uOS8uGwtcAlb4yiAh2ws/gZSLaIURJaDnf509FrYTb/RsBca5BskOQUYkKSI//6oQu653TRDKYxyW
w==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
linux
]
...
...
@@ -2935,8 +2935,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-x64-gnu@16.7.
2
:
resolution
:
{
integrity
:
sha512-
/TtSa2rHR+1gNuALR1yafl4fzBK2/GAhosf+skn00OgwsJ0c8ie9tuuftlMo+2n3LcXY/IaPDaD7t6fln4qsQg
==
}
/@nx/nx-linux-x64-gnu@16.7.
3
:
resolution
:
{
integrity
:
sha512-
udZ+6IOYv0Ra0MRpbAW8TSFdcUxtfuIryRsGVF2767HeWqHzOhLynmJyJPatJ7gXMVFaL7+zfcAoV6fm7My1FQ
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
linux
]
...
...
@@ -2944,8 +2944,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-x64-musl@16.7.
2
:
resolution
:
{
integrity
:
sha512-
VC638hxdWSA8VTDU9rAXjr60mmMP3ZyCUbSkJ+8ydEe83StMDY3PAXS5Hw3n/ouxDfCF9r1kWIGFe4g+emvfB
w==
}
/@nx/nx-linux-x64-musl@16.7.
3
:
resolution
:
{
integrity
:
sha512-
LQW1ttQWNekHoJTrzXMumaMxfYRcjsuGQP8Ki2pWuw43TFTQyI6Cfgk8/wjKv8ATc772cF9Tadyz4+JEIQlcN
w==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
linux
]
...
...
@@ -2953,8 +2953,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-win32-arm64-msvc@16.7.
2
:
resolution
:
{
integrity
:
sha512-
sSUqgANLgQFFzKTvyMczh5D6xiqTQnB8daJTLX+QUCv5vO5+ZSwuVDyNfr6g/HV2+ak0M9/wVQUae11TgUIPYw
==
}
/@nx/nx-win32-arm64-msvc@16.7.
3
:
resolution
:
{
integrity
:
sha512-
wCrpGqh5fPrlkhHZXVSPBDs9E3L5vIJHtdPrc1QP1uCQiV41mpauey31p6rjvQUWYCC0BGTWJGF+hAY7wYUHdg
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
win32
]
...
...
@@ -2962,8 +2962,8 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-win32-x64-msvc@16.7.
2
:
resolution
:
{
integrity
:
sha512-
+n01cT9/P3o95x+FlRWYf9sFZ29ooxYD/WLcmxACeXN0V1bdbnZxKVSuJqrXZhmpHe7P+/+IRmniv9cdpkxz7g
==
}
/@nx/nx-win32-x64-msvc@16.7.
3
:
resolution
:
{
integrity
:
sha512-
Ja2+VhMFWiVsZt3mkdsU1MCotQlAxG94zFiJYbXufsERJItWuN4i0mZjeZITiRBosEmkn4SeAUkg+xuiH+q4GA
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
win32
]
...
...
@@ -10859,7 +10859,7 @@ packages:
'
@lerna/child-process'
:
7.1.5
'
@lerna/create'
:
7.1.5
'
@npmcli/run-script'
:
6.0.2
'
@nx/devkit'
:
16.7.1(nx@16.7.
2
)
'
@nx/devkit'
:
16.7.1(nx@16.7.
3
)
'
@octokit/plugin-enterprise-rest'
:
6.0.1
'
@octokit/rest'
:
19.0.11
byte-size
:
8.1.1
...
...
@@ -10902,7 +10902,7 @@ packages:
npm-packlist
:
5.1.1
npm-registry-fetch
:
14.0.5
npmlog
:
6.0.2
nx
:
16.7.
2
nx
:
16.7.
3
p-map
:
4.0.0
p-map-series
:
2.1.0
p-pipe
:
3.1.0
...
...
@@ -12529,8 +12529,8 @@ packages:
-
debug
dev
:
true
/nx@16.7.
2
:
resolution
:
{
integrity
:
sha512-
T7cRC97qJ4H9fg498ZGwFQaTzJdLQaRp6DFUwzFo1B9qzR56A2tA3HBvT/huo85THaDX+/pcgLyeixJKEE5RPg
==
}
/nx@16.7.
3
:
resolution
:
{
integrity
:
sha512-
aam+1ZesbCfV9xv5FktsAqHVBObcazrf1MG56SdBTYNuILBVgAztPj8NyIZ87ZHw8IE/JxWDDUtZo7lwaSOFzA
==
}
hasBin
:
true
requiresBuild
:
true
peerDependencies
:
...
...
@@ -12542,7 +12542,7 @@ packages:
'
@swc/core'
:
optional
:
true
dependencies
:
'
@nrwl/tao'
:
16.7.
2
'
@nrwl/tao'
:
16.7.
3
'
@parcel/watcher'
:
2.0.4
'
@yarnpkg/lockfile'
:
1.1.0
'
@yarnpkg/parsers'
:
3.0.0-rc.46
...
...
@@ -12578,16 +12578,16 @@ packages:
yargs
:
17.7.2
yargs-parser
:
21.1.1
optionalDependencies
:
'
@nx/nx-darwin-arm64'
:
16.7.
2
'
@nx/nx-darwin-x64'
:
16.7.
2
'
@nx/nx-freebsd-x64'
:
16.7.
2
'
@nx/nx-linux-arm-gnueabihf'
:
16.7.
2
'
@nx/nx-linux-arm64-gnu'
:
16.7.
2
'
@nx/nx-linux-arm64-musl'
:
16.7.
2
'
@nx/nx-linux-x64-gnu'
:
16.7.
2
'
@nx/nx-linux-x64-musl'
:
16.7.
2
'
@nx/nx-win32-arm64-msvc'
:
16.7.
2
'
@nx/nx-win32-x64-msvc'
:
16.7.
2
'
@nx/nx-darwin-arm64'
:
16.7.
3
'
@nx/nx-darwin-x64'
:
16.7.
3
'
@nx/nx-freebsd-x64'
:
16.7.
3
'
@nx/nx-linux-arm-gnueabihf'
:
16.7.
3
'
@nx/nx-linux-arm64-gnu'
:
16.7.
3
'
@nx/nx-linux-arm64-musl'
:
16.7.
3
'
@nx/nx-linux-x64-gnu'
:
16.7.
3
'
@nx/nx-linux-x64-musl'
:
16.7.
3
'
@nx/nx-win32-arm64-msvc'
:
16.7.
3
'
@nx/nx-win32-x64-msvc'
:
16.7.
3
transitivePeerDependencies
:
-
debug
dev
:
true
...
...
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