- package core
-
- import (
- "fmt"
- . "github.com/tendermint/go-common"
- ctypes "github.com/tendermint/tendermint/rpc/core/types"
- "github.com/tendermint/tendermint/types"
- )
-
- //-----------------------------------------------------------------------------
-
- // TODO: limit/permission on (max - min)
- func BlockchainInfo(minHeight, maxHeight int) (*ctypes.ResultBlockchainInfo, error) {
- if maxHeight == 0 {
- maxHeight = blockStore.Height()
- } else {
- maxHeight = MinInt(blockStore.Height(), maxHeight)
- }
- if minHeight == 0 {
- minHeight = MaxInt(1, maxHeight-20)
- }
- log.Debug("BlockchainInfoHandler", "maxHeight", maxHeight, "minHeight", minHeight)
-
- blockMetas := []*types.BlockMeta{}
- for height := maxHeight; height >= minHeight; height-- {
- blockMeta := blockStore.LoadBlockMeta(height)
- blockMetas = append(blockMetas, blockMeta)
- }
-
- return &ctypes.ResultBlockchainInfo{blockStore.Height(), blockMetas}, nil
- }
-
- //-----------------------------------------------------------------------------
-
- func Block(height int) (*ctypes.ResultBlock, error) {
- if height == 0 {
- return nil, fmt.Errorf("Height must be greater than 0")
- }
- if height > blockStore.Height() {
- return nil, fmt.Errorf("Height must be less than the current blockchain height")
- }
-
- blockMeta := blockStore.LoadBlockMeta(height)
- block := blockStore.LoadBlock(height)
- return &ctypes.ResultBlock{blockMeta, block}, nil
- }
|