This document details work, mainly in the context of Ziggurat, that Equilibrium may propose to Zcash in the future, and/or work that we are encouraging the Zcash community to take on.
It would be beneficial to be able to test custom topologies, combining disparate node implementations in both common and novel ways to detect problems closer to "at scale", or edge cases caused by network-wide communications and behavior.
While there are some workarounds, standard Rust tests do not include native support for setup and teardown. This is largely by design. However, it would benefit Ziggurat to not only be able to spin up a long-standing node to run multiple tests against, but to define these expectations in the same Rust code that the tests are written in.
We currently have a
SyntheticNode implementation that performs various tasks, based on the pea2pea library. The more like a bona fide Zcash node this behaves like, the more beneficial it will be, particularly in concert with other future work like Custom Topologies above. Ideally we would have a full "shadow implementation" that passes the Ziggurat test suite itself, or at least properly simulates it.
While not directly related to Ziggurat, it would be beneficial to have tooling to inspect either a local devnet, or testnet, by providing the ability to crawl the network, detect forks, etc.