Git Product home page Git Product logo

blockchainlab's Introduction

πŸ”¬ Blockchain Laboratory

Blockchain Laboratory: β‚Ώitcoin experiments.

🚦 Getting Started

Installation

brew tap danielfalbo/homebrew-formulae
brew install blockchainlab

Usage

Interactive mode: design your own experiment

Run

blockchainlab

to launch the app in interactive mode: it will guide you through the desing of your own experiment.

Run an example experiment

blockchainlab <experiment>

🧫 Available Experiments

Simple Transactions (basics)

Bitcoins are transferred between agents and transactions are validated by miners competing in constructing blockchains.

Double-Spending (doubleSpending)

A malicious agent attempts to create a double-spending transaction by submitting multiple payment attemps summing up to a larger amount of coins than he owns. Will the system allow them to spend more than they own?

Invalid Transaction (invalidTransaction)

A malicious miner attempts to create an invalid block that includes a transaction moving bitcoins to their wallet from someone else's without their consensus.

51% Attack (51percentAttack)

An attacker gains control of more than 50% of the mining power in the network. Will them be able to validate new malicious transactions and get the invalid blocks to survive in the blockchain?

Bogus Transactions (bogusTransactions)

A malicious agent attempts to flood the network with bogus transactions to disrupt the validation process. Will this slow down the network?

Selfish Mining (selfishMining)

A selfish miner attempts to manipulate the network by withholding valid blocks they have found in order to gain an advantage over other miners. They may then release multiple blocks at once in order to invalidate the work of other miners and gain a larger share of the rewards.

πŸ‘¨β€πŸ’» Contributing

Want to contribute? Read the Developer's Notes

πŸ›£οΈ Roadmap

  1. MultithreadedMiner
  2. Have MultithreadedMiners get the blocks to mine from some sort of shared queue "pool", and notify all other miners to stop working once a block is mined.
  3. Have MultithreadedMiners to push mined blocks onto another different sort of "pool" of mined blocks, for nodes/validators/whoever to validate them with the blockchain and eventually merge them.
  4. We'll figure it out.

🌍 Resources

blockchainlab's People

Contributors

danielfalbo avatar fra179 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.