Skip to content

Commit ed27b2a

Browse files
committed
apply all relayer changes to latest alpha branch
1 parent 7e99c51 commit ed27b2a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2686
-1513
lines changed

bridge/abi/bridge_abi.go

Lines changed: 68 additions & 57 deletions
Large diffs are not rendered by default.

bridge/abi/bridge_abi_test.go

Lines changed: 35 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,67 +12,51 @@ import (
1212

1313
func TestPackRelayMessageWithProof(t *testing.T) {
1414
assert := assert.New(t)
15-
16-
l1MessengerABI, err := bridge_abi.L1MessengerMetaData.GetAbi()
15+
l1MessengerABI, err := bridge_abi.L1ScrollMessengerMetaData.GetAbi()
1716
assert.NoError(err)
1817

1918
proof := bridge_abi.IL1ScrollMessengerL2MessageProof{
20-
BlockHeight: big.NewInt(0),
21-
BatchIndex: big.NewInt(0),
19+
BatchHash: common.Hash{},
2220
MerkleProof: make([]byte, 0),
2321
}
24-
_, err = l1MessengerABI.Pack("relayMessageWithProof", common.Address{}, common.Address{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), make([]byte, 0), proof)
22+
_, err = l1MessengerABI.Pack("relayMessageWithProof", common.Address{}, common.Address{}, big.NewInt(0), big.NewInt(0), make([]byte, 0), proof)
2523
assert.NoError(err)
2624
}
2725

2826
func TestPackCommitBatch(t *testing.T) {
2927
assert := assert.New(t)
3028

31-
l1RollupABI, err := bridge_abi.RollupMetaData.GetAbi()
29+
scrollchainABI, err := bridge_abi.ScrollchainMetaData.GetAbi()
3230
assert.NoError(err)
3331

34-
txns := make([]bridge_abi.IZKRollupLayer2Transaction, 5)
35-
for i := 0; i < 5; i++ {
36-
txns[i] = bridge_abi.IZKRollupLayer2Transaction{
37-
Caller: common.Address{},
38-
Target: common.Address{},
39-
Nonce: 0,
40-
Gas: 0,
41-
GasPrice: big.NewInt(0),
42-
Value: big.NewInt(0),
43-
Data: make([]byte, 0),
44-
R: big.NewInt(0),
45-
S: big.NewInt(0),
46-
V: 0,
47-
}
48-
}
49-
50-
header := bridge_abi.IZKRollupLayer2BlockHeader{
51-
BlockHash: common.Hash{},
52-
ParentHash: common.Hash{},
53-
BaseFee: big.NewInt(0),
54-
StateRoot: common.Hash{},
55-
BlockHeight: 0,
56-
GasUsed: 0,
57-
Timestamp: 0,
58-
ExtraData: make([]byte, 0),
59-
Txs: txns,
32+
header := bridge_abi.IScrollChainBlockContext{
33+
BlockHash: common.Hash{},
34+
ParentHash: common.Hash{},
35+
BlockNumber: 0,
36+
Timestamp: 0,
37+
BaseFee: big.NewInt(0),
38+
GasLimit: 0,
39+
NumTransactions: 0,
40+
NumL1Messages: 0,
6041
}
6142

62-
batch := bridge_abi.IZKRollupLayer2Batch{
63-
BatchIndex: 0,
64-
ParentHash: common.Hash{},
65-
Blocks: []bridge_abi.IZKRollupLayer2BlockHeader{header},
43+
batch := bridge_abi.IScrollChainBatch{
44+
Blocks: []bridge_abi.IScrollChainBlockContext{header},
45+
PrevStateRoot: common.Hash{},
46+
NewStateRoot: common.Hash{},
47+
WithdrawTrieRoot: common.Hash{},
48+
BatchIndex: 0,
49+
L2Transactions: make([]byte, 0),
6650
}
6751

68-
_, err = l1RollupABI.Pack("commitBatch", batch)
52+
_, err = scrollchainABI.Pack("commitBatch", batch)
6953
assert.NoError(err)
7054
}
7155

7256
func TestPackFinalizeBatchWithProof(t *testing.T) {
7357
assert := assert.New(t)
7458

75-
l1RollupABI, err := bridge_abi.RollupMetaData.GetAbi()
59+
l1RollupABI, err := bridge_abi.ScrollchainMetaData.GetAbi()
7660
assert.NoError(err)
7761

7862
proof := make([]*big.Int, 10)
@@ -89,9 +73,20 @@ func TestPackFinalizeBatchWithProof(t *testing.T) {
8973
func TestPackRelayMessage(t *testing.T) {
9074
assert := assert.New(t)
9175

92-
l2MessengerABI, err := bridge_abi.L2MessengerMetaData.GetAbi()
76+
l2MessengerABI, err := bridge_abi.L2ScrollMessengerMetaData.GetAbi()
77+
assert.NoError(err)
78+
79+
_, err = l2MessengerABI.Pack("relayMessage", common.Address{}, common.Address{}, big.NewInt(0), big.NewInt(0), make([]byte, 0))
80+
assert.NoError(err)
81+
}
82+
83+
func TestPackSetL1BaseFee(t *testing.T) {
84+
assert := assert.New(t)
85+
86+
l1GasOracleABI, err := bridge_abi.L1GasPriceOracleMetaData.GetAbi()
9387
assert.NoError(err)
9488

95-
_, err = l2MessengerABI.Pack("relayMessage", common.Address{}, common.Address{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), make([]byte, 0))
89+
baseFee := big.NewInt(2333)
90+
_, err = l1GasOracleABI.Pack("setL1BaseFee", baseFee)
9691
assert.NoError(err)
9792
}

bridge/config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"start_height": 0,
88
"relayer_config": {
99
"messenger_contract_address": "0x0000000000000000000000000000000000000000",
10+
"gas_price_oracle_address": "0x0000000000000000000000000000000000000000",
1011
"sender_config": {
1112
"endpoint": "/var/lib/jenkins/workspace/SequencerPipeline/MyPrivateNetwork/geth.ipc",
1213
"check_pending_time": 3,
@@ -20,6 +21,9 @@
2021
},
2122
"message_sender_private_keys": [
2223
"1212121212121212121212121212121212121212121212121212121212121212"
24+
],
25+
"gas_oracle_sender_private_keys": [
26+
"1212121212121212121212121212121212121212121212121212121212121212"
2327
]
2428
}
2529
},
@@ -30,6 +34,7 @@
3034
"relayer_config": {
3135
"rollup_contract_address": "0x0000000000000000000000000000000000000000",
3236
"messenger_contract_address": "0x0000000000000000000000000000000000000000",
37+
"gas_price_oracle_address": "0x0000000000000000000000000000000000000000",
3338
"sender_config": {
3439
"endpoint": "https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161",
3540
"check_pending_time": 10,
@@ -44,6 +49,9 @@
4449
"message_sender_private_keys": [
4550
"1212121212121212121212121212121212121212121212121212121212121212"
4651
],
52+
"gas_oracle_sender_private_keys": [
53+
"1212121212121212121212121212121212121212121212121212121212121212"
54+
],
4755
"rollup_sender_private_keys": [
4856
"1212121212121212121212121212121212121212121212121212121212121212"
4957
]

bridge/config/config_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ func TestConfig(t *testing.T) {
1818

1919
assert.True(t, len(cfg.L2Config.BatchProposerConfig.SkippedOpcodes) > 0)
2020

21-
assert.True(t, len(cfg.L1Config.RelayerConfig.MessageSenderPrivateKeys) > 0)
22-
assert.True(t, len(cfg.L2Config.RelayerConfig.MessageSenderPrivateKeys) > 0)
23-
assert.True(t, len(cfg.L2Config.RelayerConfig.RollupSenderPrivateKeys) > 0)
21+
assert.Equal(t, 1, len(cfg.L1Config.RelayerConfig.MessageSenderPrivateKeys))
22+
assert.Equal(t, 1, len(cfg.L2Config.RelayerConfig.MessageSenderPrivateKeys))
23+
assert.Equal(t, 1, len(cfg.L2Config.RelayerConfig.RollupSenderPrivateKeys))
2424

2525
data, err := json.Marshal(cfg)
2626
assert.NoError(t, err)

bridge/config/l2_config.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type L2Config struct {
1515
// l2geth node url.
1616
Endpoint string `json:"endpoint"`
1717
// The messenger contract address deployed on layer 2 chain.
18-
L2MessengerAddress common.Address `json:"l2_messenger_address,omitempty"`
18+
L2MessengerAddress common.Address `json:"l2_messenger_address"`
1919
// The relayer config
2020
RelayerConfig *RelayerConfig `json:"relayer_config"`
2121
// The batch_proposer config
@@ -34,6 +34,8 @@ type BatchProposerConfig struct {
3434
BatchTimeSec uint64 `json:"batch_time_sec"`
3535
// Max number of blocks in a batch
3636
BatchBlocksLimit uint64 `json:"batch_blocks_limit"`
37+
// Commit tx calldata size limit, target to cap the gas use of commit tx at 2M gas
38+
CommitTxCalldataSizeLimit uint64 `json:"commit_tx_calldata_size_limit"`
3739
// Skip generating proof when that opcodes appeared
3840
SkippedOpcodes map[string]struct{} `json:"-"`
3941
}

bridge/config/relayer_config.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,14 @@ type RelayerConfig struct {
4141
RollupContractAddress common.Address `json:"rollup_contract_address,omitempty"`
4242
// MessengerContractAddress store the scroll messenger contract address.
4343
MessengerContractAddress common.Address `json:"messenger_contract_address"`
44+
// GasPriceOracleContractAddress store the scroll messenger contract address.
45+
GasPriceOracleContractAddress common.Address `json:"gas_proce_oracle_contract_address"`
4446
// sender config
4547
SenderConfig *SenderConfig `json:"sender_config"`
4648
// The private key of the relayer
47-
MessageSenderPrivateKeys []*ecdsa.PrivateKey `json:"-"`
48-
RollupSenderPrivateKeys []*ecdsa.PrivateKey `json:"-"`
49+
MessageSenderPrivateKeys []*ecdsa.PrivateKey `json:"-"`
50+
GasOracleSenderPrivateKeys []*ecdsa.PrivateKey `json:"-"`
51+
RollupSenderPrivateKeys []*ecdsa.PrivateKey `json:"-"`
4952
}
5053

5154
// relayerConfigAlias RelayerConfig alias name
@@ -56,15 +59,17 @@ func (r *RelayerConfig) UnmarshalJSON(input []byte) error {
5659
var jsonConfig struct {
5760
relayerConfigAlias
5861
// The private key of the relayer
59-
MessageSenderPrivateKeys []string `json:"message_sender_private_keys"`
60-
RollupSenderPrivateKeys []string `json:"rollup_sender_private_keys,omitempty"`
62+
MessageSenderPrivateKeys []string `json:"message_sender_private_keys"`
63+
GasOracleSenderPrivateKeys []string `json:"gas_oracle_sender_private_keys"`
64+
RollupSenderPrivateKeys []string `json:"rollup_sender_private_keys,omitempty"`
6165
}
6266
if err := json.Unmarshal(input, &jsonConfig); err != nil {
6367
return err
6468
}
6569

66-
// Get messenger private key list.
6770
*r = RelayerConfig(jsonConfig.relayerConfigAlias)
71+
72+
// Get messenger private key list.
6873
for _, privStr := range jsonConfig.MessageSenderPrivateKeys {
6974
priv, err := crypto.ToECDSA(common.FromHex(privStr))
7075
if err != nil {
@@ -73,6 +78,15 @@ func (r *RelayerConfig) UnmarshalJSON(input []byte) error {
7378
r.MessageSenderPrivateKeys = append(r.MessageSenderPrivateKeys, priv)
7479
}
7580

81+
// Get gas oracle private key list.
82+
for _, privStr := range jsonConfig.GasOracleSenderPrivateKeys {
83+
priv, err := crypto.ToECDSA(common.FromHex(privStr))
84+
if err != nil {
85+
return fmt.Errorf("incorrect private_key_list format, err: %v", err)
86+
}
87+
r.GasOracleSenderPrivateKeys = append(r.GasOracleSenderPrivateKeys, priv)
88+
}
89+
7690
// Get rollup private key
7791
for _, privStr := range jsonConfig.RollupSenderPrivateKeys {
7892
priv, err := crypto.ToECDSA(common.FromHex(privStr))
@@ -90,15 +104,21 @@ func (r *RelayerConfig) MarshalJSON() ([]byte, error) {
90104
jsonConfig := struct {
91105
relayerConfigAlias
92106
// The private key of the relayer
93-
MessageSenderPrivateKeys []string `json:"message_sender_private_keys"`
94-
RollupSenderPrivateKeys []string `json:"rollup_sender_private_keys,omitempty"`
95-
}{relayerConfigAlias(*r), nil, nil}
107+
MessageSenderPrivateKeys []string `json:"message_sender_private_keys"`
108+
GasOracleSenderPrivateKeys []string `json:"gas_oracle_sender_private_keys,omitempty"`
109+
RollupSenderPrivateKeys []string `json:"rollup_sender_private_keys,omitempty"`
110+
}{relayerConfigAlias(*r), nil, nil, nil}
96111

97112
// Transfer message sender private keys to hex type.
98113
for _, priv := range r.MessageSenderPrivateKeys {
99114
jsonConfig.MessageSenderPrivateKeys = append(jsonConfig.MessageSenderPrivateKeys, common.Bytes2Hex(crypto.FromECDSA(priv)))
100115
}
101116

117+
// Transfer rollup sender private keys to hex type.
118+
for _, priv := range r.GasOracleSenderPrivateKeys {
119+
jsonConfig.GasOracleSenderPrivateKeys = append(jsonConfig.GasOracleSenderPrivateKeys, common.Bytes2Hex(crypto.FromECDSA(priv)))
120+
}
121+
102122
// Transfer rollup sender private keys to hex type.
103123
for _, priv := range r.RollupSenderPrivateKeys {
104124
jsonConfig.RollupSenderPrivateKeys = append(jsonConfig.RollupSenderPrivateKeys, common.Bytes2Hex(crypto.FromECDSA(priv)))

bridge/go.mod

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,30 @@ go 1.18
55
require (
66
github.com/iden3/go-iden3-crypto v0.0.13
77
github.com/orcaman/concurrent-map v1.0.0
8-
github.com/scroll-tech/go-ethereum v1.10.14-0.20230210093343-bb26fa3e391d
8+
github.com/scroll-tech/go-ethereum v1.10.14-0.20230216021847-8a78c736a5e1
99
github.com/stretchr/testify v1.8.0
10-
github.com/urfave/cli/v2 v2.10.2
10+
github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa
1111
golang.org/x/sync v0.1.0
1212
modernc.org/mathutil v1.4.1
1313
)
1414

1515
require (
1616
github.com/btcsuite/btcd v0.20.1-beta // indirect
17-
github.com/cespare/xxhash/v2 v2.1.2 // indirect
1817
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
1918
github.com/davecgh/go-spew v1.1.1 // indirect
2019
github.com/deckarep/golang-set v1.8.0 // indirect
21-
github.com/ethereum/go-ethereum v1.10.26 // indirect
20+
github.com/ethereum/go-ethereum v1.11.1 // indirect
2221
github.com/go-ole/go-ole v1.2.6 // indirect
23-
github.com/go-stack/stack v1.8.0 // indirect
22+
github.com/go-stack/stack v1.8.1 // indirect
2423
github.com/google/uuid v1.3.0 // indirect
2524
github.com/gorilla/websocket v1.5.0 // indirect
2625
github.com/holiman/uint256 v1.2.0 // indirect
27-
github.com/kr/pretty v0.3.0 // indirect
28-
github.com/mattn/go-isatty v0.0.14 // indirect
2926
github.com/mitchellh/mapstructure v1.5.0 // indirect
3027
github.com/pmezard/go-difflib v1.0.0 // indirect
3128
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
3229
github.com/rjeczalik/notify v0.9.1 // indirect
33-
github.com/rogpeppe/go-internal v1.8.1 // indirect
3430
github.com/russross/blackfriday/v2 v2.1.0 // indirect
35-
github.com/scroll-tech/zktrie v0.4.3 // indirect
31+
github.com/scroll-tech/zktrie v0.5.0 // indirect
3632
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
3733
github.com/tklauser/go-sysconf v0.3.10 // indirect
3834
github.com/tklauser/numcpus v0.4.0 // indirect

0 commit comments

Comments
 (0)