Recently, we added terminal-based progress bars to Zebra. These experimental progress bars show Zebra’s status, including peers, blocks, and transactions.
To display these progress bars, Zebra uses how-u-doin, a recently published Rust crate for progress bar coordination. how-u-doin uses the indicatif terminal display library to actually create the progress bars. We also started tracking some new metrics in Zebra, like the last chain fork height.
Fully Synced View
When Zebra has synced to the tip, the progress bars show:
- how many peers Zebra is connected to
- how far its has synced the chain
- the recent chain forks it is tracking
- how many transactions are in the mempool
This is an alternative to Zebra’s logs, which show the chain sync progress every minute and log mempool transactions as they arrive.
Initial Sync View
When Zebra is doing its initial sync, it shows the number of queued and verified checkpoint blocks. It doesn’t show the mempool because it doesn’t activate until it reaches the chain tip.
Try it out for yourself
If you want to try Zebra’s progress bars for yourself, compile a recent checkout of the Zebra git repository with the progress-bar feature:
git clone https://github.com/ZcashFoundation/zebra.git
git checkout main
cargo run --features progress-bar --bin zebrad
This will automatically redirect Zebra’s logs to the standard log file path.
You’ll need to install Zebra’s dependencies and build Zebra yourself because this feature hasn’t made it into a release yet. Until we’re happy with the feature, it will be off by default in release builds.
These progress bars are just an experiment for now. If they are popular with users, we can make them the default Zebra interface. They’ll look like zcashd’s sync progress bar, but with a bit more detail.
We’d also like to improve the display by:
- only showing times and byte rates for verified checkpoints and blocks
- removing less useful progress bars, or putting them behind an “expert user” config