Documentation
¶
Overview ¶
Package comet provides typed fetch helpers for the CometBFT JSON-RPC endpoints shared by the heimdall subcommand families (chain, milestone). We decode only the fields actually used; the raw JSON is returned alongside where callers need passthrough.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BlockTime ¶
BlockTime fetches /block at h and returns the header's time parsed as a Go time.Time. Separate from FetchBlock for tightness.
func FindBlockAt ¶
func FindBlockAt(ctx context.Context, rpc *client.RPCClient, lo, hi int64, target time.Time) (int64, error)
FindBlockAt binary-searches the closed range [lo, hi] for the height whose block time is closest to target. Cancellable via ctx.
Heimdall block times are monotonically non-decreasing so bsearch applies. The fetch-per-step cost is the dominant factor so we cap at log2(hi-lo+1) + 1 probes.
Types ¶
type ABCIEvent ¶
type ABCIEvent struct {
Type string `json:"type"`
Attributes []struct {
Key string `json:"key"`
Value string `json:"value"`
} `json:"attributes"`
}
ABCIEvent is one event from a CometBFT /block_results response. Attribute keys/values are plain strings on CometBFT 0.38.
type Block ¶
type Block struct {
BlockID struct {
Hash string `json:"hash"`
} `json:"block_id"`
Block struct {
Header struct {
ChainID string `json:"chain_id"`
Height string `json:"height"`
Time string `json:"time"`
ProposerAddress string `json:"proposer_address"`
} `json:"header"`
Data struct {
Txs []string `json:"txs"`
} `json:"data"`
} `json:"block"`
}
Block is the subset of the CometBFT /block response we consume.
func FetchBlock ¶
func FetchBlock(ctx context.Context, rpc *client.RPCClient, height string) (*Block, json.RawMessage, error)
FetchBlock calls CometBFT /block at the given height (empty == latest). Returns the typed struct, the raw result bytes (for --json passthrough), and any error. Both return values are nil when --curl short-circuits.
type BlockResults ¶
type BlockResults struct {
Height string `json:"height"`
FinalizeBlockEvents []ABCIEvent `json:"finalize_block_events"`
}
BlockResults is the subset of /block_results we consume.
func FetchBlockResults ¶
func FetchBlockResults(ctx context.Context, rpc *client.RPCClient, height int64) (*BlockResults, error)
FetchBlockResults calls CometBFT /block_results at the given height. Returns (nil, nil) when --curl short-circuits.
type Status ¶
type Status struct {
NodeInfo struct {
Version string `json:"version"`
Network string `json:"network"`
Moniker string `json:"moniker"`
} `json:"node_info"`
SyncInfo struct {
LatestBlockHeight string `json:"latest_block_height"`
LatestBlockTime string `json:"latest_block_time"`
EarliestBlockHeight string `json:"earliest_block_height"`
CatchingUp bool `json:"catching_up"`
} `json:"sync_info"`
}
Status is the subset of the CometBFT /status response we consume.