Bonsai is built as a showcase of bdk_floresta,
a novel chain-source crate for BDK, which embbeds
Floresta, an extremely lightweight full-node
implementation that leverages Utreexo to keep a compact
representation of the UTXO set in under 2KB, and a small memory footprint. It allows wallet
synching with zero requests to untrusted third-party APIs. The vast majority of wallets rely
on third-party indexing servers (e.g. Esplora and Electrum protocols), which represent a huge privacy leak for users due to
IP address and Bitcoin address correlation. Removing this security hole is a must for sovereign
Bitcoin usage.
This application aims to show to developers the full set of capablities that
bdk_floresta allows for building wallet
applications with a nice and sleek user interface.
This application is written in Rust. You need to have
cargo installed.
just is used as a convenience tool for command running,
installing it is advised.
# List available commands
~$ just
bonsai
build # Build `bonsai` [alias: b]
check # Check code: formatting, compilation, and linting [alias: c]
delete item="data-signet" # Delete files: data-signet, settings, target, lockfile [alias: d]
fmt # Format code [alias: f]
hot # Run with experimental hot-reloading [alias: h]
run # Run the code [alias: r]
run-release # Run the code in release mode [alias: rr]
# Run the application in release mode
~$ just run-releaseBonsai has a few tabs that allow the user to monitor, configure and interact with the embedded node.
WIP
In the Metrics tab, the user can START, RESTART and STOP the node, see node
metrics (such as node status, IBD progress, uptime, user agent and peer count), and monitor the
node's logs.
In the Network tab, the user can see information about peers the node is connected to, connect to new peer, disconnect or ban a peer, and see a dynamic diagram of the node's network messages (WIP).
In the Utreexo tab, the user can see statistics about the Utreexo accumulator, such as leaf count, root count, accumulator and proof cache size, as well as a dynamic QR code that allows exporting the node's validation. This can be scanned by other devices so that they can start running at the same height as Bonsai without trust assumptions.
In the Blockchain tab, the user can see a live feed of validated blocks, as well as inspect any block by fetching them from the P2P network.
In the Settings tab, the user can tweak the node's seetings as they please, including switching the network, setting a custom user agent, SOCKS5 proxy, fixed peer, and maximum number of outbound peers.
This application was developed using iced,
a Rust-based GUI framework.
Shoutout to US Graphics Company for the beautiful Berkeley Mono font.
This was designed to have a sleek pseudo-TUI aesthetic, using the Gruvbox Dark color palette.