_ _ _ _
(_) (_) | | (_)
_ __ ___ _ _ __ _ ___| |__ __ _ _ _ __
| '_ ` _ \| | '_ \| |/ __| '_ \ / _` | | '_ \
| | | | | | | | | | | (__| | | | (_| | | | | |
|_| |_| |_|_|_| |_|_|\___|_| |_|\__,_|_|_| |_|
Minimal implementation of blockchain
Written in CSharp
pjc0247@naver.com
This project contains some known bugs and may not be fixed.
But you can still learn how blockchain system works.
I'm currently working on the another fork of this project.
This includes some fixes which is not fixed in `minichain`.
Please check the repository below:
https://github.com/pjc0247/mchain
Minimal implementation of BLOCKCHAIN, written in CSharp.
Documentation
- P2P communication between nodes
- How to create(mine) a new block and distribute to chain
- Consensus based on
Proof of work
- Store/Retrive data(state) into blockchain
- Signing transaction (Using asymmetric key validation)
You can also learn (See example projects)
- Create a hardfork update to ongoing blockchain.
- Bad node attack
-
Consensus
- Proof of Work
-
Block Structure
-
Block Validation
txs
must be a non empty array (except genesis-block)txs[0]
must be a reward transaction.- Check the block has valid minerAddress
- Check the block proper difficulty
- Check the nonce with block difficulty