-
Notifications
You must be signed in to change notification settings - Fork 86
Description
Describe the enhancement
As per #839, the getchaintips RPC is not yet implemented. While it's tracked there, I'm opening this issue to document a use-case and my interest for having getchaintips.
| // getchaintips |
Use case
Monitoring tools like https://forkmonitor.info and https://fork.observer periodically fetch getchaintips to figure out which block header the node considers to be the tip and to learn which other branches of the chain the node knows about. This is useful for monitoring for stuck nodes, chain splits which can happen due to e.g. network problems (e.g. no bridge nodes avaliable), or due to consensus bugs, ...
Additional context
Bitcoin Core has the following RPC result. Personally, I don't require the exact same format, but I think the data included there has proven to be useful.
$ bitcoin-cli help getchaintips
getchaintips
Return information about all known tips in the block tree, including the main chain as well as orphaned branches.
Result:
[ (json array)
{ (json object)
"height" : n, (numeric) height of the chain tip
"hash" : "hex", (string) block hash of the tip
"branchlen" : n, (numeric) zero for main chain, otherwise length of branch connecting the tip to the main chain
"status" : "str" (string) status of the chain, "active" for the main chain
Possible values for status:
1. "invalid" This branch contains at least one invalid block
2. "headers-only" Not all blocks for this branch are available, but the headers are valid
3. "valid-headers" All blocks are available for this branch, but they were never fully validated
4. "valid-fork" This branch is not part of the active chain, but is fully validated
5. "active" This is the tip of the active main chain, which is certainly valid
},
...
]
Examples:
> bitcoin-cli getchaintips
> curl --user myusername --data-binary '{"jsonrpc": "2.0", "id": "curltest", "method": "getchaintips", "params": []}' -H 'content-type: application/json' http://127.0.0.1:8332/