mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-26 13:40:05 +00:00
9ca0a721af
* prog * chain traffic * added log estimation * fixed err * unwind
42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package commands
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/ledgerwatch/erigon/common/hexutil"
|
|
"github.com/ledgerwatch/erigon/core/rawdb"
|
|
"github.com/ledgerwatch/erigon/rpc"
|
|
)
|
|
|
|
// CumulativeGasIndex implements erigon_cumulativeChainTraffic. Returns how much traffic there has been at the specified block number.
|
|
// Aka. amount of gas used so far + total transactions issued to the network
|
|
func (api *ErigonImpl) CumulativeChainTraffic(ctx context.Context, blockNr rpc.BlockNumber) (ChainTraffic, error) {
|
|
tx, err := api.db.BeginRo(ctx)
|
|
if err != nil {
|
|
return ChainTraffic{}, err
|
|
}
|
|
defer tx.Rollback()
|
|
|
|
blockNumber := uint64(blockNr)
|
|
cumulativeGasUsed, err := rawdb.ReadCumulativeGasUsed(tx, blockNumber)
|
|
if err != nil {
|
|
return ChainTraffic{}, err
|
|
}
|
|
|
|
_, baseTxId, txCount, err := rawdb.ReadBodyByNumber(tx, blockNumber)
|
|
if err != nil {
|
|
return ChainTraffic{}, err
|
|
}
|
|
|
|
cumulativeTransactionCount := baseTxId + uint64(txCount)
|
|
return ChainTraffic{
|
|
CumulativeGasUsed: (*hexutil.Big)(cumulativeGasUsed),
|
|
CumulativeTransactionsCount: (*hexutil.Uint64)(&cumulativeTransactionCount),
|
|
}, nil
|
|
}
|
|
|
|
type ChainTraffic struct {
|
|
CumulativeGasUsed *hexutil.Big `json:"cumulativeGasUsed"`
|
|
CumulativeTransactionsCount *hexutil.Uint64 `json:"cumulativeTransactionsCount"`
|
|
}
|