feat(miner): use []*ethapi.RPCTransaction in RPC response body (#391)

This commit is contained in:
David 2025-02-24 16:41:06 +08:00 committed by GitHub
parent 36430eb4f5
commit afd09afd03
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 2 deletions

View file

@ -6,12 +6,13 @@ import (
"github.com/ethereum/go-ethereum/beacon/engine"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/internal/ethapi"
)
// PreBuiltTxList is a pre-built transaction list based on the latest chain state,
// with estimated gas used / bytes.
type PreBuiltTxList struct {
TxList types.Transactions
TxList []*ethapi.RPCTransaction
EstimatedGasUsed uint64
BytesLength uint64
}

View file

@ -15,6 +15,7 @@ import (
"github.com/ethereum/go-ethereum/core/txpool"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/internal/ethapi"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rlp"
@ -93,7 +94,7 @@ func (w *Miner) buildTransactionsLists(
}
return lastTransaction, &PreBuiltTxList{
TxList: env.txs,
TxList: w.toRPCTransactions(env.txs),
EstimatedGasUsed: env.header.GasLimit - env.gasPool.Gas(),
BytesLength: uint64(len(b)),
}, nil
@ -338,6 +339,15 @@ loop:
return lastTransaction
}
// toRPCTransactions converts the given transactions to RPC transactions.
func (w *Miner) toRPCTransactions(txs types.Transactions) []*ethapi.RPCTransaction {
var rpcTxs []*ethapi.RPCTransaction
for _, tx := range txs {
rpcTxs = append(rpcTxs, ethapi.NewRPCPendingTransaction(tx, nil, w.chainConfig))
}
return rpcTxs
}
// encodeAndCompressTxList encodes and compresses the given transactions list.
func encodeAndCompressTxList(txs types.Transactions) ([]byte, error) {
b, err := rlp.EncodeToBytes(txs)