package coretypes
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
abci "github.com/tendermint/tendermint/abci/types"
|
|
"github.com/tendermint/tendermint/crypto"
|
|
"github.com/tendermint/tendermint/libs/bytes"
|
|
"github.com/tendermint/tendermint/p2p"
|
|
"github.com/tendermint/tendermint/types"
|
|
)
|
|
|
|
// List of blocks
|
|
type ResultBlockchainInfo struct {
|
|
LastHeight int64 `json:"last_height"`
|
|
BlockMetas []*types.BlockMeta `json:"block_metas"`
|
|
}
|
|
|
|
// Genesis file
|
|
type ResultGenesis struct {
|
|
Genesis *types.GenesisDoc `json:"genesis"`
|
|
}
|
|
|
|
// Single block (with meta)
|
|
type ResultBlock struct {
|
|
BlockID types.BlockID `json:"block_id"`
|
|
Block *types.Block `json:"block"`
|
|
}
|
|
|
|
// Commit and Header
|
|
type ResultCommit struct {
|
|
types.SignedHeader `json:"signed_header"`
|
|
CanonicalCommit bool `json:"canonical"`
|
|
}
|
|
|
|
// ABCI results from a block
|
|
type ResultBlockResults struct {
|
|
Height int64 `json:"height"`
|
|
TxsResults []*abci.ResponseDeliverTx `json:"txs_results"`
|
|
BeginBlockEvents []abci.Event `json:"begin_block_events"`
|
|
EndBlockEvents []abci.Event `json:"end_block_events"`
|
|
ValidatorUpdates []abci.ValidatorUpdate `json:"validator_updates"`
|
|
ConsensusParamUpdates *abci.ConsensusParams `json:"consensus_param_updates"`
|
|
}
|
|
|
|
// NewResultCommit is a helper to initialize the ResultCommit with
|
|
// the embedded struct
|
|
func NewResultCommit(header *types.Header, commit *types.Commit,
|
|
canonical bool) *ResultCommit {
|
|
|
|
return &ResultCommit{
|
|
SignedHeader: types.SignedHeader{
|
|
Header: header,
|
|
Commit: commit,
|
|
},
|
|
CanonicalCommit: canonical,
|
|
}
|
|
}
|
|
|
|
// Info about the node's syncing state
|
|
type SyncInfo struct {
|
|
LatestBlockHash bytes.HexBytes `json:"latest_block_hash"`
|
|
LatestAppHash bytes.HexBytes `json:"latest_app_hash"`
|
|
LatestBlockHeight int64 `json:"latest_block_height"`
|
|
LatestBlockTime time.Time `json:"latest_block_time"`
|
|
|
|
EarliestBlockHash bytes.HexBytes `json:"earliest_block_hash"`
|
|
EarliestAppHash bytes.HexBytes `json:"earliest_app_hash"`
|
|
EarliestBlockHeight int64 `json:"earliest_block_height"`
|
|
EarliestBlockTime time.Time `json:"earliest_block_time"`
|
|
|
|
CatchingUp bool `json:"catching_up"`
|
|
}
|
|
|
|
// Info about the node's validator
|
|
type ValidatorInfo struct {
|
|
Address bytes.HexBytes `json:"address"`
|
|
PubKey crypto.PubKey `json:"pub_key"`
|
|
VotingPower int64 `json:"voting_power"`
|
|
}
|
|
|
|
// Node Status
|
|
type ResultStatus struct {
|
|
NodeInfo p2p.NodeInfo `json:"node_info"`
|
|
SyncInfo SyncInfo `json:"sync_info"`
|
|
ValidatorInfo ValidatorInfo `json:"validator_info"`
|
|
}
|
|
|
|
// Is TxIndexing enabled
|
|
func (s *ResultStatus) TxIndexEnabled() bool {
|
|
if s == nil {
|
|
return false
|
|
}
|
|
return s.NodeInfo.Other.TxIndex == "on"
|
|
}
|
|
|
|
// Info about peer connections
|
|
type ResultNetInfo struct {
|
|
Listening bool `json:"listening"`
|
|
Listeners []string `json:"listeners"`
|
|
NPeers int `json:"n_peers"`
|
|
Peers []Peer `json:"peers"`
|
|
}
|
|
|
|
// Log from dialing seeds
|
|
type ResultDialSeeds struct {
|
|
Log string `json:"log"`
|
|
}
|
|
|
|
// Log from dialing peers
|
|
type ResultDialPeers struct {
|
|
Log string `json:"log"`
|
|
}
|
|
|
|
// A peer
|
|
type Peer struct {
|
|
NodeInfo p2p.NodeInfo `json:"node_info"`
|
|
IsOutbound bool `json:"is_outbound"`
|
|
ConnectionStatus p2p.ConnectionStatus `json:"connection_status"`
|
|
RemoteIP string `json:"remote_ip"`
|
|
}
|
|
|
|
// Validators for a height.
|
|
type ResultValidators struct {
|
|
BlockHeight int64 `json:"block_height"`
|
|
Validators []*types.Validator `json:"validators"`
|
|
// Count of actual validators in this result
|
|
Count int `json:"count"`
|
|
// Total number of validators
|
|
Total int `json:"total"`
|
|
}
|
|
|
|
// ConsensusParams for given height
|
|
type ResultConsensusParams struct {
|
|
BlockHeight int64 `json:"block_height"`
|
|
ConsensusParams types.ConsensusParams `json:"consensus_params"`
|
|
}
|
|
|
|
// Info about the consensus state.
|
|
// UNSTABLE
|
|
type ResultDumpConsensusState struct {
|
|
RoundState json.RawMessage `json:"round_state"`
|
|
Peers []PeerStateInfo `json:"peers"`
|
|
}
|
|
|
|
// UNSTABLE
|
|
type PeerStateInfo struct {
|
|
NodeAddress string `json:"node_address"`
|
|
PeerState json.RawMessage `json:"peer_state"`
|
|
}
|
|
|
|
// UNSTABLE
|
|
type ResultConsensusState struct {
|
|
RoundState json.RawMessage `json:"round_state"`
|
|
}
|
|
|
|
// CheckTx result
|
|
type ResultBroadcastTx struct {
|
|
Code uint32 `json:"code"`
|
|
Data bytes.HexBytes `json:"data"`
|
|
Log string `json:"log"`
|
|
Codespace string `json:"codespace"`
|
|
|
|
Hash bytes.HexBytes `json:"hash"`
|
|
}
|
|
|
|
// CheckTx and DeliverTx results
|
|
type ResultBroadcastTxCommit struct {
|
|
CheckTx abci.ResponseCheckTx `json:"check_tx"`
|
|
DeliverTx abci.ResponseDeliverTx `json:"deliver_tx"`
|
|
Hash bytes.HexBytes `json:"hash"`
|
|
Height int64 `json:"height"`
|
|
}
|
|
|
|
// ResultCheckTx wraps abci.ResponseCheckTx.
|
|
type ResultCheckTx struct {
|
|
abci.ResponseCheckTx
|
|
}
|
|
|
|
// Result of querying for a tx
|
|
type ResultTx struct {
|
|
Hash bytes.HexBytes `json:"hash"`
|
|
Height int64 `json:"height"`
|
|
Index uint32 `json:"index"`
|
|
TxResult abci.ResponseDeliverTx `json:"tx_result"`
|
|
Tx types.Tx `json:"tx"`
|
|
Proof types.TxProof `json:"proof,omitempty"`
|
|
}
|
|
|
|
// Result of searching for txs
|
|
type ResultTxSearch struct {
|
|
Txs []*ResultTx `json:"txs"`
|
|
TotalCount int `json:"total_count"`
|
|
}
|
|
|
|
// List of mempool txs
|
|
type ResultUnconfirmedTxs struct {
|
|
Count int `json:"n_txs"`
|
|
Total int `json:"total"`
|
|
TotalBytes int64 `json:"total_bytes"`
|
|
Txs []types.Tx `json:"txs"`
|
|
}
|
|
|
|
// Info abci msg
|
|
type ResultABCIInfo struct {
|
|
Response abci.ResponseInfo `json:"response"`
|
|
}
|
|
|
|
// Query abci msg
|
|
type ResultABCIQuery struct {
|
|
Response abci.ResponseQuery `json:"response"`
|
|
}
|
|
|
|
// Result of broadcasting evidence
|
|
type ResultBroadcastEvidence struct {
|
|
Hash []byte `json:"hash"`
|
|
}
|
|
|
|
// empty results
|
|
type (
|
|
ResultUnsafeFlushMempool struct{}
|
|
ResultUnsafeProfile struct{}
|
|
ResultSubscribe struct{}
|
|
ResultUnsubscribe struct{}
|
|
ResultHealth struct{}
|
|
)
|
|
|
|
// Event data from a subscription
|
|
type ResultEvent struct {
|
|
Query string `json:"query"`
|
|
Data types.TMEventData `json:"data"`
|
|
Events map[string][]string `json:"events"`
|
|
}
|