Symphony 2.0 is a real-time, 3D, immersive blockchain explorer.
Symphony 2.0 aims to answer the question what does a blockchain look and sound like?
It is an educational initiative with the aim of inspiring a wide audience about blockchain technology.
In Symphony 2.0 all of the 3D structures represent real components of a blockchain.
Transactions are represented as hexagonal crystals. The height of each crystal is based on the transaction value. The brightness of the crystal surface is based on the ratio of unspent to spent transaction outputs, see Bitcoin UTXO. Fully spent transactions appear darker in color than unspent transactions.
The arrangement of crystals on the block surface and the crystal radii is controlled by a 2D Simplex Noise function. The noise amplitude is controlled by the ratio of total block transaction fees to total block value. We use this metric as a type of "Network Health". If the transaction fees are very high compared to the transaction amounts, we consider this an unhealthy state. An unhealthy state is visually reflected by transactions being more random in radius and spacing.
Merkle Trees are a fundamental component of blockchains and decentralized applications. They allow efficient verification of large data sets. In bitcoin and other cryptocurrencies, Merkle Trees connect one block to the next. They are constructed from hashes of the block transactions. In Symphony 2.0 we show how the branches of the trees connect to the transactions on the top of the block.
In Symphony 2.0 the Mempool is visualised as a swirling cloud of particles at the center of the blockchain spiral. The total count of particles is controlled by the actual mempool size.
We show transaction outputs being spent via a trail of energy leaving the transaction crystal and flying toward the mempool.
The macro blockchain structure is shown as an archimedean spiral. This structure is an efficient use of space for showing the entire blockchain on screen.
Symphony 2.0 generates a unique soundscape for each block based on the block data using Additive Synthesis. It loops through each of the transactions in a block and converts the transaction values to pitch (larger transaction value = lower pitch). Each transaction has a fundamental pitch as well as 7 harmonics. It utilises GPU.js to generate the sound buffers quickly. We use the ratio of the transaction fee to value as an indicator of "Transaction Health". If a transaction has a very high fee to value ratio, we add randomness to the harmonics, creating a more sonically inharmonic sound.
The sound in Symphony 2.0 serves a functional purpose - you can listen to the sound of a block and ascertain properties about the number of transactions, the level of fees in the block and the value being moved around.
yarn install && yarn start
Symphony 2.0 is licensed under the Apache-2.0 licence.