Skip to content

xtellurian/DappCheatSheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 

Repository files navigation

DappCheatSheet

Comparison of various technologies for creating distributed applications.

Technologies

Included:

  • Ethereum: A generic blockchain platform
  • Hyperledger Fabric: A modular blockchain platform
  • Quorum: A permissioned blockchain built on Ethereum
  • R3 Corda: A permissioned distributed ledger built on the JVM

Terminology

  • Governance: How changes are proposed and introduced into a network.
  • Node: A logically independant participant in a decentralised computational network. E.g an Ethereum miner.
  • Zero Knowledge Proof: One party, the prover, can convince another party, the verifier, that a given statement is true, without revealing any information beyond the validity of the statement itself. Implemented in Ethereum as ZK-Snarks. Read the white paper

Related Technologies

Comparison

Summary

Ethereum Quorum Hyperledger Fabric R3 Corda
Documentation Good OK OK Good
Consensus PoA, PoW, PoS (beta) RAFT, Instanbul BFT Pluggable (PoW, PoA, BFT etc) Notary: RAFT
Networks & Governance Public/Consortium/Private. Ethereum Foundation Consortium/Private. JP Morgan Chase Consortium/Private. Linux Foundation Consortium/Private. R3 Consortium
Permissioning No Yes Yes, with Sawtooth Yes
Native Confidentiality No Yes Yes Yes
Development Language: Solidity, Client: web3.js/ web3j Language: Solidity, Client: web3.js (modified) Go & NodeJS Kotlin & Java
Ecosystem Large Potentially Large (from Ethereum) Medium Small
In Production Yes No No No

Documentation

Source Ethereum Quorum Hyperledger Fabric R3 Corda
Official EthDocs , Wiki Wiki Read the Docs Docs
Github ethereum J.P. Morgan Chase hyperledger Corda
Forums Stack Exchange tagged Quorum tagged Hyperledger-fabric tagged Corda
Chat Gitter ? Rocket Slack

Consensus

Algorithm Description Ethereum Quorum Hyperledger Fabric R3 Corda
Byzantine Fault Tolerant (BFT) General term: a network that avoids catastrophic system failure, even if some of the nodes are unreliable. Named after a 1982 paper by Leslie, Shostak and Pease called "The Byzantine Generals Problem". Yes Yes Yes Notaries: Yes via RAFT. Nodes: No by design (all nodes are trusted)
Proof of Work (PoW) Revolutionary consensus algorithm implemented in Bitcoin. Nodes solve artibrarily hard cryptographic puzzles, randomly distributing the right determine the order of transactions accross the nodes. Generally not scaleable (Tx/sec). Compute intensive. Enables public networks and anonymous nodes. Yes No No No
Proof of Stake (PoS) Nodes 'stake' some valuable crypto-asset (e.g. ether) for the right to determine the order of transactions (i.e. create new blocks). Nodes are game-theoretically incentivised to be trustworthy through a system of rewards and punishments proportional to stake. Yes (Casper) No No No
Proof of Authority (PoA) Only nodes with correctly signed certificates can determine the order of transactions and create new blocks. Yes Yes Yes Yes
RAFT Nodes elect a leader who's responsibility it is to determine the order of transactions. Fast consensus. Suitable only for private networks because leader based consensus algorithms are vulnerable to DDOS attack. Video: Raft in 20 mins No Yes Not by default Yes as Notary Nodes

Networks & Governance

Ethereum Quorum Hyperledger Fabric R3 Corda
Public Ethereum is generally domainated by ETH, but there exist hard forks including Ethereum Classic (ETC) and EtherZero (ETZ). There is one ETH mainnet and several test nets including Morden. Public networks generally use a PoW consensus algorithm. Governance of this network is determined only by the emergent behaviour of the nodes. In practice, governance is achieved by the community of developers. Disagreement in the community may result in a 'fork', eg: Ethereum Classic No No? No
Consortium/ Private Anyone can create a new consortium or private network using PoW or PoA. The Rinkeby testnet uses PoA. Designed for consortium or private networks. Uses an Ethereum Network and a Constellation network side-by-side to provide private data features. Designed for consortium or private networks. Designed for consortium or private networks.
Technology Ethereum Foundation JP Morgan Chase Linux Foundation: Hyperledger Project R3: a network of over 60 companies

Permissioning

Properly permissioned blockchain networks differ from unpermissioned blockchain networks solely based on the presence (or absence) of an access control layer built into the blockchain nodes. Permissioned blockchain networks allow the network to appoint a group of participants in the network who are given the express authority to provide the validation of blocks of transactions. Or, to participate in the consensus mechanism. source

Ethereum Quorum Hyperledger Fabric R3 Corda
Native No Yes Yes Yes
Microsoft Coco Framework Yes Yes Hyperledger Sawtooth Yes

Confidentiality

Ethereum Quorum Hyperledger Fabric R3 Corda
Private Data Possible but not native Natively yes via Constellation Natively yes via Channels Natively yes, because all communication is direct P2P, but data is shared with validating notaries

Note on private data and Coco Framework: support for (confidential transactions) should be present(or added)in the integrated blockchain protocol.

Development

Ethereum Quorum Hyperledger Fabric R3 Corda
Contract^1 Language Solidity, Serpent (deprecated) , Vyper (experimental) Solidity, Serpent (deprecated) , Vyper (experimental) Chaincode can be written in any programming language and executed in containers. The first fully supported chaincode language is Golang Java, Kotlin
Execution Environment EVM^2, implemented by: Geth in golang, or Parity in Rust, cpp etherum in c++ Modified EVM, fork of Geth Docker (Ubuntu), with base image on DockerHub Java Virtual Machine (JVM)
External API JSONRPC JSONRPC (modified) CLI, REST Deprecated WebServer
Client Library web3.js, web3j for Java & Android web3 (modified) Hyperledger Fabric SDK for Node.js none
Developer Tools Truffle, Embark, Dapp, Remix solidity editor, Eth Fiddle solidity editor
  1. Distributed logic in the generic sense, not in the Corda specific sense.

  2. The Ethereum Virtual Machine (EVM) can be thought of as a large decentralized computer containing millions of objects, called "accounts", which have the ability to maintain an internal database, execute code and talk to each other.

Ecosystem

Ethereum Quorum Hyperledger Fabric R3 Corda
Browsers Mist, Toshi, Status, Cypher
Applications uPort, Basic Attention Token, auger, Crypto Kitties, EtherRisc, see State of the Dapps for an extensive list
Tools MetaMask

Strengths

Ethereum Quorum Hyperledger Fabric R3 Corda
Largest developer community and ecosystem Native Confidentiality tools Component Modularity Private data between 2+ parties
Public and Private options Permissioning tools
Strong EVM determinism

Weaknesses

Ethereum Quorum Hyperledger Fabric R3 Corda
No native "enterprise" features Unlike Ethereum's EVM that's guarenteed deterministic, there is no "Corda Virtual Machine" and Corda has no strong determinism guarantee.
Identities are tied to nodes, rather than public/private key pairs.
Currently, state is stored to disk via H2 SQL, disabling high availability

Relevant resources

About

Comparison of various technologies for creating distributed applications.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published