Curated list of resources for the development and applications of blockchain.
Go to file
2018-11-27 14:24:20 +08:00
Basic update 2018-10-29 16:58:01 +08:00
BitCoin add bitcoin content 2018-10-23 15:58:03 +08:00
Ethereum update 2018-04-02 17:22:09 +08:00
Extension update 2018-11-03 12:08:44 +08:00
LICENSE Initial commit 2018-03-30 09:16:57 +08:00
README.md update 2018-11-27 14:24:20 +08:00

Awesome Blockchain

Awesome

Curated list of resources for the development and applications of block chain.

The blockchain is an incorruptible digital ledger of economic transactions that can be programmed to record not just financial transactions but virtually everything of value (by Don Tapscott).

This is not a simple collection of Internet resources, but verified and organized data ensuring it's really suitable for your learning process and useful for your development and application.

Contents

Frequently Asked Questions (F.A.Q.s) & Answers

Q: What's a Blockchain?

A: A blockchain is a distributed database with a list (that is, chain) of records (that is, blocks) linked and secured by digital fingerprints (that is, crypto hashes). Example from blockchain.rb:

[#<Block:0x1eed2a0
    @timestamp     = 1637-09-15 20:52:38,
    @data          = "Genesis",
    @previous_hash = "0000000000000000000000000000000000000000000000000000000000000000",
    @hash          = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b">,
    #<Block:0x1eec9a0
    @timestamp     = 1637-09-15 21:02:38,
    @data          = "Transaction Data...",
    @previous_hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b",
    @hash          = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743">,
    #<Block:0x1eec838
    @timestamp     = 1637-09-15 21:12:38,
    @data          = "Transaction Data......",
    @previous_hash = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743",
    @hash          = "be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4">,
    ...

Q: What's a Hash? What's a (One-Way) Crypto(graphic) Hash Digest Checksum?

A: A hash e.g. eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743 is a small digest checksum calculated with a one-way crypto(graphic) hash digest checksum function e.g. SHA256 (Secure Hash Algorithm 256 Bits) from the data. Example from blockchain.rb:

def calc_hash
  sha = Digest::SHA256.new
  sha.update( @timestamp.to_s + @previous_hash + @data )
  sha.hexdigest   ## returns "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743"
end

A blockchain uses

  • the block timestamp (e.g. 1637-09-15 20:52:38) and
  • the hash from the previous block (e.g. edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b) and finally
  • the block data (e.g. Transaction Data...)

to calculate the new hash digest checksum, that is, the hash e.g. be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4.

Q: What's a Merkle Tree?

A: A Merkle tree is a hash tree named after Ralph Merkle who patented the concept in 1979 (the patent expired in 2002). A hash tree is a generalization of hash lists or hash chains where every leaf node (in the tree) is labelled with a data block and every non-leaf node (in the tree) is labelled with the crypto(graphic) hash of the labels of its child nodes. For more see the Merkle tree Wikipedia Article.

Note: By adding crypto(graphic) hash functions you can "merkelize" any data structure.

Q: What's a Merkelized DAG (Directed Acyclic Graph)?

A: It's a blockchain secured by crypto(graphic) hashes that uses a directed acyclic graph data structure (instead of linear "classic" linked list).

Note: Git uses merkelized dag (directed acyclic graph)s for its blockchains.

Q: Is the Git Repo a Blockchain?

A: Yes, every branch in the git repo is a blockchain. The "classic" Satoshi-blockchain is like a git repo with a single master branch (only).

More Q&A

Basic Introduction

Development Tutorial

BitCoin

Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network.

Ethereum

Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third-party interference.

These apps run on a custom built blockchain, an enormously powerful shared global infrastructure that can move value around and represent the ownership of property.

Consortium Blockchain

Fabric

FISCO-BCOS

Releated Tools

Solidity

truffle

web3.js

Projects and Applications

Monero

IOTA

Q: What is IOTA?

IOTA is a revolutionary new transactional settlement and data integrity layer for the Internet of Things. Its based on a new distributed ledger architecture, the Tangle, which overcomes the inefficiencies of current Blockchain designs and introduces a new way of reaching consensus in a decentralized peer-to-peer system. For the first time ever, through IOTA people can transfer money without any fees. This means that even infinitesimally small nanopayments can be made through IOTA.

IOTA is the missing puzzle piece for the Machine Economy to fully emerge and reach its desired potential. We envision IOTA to be the public, permissionless backbone for the Internet of Things that enables true interoperability between all devices.

EOS

IFPS

Further Extension

Books

Applications

Identity Applications

Public Blockchain Identity
  • Blockstack - Platform for decentralized, server-less apps where users control their data. Identity included.
  • Evernym - Self-Sovereign identity built on top of open source permissioned blockchain.
  • Jolocom - Self-sovereing identity wallet.
  • SIN - Proposed identity protocol for BitCoin.
  • uPort - Self-Sovereign identity on Ethereum by ConsenSys.
Blockchain as a collateral
  • ShoCard - Proprietary digital identity service, uses blockchain for time-stamping and secure documents exchange.
  • Tradle - Makes a bank on blockchain, identity as a collateral.
Unclear
  • KYC Chain - Secure platform for sharing verifiable identity claims, data or documents among financial institutions.
  • ObjectChain Collab - Cross-industry collaboration over distributed identity.
  • UniquID - Identity both for people and devices.
  • Vida Identity - Enterprise-grade Blockchain Identity Software.
Guidance
  • ID3 - Institute for Data Driven Design, explores issues around self-sovereign identity, and distributed organizations.
  • OpenCreds - W3C Credentials Community Group.
  • TAO Network Identity - Description of blockchain identity by Tao.Network.

Internet of Things Applications

  • Chronicled - IoT devices registry on blockchain.
  • Filament - Software and hardware for decentralized Intranet of Things systems
  • IOTA - Decentralized Internet of Things token on blockless blockchain.
  • Machinomy - Distributed platform for IoT micropayments.
  • Project Oaken - IoT blockchain platform.
  • Slock.it - Ethereum-based platform for building Shared Things.

Energy Applications

Media and Journalism

  • Steem - Decentralized social network which incentivises content creation and curation.
  • PopChest - Incentivized distributed video platform.
  • Civil - Decentralized newsmaking platform.

Contribute

Contributions welcome!

  1. Fork it (https://github.com/yjjnls/awesome-blockchain/fork)
  2. Clone it (git clone https://github.com/yjjnls/awesome-blockchain)
  3. Create your feature branch (git checkout -b your_branch_name)
  4. Commit your changes (git commit -m 'Description of a commit')
  5. Push to the branch (git push origin your_branch_name)
  6. Create a new Pull Request

If you found this resource helpful, give it a 🌟 otherwise contribute to it and give it a .