Skip to content

Tyche Blockchain is focused on creating a blockchain based on proof-of-work and deploy Tyche Coin as the cryptocurrency.

Notifications You must be signed in to change notification settings

jestemAria/Tyche_Blockchain

Repository files navigation

Tyche_Blockchain

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.

About Tyche Blockchain:

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

TODO:

  • Part 1: Blocks

      • 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.
  • Part 2: Blockchain

      • 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.
  • Part 3: Proof-of-work

      • 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.
  • Part 4: API and networks

      • 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.
  • Part 5: Wallet, Keys and Transactions

      • 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.
  • Part 6: Transaction Pool

      • 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.
  • Part 7: Mining Transactions

      • 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.
  • Part 8: Blockchain Front-End

      • Provide live updates during development.
      • Make components for the front-end.
        • Make App component.
        • Make Blocks component.
        • Make Block component.
      • 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.
      • ...
  • Part 9: Cryptocurrency 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.
      • ...
  • Part 10: Deploy Project

      • Deploy the project on Heroku PAAS.
      • Deploy the project on Fandogh PAAS.
  • Part 11: Other and Non-categorized ones

      • 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.

About

Tyche Blockchain is focused on creating a blockchain based on proof-of-work and deploy Tyche Coin as the cryptocurrency.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages