mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 13:46:43 +00:00
ethclient/simulated: change test to explicitly specify nonces
This commit is contained in:
parent
8bdbf7f3eb
commit
74caa26c1c
2 changed files with 16 additions and 25 deletions
|
|
@ -52,7 +52,7 @@ func simTestBackend(testAddr common.Address) *Backend {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBlobTx(sim *Backend, key *ecdsa.PrivateKey) (*types.Transaction, error) {
|
func newBlobTx(sim *Backend, key *ecdsa.PrivateKey, nonce uint64) (*types.Transaction, error) {
|
||||||
client := sim.Client()
|
client := sim.Client()
|
||||||
|
|
||||||
testBlob := &kzg4844.Blob{0x00}
|
testBlob := &kzg4844.Blob{0x00}
|
||||||
|
|
@ -67,12 +67,8 @@ func newBlobTx(sim *Backend, key *ecdsa.PrivateKey) (*types.Transaction, error)
|
||||||
|
|
||||||
addr := crypto.PubkeyToAddress(key.PublicKey)
|
addr := crypto.PubkeyToAddress(key.PublicKey)
|
||||||
chainid, _ := client.ChainID(context.Background())
|
chainid, _ := client.ChainID(context.Background())
|
||||||
nonce, err := client.PendingNonceAt(context.Background(), addr)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
chainidU256, _ := uint256.FromBig(chainid)
|
chainidU256, _ := uint256.FromBig(chainid)
|
||||||
|
|
||||||
tx := types.NewTx(&types.BlobTx{
|
tx := types.NewTx(&types.BlobTx{
|
||||||
ChainID: chainidU256,
|
ChainID: chainidU256,
|
||||||
GasTipCap: gasTipCapU256,
|
GasTipCap: gasTipCapU256,
|
||||||
|
|
@ -88,7 +84,7 @@ func newBlobTx(sim *Backend, key *ecdsa.PrivateKey) (*types.Transaction, error)
|
||||||
return types.SignTx(tx, types.LatestSignerForChainID(chainid), key)
|
return types.SignTx(tx, types.LatestSignerForChainID(chainid), key)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTx(sim *Backend, key *ecdsa.PrivateKey) (*types.Transaction, error) {
|
func newTx(sim *Backend, key *ecdsa.PrivateKey, nonce uint64) (*types.Transaction, error) {
|
||||||
client := sim.Client()
|
client := sim.Client()
|
||||||
|
|
||||||
// create a signed transaction to send
|
// create a signed transaction to send
|
||||||
|
|
@ -96,10 +92,7 @@ func newTx(sim *Backend, key *ecdsa.PrivateKey) (*types.Transaction, error) {
|
||||||
gasPrice := new(big.Int).Add(head.BaseFee, big.NewInt(params.GWei))
|
gasPrice := new(big.Int).Add(head.BaseFee, big.NewInt(params.GWei))
|
||||||
addr := crypto.PubkeyToAddress(key.PublicKey)
|
addr := crypto.PubkeyToAddress(key.PublicKey)
|
||||||
chainid, _ := client.ChainID(context.Background())
|
chainid, _ := client.ChainID(context.Background())
|
||||||
nonce, err := client.PendingNonceAt(context.Background(), addr)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
tx := types.NewTx(&types.DynamicFeeTx{
|
tx := types.NewTx(&types.DynamicFeeTx{
|
||||||
ChainID: chainid,
|
ChainID: chainid,
|
||||||
Nonce: nonce,
|
Nonce: nonce,
|
||||||
|
|
@ -161,7 +154,7 @@ func TestSendTransaction(t *testing.T) {
|
||||||
client := sim.Client()
|
client := sim.Client()
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
signedTx, err := newTx(sim, testKey)
|
signedTx, err := newTx(sim, testKey, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("could not create transaction: %v", err)
|
t.Errorf("could not create transaction: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -252,7 +245,7 @@ func TestForkResendTx(t *testing.T) {
|
||||||
parent, _ := client.HeaderByNumber(ctx, nil)
|
parent, _ := client.HeaderByNumber(ctx, nil)
|
||||||
|
|
||||||
// 2.
|
// 2.
|
||||||
tx, err := newTx(sim, testKey)
|
tx, err := newTx(sim, testKey, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("could not create transaction: %v", err)
|
t.Fatalf("could not create transaction: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -297,7 +290,7 @@ func TestCommitReturnValue(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a block in the original chain (containing a transaction to force different block hashes)
|
// Create a block in the original chain (containing a transaction to force different block hashes)
|
||||||
tx, _ := newTx(sim, testKey)
|
tx, _ := newTx(sim, testKey, 0)
|
||||||
if err := client.SendTransaction(ctx, tx); err != nil {
|
if err := client.SendTransaction(ctx, tx); err != nil {
|
||||||
t.Errorf("sending transaction: %v", err)
|
t.Errorf("sending transaction: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,10 +38,9 @@ func TestTransactionRollbackBehavior(t *testing.T) {
|
||||||
defer sim.Close()
|
defer sim.Close()
|
||||||
client := sim.Client()
|
client := sim.Client()
|
||||||
|
|
||||||
btx0 := testSendSignedTx(t, testKey, sim, true)
|
btx0 := testSendSignedTx(t, testKey, sim, true, 0)
|
||||||
tx0 := testSendSignedTx(t, testKey2, sim, false)
|
tx0 := testSendSignedTx(t, testKey2, sim, false, 0)
|
||||||
time.Sleep(200 * time.Millisecond) // Wait to avoid nonce race condition
|
tx1 := testSendSignedTx(t, testKey2, sim, false, 1)
|
||||||
tx1 := testSendSignedTx(t, testKey2, sim, false)
|
|
||||||
|
|
||||||
sim.Rollback()
|
sim.Rollback()
|
||||||
|
|
||||||
|
|
@ -49,10 +48,9 @@ func TestTransactionRollbackBehavior(t *testing.T) {
|
||||||
t.Fatalf("all transactions were not rolled back")
|
t.Fatalf("all transactions were not rolled back")
|
||||||
}
|
}
|
||||||
|
|
||||||
btx2 := testSendSignedTx(t, testKey, sim, true)
|
btx2 := testSendSignedTx(t, testKey, sim, true, 0)
|
||||||
tx2 := testSendSignedTx(t, testKey2, sim, false)
|
tx2 := testSendSignedTx(t, testKey2, sim, false, 0)
|
||||||
time.Sleep(200 * time.Millisecond) // Wait to avoid nonce race condition
|
tx3 := testSendSignedTx(t, testKey2, sim, false, 1)
|
||||||
tx3 := testSendSignedTx(t, testKey2, sim, false)
|
|
||||||
|
|
||||||
sim.Commit()
|
sim.Commit()
|
||||||
|
|
||||||
|
|
@ -63,7 +61,7 @@ func TestTransactionRollbackBehavior(t *testing.T) {
|
||||||
|
|
||||||
// testSendSignedTx sends a signed transaction to the simulated backend.
|
// testSendSignedTx sends a signed transaction to the simulated backend.
|
||||||
// It does not commit the block.
|
// It does not commit the block.
|
||||||
func testSendSignedTx(t *testing.T, key *ecdsa.PrivateKey, sim *Backend, isBlobTx bool) *types.Transaction {
|
func testSendSignedTx(t *testing.T, key *ecdsa.PrivateKey, sim *Backend, isBlobTx bool, nonce uint64) *types.Transaction {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
client := sim.Client()
|
client := sim.Client()
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
@ -73,9 +71,9 @@ func testSendSignedTx(t *testing.T, key *ecdsa.PrivateKey, sim *Backend, isBlobT
|
||||||
signedTx *types.Transaction
|
signedTx *types.Transaction
|
||||||
)
|
)
|
||||||
if isBlobTx {
|
if isBlobTx {
|
||||||
signedTx, err = newBlobTx(sim, key)
|
signedTx, err = newBlobTx(sim, key, nonce)
|
||||||
} else {
|
} else {
|
||||||
signedTx, err = newTx(sim, key)
|
signedTx, err = newTx(sim, key, nonce)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create transaction: %v", err)
|
t.Fatalf("failed to create transaction: %v", err)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue