Zcash is a privacy focused cryptocurrency. But while Zcash is a blockchain built around privacy, the ecosystem was missing a source of live analytics to track private transactions. I built Zdash to solve this problem by providing the first live analytics dashboard for Zcash.
Zdash is built on a Rails backend and a React/Redux/Thunk frontend. For historical transactions, the backend uses RPC calls to a ecosystem blockchain utility using the rpc-json GEM. This allows for over a year of data - comprising over 2.2 million transactions - to be analyzed in only a few hours on a “vintage” MacBook Pro. For ongoing transactions, a scheduled Rake task connecting to a public API of Zcash transactions. Use of the activerecord-import GEM allows for high volumes (thousands at a time) of transactions to be efficiently added to the PostgreSQL database.
Our frontend is a single page application built on a React/Redux/Thunk framework, using a hierarchy of react-router routes, containers, and stateless components. Redux is used to manage and modify state change, while Thunk acts as middleware for async requests to the backend via RESTful API calls. Overall styling is handed via the React-Bootstrap framework. Our charts, the heart of Zdash, use the Nivo library of dataviz components. Nivo allows for SVG based, interactive, animated charts that look fantastic and are endlessly flexible.