Imagine: immutable and distributed public records, proceedings and text through the power of the Blockchain.
In our current age, there is an overwhelming amount of information. However, this can lead to a lot of misinformation as well. As governments, companies and people try and change the past by editing or deleting information, can you really trust what you see?
The nature of blockchain is that the hash of every block was created with the hash of the block behind it plus the data in the block contains. Due to this property, changing any block in the chain invalidates all of the blocks in front of it as the hash of those blocks all depend on the changed block's hash. This provides the immutability we are looking for as that block will be rejected by the rest of the network.
What it does
Bookchain uses a Blockchain with the randomx proof of work algorithm in order to save text records (documents, books, proceedings etc.) into an immutable and distributed network. These documents can be independently verified by anyone with a computer, and once the document is on the chain, it can't be changed. The documents are sent peer to peer, so the control of documents is not centrally influenced.
Users can download the app, or use an online version. Users can then browse, search and upload text records through a simple web interface. While the app is running, it provides work and mines on the chain, helping to lengthen the chain and therefore secure the documents. This way, the the documents are not controlled by a central entity, but by the collective users of the application.
How we built it
Bookchain was built using python and js.
The main miner is built using python, with flask to facilitate the peer to peer networking. RandomX was used as the proof of work algorithm.
The sample client was built using React.
The entire app is containerized in docker so that it can be easily deployed to cloud systems.
Accomplishments that we're proud of
Rolling out an entire working Blockchain in a night with a real proof of work algorithm and peering!
We choose Monero's new RandomX for our proof of work algorithm as it has been heavily audited and was rolled out successfully for Monero last November. RandomX is based on execution of randomized algorithms (hence the name) optimized for general use processors that are in everyday computers (think AMD and Intel processors). This is important for our vision of a distributed public records network that is powered by the general public. Optimization for these processors along with random algorithm execution consequently makes it difficult to develop specialized computers called ASICS or FPGAs to take over the majority of the network power.
What we learned
The principles behind the blockchain are actually quite simple, it was surprisingly straightforward to implement. Also, don't leave your frontend to the last minute :)
What's next for Bookchain
There are lots of things that still need to be done to make this a fully featured and secure blockchain ecosystem. These include:
- Private/public key encryption to prove origin/ownership
- Syncing queued books that are to be added to the chain across peers
- More functionality on the Bookchain explorer (Currently you can only search blocks by height)
- Network difficulty consensus and automatic adjustments
In addition, we want to move it to C++ to take full advantage of each computer's resources.