yjjnls / awesome-blockchain

⚡️Curated list of resources for the development and applications of blockchain.
MIT License
3.28k stars 459 forks source link
awesome awesome-list bitcoin blockchain bulletproofs digital-currency dpos eos eosio ethereum fabric iota ipfs mastering-bitcoin mastering-ethereum monero pbft pos pow white-paper

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

Click to expand - [Awesome Blockchain](#awesome-blockchain) - [Contents](#contents) - [Frequently Asked Questions (F.A.Q.s) & Answers](#frequently-asked-questions-faqs--answers) - [Basic Introduction](#basic-introduction) - [Development Tutorial](#development-tutorial) - [BitCoin](#bitcoin) - [Ethereum](#ethereum) - [Consortium Blockchain](#consortium-blockchain) - [Hyperledger](#hyperledger) - [XuperChain](#xuperchain) - [FISCO-BCOS](#fisco-bcos) - [Releated Tools](#releated-tools) - [Solidity](#solidity) - [truffle](#truffle) - [web3.js](#web3js) - [Implementation of Blockchain](#implementation-of-blockchain) - [Projects and Applications](#projects-and-applications) - [Quorum](#quorum) - [Monero](#monero) - [IOTA](#iota) - [EOS](#eos) - [IPFS](#ipfs) - [Filecoin](#filecoin) - [BigchainDB](#bigchaindb) - [BitShares](#bitshares) - [ArcBlock](#arcblock) - [Further Extension](#further-extension) - [Papers](#papers) - [Books](#books) - [Applications](#applications) - [Identity Applications](#identity-applications) - [Public Blockchain Identity](#public-blockchain-identity) - [Blockchain as a collateral](#blockchain-as-a-collateral) - [Unclear](#unclear) - [Guidance](#guidance) - [Internet of Things Applications](#internet-of-things-applications) - [Energy Applications](#energy-applications) - [Media and Journalism](#media-and-journalism) - [DeFi (Decentralised Finance)](#defi-decentralised-finance) - [Roadmaps](#roadmaps) - [Contribute](#contribute)

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 genesis_block.json:

{
    "version": 0,
    "height": 1,
    "previous_hash": null,
    "timestamp": 1550049140488,
    "merkle_hash": null,
    "generator_publickey": "18941c80a77f2150107cdde99486ba672b5279ddd469eeefed308540fbd46983",
    "hash": "d611edb9fd86ee234cdc08d9bf382330d6ccc721cd5e59cf2a01b0a2a8decfff",
    "block_signature": "603b61b14348fb7eb087fe3267e28abacadf3932f0e33958fb016ab60f825e3124bfe6c7198d38f8c91b0a3b1f928919190680e44fbe7289a4202039ffbb2109",
    "consensus_data": {},
    "transactions": []
}

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

A: A hash e.g. d611edb9fd86ee234cdc08d9bf382330d6ccc721cd5e59cf2a01b0a2a8decfff 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 crypto.js:

function calc_hash(data) {
    return crypto.createHash('sha256').update(data).digest('hex');
}

A blockchain uses

to calculate the new hash digest checksum.

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

Hyperledger

XuperChain

XuperChain, the first open source project of XuperChain Lab, introduces a highly flexible blockchain architecture with great transaction performance.

XuperChain is the underlying solution for union networks with following highlight features:

High Performance

Solid Security

High Scalability

Multi-Language Support: Support pluggable multi-language contract VM using XuperBridge technology.

Flexibility: Modular and pluggable design provides high flexibility for users to build their blockchain solutions for various business scenarios.

FISCO-BCOS

Releated Tools

Solidity

truffle

web3.js

Implementation of Blockchain


Projects and Applications

Quorum

Quorum is an Ethereum-based distributed ledger protocol with transaction/contract privacy and new consensus mechanisms.

Quorum is a fork of go-ethereum and is updated in line with go-ethereum releases.

Key enhancements over go-ethereum:

Monero

Monero is a private, secure, untraceable, decentralised digital currency. You are your bank, you control your funds, and nobody can trace your transfers unless you allow them to do so.

Privacy: Monero uses a cryptographically sound system to allow you to send and receive funds without your transactions being easily revealed on the blockchain (the ledger of transactions that everyone has). This ensures that your purchases, receipts, and all transfers remain absolutely private by default.

Security: Using the power of a distributed peer-to-peer consensus network, every transaction on the network is cryptographically secured. Individual wallets have a 25 word mnemonic seed that is only displayed once, and can be written down to backup the wallet. Wallet files are encrypted with a passphrase to ensure they are useless if stolen.

Untraceability: By taking advantage of ring signatures, a special property of a certain type of cryptography, Monero is able to ensure that transactions are not only untraceable, but have an optional measure of ambiguity that ensures that transactions cannot easily be tied back to an individual user or computer.

IOTA

IOTA is a revolutionary new transactional settlement and data integrity layer for the Internet of Things. It’s 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

EOSIO is software that introduces a blockchain architecture designed to enable vertical and horizontal scaling of decentralized applications (the “EOSIO Software”). This is achieved through an operating system-like construct upon which applications can be built. The software provides accounts, authentication, databases, asynchronous communication and the scheduling of applications across multiple CPU cores and/or clusters. The resulting technology is a blockchain architecture that has the potential to scale to millions of transactions per second, eliminates user fees and allows for quick and easy deployment of decentralized applications. For more information, please read the EOS.IO Technical White Paper.

IPFS

IPFS (the InterPlanetary File System) is a new hypermedia distribution protocol, addressed by content and identities. IPFS enables the creation of completely distributed applications. It aims to make the web faster, safer, and more open.

IPFS is a distributed file system that seeks to connect all computing devices with the same system of files. In some ways, this is similar to the original aims of the Web, but IPFS is actually more similar to a single bittorrent swarm exchanging git objects. You can read more about its origins in the paper IPFS - Content Addressed, Versioned, P2P File System.

IPFS is becoming a new major subsystem of the internet. If built right, it could complement or replace HTTP. It could complement or replace even more. It sounds crazy. It is crazy.

Filecoin

Polybase

BigchainDB

BitShares

ArcBlock

EthAir Balloons


Further Extension

Papers

Books

Applications

Identity Applications

Public Blockchain Identity
Blockchain as a collateral
Unclear
Guidance

Internet of Things Applications

Energy Applications

Media and Journalism

DeFi (Decentralised Finance)

Roadmaps


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 ⭐️.