Hackmas: Towards a Unified RPC Interface for the Z3 Stack

This post features work completed by @oxarbitrage

During this hackathon, I focused on improving RPC interface documentation and accessibility across the Zcash Z3 stack.

A detailed breakdown of the work completed so far—including links to pull requests and repositories—can be found here.

One of the main goals of this effort is to hide the complexity of multiple RPC endpoints behind a single, unified endpoint. This is especially important for applications such as exchanges and end-user wallets, which benefit from interacting with a single RPC surface rather than having to coordinate between Zebra, Zallet, and Zaino independently.

This new layer aims to:

  • Expose a merged OpenRPC specification that documents the union of RPC methods provided by Zebra, Zallet, and Zaino.
  • Provide a single endpoint that can route any supported RPC call to the appropriate backend transparently.

While this hackathon helped open the path toward that goal, there is still significant work required to make this production-ready. The long-term objective is to spawn this unified RPC endpoint automatically when starting the Z3 stack:

  • Review and merge the relevant pull requests across the different repositories
  • Improve and complete RPC documentation, particularly on the Zebra side
  • Resolve open design decisions, such as crate naming, code ownership, and final integration points within the stack

For now, this project should be considered in progress, help wanted, and open to collaboration. Your contributions, feedback, and design discussions are very welcome!

8 Likes