This is the hub of the blockchain project. Continue reading for some background on this project, or just Get Started Already with a few simple instructions.
This project has three parts so far. There is the API, the Admin Client, and the Mobile Client. Eventually there will be a strategy to add a database, containerization, and more complex server configurations. For now, the complete functionality can be tested with just these three applications.
The API provides all of the services to the admin client and the mobile client. It also manages the transaction pool, the creation of blocks, and the blockchain itself.
The admin client serves as the merchant portal for both business and IT. The admin can check transactions, transaction life cycles, inventory, etc. They can also monitor under the hood, such as verifying blocks or the blockchain itself, taking readiness and liveness checks, and tracking network latency. This makes the admin client a powerful, two-fold facing utility.
The mobile client serves as the field user tool. The user will submit transactions with various status types, such as CREATED
, SHIPPED
, CANCELLED
. These status types will map to the inventory and product fulfillment for a given distribution chain. Once the user submits a transaction, the API adds this to the transaction pool which is staged to be added to the blockchain.
This is a repository of the resources this project involves.
The wiki is a resource repository for this project. Anything miscellaneous is likely to be found here.
This is a bird-eye view of the project as I intend it so far. This is a living document, but will not likely be updated with any regularity.
This is a break down of the components of the blockchain, block, and transaction. Many other features are disected here as well.
Here is some background information about this project. This will be updated as major work is completed.
v0.0.1 - Unreleased
9/4/23
This project is a POC blockchain that validates transactions to establish a chain of custody for some entity type.
This project marks an attempt to create a proof-of-concept blockchain network that can validate transactions to establish a chain of custody. This service could be used with a CRUD application to monitor authenticity of transactions, such as RECEIVED, DELIVERED, etc. An additional UI could be used to monitor the overall network state of the blockchain.
Details for this project are yet to come. A brief desciption follows:
There will be a back-end service that accepts transaction requests and manage a queue. It will distribute these transaction requests to a set of nodes. These nodes will process the transactions by mining a crypto-block and assigning the tranactions to this. Then the node will add the block to the blockchain and broadcast to the other nodes so they can also update their blockchains through a validation process.
There will be a front-end UI that will present to a blockchain network admin a series of dashboards and various levels of metrics to monitor the overall network health of the blockchain. This could include average rate of consensus, transaction backlog, or block-chain growth.
There will be a front-end UI that will present to a merchant a series of dashboards a various stages of transactions to monitor the overall throughput of transaction as they pertain to the merchant. This could include RECEIVED, SIGNED, or DELIVERED.
There will be a front-end UI that will present to a field worker a client interface that can create, read, and update transactions. Creating a transaction could represent an order creation. Reading a transaction could be a simple list / detail interface. Updating a transaction could represent changing status in the chain of custody, such as RECEIVED, SIGNED, or DELIVERED.
The following applications are needed for this project:
Pull and run the following applications in order to see the full functionality of this project:
Start each application concurrently to see the full functionality of this project.
The Blockchain API is a maven project. Start this with the following commands:
mvn clean package
java blockchain-api.jar
This API can then be tested athttp://localhost:8080
using Postman.
The Blockchain Web Client is a Vue project. Start the application with the following commands:
yarn
vite
The client can then be tested athttp://127.0.0.1/5137
using the browser.
The Blockchain Mobile Client is a React Native Expo project. Start the application with the following commands:
yarn
expo start
The client can the be tested on a physical device or at127.0.0.1:5333
using an android emulator.
The aim of this project is to build a blockchain network from scratch. This is purely educational and could not / should not every be considered for a production environment.
I'm attempting to journal the progress for future reference. I'll be creating pages for each entry and marking them here.
Feel free to download and enjoy without restrictions.
For questions or comments, please reach out to me at h.yavitz@gmail.com.