This project is called Tyche Blockchain. It is created as the result of software engineering project course for final bachelor project in university of Zanjan.
Tyche Blockchain is focus on creating a blockchain based on proof-of-work and deploy Tyche Coin as the cryptocurrency.
It is based on JavaScript as the blockchain core and for blockchain backend. The frontend will be based on React but it is not deployed and created yet. The new ideas of Tyche Blockchain and Tyche Coin will be documented as fast as they deploy in the project.
- By : Aria Radmehr
- Head Professor and Supervisor : Sajad Haghzad Klidbary
- Initialized : June 7, 2021
- Finished : July 13, 2022
-
-
- Set up the whole application.
-
- Create block class.
-
- Create the genesis block.
-
- Mine blocks.
-
- Config crypto hash and SHA-256.
-
- Hash in mineBlock.
-
- Pass tests.
-
-
-
- Create Blockchain class.
-
- Make blockchain a real chain connected to each other.
-
- Ensure about chain validation.
-
- Ensure about chain replacement.
-
- Pass tests.
-
- Stub console output after running each test.
-
-
-
- Create difficulty and nonce for a block.
-
- Create Proof-of-work structure and architecture.
-
- Set difficulty and nonce value.
-
- Dynamic difficulty and mine rate.
-
- Adjust the difficulty in mineBlock.
-
- Improve Proof-of-work algorithm.
-
- Config average work script and binary hashes.
-
- Prevent difficulty jumps.
-
- Pass tests.
-
-
-
- Setup API and express API.
-
- Post requests to mine a block.
-
- PubSub pattern for real-time updates.
-
- Setup a mini database.
-
- Broadcasting chain on API.
-
- Make peers and start broadcasting chain.
-
- Sync chain on connect.
-
- Avoid redundant interactions.
-
- Pass tests.
-
-
-
- Create wallet class.
-
- Create key pair and public key.
-
- Assigning data and verifying signatures.
-
- Make transaction objects and the output map.
-
- Make transaction inputs.
-
- Validate transactions.
-
- Create wallets and wallet transactions.
-
- Handling transactions with multiple outputs.
-
- Handling transaction cases.
-
- Pass tests.
-
-
-
- Create transaction pool class and set transactions.
-
- API transactions and mine them.
-
- Handling invalid transactions.
-
- Transaction updates in real-time.
-
- Getting transaction pool map.
-
- Broadcasting transactions.
-
- Sync transaction pool map on connect.
-
- Pass tests.
-
-
-
- Create Transaction miner class.
-
- Grab valid transactions.
-
- Configuring about reward transactions.
-
- Clear blockchain transactions.
-
- Mine transactions endpoint.
-
- Clear recorded transactions on successful replace.
-
- Calculating the balance before each transaction.
-
- Create wallet-info request.
-
- Validating transaction data.
-
- Validating input balances.
-
- Prevent duplicate transactions in block.
-
- Validating transaction chain.
-
- Pass tests.
-
-
-
- Provide live updates during development.
-
- Make components for the front-end.
- Make App component.
- Make Blocks component.
- Make Block component.
- Make components for the front-end.
-
- Adding state and fetching data.
-
- Serve a front-end page.
-
- Add javascript to the front-end.
-
- Build React into the front-end.
- Development.
- Components.
- Fetch and display.
- Styling.
- Build React into the front-end.
-
- ...
-
-
-
- Add a button for showing more or less of a block detail.
-
- Make transaction component.
-
- Config routes between pages and make links.
-
- Make conductTransaction component.
-
- Post transaction from front-end.
-
- Make transaction pool component.
-
- Polling for new transactions live.
-
- Add mine transactions button in the transaction pool page.
-
- ...
-
-
-
- Deploy the project on Heroku PAAS.
-
- Deploy the project on Fandogh PAAS.
-
-
-
- Collecting libraries and data for installation guide.
-
- Write Tyche White-paper.
-
- Publish Tyche Blockchain in papers and Iran blockchain organization.
-
- Publish documents and White-paper in linkedIn.
-