package core import ( data "github.com/tendermint/go-wire/data" ctypes "github.com/tendermint/tendermint/rpc/core/types" "github.com/tendermint/tendermint/types" ) // Get Tendermint status including node info, pubkey, latest block // hash, app hash, block height and time. // // ```shell // curl 'localhost:46657/status' // ``` // // ```go // client := client.NewHTTP("tcp://0.0.0.0:46657", "/websocket") // result, err := client.Status() // ``` // // > The above command returns JSON structured like this: // // ```json // { // "error": "", // "result": { // "latest_block_time": 1.49631773695e+18, // "latest_block_height": 22924, // "latest_app_hash": "9D16177BC71E445476174622EA559715C293740C", // "latest_block_hash": "75B36EEF96C277A592D8B14867098C58F68BB180", // "pub_key": { // "data": "68DFDA7E50F82946E7E8546BED37944A422CD1B831E70DF66BA3B8430593944D", // "type": "ed25519" // }, // "node_info": { // "other": [ // "wire_version=0.6.2", // "p2p_version=0.5.0", // "consensus_version=v1/0.2.2", // "rpc_version=0.7.0/3", // "tx_index=on", // "rpc_addr=tcp://0.0.0.0:46657" // ], // "version": "0.10.0-rc1-aa22bd84", // "listen_addr": "10.0.2.15:46656", // "remote_addr": "", // "network": "test-chain-6UTNIN", // "moniker": "anonymous", // "pub_key": "659B9E54DD6EF9FEF28FAD40629AF0E4BD3C2563BB037132B054A176E00F1D94" // } // }, // "id": "", // "jsonrpc": "2.0" // } // ``` func Status() (*ctypes.ResultStatus, error) { latestHeight := blockStore.Height() var ( latestBlockMeta *types.BlockMeta latestBlockHash data.Bytes latestAppHash data.Bytes latestBlockTime int64 ) if latestHeight != 0 { latestBlockMeta = blockStore.LoadBlockMeta(latestHeight) latestBlockHash = latestBlockMeta.BlockID.Hash latestAppHash = latestBlockMeta.Header.AppHash latestBlockTime = latestBlockMeta.Header.Time.UnixNano() } return &ctypes.ResultStatus{ NodeInfo: p2pSwitch.NodeInfo(), PubKey: pubKey, LatestBlockHash: latestBlockHash, LatestAppHash: latestAppHash, LatestBlockHeight: latestHeight, LatestBlockTime: latestBlockTime, Syncing: consensusReactor.FastSync()}, nil }