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
1c1422ea
Commit
1c1422ea
authored
Jul 19, 2023
by
Hamdi Allam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move op-e2e/e2eutils/wait.go into op-service
parent
c6b61ea1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
19 deletions
+21
-19
Dockerfile
indexer/Dockerfile
+1
-0
bedrock_test.go
indexer/integration_tests/bedrock_test.go
+9
-8
standard_bridge.go
indexer/services/l2/bridge/standard_bridge.go
+7
-7
utils.go
op-node/withdrawals/utils.go
+3
-3
waits.go
op-service/client/utils/waits.go
+1
-1
No files found.
indexer/Dockerfile
View file @
1c1422ea
...
@@ -6,6 +6,7 @@ RUN apk add --no-cache make gcc musl-dev linux-headers git jq bash
...
@@ -6,6 +6,7 @@ RUN apk add --no-cache make gcc musl-dev linux-headers git jq bash
COPY
./indexer /app/indexer
COPY
./indexer /app/indexer
COPY
./op-bindings /app/op-bindings
COPY
./op-bindings /app/op-bindings
COPY
./op-service /app/op-service
COPY
./op-service /app/op-service
COPY
./op-node /app/op-node
COPY
./go.mod /app/go.mod
COPY
./go.mod /app/go.mod
COPY
./go.sum /app/go.sum
COPY
./go.sum /app/go.sum
...
...
indexer/integration_tests/bedrock_test.go
View file @
1c1422ea
...
@@ -26,6 +26,7 @@ import (
...
@@ -26,6 +26,7 @@ import (
"github.com/ethereum-optimism/optimism/op-e2e/e2eutils"
"github.com/ethereum-optimism/optimism/op-e2e/e2eutils"
"github.com/ethereum-optimism/optimism/op-node/rollup/derive"
"github.com/ethereum-optimism/optimism/op-node/rollup/derive"
"github.com/ethereum-optimism/optimism/op-node/withdrawals"
"github.com/ethereum-optimism/optimism/op-node/withdrawals"
"github.com/ethereum-optimism/optimism/op-service/client/utils"
_
"github.com/lib/pq"
_
"github.com/lib/pq"
)
)
...
@@ -44,7 +45,7 @@ func TestBedrockIndexer(t *testing.T) {
...
@@ -44,7 +45,7 @@ func TestBedrockIndexer(t *testing.T) {
fromAddr
:=
cfg
.
Secrets
.
Addresses
()
.
Alice
fromAddr
:=
cfg
.
Secrets
.
Addresses
()
.
Alice
// wait a couple of blocks
// wait a couple of blocks
require
.
NoError
(
t
,
e2e
utils
.
WaitBlock
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
l2Client
,
10
))
require
.
NoError
(
t
,
utils
.
WaitBlock
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
l2Client
,
10
))
l1SB
,
err
:=
bindings
.
NewL1StandardBridge
(
predeploys
.
DevL1StandardBridgeAddr
,
l1Client
)
l1SB
,
err
:=
bindings
.
NewL1StandardBridge
(
predeploys
.
DevL1StandardBridgeAddr
,
l1Client
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
...
@@ -99,7 +100,7 @@ func TestBedrockIndexer(t *testing.T) {
...
@@ -99,7 +100,7 @@ func TestBedrockIndexer(t *testing.T) {
l1Opts
.
Value
=
big
.
NewInt
(
params
.
Ether
)
l1Opts
.
Value
=
big
.
NewInt
(
params
.
Ether
)
depTx
,
err
:=
l1SB
.
DepositETH
(
l1Opts
,
200
_000
,
nil
)
depTx
,
err
:=
l1SB
.
DepositETH
(
l1Opts
,
200
_000
,
nil
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
depReceipt
,
err
:=
e2e
utils
.
WaitReceiptOK
(
e2eutils
.
TimeoutCtx
(
t
,
10
*
time
.
Second
),
l1Client
,
depTx
.
Hash
())
depReceipt
,
err
:=
utils
.
WaitReceiptOK
(
e2eutils
.
TimeoutCtx
(
t
,
10
*
time
.
Second
),
l1Client
,
depTx
.
Hash
())
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
Greaterf
(
t
,
len
(
depReceipt
.
Logs
),
0
,
"must have logs"
)
require
.
Greaterf
(
t
,
len
(
depReceipt
.
Logs
),
0
,
"must have logs"
)
var
l2Hash
common
.
Hash
var
l2Hash
common
.
Hash
...
@@ -114,12 +115,12 @@ func TestBedrockIndexer(t *testing.T) {
...
@@ -114,12 +115,12 @@ func TestBedrockIndexer(t *testing.T) {
l2Hash
=
tx
.
Hash
()
l2Hash
=
tx
.
Hash
()
}
}
require
.
NotEqual
(
t
,
common
.
Hash
{},
l2Hash
)
require
.
NotEqual
(
t
,
common
.
Hash
{},
l2Hash
)
_
,
err
=
e2e
utils
.
WaitReceiptOK
(
e2eutils
.
TimeoutCtx
(
t
,
15
*
time
.
Second
),
l2Client
,
l2Hash
)
_
,
err
=
utils
.
WaitReceiptOK
(
e2eutils
.
TimeoutCtx
(
t
,
15
*
time
.
Second
),
l2Client
,
l2Hash
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
// Poll for indexer deposit
// Poll for indexer deposit
var
depPage
*
db
.
PaginatedDeposits
var
depPage
*
db
.
PaginatedDeposits
require
.
NoError
(
t
,
e2e
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
require
.
NoError
(
t
,
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
res
:=
new
(
db
.
PaginatedDeposits
)
res
:=
new
(
db
.
PaginatedDeposits
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/deposits/%s"
,
fromAddr
)),
res
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/deposits/%s"
,
fromAddr
)),
res
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -150,11 +151,11 @@ func TestBedrockIndexer(t *testing.T) {
...
@@ -150,11 +151,11 @@ func TestBedrockIndexer(t *testing.T) {
l2Opts
.
Value
=
big
.
NewInt
(
0.5
*
params
.
Ether
)
l2Opts
.
Value
=
big
.
NewInt
(
0.5
*
params
.
Ether
)
wdTx
,
err
:=
l2SB
.
Withdraw
(
l2Opts
,
op_legacy
.
LegacyERC20ETHAddr
,
big
.
NewInt
(
0.5
*
params
.
Ether
),
0
,
nil
)
wdTx
,
err
:=
l2SB
.
Withdraw
(
l2Opts
,
op_legacy
.
LegacyERC20ETHAddr
,
big
.
NewInt
(
0.5
*
params
.
Ether
),
0
,
nil
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
wdReceipt
,
err
:=
e2e
utils
.
WaitReceiptOK
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
l2Client
,
wdTx
.
Hash
())
wdReceipt
,
err
:=
utils
.
WaitReceiptOK
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
l2Client
,
wdTx
.
Hash
())
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
var
wdPage
*
db
.
PaginatedWithdrawals
var
wdPage
*
db
.
PaginatedWithdrawals
require
.
NoError
(
t
,
e2e
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
require
.
NoError
(
t
,
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
res
:=
new
(
db
.
PaginatedWithdrawals
)
res
:=
new
(
db
.
PaginatedWithdrawals
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/withdrawals/%s"
,
fromAddr
)),
res
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/withdrawals/%s"
,
fromAddr
)),
res
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -188,7 +189,7 @@ func TestBedrockIndexer(t *testing.T) {
...
@@ -188,7 +189,7 @@ func TestBedrockIndexer(t *testing.T) {
wdParams
,
proveReceipt
:=
op_e2e
.
ProveWithdrawal
(
t
,
cfg
,
l1Client
,
sys
.
Nodes
[
"sequencer"
],
cfg
.
Secrets
.
Alice
,
wdReceipt
)
wdParams
,
proveReceipt
:=
op_e2e
.
ProveWithdrawal
(
t
,
cfg
,
l1Client
,
sys
.
Nodes
[
"sequencer"
],
cfg
.
Secrets
.
Alice
,
wdReceipt
)
wdPage
=
nil
wdPage
=
nil
require
.
NoError
(
t
,
e2e
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
require
.
NoError
(
t
,
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
res
:=
new
(
db
.
PaginatedWithdrawals
)
res
:=
new
(
db
.
PaginatedWithdrawals
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/withdrawals/%s"
,
fromAddr
)),
res
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/withdrawals/%s"
,
fromAddr
)),
res
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -213,7 +214,7 @@ func TestBedrockIndexer(t *testing.T) {
...
@@ -213,7 +214,7 @@ func TestBedrockIndexer(t *testing.T) {
finReceipt
:=
op_e2e
.
FinalizeWithdrawal
(
t
,
cfg
,
l1Client
,
cfg
.
Secrets
.
Alice
,
wdReceipt
,
wdParams
)
finReceipt
:=
op_e2e
.
FinalizeWithdrawal
(
t
,
cfg
,
l1Client
,
cfg
.
Secrets
.
Alice
,
wdReceipt
,
wdParams
)
wdPage
=
nil
wdPage
=
nil
require
.
NoError
(
t
,
e2e
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
require
.
NoError
(
t
,
utils
.
WaitFor
(
e2eutils
.
TimeoutCtx
(
t
,
30
*
time
.
Second
),
100
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
res
:=
new
(
db
.
PaginatedWithdrawals
)
res
:=
new
(
db
.
PaginatedWithdrawals
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/withdrawals/%s"
,
fromAddr
)),
res
)
err
:=
getJSON
(
makeURL
(
fmt
.
Sprintf
(
"v1/withdrawals/%s"
,
fromAddr
)),
res
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
indexer/services/l2/bridge/standard_bridge.go
View file @
1c1422ea
...
@@ -5,6 +5,7 @@ import (
...
@@ -5,6 +5,7 @@ import (
"github.com/ethereum-optimism/optimism/indexer/db"
"github.com/ethereum-optimism/optimism/indexer/db"
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-node/withdrawals"
"github.com/ethereum-optimism/optimism/op-service/backoff"
"github.com/ethereum-optimism/optimism/op-service/backoff"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/ethclient"
...
@@ -44,11 +45,6 @@ func (s *StandardBridge) GetWithdrawalsByBlockRange(ctx context.Context, start,
...
@@ -44,11 +45,6 @@ func (s *StandardBridge) GetWithdrawalsByBlockRange(ctx context.Context, start,
return
nil
,
err
return
nil
,
err
}
}
l2L1MpABI
,
err
:=
bindings
.
L2ToL1MessagePasserMetaData
.
GetAbi
()
if
err
!=
nil
{
return
nil
,
err
}
receipts
:=
make
(
map
[
common
.
Hash
]
*
types
.
Receipt
)
receipts
:=
make
(
map
[
common
.
Hash
]
*
types
.
Receipt
)
defer
iter
.
Close
()
defer
iter
.
Close
()
for
iter
.
Next
()
{
for
iter
.
Next
()
{
...
@@ -65,7 +61,7 @@ func (s *StandardBridge) GetWithdrawalsByBlockRange(ctx context.Context, start,
...
@@ -65,7 +61,7 @@ func (s *StandardBridge) GetWithdrawalsByBlockRange(ctx context.Context, start,
var
withdrawalInitiated
*
bindings
.
L2ToL1MessagePasserMessagePassed
var
withdrawalInitiated
*
bindings
.
L2ToL1MessagePasserMessagePassed
for
_
,
eLog
:=
range
receipt
.
Logs
{
for
_
,
eLog
:=
range
receipt
.
Logs
{
if
len
(
eLog
.
Topics
)
==
0
||
eLog
.
Topics
[
0
]
!=
l2L1MpABI
.
Events
[
"MessagePassed"
]
.
ID
{
if
len
(
eLog
.
Topics
)
==
0
||
eLog
.
Topics
[
0
]
!=
withdrawals
.
MessagePassedTopic
{
continue
continue
}
}
...
@@ -80,7 +76,11 @@ func (s *StandardBridge) GetWithdrawalsByBlockRange(ctx context.Context, start,
...
@@ -80,7 +76,11 @@ func (s *StandardBridge) GetWithdrawalsByBlockRange(ctx context.Context, start,
}
}
}
}
hash
:=
common
.
Hash
(
withdrawalInitiated
.
WithdrawalHash
)
hash
,
err
:=
withdrawals
.
WithdrawalHash
(
withdrawalInitiated
)
if
err
!=
nil
{
return
nil
,
err
}
withdrawalsByBlockhash
[
ev
.
Raw
.
BlockHash
]
=
append
(
withdrawalsByBlockhash
[
ev
.
Raw
.
BlockHash
]
=
append
(
withdrawalsByBlockhash
[
ev
.
Raw
.
BlockHash
],
db
.
Withdrawal
{
withdrawalsByBlockhash
[
ev
.
Raw
.
BlockHash
],
db
.
Withdrawal
{
TxHash
:
ev
.
Raw
.
TxHash
,
TxHash
:
ev
.
Raw
.
TxHash
,
...
...
op-node/withdrawals/utils.go
View file @
1c1422ea
...
@@ -8,7 +8,6 @@ import (
...
@@ -8,7 +8,6 @@ import (
"math/big"
"math/big"
"time"
"time"
"github.com/ethereum-optimism/optimism/op-e2e/e2eutils"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
...
@@ -19,6 +18,7 @@ import (
...
@@ -19,6 +18,7 @@ import (
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/predeploys"
"github.com/ethereum-optimism/optimism/op-bindings/predeploys"
"github.com/ethereum-optimism/optimism/op-service/client/utils"
)
)
var
MessagePassedTopic
=
crypto
.
Keccak256Hash
([]
byte
(
"MessagePassed(uint256,address,address,uint256,uint256,bytes,bytes32)"
))
var
MessagePassedTopic
=
crypto
.
Keccak256Hash
([]
byte
(
"MessagePassed(uint256,address,address,uint256,uint256,bytes,bytes32)"
))
...
@@ -36,7 +36,7 @@ func WaitForOutputRootPublished(ctx context.Context, client *ethclient.Client, p
...
@@ -36,7 +36,7 @@ func WaitForOutputRootPublished(ctx context.Context, client *ethclient.Client, p
}
}
getL2BlockFromLatestOutput
:=
func
()
(
*
big
.
Int
,
error
)
{
return
l2OO
.
LatestBlockNumber
(
opts
)
}
getL2BlockFromLatestOutput
:=
func
()
(
*
big
.
Int
,
error
)
{
return
l2OO
.
LatestBlockNumber
(
opts
)
}
outputBlockNum
,
err
:=
e2e
utils
.
WaitAndGet
[
*
big
.
Int
](
ctx
,
time
.
Second
,
getL2BlockFromLatestOutput
,
func
(
latest
*
big
.
Int
)
bool
{
outputBlockNum
,
err
:=
utils
.
WaitAndGet
[
*
big
.
Int
](
ctx
,
time
.
Second
,
getL2BlockFromLatestOutput
,
func
(
latest
*
big
.
Int
)
bool
{
return
latest
.
Cmp
(
l2BlockNumber
)
>=
0
return
latest
.
Cmp
(
l2BlockNumber
)
>=
0
})
})
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -72,7 +72,7 @@ func WaitForFinalizationPeriod(ctx context.Context, client *ethclient.Client, po
...
@@ -72,7 +72,7 @@ func WaitForFinalizationPeriod(ctx context.Context, client *ethclient.Client, po
// Assume clock is relatively correct
// Assume clock is relatively correct
time
.
Sleep
(
time
.
Until
(
targetTime
))
time
.
Sleep
(
time
.
Until
(
targetTime
))
// Poll for L1 Block to have a time greater than the target time
// Poll for L1 Block to have a time greater than the target time
return
e2e
utils
.
WaitFor
(
ctx
,
time
.
Second
,
func
()
(
bool
,
error
)
{
return
utils
.
WaitFor
(
ctx
,
time
.
Second
,
func
()
(
bool
,
error
)
{
header
,
err
:=
client
.
HeaderByNumber
(
ctx
,
nil
)
header
,
err
:=
client
.
HeaderByNumber
(
ctx
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"retrieve latest header: %w"
,
err
)
return
false
,
fmt
.
Errorf
(
"retrieve latest header: %w"
,
err
)
...
...
op-
e2e/e2e
utils/waits.go
→
op-
service/client/
utils/waits.go
View file @
1c1422ea
package
e2e
utils
package
utils
import
(
import
(
"context"
"context"
...
...
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