therealdannzor / jonah Goto Github PK
View Code? Open in Web Editor NEWAn attempt to build a blockchain in C++ for educational purposes
An attempt to build a blockchain in C++ for educational purposes
As a user I can create and read wallets, so that it can be done when the blockchain is active
Acceptance criteria
As a user I can send transactions which are created and validated locally, so that counterfeit or invalid transactions are rejected
Acceptance criteria
Transaction
class extended with methods to validate
and create
objects that contains necessary infoAs a user I can type commands in the chain CLI, so that my balance and the balance of other addresses successfully can be read
Acceptance criteria
me
This project should serve as a way to introduce the audience to the major components of a blockchain. It can be useful to understand the project from a helicopter perspective before going into the nitty gritty. Proposal of the different parts:
core
: contains the core protocol and orchestrating the blockchain network. Its purpose is to coordinate all the different parts of the network so a user can utilise it in a coherent way.
currency
: contains the cryptocurrency protocol used in the network. Its purpose is to solely be responsible for how value is measured between accounts and the configuration settings. Note that this is not the same as transferring currencies.
account
: contains the whole account management logic; including wallet generation/setup and assembly of transactions from the perspective of the user. Its purpose is to solely encapsulate all local actions of a node.
block
: contains the whole block lifecycle management (creation, assembly, verification, chain insertion). Its purpose is to coordinate control of read and write to blocks with other parts of the project.
pool
: contains the whole transfer mechanism lifecycle of adding a transaction to the local transaction pool to publishing it to the wider network. Its purpose is to coordinate access between block and account management as well as the currency protocol.
miner
: contains the whole propagation mechanism of blocks on the networks, i.e. the blocks to be appended to the chain. Its purpose is to manage the consensus mechanism (incl. any rewards) and controlling the flow of blocks in the network.
p2p
: contains the whole p2p mechanism on the network. Since this could be a project in itself it will be based on the KISS principle (as simple as possible). Its purpose is to coordinate communications between peers on the network.
As a user I want to make sure that transactions between two accounts work, so that I dare to transfer my own crypto at some point
Acceptance criteria
As a user I can communicate with other peers, so that the blockchain can become distributed
Acceptance criteria
As a user I want to be able to access my own address easily through the CLI, as well as other saved addresses, so that I can easily view them without having to open a plain text file
Acceptance criteria
account list
account saved
As of now this dependency is assumed to be in .static
, unpacked and all. Instead, a user should easily be able to get this dependency locally as with libsodium.
As a user I can save a wallet to a key file locally and read it, so that it can be re-used multiple times
Acceptance criteria
Currently, development is done through parallel hacky happy path testing in main.cpp. This is not sufficient for certain parts of the project despite that major refactoring may happen. We need unit tests for certain critical parts of the project.
Acceptance criteria:
Add full test coverage for
currency.cpp
blockchain.cpp
signer.cpp
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.