mirror of
https://github.com/luxfi/evm.git
synced 2026-09-24 00:27:44 +00:00
nits
This commit is contained in:
@@ -15,43 +15,46 @@ import (
|
||||
"github.com/ethereum/go-ethereum/params"
|
||||
)
|
||||
|
||||
const (
|
||||
checkInterval = 2 * time.Second
|
||||
)
|
||||
|
||||
// MonitorTPS periodically prints metrics related to transaction activity on
|
||||
// a given network.
|
||||
func MonitorTPS(ctx context.Context, client ethclient.Client) error {
|
||||
blockNumber, err := client.BlockNumber(ctx)
|
||||
lastBlockNumber, err := client.BlockNumber(ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get block number: %w", err)
|
||||
}
|
||||
|
||||
block, err := client.BlockByNumber(ctx, new(big.Int).SetUint64(blockNumber))
|
||||
block, err := client.BlockByNumber(ctx, new(big.Int).SetUint64(lastBlockNumber))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get block at number %d: %w", blockNumber, err)
|
||||
return fmt.Errorf("failed to get block at number %d: %w", lastBlockNumber, err)
|
||||
}
|
||||
|
||||
startTime := block.Time()
|
||||
currentTime := startTime
|
||||
totalTxs := 0
|
||||
timeTxs := map[uint64]int{}
|
||||
timeTxs := make(map[uint64]int)
|
||||
for ctx.Err() == nil {
|
||||
newBlockNumber, err := client.BlockNumber(ctx)
|
||||
if err != nil {
|
||||
log.Printf("failed to get block number: %s", err)
|
||||
time.Sleep(2 * time.Second)
|
||||
time.Sleep(checkInterval)
|
||||
continue
|
||||
}
|
||||
|
||||
if blockNumber > newBlockNumber {
|
||||
time.Sleep(2 * time.Second)
|
||||
if newBlockNumber <= lastBlockNumber {
|
||||
time.Sleep(checkInterval)
|
||||
continue
|
||||
}
|
||||
|
||||
var block *types.Block
|
||||
for i := blockNumber; i <= newBlockNumber; i++ {
|
||||
for i := lastBlockNumber + 1; i <= newBlockNumber; i++ {
|
||||
for ctx.Err() == nil {
|
||||
block, err = client.BlockByNumber(ctx, new(big.Int).SetUint64(i))
|
||||
if err != nil {
|
||||
log.Printf("failed to get block at number %d: %s", blockNumber, err)
|
||||
time.Sleep(2 * time.Second)
|
||||
log.Printf("failed to get block at number %d: %s", i, err)
|
||||
time.Sleep(checkInterval)
|
||||
continue
|
||||
}
|
||||
log.Printf("[block created] index: %d base fee: %d block gas cost: %d block txs: %d\n", i, block.BaseFee().Div(block.BaseFee(), big.NewInt(params.GWei)), block.BlockGasCost(), len(block.Body().Transactions))
|
||||
@@ -63,7 +66,7 @@ func MonitorTPS(ctx context.Context, client ethclient.Client) error {
|
||||
break
|
||||
}
|
||||
}
|
||||
blockNumber = newBlockNumber + 1
|
||||
lastBlockNumber = newBlockNumber
|
||||
currentTime = block.Time()
|
||||
|
||||
// log TPS
|
||||
|
||||
@@ -57,8 +57,8 @@ func setupVars(cID *big.Int, bFee uint64, pFee uint64) {
|
||||
func createWorkers(ctx context.Context, keys []*key.Key, endpoints []string, desiredWorkers int) (*worker, []*worker, error) {
|
||||
var master *worker
|
||||
var workers []*worker
|
||||
for _, k := range keys {
|
||||
worker, err := newWorker(k, endpoints[rand.Intn(len(endpoints))])
|
||||
for i, k := range keys {
|
||||
worker, err := newWorker(k, endpoints[i%len(endpoints)])
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -73,7 +73,9 @@ func createWorkers(ctx context.Context, keys []*key.Key, endpoints []string, des
|
||||
switch {
|
||||
case master == nil:
|
||||
master = worker
|
||||
case new(big.Int).Sub(master.balance, worker.balance).Sign() < 0:
|
||||
case master.balance.Cmp(worker.balance) < 0:
|
||||
// We swap the worker with the master if it has a larger balance to
|
||||
// ensure the master is the key with the largest balance
|
||||
workers = append(workers, master)
|
||||
master = worker
|
||||
default:
|
||||
@@ -85,13 +87,16 @@ func createWorkers(ctx context.Context, keys []*key.Key, endpoints []string, des
|
||||
if master == nil {
|
||||
master, err = newWorker(nil, endpoints[rand.Intn(len(endpoints))])
|
||||
if err != nil {
|
||||
// This should never happen
|
||||
return nil, nil, fmt.Errorf("unable to create master: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
for len(workers) < desiredWorkers {
|
||||
worker, err := newWorker(nil, endpoints[rand.Intn(len(endpoints))])
|
||||
i := len(workers)
|
||||
worker, err := newWorker(nil, endpoints[i%len(endpoints)])
|
||||
if err != nil {
|
||||
// This should never happen
|
||||
return nil, nil, fmt.Errorf("unable to create worker: %w", err)
|
||||
}
|
||||
|
||||
@@ -168,7 +173,7 @@ func (w *worker) waitForBalance(ctx context.Context, stdout bool, minBalance *bi
|
||||
return fmt.Errorf("could not get balance: %w", err)
|
||||
}
|
||||
|
||||
if new(big.Int).Sub(w.balance, minBalance).Sign() >= 0 {
|
||||
if w.balance.Cmp(minBalance) >= 0 {
|
||||
if stdout {
|
||||
log.Printf("found balance of %s\n", w.balance.String())
|
||||
}
|
||||
@@ -222,7 +227,7 @@ func (w *worker) sendTx(ctx context.Context, recipient common.Address, value *bi
|
||||
|
||||
func (w *worker) work(ctx context.Context, availableWorkers []*worker, fundRequest chan common.Address) error {
|
||||
for ctx.Err() == nil {
|
||||
if new(big.Int).Sub(w.balance, maxTransferCost).Sign() < 0 {
|
||||
if w.balance.Cmp(maxTransferCost) < 0 {
|
||||
log.Printf("%s requesting funds from master\n", w.k.Address.Hex())
|
||||
fundRequest <- w.k.Address
|
||||
if err := w.waitForBalance(ctx, false, maxTransferCost); err != nil {
|
||||
@@ -245,7 +250,7 @@ func (w *worker) fund(ctx context.Context, fundRequest chan common.Address) erro
|
||||
for {
|
||||
select {
|
||||
case recipient := <-fundRequest:
|
||||
if new(big.Int).Sub(w.balance, minFunderBalance).Sign() < 0 {
|
||||
if w.balance.Cmp(minFunderBalance) < 0 {
|
||||
if err := w.waitForBalance(ctx, true, minFunderBalance); err != nil {
|
||||
return fmt.Errorf("could not get minimum balance: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user