erigon-pulse/cmd/rpcdaemon22/commands/erigon_cumulative_chain_traffic.go
ledgerwatch 8e3ac8a21c
Erigon2 upgrade 2 prototype (#4341)
* Erigon2 upgrade 2 prototype

* Latest erigon-lib

* Fixes

* Fix print

* Fix maxSpan

* Reduce maxSpan

* Remove duplicate joins

* TxNum

* Fix resuming

* first draft of history22

* Introduce historical reads

* Update to erigon-lib

* Update erigon-lib

* Update erigon-lib

* Fixes and tracing for checkChangeSets

* More trace

* Print account details

* fix getHeader

* Update to erigon-lib main

* Add tracer indices and event log indices

* Fix calltracer

* Fix calltracer

* Duplicate rpcdaemon into rpcdaemon22

* Fix tests

* Fix tests

* Fix tests

* Update to latest erigon-lib

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro.local>
2022-06-10 16:18:43 +01:00

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"`
}