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
4b3c59b8
Commit
4b3c59b8
authored
Nov 29, 2023
by
Baptiste Oueriagli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nit(op-node): only store the needed rollup.Config fields in DataSource
parent
3b29035a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
10 deletions
+18
-10
calldata_source.go
op-node/rollup/derive/calldata_source.go
+17
-9
calldata_source_test.go
op-node/rollup/derive/calldata_source_test.go
+1
-1
No files found.
op-node/rollup/derive/calldata_source.go
View file @
4b3c59b8
...
...
@@ -41,6 +41,12 @@ func (ds *DataSourceFactory) OpenData(ctx context.Context, id eth.BlockID, batch
return
NewDataSource
(
ctx
,
ds
.
log
,
ds
.
cfg
,
ds
.
fetcher
,
id
,
batcherAddr
)
}
// minimalDataSourceConfig regroups the mandatory rollup.Config fields needed for DataFromEVMTransactions.
type
minimalDataSourceConfig
struct
{
l1Signer
types
.
Signer
batchInboxAddress
common
.
Address
}
// DataSource is a fault tolerant approach to fetching data.
// The constructor will never fail & it will instead re-attempt the fetcher
// at a later point.
...
...
@@ -50,7 +56,7 @@ type DataSource struct {
data
[]
eth
.
Data
// Required to re-attempt fetching
id
eth
.
BlockID
cfg
*
rollup
.
Config
// TODO: `DataFromEVMTransactions` should probably not take the full c
onfig
cfg
minimalDataSourceC
onfig
fetcher
L1TransactionFetcher
log
log
.
Logger
...
...
@@ -65,7 +71,10 @@ func NewDataSource(ctx context.Context, log log.Logger, cfg *rollup.Config, fetc
return
&
DataSource
{
open
:
false
,
id
:
block
,
cfg
:
cfg
,
cfg
:
minimalDataSourceConfig
{
l1Signer
:
cfg
.
L1Signer
(),
batchInboxAddress
:
cfg
.
BatchInboxAddress
,
},
fetcher
:
fetcher
,
log
:
log
,
batcherAddr
:
batcherAddr
,
...
...
@@ -73,7 +82,7 @@ func NewDataSource(ctx context.Context, log log.Logger, cfg *rollup.Config, fetc
}
else
{
return
&
DataSource
{
open
:
true
,
data
:
DataFromEVMTransactions
(
cfg
,
batcherAddr
,
txs
,
log
.
New
(
"origin"
,
block
)),
data
:
DataFromEVMTransactions
(
cfg
.
L1Signer
(),
cfg
.
BatchInboxAddress
,
batcherAddr
,
txs
,
log
.
New
(
"origin"
,
block
)),
}
}
}
...
...
@@ -85,7 +94,7 @@ func (ds *DataSource) Next(ctx context.Context) (eth.Data, error) {
if
!
ds
.
open
{
if
_
,
txs
,
err
:=
ds
.
fetcher
.
InfoAndTxsByHash
(
ctx
,
ds
.
id
.
Hash
);
err
==
nil
{
ds
.
open
=
true
ds
.
data
=
DataFromEVMTransactions
(
ds
.
cfg
,
ds
.
batcherAddr
,
txs
,
log
.
New
(
"origin"
,
ds
.
id
))
ds
.
data
=
DataFromEVMTransactions
(
ds
.
cfg
.
l1Signer
,
ds
.
cfg
.
batchInboxAddress
,
ds
.
batcherAddr
,
txs
,
log
.
New
(
"origin"
,
ds
.
id
))
}
else
if
errors
.
Is
(
err
,
ethereum
.
NotFound
)
{
return
nil
,
NewResetError
(
fmt
.
Errorf
(
"failed to open calldata source: %w"
,
err
))
}
else
{
...
...
@@ -104,11 +113,10 @@ func (ds *DataSource) Next(ctx context.Context) (eth.Data, error) {
// DataFromEVMTransactions filters all of the transactions and returns the calldata from transactions
// that are sent to the batch inbox address from the batch sender address.
// This will return an empty array if no valid transactions are found.
func
DataFromEVMTransactions
(
config
*
rollup
.
Config
,
batcherAddr
common
.
Address
,
txs
types
.
Transactions
,
log
log
.
Logger
)
[]
eth
.
Data
{
func
DataFromEVMTransactions
(
l1Signer
types
.
Signer
,
batchInboxAddress
common
.
Address
,
batcherAddr
common
.
Address
,
txs
types
.
Transactions
,
log
log
.
Logger
)
[]
eth
.
Data
{
var
out
[]
eth
.
Data
l1Signer
:=
config
.
L1Signer
()
for
j
,
tx
:=
range
txs
{
if
to
:=
tx
.
To
();
to
!=
nil
&&
*
to
==
config
.
B
atchInboxAddress
{
if
to
:=
tx
.
To
();
to
!=
nil
&&
*
to
==
b
atchInboxAddress
{
seqDataSubmitter
,
err
:=
l1Signer
.
Sender
(
tx
)
// optimization: only derive sender if To is correct
if
err
!=
nil
{
log
.
Warn
(
"tx in inbox with invalid signature"
,
"index"
,
j
,
"err"
,
err
)
...
...
op-node/rollup/derive/calldata_source_test.go
View file @
4b3c59b8
...
...
@@ -121,7 +121,7 @@ func TestDataFromEVMTransactions(t *testing.T) {
}
}
out
:=
DataFromEVMTransactions
(
cfg
,
batcherAddr
,
txs
,
testlog
.
Logger
(
t
,
log
.
LvlCrit
))
out
:=
DataFromEVMTransactions
(
cfg
.
L1Signer
(),
cfg
.
BatchInboxAddress
,
batcherAddr
,
txs
,
testlog
.
Logger
(
t
,
log
.
LvlCrit
))
require
.
ElementsMatch
(
t
,
expectedData
,
out
)
}
...
...
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