mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-30 08:33:45 +00:00
71 lines
2.7 KiB
Go
71 lines
2.7 KiB
Go
package miner
|
|
|
|
import (
|
|
"math/big"
|
|
"testing"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/consensus/clique"
|
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
|
"github.com/ethereum/go-ethereum/core/txpool"
|
|
"github.com/ethereum/go-ethereum/core/types"
|
|
"github.com/ethereum/go-ethereum/params"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const (
|
|
// testCode is the testing contract binary code which will initialises some
|
|
// variables in constructor
|
|
testCode = "0x60806040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060005534801561003457600080fd5b5060fc806100436000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80630c4dae8814603757806398a213cf146053575b600080fd5b603d607e565b6040518082815260200191505060405180910390f35b607c60048036036020811015606757600080fd5b81019080803590602001909291905050506084565b005b60005481565b806000819055507fe9e44f9f7da8c559de847a3232b57364adc0354f15a2cd8dc636d54396f9587a6000546040518082815260200191505060405180910390a15056fea265627a7a723058208ae31d9424f2d0bc2a3da1a5dd659db2d71ec322a17db8f87e19e209e3a1ff4a64736f6c634300050a0032"
|
|
|
|
// testGas is the gas required for contract deployment.
|
|
testGas = 144109
|
|
)
|
|
|
|
func newRandomTx(txPool *txpool.TxPool, creation bool) *types.Transaction {
|
|
var tx *types.Transaction
|
|
gasPrice := big.NewInt(10 * params.InitialBaseFee)
|
|
if creation {
|
|
tx, _ = types.SignTx(types.NewContractCreation(txPool.Nonce(testBankAddress), big.NewInt(0), testGas, gasPrice, common.FromHex(testCode)), types.HomesteadSigner{}, testBankKey)
|
|
} else {
|
|
tx, _ = types.SignTx(types.NewTransaction(txPool.Nonce(testBankAddress), testUserAddress, big.NewInt(1000), params.TxGas, gasPrice, nil), types.HomesteadSigner{}, testBankKey)
|
|
}
|
|
return tx
|
|
}
|
|
|
|
func testGenerateWorker(t *testing.T, txCount int) *Miner {
|
|
t.Parallel()
|
|
var (
|
|
db = rawdb.NewMemoryDatabase()
|
|
config = *params.AllCliqueProtocolChanges
|
|
)
|
|
config.Taiko = true
|
|
config.Clique = ¶ms.CliqueConfig{Period: 1, Epoch: 30000}
|
|
engine := clique.New(config.Clique, db)
|
|
|
|
w, b := newTestWorker(t, &config, engine, db, 0)
|
|
|
|
for i := 0; i < txCount; i++ {
|
|
b.txPool.Add([]*types.Transaction{newRandomTx(b.txPool, true)}, true, false)
|
|
b.txPool.Add([]*types.Transaction{newRandomTx(b.txPool, false)}, true, false)
|
|
}
|
|
|
|
return w
|
|
}
|
|
|
|
func TestBuildTransactionsLists(t *testing.T) {
|
|
w := testGenerateWorker(t, 2000)
|
|
|
|
maxBytesPerTxList := (params.BlobTxBytesPerFieldElement - 1) * params.BlobTxFieldElementsPerBlob
|
|
txList, err := w.BuildTransactionsLists(
|
|
testBankAddress,
|
|
nil,
|
|
240_000_000,
|
|
uint64(maxBytesPerTxList)/10,
|
|
nil,
|
|
1,
|
|
)
|
|
assert.NoError(t, err)
|
|
assert.LessOrEqual(t, 1, len(txList))
|
|
assert.LessOrEqual(t, txList[0].BytesLength, uint64(maxBytesPerTxList))
|
|
}
|