zebra icon indicating copy to clipboard operation
zebra copied to clipboard

Tracking: Block Explorer support

Open mpguerra opened this issue 10 months ago • 11 comments

Motivation

This is the tracking issue to outline the work necessary in order for zebra to support block explorers.

Zcash Block explorers

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

mpguerra avatar Apr 24 '24 10:04 mpguerra

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

oxarbitrage avatar Apr 24 '24 11:04 oxarbitrage

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 avatar Apr 24 '24 12:04 mpguerra

@mpguerra could you add the resources you used to compose the lists of the RPCs?

upbqdn avatar Apr 24 '24 15:04 upbqdn

@mpguerra could you add the resources you used to compose the lists of the RPCs?

https://gist.github.com/oxarbitrage/a56f7e6b9b198ba70150a3afb2ffc949

mpguerra avatar Apr 24 '24 16:04 mpguerra

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: Screenshot 2024-04-25 at 10 18 35

mpguerra avatar Apr 25 '24 08:04 mpguerra

@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.

upbqdn avatar Jun 06 '24 13:06 upbqdn

(So I think you don't need to list the RPCs manually.)

upbqdn avatar Jun 06 '24 13:06 upbqdn

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

upbqdn avatar Jun 06 '24 13:06 upbqdn

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

upbqdn avatar Jul 12 '24 11:07 upbqdn

@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?

pacu avatar Sep 05 '24 05:09 pacu

@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.

mpguerra avatar Sep 05 '24 10:09 mpguerra