/Tyche_Blockchain

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

Primary LanguageJavaScript

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 :

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.
      • Adding state and fetching data.
      • Create all front-end with React.
      • 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

      • Create all front-end with React.
      • ...
  • Part 10: Deploy Project

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

      • Set new ideas and features for Tyche.
      • Make implementations and discuss about private or public architecture.
      • Make GUI for blockchain.
      • Make GUI for Tyche coin.
      • Change proof-of-work to proof-of-stake.
      • 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.
      • Collect all documents for Tyche essay.