All Projects → drewrice2 → simple_blockchain

drewrice2 / simple_blockchain

Licence: other
Blockchain code made simple.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to simple blockchain

smurf
simple markdown surfer
Stars: ✭ 38 (+58.33%)
Mutual labels:  simple
playground-for-beaver-themer
Simple bare-bone WordPress theme for Beaver Themer plugin.
Stars: ✭ 16 (-33.33%)
Mutual labels:  simple
lwpkt
Lightweight packet protocol structure for multi-device communication focused on RS-485
Stars: ✭ 71 (+195.83%)
Mutual labels:  simple
SMmuiscPlay
🎼极简模式JavaScript音乐播放器组件,极简、小巧、无依赖、可定制,适用于手机页面,H5活动页,微信页面等的音乐播放支持
Stars: ✭ 40 (+66.67%)
Mutual labels:  simple
webpack-boilerplate
Webpack 4 boilerplate (babel, eslint, prettier, jest, sass, postcss, hmr, browsersync)
Stars: ✭ 33 (+37.5%)
Mutual labels:  simple
CalDOM
An agnostic, reactive & minimalist (3kb) JavaScript UI library with direct access to native DOM.
Stars: ✭ 176 (+633.33%)
Mutual labels:  simple
httpfs
Go 编写的静态文件服务器,支持文件拖拽上传,无第三方包依赖, 支持 Windows, Linux , Darwin。
Stars: ✭ 28 (+16.67%)
Mutual labels:  simple
logger
☠ 😈 👀 Simple,Secure & Undetected (6.11.2017) keylogger for Windows :)
Stars: ✭ 37 (+54.17%)
Mutual labels:  simple
jpopup
Simple lightweight (<2kB) javascript popup modal plugin
Stars: ✭ 27 (+12.5%)
Mutual labels:  simple
Recon
HA LDAP based key/value solution for projects configuration storing with multi master replication support
Stars: ✭ 12 (-50%)
Mutual labels:  simple
ethereum-ingest
JavaFX and commandline application to import events from the Ethereum blockchain into ElasticSearch, MongoDB, Hazelcast, CQEngine and SQLite.
Stars: ✭ 34 (+41.67%)
Mutual labels:  ether
ytmous
Anonymous Youtube Proxy
Stars: ✭ 60 (+150%)
Mutual labels:  simple
SmartHold-contracts
Ethereum Smart Contracts for locking your Ether and ERC20 tokens based on time and price conditions
Stars: ✭ 23 (-4.17%)
Mutual labels:  ether
ethtoken.py
Ethereum ERC20 Token Interface, in Python
Stars: ✭ 40 (+66.67%)
Mutual labels:  ether
simple-style
My simple style hugo theme, based on <https://yanlinlin82.github.io/webpage-templates/simple-style/index.html>
Stars: ✭ 25 (+4.17%)
Mutual labels:  simple
simple-commands
An (even more) simplified and intuitive command framework for Spigot.
Stars: ✭ 14 (-41.67%)
Mutual labels:  simple
vertx-start
简单地、快速地启动vert.x的手脚架,保留了vert.x原汁原味的开发方式
Stars: ✭ 102 (+325%)
Mutual labels:  simple
solidstate-solidity
💠 Upgradeable-first Solidity smart contract development library 💠
Stars: ✭ 264 (+1000%)
Mutual labels:  ether
mocha-simple-html-reporter
Simple HTML reporter for Mocha
Stars: ✭ 16 (-33.33%)
Mutual labels:  simple
Frontend-Learning-Journey
Tutorials, definitions, frameworks and some of the projects i made when starting to learn frontend web developement
Stars: ✭ 28 (+16.67%)
Mutual labels:  simple

simple_blockchain

This repo was inspired by Satoshi Nakamoto's blockchain whitepaper and Aunyks's tiny blockchain implementation in Python.


Implementation

Blocks!

A block is an object that contains, in this implementation, a series of transactional data. All previous transactions are available in a ledger called the blockchain. A blockchain is a sequence of blocks agreed upon by a network of workers. Thus the integrity of the whole system can be verified by using a mathematical function in which the answer is difficult to obtain but easy to check. This mathematical check can be performed on each block all the way back to the first block. The validity of the blocks is determined by using a Proof of Work algorithm. More on that later.

Nodes

Upon startup, nodes check for peers and their respective blockchains. If no peers are found, an initial block is created. A node can process a transaction, mine, and return the blockchain upon request.

Consensus Algorithm

A blockchain is decided to be the master chain by evaluating lengths of other nodes' blockchains. The longest chain is decided to be the master blockchain. I plan to implement the consensus algorithm outlined in Nakamoto's paper which seeks the longest chain with the greatest proof of work.

Mining

Mining from a node is a transactional relationship where the miner is rewarded for completing a very simple, yet verifiable mathematical task. Similar to the Proof of Work outlined in Nakamoto's whitepaper, this implementation requires a hash be created with a specified number of leading zero bits. This hash is a result of passing a string, made by concatenating a Block's previous hash and a nonce (the constant the miner is solving for), through the SHA256 hashing function. Once the nonce is solved for, the miner is rewarded and a new block is generated.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].