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
38b4a12d
Unverified
Commit
38b4a12d
authored
Jan 24, 2023
by
mergify[bot]
Committed by
GitHub
Jan 24, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into clabby/e2e/garbage-batch
parents
3b166752
ff01cd62
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
266 additions
and
1 deletion
+266
-1
node.go
op-node/node/node.go
+8
-0
types.go
op-node/rollup/types.go
+89
-0
types_test.go
op-node/rollup/types_test.go
+157
-0
eth_client.go
op-node/sources/eth_client.go
+11
-0
engine.svg
specs/assets/engine.svg
+1
-1
No files found.
op-node/node/node.go
View file @
38b4a12d
...
...
@@ -124,6 +124,10 @@ func (n *OpNode) initL1(ctx context.Context, cfg *Config) error {
return
fmt
.
Errorf
(
"failed to create L1 source: %w"
,
err
)
}
if
err
:=
cfg
.
Rollup
.
ValidateL1Config
(
ctx
,
n
.
l1Source
);
err
!=
nil
{
return
err
}
// Keep subscribed to the L1 heads, which keeps the L1 maintainer pointing to the best headers to sync
n
.
l1HeadsSub
=
event
.
ResubscribeErr
(
time
.
Second
*
10
,
func
(
ctx
context
.
Context
,
err
error
)
(
event
.
Subscription
,
error
)
{
if
err
!=
nil
{
...
...
@@ -189,6 +193,10 @@ func (n *OpNode) initL2(ctx context.Context, cfg *Config, snapshotLog log.Logger
return
fmt
.
Errorf
(
"failed to create Engine client: %w"
,
err
)
}
if
err
:=
cfg
.
Rollup
.
ValidateL2Config
(
ctx
,
n
.
l2Source
);
err
!=
nil
{
return
err
}
n
.
l2Driver
=
driver
.
NewDriver
(
&
cfg
.
Driver
,
&
cfg
.
Rollup
,
n
.
l2Source
,
n
.
l1Source
,
n
,
n
.
log
,
snapshotLog
,
n
.
metrics
)
return
nil
...
...
op-node/rollup/types.go
View file @
38b4a12d
package
rollup
import
(
"context"
"errors"
"fmt"
"math/big"
...
...
@@ -55,6 +56,94 @@ type Config struct {
L1SystemConfigAddress
common
.
Address
`json:"l1_system_config_address"`
}
// ValidateL1Config checks L1 config variables for errors.
func
(
cfg
*
Config
)
ValidateL1Config
(
ctx
context
.
Context
,
client
L1Client
)
error
{
// Validate the L1 Client Chain ID
if
err
:=
cfg
.
CheckL1ChainID
(
ctx
,
client
);
err
!=
nil
{
return
err
}
// Validate the Rollup L1 Genesis Blockhash
if
err
:=
cfg
.
CheckL1GenesisBlockHash
(
ctx
,
client
);
err
!=
nil
{
return
err
}
return
nil
}
// ValidateL2Config checks L2 config variables for errors.
func
(
cfg
*
Config
)
ValidateL2Config
(
ctx
context
.
Context
,
client
L2Client
)
error
{
// Validate the L2 Client Chain ID
if
err
:=
cfg
.
CheckL2ChainID
(
ctx
,
client
);
err
!=
nil
{
return
err
}
// Validate the Rollup L2 Genesis Blockhash
if
err
:=
cfg
.
CheckL2GenesisBlockHash
(
ctx
,
client
);
err
!=
nil
{
return
err
}
return
nil
}
type
L1Client
interface
{
ChainID
(
context
.
Context
)
(
*
big
.
Int
,
error
)
L1BlockRefByNumber
(
context
.
Context
,
uint64
)
(
eth
.
L1BlockRef
,
error
)
}
// CheckL1ChainID checks that the configured L1 chain ID matches the client's chain ID.
func
(
cfg
*
Config
)
CheckL1ChainID
(
ctx
context
.
Context
,
client
L1Client
)
error
{
id
,
err
:=
client
.
ChainID
(
ctx
)
if
err
!=
nil
{
return
err
}
if
cfg
.
L1ChainID
.
Cmp
(
id
)
!=
0
{
return
fmt
.
Errorf
(
"incorrect L1 RPC chain id %d, expected %d"
,
cfg
.
L1ChainID
,
id
)
}
return
nil
}
// CheckL1GenesisBlockHash checks that the configured L1 genesis block hash is valid for the given client.
func
(
cfg
*
Config
)
CheckL1GenesisBlockHash
(
ctx
context
.
Context
,
client
L1Client
)
error
{
l1GenesisBlockRef
,
err
:=
client
.
L1BlockRefByNumber
(
ctx
,
cfg
.
Genesis
.
L1
.
Number
)
if
err
!=
nil
{
return
err
}
if
l1GenesisBlockRef
.
Hash
!=
cfg
.
Genesis
.
L1
.
Hash
{
return
fmt
.
Errorf
(
"incorrect L1 genesis block hash %d, expected %d"
,
cfg
.
Genesis
.
L1
.
Hash
,
l1GenesisBlockRef
.
Hash
)
}
return
nil
}
type
L2Client
interface
{
ChainID
(
context
.
Context
)
(
*
big
.
Int
,
error
)
L2BlockRefByNumber
(
context
.
Context
,
uint64
)
(
eth
.
L2BlockRef
,
error
)
}
// CheckL2ChainID checks that the configured L2 chain ID matches the client's chain ID.
func
(
cfg
*
Config
)
CheckL2ChainID
(
ctx
context
.
Context
,
client
L2Client
)
error
{
id
,
err
:=
client
.
ChainID
(
ctx
)
if
err
!=
nil
{
return
err
}
if
cfg
.
L2ChainID
.
Cmp
(
id
)
!=
0
{
return
fmt
.
Errorf
(
"incorrect L2 RPC chain id %d, expected %d"
,
cfg
.
L2ChainID
,
id
)
}
return
nil
}
// CheckL2GenesisBlockHash checks that the configured L2 genesis block hash is valid for the given client.
func
(
cfg
*
Config
)
CheckL2GenesisBlockHash
(
ctx
context
.
Context
,
client
L2Client
)
error
{
l2GenesisBlockRef
,
err
:=
client
.
L2BlockRefByNumber
(
ctx
,
cfg
.
Genesis
.
L2
.
Number
)
if
err
!=
nil
{
return
err
}
if
l2GenesisBlockRef
.
Hash
!=
cfg
.
Genesis
.
L2
.
Hash
{
return
fmt
.
Errorf
(
"incorrect L2 genesis block hash %d, expected %d"
,
cfg
.
Genesis
.
L2
.
Hash
,
l2GenesisBlockRef
.
Hash
)
}
return
nil
}
// Check verifies that the given configuration makes sense
func
(
cfg
*
Config
)
Check
()
error
{
if
cfg
.
BlockTime
==
0
{
...
...
op-node/rollup/types_test.go
View file @
38b4a12d
package
rollup
import
(
"context"
"encoding/json"
"math/big"
"math/rand"
...
...
@@ -55,3 +56,159 @@ func TestConfigJSON(t *testing.T) {
assert
.
NoError
(
t
,
json
.
Unmarshal
(
data
,
&
roundTripped
))
assert
.
Equal
(
t
,
&
roundTripped
,
config
)
}
type
mockL1Client
struct
{
chainID
*
big
.
Int
Hash
common
.
Hash
}
func
(
m
*
mockL1Client
)
ChainID
(
context
.
Context
)
(
*
big
.
Int
,
error
)
{
return
m
.
chainID
,
nil
}
func
(
m
*
mockL1Client
)
L1BlockRefByNumber
(
ctx
context
.
Context
,
number
uint64
)
(
eth
.
L1BlockRef
,
error
)
{
return
eth
.
L1BlockRef
{
Hash
:
m
.
Hash
,
Number
:
100
,
},
nil
}
func
TestValidateL1Config
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L1ChainID
=
big
.
NewInt
(
100
)
config
.
Genesis
.
L1
.
Number
=
100
config
.
Genesis
.
L1
.
Hash
=
[
32
]
byte
{
0x01
}
mockClient
:=
mockL1Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
ValidateL1Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
NoError
(
t
,
err
)
}
func
TestValidateL1ConfigInvalidChainIdFails
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L1ChainID
=
big
.
NewInt
(
101
)
config
.
Genesis
.
L1
.
Number
=
100
config
.
Genesis
.
L1
.
Hash
=
[
32
]
byte
{
0x01
}
mockClient
:=
mockL1Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
ValidateL1Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
config
.
L1ChainID
=
big
.
NewInt
(
99
)
err
=
config
.
ValidateL1Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
}
func
TestValidateL1ConfigInvalidGenesisHashFails
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L1ChainID
=
big
.
NewInt
(
100
)
config
.
Genesis
.
L1
.
Number
=
100
config
.
Genesis
.
L1
.
Hash
=
[
32
]
byte
{
0x00
}
mockClient
:=
mockL1Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
ValidateL1Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
config
.
Genesis
.
L1
.
Hash
=
[
32
]
byte
{
0x02
}
err
=
config
.
ValidateL1Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
}
func
TestCheckL1ChainID
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L1ChainID
=
big
.
NewInt
(
100
)
err
:=
config
.
CheckL1ChainID
(
context
.
TODO
(),
&
mockL1Client
{
chainID
:
big
.
NewInt
(
100
)})
assert
.
NoError
(
t
,
err
)
err
=
config
.
CheckL1ChainID
(
context
.
TODO
(),
&
mockL1Client
{
chainID
:
big
.
NewInt
(
101
)})
assert
.
Error
(
t
,
err
)
err
=
config
.
CheckL1ChainID
(
context
.
TODO
(),
&
mockL1Client
{
chainID
:
big
.
NewInt
(
99
)})
assert
.
Error
(
t
,
err
)
}
func
TestCheckL1BlockRefByNumber
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
Genesis
.
L1
.
Number
=
100
config
.
Genesis
.
L1
.
Hash
=
[
32
]
byte
{
0x01
}
mockClient
:=
mockL1Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
CheckL1GenesisBlockHash
(
context
.
TODO
(),
&
mockClient
)
assert
.
NoError
(
t
,
err
)
mockClient
.
Hash
=
common
.
Hash
{
0x02
}
err
=
config
.
CheckL1GenesisBlockHash
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
mockClient
.
Hash
=
common
.
Hash
{
0x00
}
err
=
config
.
CheckL1GenesisBlockHash
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
}
type
mockL2Client
struct
{
chainID
*
big
.
Int
Hash
common
.
Hash
}
func
(
m
*
mockL2Client
)
ChainID
(
context
.
Context
)
(
*
big
.
Int
,
error
)
{
return
m
.
chainID
,
nil
}
func
(
m
*
mockL2Client
)
L2BlockRefByNumber
(
ctx
context
.
Context
,
number
uint64
)
(
eth
.
L2BlockRef
,
error
)
{
return
eth
.
L2BlockRef
{
Hash
:
m
.
Hash
,
Number
:
100
,
},
nil
}
func
TestValidateL2Config
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L2ChainID
=
big
.
NewInt
(
100
)
config
.
Genesis
.
L2
.
Number
=
100
config
.
Genesis
.
L2
.
Hash
=
[
32
]
byte
{
0x01
}
mockClient
:=
mockL2Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
ValidateL2Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
NoError
(
t
,
err
)
}
func
TestValidateL2ConfigInvalidChainIdFails
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L2ChainID
=
big
.
NewInt
(
101
)
config
.
Genesis
.
L2
.
Number
=
100
config
.
Genesis
.
L2
.
Hash
=
[
32
]
byte
{
0x01
}
mockClient
:=
mockL2Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
ValidateL2Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
config
.
L2ChainID
=
big
.
NewInt
(
99
)
err
=
config
.
ValidateL2Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
}
func
TestValidateL2ConfigInvalidGenesisHashFails
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L2ChainID
=
big
.
NewInt
(
100
)
config
.
Genesis
.
L2
.
Number
=
100
config
.
Genesis
.
L2
.
Hash
=
[
32
]
byte
{
0x00
}
mockClient
:=
mockL2Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
ValidateL2Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
config
.
Genesis
.
L2
.
Hash
=
[
32
]
byte
{
0x02
}
err
=
config
.
ValidateL2Config
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
}
func
TestCheckL2ChainID
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
L2ChainID
=
big
.
NewInt
(
100
)
err
:=
config
.
CheckL2ChainID
(
context
.
TODO
(),
&
mockL2Client
{
chainID
:
big
.
NewInt
(
100
)})
assert
.
NoError
(
t
,
err
)
err
=
config
.
CheckL2ChainID
(
context
.
TODO
(),
&
mockL2Client
{
chainID
:
big
.
NewInt
(
101
)})
assert
.
Error
(
t
,
err
)
err
=
config
.
CheckL2ChainID
(
context
.
TODO
(),
&
mockL2Client
{
chainID
:
big
.
NewInt
(
99
)})
assert
.
Error
(
t
,
err
)
}
func
TestCheckL2BlockRefByNumber
(
t
*
testing
.
T
)
{
config
:=
randConfig
()
config
.
Genesis
.
L2
.
Number
=
100
config
.
Genesis
.
L2
.
Hash
=
[
32
]
byte
{
0x01
}
mockClient
:=
mockL2Client
{
chainID
:
big
.
NewInt
(
100
),
Hash
:
common
.
Hash
{
0x01
}}
err
:=
config
.
CheckL2GenesisBlockHash
(
context
.
TODO
(),
&
mockClient
)
assert
.
NoError
(
t
,
err
)
mockClient
.
Hash
=
common
.
Hash
{
0x02
}
err
=
config
.
CheckL2GenesisBlockHash
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
mockClient
.
Hash
=
common
.
Hash
{
0x00
}
err
=
config
.
CheckL2GenesisBlockHash
(
context
.
TODO
(),
&
mockClient
)
assert
.
Error
(
t
,
err
)
}
op-node/sources/eth_client.go
View file @
38b4a12d
...
...
@@ -12,6 +12,7 @@ package sources
import
(
"context"
"fmt"
"math/big"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
...
...
@@ -216,6 +217,16 @@ func (s *EthClient) payloadCall(ctx context.Context, method string, id any) (*et
return
payload
,
nil
}
// ChainID fetches the chain id of the internal RPC.
func
(
s
*
EthClient
)
ChainID
(
ctx
context
.
Context
)
(
*
big
.
Int
,
error
)
{
var
id
hexutil
.
Big
err
:=
s
.
client
.
CallContext
(
ctx
,
&
id
,
"eth_chainId"
)
if
err
!=
nil
{
return
nil
,
err
}
return
(
*
big
.
Int
)(
&
id
),
nil
}
func
(
s
*
EthClient
)
InfoByHash
(
ctx
context
.
Context
,
hash
common
.
Hash
)
(
eth
.
BlockInfo
,
error
)
{
if
header
,
ok
:=
s
.
headersCache
.
Get
(
hash
);
ok
{
return
header
.
(
*
HeaderInfo
),
nil
...
...
specs/assets/engine.svg
View file @
38b4a12d
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
version=
"1.1"
width=
"601px"
height=
"429px"
viewBox=
"-0.5 -0.5 601 429"
content=
"<mxfile host="app.diagrams.net" modified="2022-04-04T03:32:26.727Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36" version="17.2.5" etag="mDLUNmfDK830O24fIwir" type="google"><diagram id="2atPNEeVetM65dO3bovw">3Vtbb+I4FP41SLsPrexcIDxS2u5UmpWqQXuZp5VJDPE2xMgxU5hfv07ihNgOJEAa6L6g+OTYTs75ztVhYE9X298YWoe/0wBHAwsE24H9OLCskTcUvylhlxMgtGFOWTISSNqeMCM/sSQCSd2QACcKI6c04mStEn0ax9jnCg0xRt9VtgWN1F3XaIkNwsxHkUn9iwQ8zKmeC/b0L5gsw2JnCOSdFSqYJSEJUUDfKyT7aWBPGaU8v1ptpzhKhVfIJZ/3fOBu+WAMx7zNBCuf8ANFG/lu8rn4rnhZHAeTVGZiFNNYEB9CvorECIpLRjdxgNPFgBiJTdnu73Rw7xbD75IzGzxuq5yPOzlKOGJc2yR/DhxomhCcSyxfzTbfFpYyFODDdIXFNoLlfa+lQklhRUEFjeEIcfJD3RFJsCzL5codXikRG1tAAntsu/kUiWvHBuoSCd0wH8tZVa1oC0HoAGUle6itlIvBWElcVN57T8q0Xo8A20DANxpFm7WgPTIhC2YAQtX5e0g4nq2Rn959F/auAkSujhnH24MYPaA1OcEbaWKVsqgoFVo1WrXAYQUqAjsiHceQzlO8JAKgFpi8vlxdNBB44GqycZt9R9/yGFsqVDxTHHXSsGEH4hh+Zlfq3JgrNTxgd750/GGudHR7BiFSK/Xt+7QIr0Yew0js8DAXF8v04hXtIoqCCeeMzDdcJHWSQ6xdMpWz2GHKXQpossIC/6t1/W2G4oCu6u8lm+VSzMXBM8bfsE/WJBVw/S5inQT5nNA4uUy/qWaJyConEVnGgsZpyoDkKMKLdMsFiaIpjSjLNrADF3uBkxk6o2+4csez5vZw2BFsrKEKmzKIVANLnf2Xqe4lwBk3A+eZsrdpSImPZxxxfAlsQoyCh4j6b19QEh6AB1rgBpYFiYXmfuLqUpeAQ9c7wt7Cr9P70PfwfNEWTh8BjiLoNiUdXgfQKPxSBRvP01nfou4iVRk3W5jrmkLsInOD0BDi66RbGfbjpoDjXk+IZu28zqPZy6MhyzT5mskhZTykSyrcxdOeqqV/e56vNDXjTMb/Ys53shuCNpyqGsBbwvOEEbhy+D0bpvVTPt7njOmgSBkrqebYqeaa4N4eew35ZjZ6xUyEXo5ZZXmdNqhPQvM0TpJkLVpNTE8AReuUs7WGzdr4BhI6LZ0tA25DRtdJYIZmPfwSE06yCAzmaeQzo+Oa0WCT5UvXNAuo2IR13CROAGt71QnDtF1ZI1xcHun5mR5bD1Q1ojJEuwrbOmVIjmxkAT1MudX1WkzwlA6kuMifQZu+q5UEXSwSfGlZBs1GBc6aOP8syiTyj3UgMBz8WSi6X4iWDlj1vhC653pfE/HAhUchf6bPrmsmnGAal3ZcXQ1sRVBu6BKcgyKzvyPD/VWDvaLjtoEeqjgbgbNw1sZJjm4sot9ki0aL6GWN0xDR9TOBswRi9mikb0yjR47v1CnqMf2XMtX99ZY8ptUI5MI33gNLMR13aB23nQ7d46g396gjq6jUP8A91vVsbs6yWnY/uygPLbNRIS0Lb7G/4biFdd2UbZ1gWo5afw57s6xxb5alt8D0U4X2xxNaCmPZmo12dz5RvOYt2ah+Zt62nO3GRs0WzueoDJpssY391DVb3O7tp7UubrDZooPTtnuMH841AFd3fJzRnkn6pBJq5Sm2H6EkIX5OlCwqbtXTa9ABbt0a3Hp9+X1Pyyg+rO2iRQXb0b7japoAj/N7jn0Ju3Okp3NOYLrBT0nMb7D6NH6z2fD/OOWyXVOIZcjvXIqjzxSzO3K9bVyoZ7rQoudwldBvNiGmG5Y9hwW+pnfMEkmeNYDw4oP2DlDuQc351nRwhjXHkE4XIDcLb1k93s8PfonQ63HkWD2OHIHjnZbOU5DTy9iOytHCi7cH0h2411LOu2J8WuJyasIxhuq2luscTQh0/uID5YZTnkvOdcRw/118zr7/d4H99B8=</diagram></mxfile>"
style=
"background-color: rgb(255, 255, 255);"
><defs/><g><path
d=
"M 125 427 L 125 57"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><rect
x=
"65"
y=
"37"
width=
"120"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 47px; margin-left: 66px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
Rollup Driver
</div></div></div></foreignObject><text
x=
"125"
y=
"51"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
Rollup Driver
</text></switch></g><rect
x=
"270"
y=
"37"
width=
"120"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 47px; margin-left: 271px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
Engine API
</div></div></div></foreignObject><text
x=
"330"
y=
"51"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
Engine API
</text></switch></g><rect
x=
"115"
y=
"77"
width=
"20"
height=
"310"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 330 427 L 330 57"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><rect
x=
"320"
y=
"77"
width=
"20"
height=
"310"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><rect
x=
"450"
y=
"117"
width=
"150"
height=
"100"
fill=
"#d5e8d4"
stroke=
"#82b366"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 148px; height: 1px; padding-top: 124px; margin-left: 452px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: left;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
><b>
PayloadAttributes
</b><br
/><br
/>
- timestamp
<br
/>
- random
<br
/>
- suggestedFeeRecipient
<br
/>
- transactions
</div></div></div></foreignObject><text
x=
"452"
y=
"136"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
>
PayloadAttributes...
</text></switch></g><rect
x=
"450"
y=
"22"
width=
"120"
height=
"80"
fill=
"#dae8fc"
stroke=
"#6c8ebf"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 118px; height: 1px; padding-top: 29px; margin-left: 452px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: left;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
><b>
ForkChoiceState
</b><br
/><br
/>
- headBlockHash
<br
/>
- safeBlockHash
<br
/>
- finalizedBlockHash
</div></div></div></foreignObject><text
x=
"452"
y=
"41"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
>
ForkChoiceState...
</text></switch></g><rect
x=
"180"
y=
"117"
width=
"55"
height=
"20"
fill=
"#dae8fc"
stroke=
"#6c8ebf"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 53px; height: 1px; padding-top: 127px; margin-left: 181px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
FCS
</div></div></div></foreignObject><text
x=
"208"
y=
"131"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
FCS
</text></switch></g><rect
x=
"235"
y=
"117"
width=
"55"
height=
"20"
fill=
"#d5e8d4"
stroke=
"#82b366"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 53px; height: 1px; padding-top: 127px; margin-left: 236px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
PA
</div></div></div></foreignObject><text
x=
"263"
y=
"131"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
PA
</text></switch></g><path
d=
"M 331 184.5 L 237.5 184.5 L 150.17 184.56"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 144.92 184.56 L 151.92 181.05 L 150.17 184.56 L 151.92 188.05 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 185px; margin-left: 237px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
payloadID
</div></div></div></foreignObject><text
x=
"237"
y=
"188"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
payloadID
</text></switch></g><rect
x=
"330"
y=
"97"
width=
"20"
height=
"100"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 350 122 L 390 122 L 390 177 L 356.37 177"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 351.12 177 L 358.12 173.5 L 356.37 177 L 358.12 180.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 153px; margin-left: 390px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
Initiate block
<br
/>
production
</div></div></div></foreignObject><text
x=
"390"
y=
"156"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
Initiate block...
</text></switch></g><path
d=
"M 145 108.22 L 237.5 108.2 L 323.63 108.48"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 108.5 L 321.87 111.97 L 323.63 108.48 L 321.89 104.97 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_forkChoiceUpdatedV1
</div></div></div></foreignObject><text
x=
"238"
y=
"112"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_forkChoiceUpdatedV1
</text></switch></g><path
d=
"M 330 252 L 237.5 252 L 151.37 252.09"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 146.12 252.1 L 153.11 248.59 L 151.37 252.09 L 153.12 255.59 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 252px; margin-left: 237px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
payload
</div></div></div></foreignObject><text
x=
"237"
y=
"255"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
payload
</text></switch></g><rect
x=
"330"
y=
"207"
width=
"20"
height=
"60"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 145.4 220.64 L 237.5 220.6 L 237.5 222 L 323.63 222"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 222 L 321.88 225.5 L 323.63 222 L 321.88 218.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 221px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_getPayloadV1
<br
/>
(payloadID)
</div></div></div></foreignObject><text
x=
"238"
y=
"225"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_getPayloadV1...
</text></switch></g><rect
x=
"330"
y=
"277"
width=
"20"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 145.8 286.2 L 237.5 286.2 L 323.63 286.94"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 286.99 L 321.85 290.43 L 323.63 286.94 L 321.91 283.43 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 287px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_executePayloadV1
<br
/>
(payload)
</div></div></div></foreignObject><text
x=
"238"
y=
"290"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_executePayloadV1...
</text></switch></g><rect
x=
"125"
y=
"97"
width=
"20"
height=
"220"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 145 337 L 323.63 337"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 337 L 321.88 340.5 L 323.63 337 L 321.88 333.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 337px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_forkChoiceUpdatedV1
</div></div></div></foreignObject><text
x=
"238"
y=
"340"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_forkChoiceUpdatedV1
</text></switch></g><rect
x=
"125"
y=
"327"
width=
"20"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 350 337 L 440 337 L 440 7 L 33 7 L 33 37 L 32.55 100.63"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 32.51 105.88 L 29.06 98.86 L 32.55 100.63 L 36.06 98.91 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><rect
x=
"330"
y=
"327"
width=
"20"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><rect
x=
"180"
y=
"347"
width=
"100"
height=
"20"
fill=
"#dae8fc"
stroke=
"#6c8ebf"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 357px; margin-left: 181px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
FCS
</div></div></div></foreignObject><text
x=
"230"
y=
"361"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
FCS
</text></switch></g><path
d=
"M 65 127 L 173.63 127"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 178.88 127 L 171.88 130.5 L 173.63 127 L 171.88 123.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><rect
x=
"0"
y=
"107"
width=
"65"
height=
"40"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 63px; height: 1px; padding-top: 127px; margin-left: 1px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
Current L2
<br
/>
block hash
</div></div></div></foreignObject><text
x=
"33"
y=
"131"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
Current L2...
</text></switch></g><path
d=
"M 144 251.44 L 105 251.4 L 105 357 L 173.63 357"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 178.88 357 L 171.88 360.5 L 173.63 357 L 171.88 353.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 283px; margin-left: 70px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
payload.blockHash
</div></div></div></foreignObject><text
x=
"70"
y=
"287"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
payload.blockHash
</text></switch></g></g><switch><g
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
/><a
transform=
"translate(0,-5)"
xlink:href=
"https://www.diagrams.net/doc/faq/svg-export-text-problems"
target=
"_blank"
><text
text-anchor=
"middle"
font-size=
"10px"
x=
"50%"
y=
"100%"
>
Text is not SVG - cannot display
</text></a></switch></svg>
\ No newline at end of file
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
version=
"1.1"
width=
"601px"
height=
"429px"
viewBox=
"-0.5 -0.5 601 429"
content=
"<mxfile host="app.diagrams.net" modified="2022-04-04T03:32:26.727Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36" version="17.2.5" etag="mDLUNmfDK830O24fIwir" type="google"><diagram id="2atPNEeVetM65dO3bovw">3Vtbb+I4FP41SLsPrexcIDxS2u5UmpWqQXuZp5VJDPE2xMgxU5hfv07ihNgOJEAa6L6g+OTYTs75ztVhYE9X298YWoe/0wBHAwsE24H9OLCskTcUvylhlxMgtGFOWTISSNqeMCM/sSQCSd2QACcKI6c04mStEn0ax9jnCg0xRt9VtgWN1F3XaIkNwsxHkUn9iwQ8zKmeC/b0L5gsw2JnCOSdFSqYJSEJUUDfKyT7aWBPGaU8v1ptpzhKhVfIJZ/3fOBu+WAMx7zNBCuf8ANFG/lu8rn4rnhZHAeTVGZiFNNYEB9CvorECIpLRjdxgNPFgBiJTdnu73Rw7xbD75IzGzxuq5yPOzlKOGJc2yR/DhxomhCcSyxfzTbfFpYyFODDdIXFNoLlfa+lQklhRUEFjeEIcfJD3RFJsCzL5codXikRG1tAAntsu/kUiWvHBuoSCd0wH8tZVa1oC0HoAGUle6itlIvBWElcVN57T8q0Xo8A20DANxpFm7WgPTIhC2YAQtX5e0g4nq2Rn959F/auAkSujhnH24MYPaA1OcEbaWKVsqgoFVo1WrXAYQUqAjsiHceQzlO8JAKgFpi8vlxdNBB44GqycZt9R9/yGFsqVDxTHHXSsGEH4hh+Zlfq3JgrNTxgd750/GGudHR7BiFSK/Xt+7QIr0Yew0js8DAXF8v04hXtIoqCCeeMzDdcJHWSQ6xdMpWz2GHKXQpossIC/6t1/W2G4oCu6u8lm+VSzMXBM8bfsE/WJBVw/S5inQT5nNA4uUy/qWaJyConEVnGgsZpyoDkKMKLdMsFiaIpjSjLNrADF3uBkxk6o2+4csez5vZw2BFsrKEKmzKIVANLnf2Xqe4lwBk3A+eZsrdpSImPZxxxfAlsQoyCh4j6b19QEh6AB1rgBpYFiYXmfuLqUpeAQ9c7wt7Cr9P70PfwfNEWTh8BjiLoNiUdXgfQKPxSBRvP01nfou4iVRk3W5jrmkLsInOD0BDi66RbGfbjpoDjXk+IZu28zqPZy6MhyzT5mskhZTykSyrcxdOeqqV/e56vNDXjTMb/Ys53shuCNpyqGsBbwvOEEbhy+D0bpvVTPt7njOmgSBkrqebYqeaa4N4eew35ZjZ6xUyEXo5ZZXmdNqhPQvM0TpJkLVpNTE8AReuUs7WGzdr4BhI6LZ0tA25DRtdJYIZmPfwSE06yCAzmaeQzo+Oa0WCT5UvXNAuo2IR13CROAGt71QnDtF1ZI1xcHun5mR5bD1Q1ojJEuwrbOmVIjmxkAT1MudX1WkzwlA6kuMifQZu+q5UEXSwSfGlZBs1GBc6aOP8syiTyj3UgMBz8WSi6X4iWDlj1vhC653pfE/HAhUchf6bPrmsmnGAal3ZcXQ1sRVBu6BKcgyKzvyPD/VWDvaLjtoEeqjgbgbNw1sZJjm4sot9ki0aL6GWN0xDR9TOBswRi9mikb0yjR47v1CnqMf2XMtX99ZY8ptUI5MI33gNLMR13aB23nQ7d46g396gjq6jUP8A91vVsbs6yWnY/uygPLbNRIS0Lb7G/4biFdd2UbZ1gWo5afw57s6xxb5alt8D0U4X2xxNaCmPZmo12dz5RvOYt2ah+Zt62nO3GRs0WzueoDJpssY391DVb3O7tp7UubrDZooPTtnuMH841AFd3fJzRnkn6pBJq5Sm2H6EkIX5OlCwqbtXTa9ABbt0a3Hp9+X1Pyyg+rO2iRQXb0b7japoAj/N7jn0Ju3Okp3NOYLrBT0nMb7D6NH6z2fD/OOWyXVOIZcjvXIqjzxSzO3K9bVyoZ7rQoudwldBvNiGmG5Y9hwW+pnfMEkmeNYDw4oP2DlDuQc351nRwhjXHkE4XIDcLb1k93s8PfonQ63HkWD2OHIHjnZbOU5DTy9iOytHCi7cH0h2411LOu2J8WuJyasIxhuq2luscTQh0/uID5YZTnkvOdcRw/118zr7/d4H99B8=</diagram></mxfile>"
style=
"background-color: rgb(255, 255, 255);"
><defs/><g><path
d=
"M 125 427 L 125 57"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><rect
x=
"65"
y=
"37"
width=
"120"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 47px; margin-left: 66px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
Rollup Driver
</div></div></div></foreignObject><text
x=
"125"
y=
"51"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
Rollup Driver
</text></switch></g><rect
x=
"270"
y=
"37"
width=
"120"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 47px; margin-left: 271px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
Engine API
</div></div></div></foreignObject><text
x=
"330"
y=
"51"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
Engine API
</text></switch></g><rect
x=
"115"
y=
"77"
width=
"20"
height=
"310"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 330 427 L 330 57"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><rect
x=
"320"
y=
"77"
width=
"20"
height=
"310"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><rect
x=
"450"
y=
"117"
width=
"150"
height=
"100"
fill=
"#d5e8d4"
stroke=
"#82b366"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 148px; height: 1px; padding-top: 124px; margin-left: 452px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: left;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
><b>
PayloadAttributes
</b><br
/><br
/>
- timestamp
<br
/>
- random
<br
/>
- suggestedFeeRecipient
<br
/>
- transactions
</div></div></div></foreignObject><text
x=
"452"
y=
"136"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
>
PayloadAttributes...
</text></switch></g><rect
x=
"450"
y=
"22"
width=
"120"
height=
"80"
fill=
"#dae8fc"
stroke=
"#6c8ebf"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 118px; height: 1px; padding-top: 29px; margin-left: 452px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: left;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
><b>
ForkChoiceState
</b><br
/><br
/>
- headBlockHash
<br
/>
- safeBlockHash
<br
/>
- finalizedBlockHash
</div></div></div></foreignObject><text
x=
"452"
y=
"41"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
>
ForkChoiceState...
</text></switch></g><rect
x=
"180"
y=
"117"
width=
"55"
height=
"20"
fill=
"#dae8fc"
stroke=
"#6c8ebf"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 53px; height: 1px; padding-top: 127px; margin-left: 181px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
FCS
</div></div></div></foreignObject><text
x=
"208"
y=
"131"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
FCS
</text></switch></g><rect
x=
"235"
y=
"117"
width=
"55"
height=
"20"
fill=
"#d5e8d4"
stroke=
"#82b366"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 53px; height: 1px; padding-top: 127px; margin-left: 236px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
PA
</div></div></div></foreignObject><text
x=
"263"
y=
"131"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
PA
</text></switch></g><path
d=
"M 331 184.5 L 237.5 184.5 L 150.17 184.56"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 144.92 184.56 L 151.92 181.05 L 150.17 184.56 L 151.92 188.05 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 185px; margin-left: 237px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
payloadID
</div></div></div></foreignObject><text
x=
"237"
y=
"188"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
payloadID
</text></switch></g><rect
x=
"330"
y=
"97"
width=
"20"
height=
"100"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 350 122 L 390 122 L 390 177 L 356.37 177"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 351.12 177 L 358.12 173.5 L 356.37 177 L 358.12 180.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 153px; margin-left: 390px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
Initiate block
<br
/>
production
</div></div></div></foreignObject><text
x=
"390"
y=
"156"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
Initiate block...
</text></switch></g><path
d=
"M 145 108.22 L 237.5 108.2 L 323.63 108.48"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 108.5 L 321.87 111.97 L 323.63 108.48 L 321.89 104.97 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_forkChoiceUpdatedV1
</div></div></div></foreignObject><text
x=
"238"
y=
"112"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_forkChoiceUpdatedV1
</text></switch></g><path
d=
"M 330 252 L 237.5 252 L 151.37 252.09"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 146.12 252.1 L 153.11 248.59 L 151.37 252.09 L 153.12 255.59 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 252px; margin-left: 237px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
payload
</div></div></div></foreignObject><text
x=
"237"
y=
"255"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
payload
</text></switch></g><rect
x=
"330"
y=
"207"
width=
"20"
height=
"60"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 145.4 220.64 L 237.5 220.6 L 237.5 222 L 323.63 222"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 222 L 321.88 225.5 L 323.63 222 L 321.88 218.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 221px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_getPayloadV1
<br
/>
(payloadID)
</div></div></div></foreignObject><text
x=
"238"
y=
"225"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_getPayloadV1...
</text></switch></g><rect
x=
"330"
y=
"277"
width=
"20"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 145.8 286.2 L 237.5 286.2 L 323.63 286.94"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 286.99 L 321.85 290.43 L 323.63 286.94 L 321.91 283.43 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 287px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_newPayloadV1
<br
/>
(payload)
</div></div></div></foreignObject><text
x=
"238"
y=
"290"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_newPayloadV1...
</text></switch></g><rect
x=
"125"
y=
"97"
width=
"20"
height=
"220"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 145 337 L 323.63 337"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 328.88 337 L 321.88 340.5 L 323.63 337 L 321.88 333.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 337px; margin-left: 238px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
engine_forkChoiceUpdatedV1
</div></div></div></foreignObject><text
x=
"238"
y=
"340"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
engine_forkChoiceUpdatedV1
</text></switch></g><rect
x=
"125"
y=
"327"
width=
"20"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><path
d=
"M 350 337 L 440 337 L 440 7 L 33 7 L 33 37 L 32.55 100.63"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 32.51 105.88 L 29.06 98.86 L 32.55 100.63 L 36.06 98.91 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><rect
x=
"330"
y=
"327"
width=
"20"
height=
"20"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><rect
x=
"180"
y=
"347"
width=
"100"
height=
"20"
fill=
"#dae8fc"
stroke=
"#6c8ebf"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 357px; margin-left: 181px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
FCS
</div></div></div></foreignObject><text
x=
"230"
y=
"361"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
FCS
</text></switch></g><path
d=
"M 65 127 L 173.63 127"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 178.88 127 L 171.88 130.5 L 173.63 127 L 171.88 123.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><rect
x=
"0"
y=
"107"
width=
"65"
height=
"40"
fill=
"rgb(255, 255, 255)"
stroke=
"rgb(0, 0, 0)"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 63px; height: 1px; padding-top: 127px; margin-left: 1px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"
>
Current L2
<br
/>
block hash
</div></div></div></foreignObject><text
x=
"33"
y=
"131"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"12px"
text-anchor=
"middle"
>
Current L2...
</text></switch></g><path
d=
"M 144 251.44 L 105 251.4 L 105 357 L 173.63 357"
fill=
"none"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"stroke"
/><path
d=
"M 178.88 357 L 171.88 360.5 L 173.63 357 L 171.88 353.5 Z"
fill=
"rgb(0, 0, 0)"
stroke=
"rgb(0, 0, 0)"
stroke-miterlimit=
"10"
pointer-events=
"all"
/><g
transform=
"translate(-0.5 -0.5)"
><switch><foreignObject
pointer-events=
"none"
width=
"100%"
height=
"100%"
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
style=
"overflow: visible; text-align: left;"
><div
xmlns=
"http://www.w3.org/1999/xhtml"
style=
"display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 283px; margin-left: 70px;"
><div
data-drawio-colors=
"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "
style=
"box-sizing: border-box; font-size: 0px; text-align: center;"
><div
style=
"display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"
>
payload.blockHash
</div></div></div></foreignObject><text
x=
"70"
y=
"287"
fill=
"rgb(0, 0, 0)"
font-family=
"Helvetica"
font-size=
"11px"
text-anchor=
"middle"
>
payload.blockHash
</text></switch></g></g><switch><g
requiredFeatures=
"http://www.w3.org/TR/SVG11/feature#Extensibility"
/><a
transform=
"translate(0,-5)"
xlink:href=
"https://www.diagrams.net/doc/faq/svg-export-text-problems"
target=
"_blank"
><text
text-anchor=
"middle"
font-size=
"10px"
x=
"50%"
y=
"100%"
>
Text is not SVG - cannot display
</text></a></switch></svg>
\ No newline at end of file
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