@@ -251,7 +251,7 @@ func Trace(config TraceConfig) ([]*ExecutionResult, error) {
251
251
tracer := logger .NewStructLogger (config .LoggerConfig )
252
252
evm := vm .NewEVM (blockCtx , vm.TxContext {GasPrice : big .NewInt (0 )}, stateDB , & chainConfig , vm.Config {Tracer : tracer .Hooks (), NoBaseFee : true })
253
253
254
- tx = * types .NewTransaction ( message . Nonce , * message . To , message . Value , message . GasLimit , message . GasPrice , message . Data )
254
+ tx = * types .NewTx ( ToTxData ( message , chainConfig . ChainID ) )
255
255
stateDB .SetTxContext (tx .Hash (), i )
256
256
257
257
_ , err = core .ApplyTransactionWithEVM (& message , & chainConfig , new (core.GasPool ).AddGas (message .GasLimit ), stateDB , blockCtx .BlockNumber , common.Hash {}, & tx , & usedGas , evm )
@@ -271,3 +271,74 @@ func Trace(config TraceConfig) ([]*ExecutionResult, error) {
271
271
272
272
return executionResults , nil
273
273
}
274
+
275
+ func ToTxData (message core.Message , ChainID * big.Int ) types.TxData {
276
+ var data types.TxData
277
+ switch {
278
+ case message .BlobHashes != nil :
279
+ al := types.AccessList {}
280
+ if message .AccessList != nil {
281
+ al = message .AccessList
282
+ }
283
+ data = & types.BlobTx {
284
+ To : * message .To ,
285
+ ChainID : uint256 .MustFromBig ((* big .Int )(ChainID )),
286
+ Nonce : message .Nonce ,
287
+ Gas : message .GasLimit ,
288
+ GasFeeCap : uint256 .MustFromBig ((* big .Int )(message .GasFeeCap )),
289
+ GasTipCap : uint256 .MustFromBig ((* big .Int )(message .GasTipCap )),
290
+ Value : uint256 .MustFromBig ((* big .Int )(message .Value )),
291
+ Data : message .Data ,
292
+ AccessList : al ,
293
+ BlobHashes : message .BlobHashes ,
294
+ BlobFeeCap : uint256 .MustFromBig ((* big .Int )(message .BlobGasFeeCap )),
295
+ }
296
+ // if message.Blobs != nil {
297
+ // data.(*types.BlobTx).Sidecar = &types.BlobTxSidecar{
298
+ // Blobs: message.Blobs,
299
+ // Commitments: message.Commitments,
300
+ // Proofs: message.Proofs,
301
+ // }
302
+ // }
303
+
304
+ case message .GasFeeCap != nil :
305
+ al := types.AccessList {}
306
+ if message .AccessList != nil {
307
+ al = message .AccessList
308
+ }
309
+ data = & types.DynamicFeeTx {
310
+ To : message .To ,
311
+ ChainID : (* big .Int )(ChainID ),
312
+ Nonce : message .Nonce ,
313
+ Gas : message .GasLimit ,
314
+ GasFeeCap : message .GasFeeCap ,
315
+ GasTipCap : message .GasTipCap ,
316
+ Value : message .Value ,
317
+ Data : message .Data ,
318
+ AccessList : al ,
319
+ }
320
+
321
+ case message .AccessList != nil :
322
+ data = & types.AccessListTx {
323
+ To : message .To ,
324
+ ChainID : ChainID ,
325
+ Nonce : message .Nonce ,
326
+ Gas : message .GasLimit ,
327
+ GasPrice : message .GasPrice ,
328
+ Value : message .Value ,
329
+ Data : message .Data ,
330
+ AccessList : message .AccessList ,
331
+ }
332
+
333
+ default :
334
+ data = & types.LegacyTx {
335
+ To : message .To ,
336
+ Nonce : message .Nonce ,
337
+ Gas : message .GasLimit ,
338
+ GasPrice : message .GasPrice ,
339
+ Value : message .Value ,
340
+ Data : message .Data ,
341
+ }
342
+ }
343
+ return data
344
+ }
0 commit comments