@@ -39,7 +39,7 @@ func init() {
3939 config .ArrowGlacierBlock = nil
4040 config .Ethash = nil
4141 config .Taiko = true
42- testEngine = taiko .New (config )
42+ testEngine = taiko .New (config , rawdb . NewMemoryDatabase () )
4343
4444 taikoL2AddressPrefix := strings .TrimPrefix (config .ChainID .String (), "0" )
4545
@@ -93,70 +93,73 @@ func init() {
9393 }
9494}
9595
96- func newTestBackend (t * testing.T ) (* eth.Ethereum , []* types.Block ) {
97- // Generate test chain.
98- blocks := generateTestChain ()
96+ func generateTestChain (t * testing.T ) ([]* types.Block , * eth.Ethereum ) {
97+ generate := func (i int , g * core.BlockGen ) {
98+ g .OffsetTime (5 )
99+
100+ g .SetExtra ([]byte ("test_taiko" ))
101+ g .SetDifficulty (common .Big0 )
102+
103+ for i , tx := range txs {
104+ if i == 0 {
105+ if err := tx .MarkAsAnchor (); err != nil {
106+ panic (err )
107+ }
108+ }
109+ g .AddTx (tx )
110+ }
111+ }
99112
100113 // Create node
101- n , err := node .New (& node.Config {})
114+ n , err := node .New (& node.Config {
115+ DataDir : t .TempDir (),
116+ })
102117 if err != nil {
103118 t .Fatalf ("can't create new node: %v" , err )
104119 }
105120
106121 // Create Ethereum Service
107- config := & ethconfig.Config {
122+ ethService , err := eth . New ( n , & ethconfig.Config {
108123 Genesis : genesis ,
109- }
110-
111- ethservice , err := eth .New (n , config )
124+ })
112125 if err != nil {
113126 t .Fatalf ("can't create new ethereum service: %v" , err )
114127 }
115128
129+ db := ethService .ChainDb ()
130+
131+ gblock := genesis .MustCommit (db , triedb .NewDatabase (db , triedb .HashDefaults ))
132+ blocks , _ := core .GenerateChain (genesis .Config , gblock , testEngine , db , 1 , generate )
133+ blocks = append ([]* types.Block {gblock }, blocks ... )
134+
135+ // Insert L1Origins.
136+ for _ , block := range blocks {
137+ rawdb .WriteL1Origin (db , block .Number (), & rawdb.L1Origin {
138+ BlockID : block .Number (),
139+ L1BlockHeight : block .Number (),
140+ L1BlockHash : block .Hash (),
141+ })
142+ }
143+
116144 // Import the test chain.
117145 if err := n .Start (); err != nil {
118146 t .Fatalf ("can't start test node: %v" , err )
119147 }
120148
121- if _ , err := ethservice .BlockChain ().InsertChain (blocks [1 :]); err != nil {
149+ if _ , err := ethService .BlockChain ().InsertChain (blocks [1 :]); err != nil {
122150 t .Fatalf ("can't import test blocks: %v" , err )
123151 }
124152
125- if _ , ok := ethservice .Engine ().(* taiko.Taiko ); ! ok {
153+ if _ , ok := ethService .Engine ().(* taiko.Taiko ); ! ok {
126154 t .Fatalf ("not use taiko engine" )
127155 }
128156
129- return ethservice , blocks
130- }
131-
132- func generateTestChain () []* types.Block {
133- db := rawdb .NewMemoryDatabase ()
134- generate := func (i int , g * core.BlockGen ) {
135- g .OffsetTime (5 )
136-
137- g .SetExtra ([]byte ("test_taiko" ))
138- g .SetDifficulty (common .Big0 )
139-
140- for i , tx := range txs {
141- if i == 0 {
142- if err := tx .MarkAsAnchor (); err != nil {
143- panic (err )
144- }
145- }
146- g .AddTx (tx )
147- }
148- }
149-
150- gblock := genesis .MustCommit (db , triedb .NewDatabase (db , triedb .HashDefaults ))
151-
152- blocks , _ := core .GenerateChain (genesis .Config , gblock , testEngine , db , 1 , generate )
153-
154- blocks = append ([]* types.Block {gblock }, blocks ... )
155- return blocks
157+ return blocks , ethService
156158}
157159
158160func TestVerifyHeader (t * testing.T ) {
159- ethService , blocks := newTestBackend (t )
161+ // Generate test chain.
162+ blocks , ethService := generateTestChain (t )
160163
161164 for _ , b := range blocks {
162165 err := testEngine .VerifyHeader (ethService .BlockChain (), b .Header ())
0 commit comments