zebra
zebra copied to clipboard
Tracking: Block Explorer support
Motivation
This is the tracking issue to outline the work necessary in order for zebra to support block explorers.
Zcash Block explorers
- Blockchair
- Tokenview
- Bitquery
- Blockexplorer.one
- Zcash Block Explorer (https://github.com/nighthawk-apps/zcash-explorer)
We're initially implementing support for https://github.com/nighthawk-apps/zcash-explorer.
RPC Methods
Using the Zcash Block Explorer from above as an example, these are the following RPC methods that would need to be implemented in zebra:
- [ ] #8436
- [ ] #8437
- [ ] #8438
- [ ] #8440
- [x] #8441
- [ ] #8442
- [x] #8443
- [ ] #8444
- [ ] #8445
The following RPC methods should also be updated to support all of the required query and result fields:
- [ ] #8446
- [ ] #8447
- [ ] #8448
- [ ] #8449
- [ ] #8450
- [ ] #8451
- [ ] #8452
Other
- [x] #8456
- [x] #8672
Hey @mpguerra , thank you for putting all this together. I think we need a ticket to install (fork if changes are needed) locally the https://github.com/nighthawk-apps/zcash-explorer
Hey @mpguerra , thank you for putting all this together. I think we need a ticket to install (fork if changes are needed) locally the https://github.com/nighthawk-apps/zcash-explorer
This is now #8456
@mpguerra could you add the resources you used to compose the lists of the RPCs?
@mpguerra could you add the resources you used to compose the lists of the RPCs?
https://gist.github.com/oxarbitrage/a56f7e6b9b198ba70150a3afb2ffc949
It may be that we want to prioritise some RPC methods first as there may be some features from the Tools section that we may not want to support from the start:
@conradoplg I noticed you tried running https://github.com/nighthawk-apps/zcash-explorer locally. It should use this tool https://github.com/nighthawk-apps/zcashex as a middleware between the explorer and full node. It looks like it should be sufficient to implement the RPCs used in this file https://github.com/nighthawk-apps/zcashex/blob/main/lib/zcashex.ex to have a full support of the block explorer.
(So I think you don't need to list the RPCs manually.)
I extracted the RPCs from https://github.com/nighthawk-apps/zcashex/blob/main/lib/zcashex.ex:
- getblockchaininfo
- getmempoolinfo
- gettxoutsetinfo
- getinfo
- getmemoryinfo
- getmininginfo
- getnetworkinfo
- getpeerinfo
- getbestblockhash
- getblockcount
- getdifficulty
- getblock
- getblocksubsidy
- getnetworksolps
- getblockhashes
- getrawtransaction
- getaddressbalance
- getaddressdeltas
- getaddresstxids
- getblockheader
- getrawmempool
- sendrawtransaction
- decoderawtransaction
- generate
- validateaddress
- z_validatepaymentdisclosure
- z_validateaddress
- z_listunifiedreceivers
Some of the RPCs are already listed in the PR description, but these are missing:
- gettxoutsetinfo
- getmemoryinfo
- getmininginfo
- getnetworkinfo
- getbestblockhash
- getblockcount
- getdifficulty
- getblocksubsidy
- getaddresstxids
- sendrawtransaction
- decoderawtransaction
- generate
Here's a list of RPCs from Conrado which splits them according to what Zebra does and doesn't implement:
Zebra has: getblockchaininfo getinfo getmininginfo getpeerinfo getbestblockhash getblockcount getdifficulty getblock getblocksubsidy getnetworksolps getrawtransaction sendrawtransaction getaddressbalance getaddresstxids validateaddress z_validateaddress getrawmempool z_listunifiedreceivers
Zebra doesn't have: getmempoolinfo gettxoutsetinfo getmemoryinfo getnetworkinfo getblockhashes z_validatepaymentdisclosure getaddressdeltas decoderawtransaction getblockheader
@oxarbitrage Is the elastic search feature of Zebra oriented to support Zcash Block Explorer uniquely or does it go beyond the scope of this tracking issue?
@oxarbitrage Is the elastic search feature of Zebra oriented to support Zcash Block Explorer uniquely or does it go beyond the scope of this tracking issue?
The elastic search feature was NOT meant to support a Zcash block explorer, it was just a hack sprint experiment that @oxarbitrage wanted to try out.
It's our intention to implement the RPC methods in this tracking issue in order to support a block explorer such as Nighthawk's Zcash Explorer.
However, we are not aware of anyone that is currently maintaining this block explorer, nor do we intend to take over maintenance of it. Ideally, we would collaborate with some existing teams that are running zcash block explorers and help them to replace their zcashd instance with zebra by implementing their required RPC methods.
EDIT: If someone has plans to take over development of https://github.com/nighthawk-apps/zcash-explorer we'd be interested in providing some feedback on some incompatibilities with JSON-RPC standards, @upbqdn has more details on this.