Introduction to JPMorgan Chase's Enterprise Blockchain Project Quorum

Introduction to JPMorgan Chase's Enterprise Blockchain Project Quorum

JPMorgan Chase, one of the largest financial services institutions in the United States, became interested in Bitcoin and its underlying technology in early 2015. From recruiting cryptocurrency experts, joining the blockchain alliance R3CEV, cooperating with Digital Asset Holdings to carry out blockchain pilot projects, testing blockchain remittances, launching the distributed ledger prototype Juno, to launching the enterprise-level blockchain project Quorum, JPMorgan Chase's blockchain exploration journey is moving from the beginning to the leading position.

This article is an introduction to JPMorgan Chase's blockchain project Quorum.

“JP Morgan has been using open source software for a long time and we are excited about the opportunity to give back to the community. Quorum is a collaborative project and we look forward to working with technology experts around the world to advance distributed ledger technology.” - Lori Beer, Chief Information Officer, Corporate and Investment Bank, JP Morgan

Quorum is a distributed ledger protocol based on Ethereum that has transaction and contract privacy features, which are achieved through a new consensus mechanism.

Key enhancements:

  1. QuorumChain - a new consensus model based on majority voting;

  2. Constellation – a peer-to-peer encrypted information exchange capability;

  3. Peer Security - Node/peer permission to use smart contracts;

Architecture

The above diagram is an overview of Quorum's privacy architecture. For a more in-depth discussion of its composition, see the wiki page.

Get started quickly

The quickest way to use Quorum is with VirtualBox and Vagrant :

 git clone https://github.com/jpmorganchase/quorum-examples
cd quorum-examples
vagrant up
# (should take 5 or so minutes)
vagrant ssh

Now that you have a fully functional Quorum environment set up, we will run a 7-node cluster example. This will start several nodes, including voting nodes, block production nodes, and unprivileged nodes.

 # (from within vagrant env, use `vagrant ssh` to enter)
ubuntu@ubuntu-xenial:~$ cd quorum-examples/examples/7nodes
$ ./init.sh
# (output condensed for clarity)
[*] Cleaning up temporary data directories
[*] Configuring node 1
[*] Configuring node 2 as block maker and voter
[*] Configuring node 3
[*] Configuring node 4 as voter
[*] Configuring node 5 as voter
[*] Configuring node 6
[*] Configuring node 7
$ ./start.sh
[*] Starting Constellation nodes
[*] Starting bootnode... waiting... done
[*] Starting node 1
[*] Starting node 2
[*] Starting node 3
[*] Starting node 4
[*] Starting node 5
[*] Starting node 6
[*] Starting node 7
[*] Unlocking account and sending first transaction
Contract transaction send: TransactionHash: 0xbfb7bfb97ba9bacbf768e67ac8ef05e4ac6960fc1eeb6ab38247db91448b8ec6 waiting to be mined...
true

Now, we have a quorum of 7 nodes, and send a private smart contract (SimpleStorage) from节点1 to节点7;

Use the following command to connect and check the node:

 $ geth attach ipc:qdata/dd1/geth.ipc
$ geth attach ipc:qdata/dd2/geth.ipc
...
$ geth attach ipc:qdata/dd7/geth.ipc
#eg
$ geth attach ipc:qdata/dd2/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.5.0-unstable/linux/go1.7.3
coinbase: 0xca843569e3427144cead5e4d5999a3d0ccf92b8e
at block: 679 (Tue, 15 Nov 2016 00:01:05 UTC)
 datadir: /home/ubuntu/quorum-examples/7nodes/qdata/dd2
 modules: admin:1.0 debug:1.0 eth:1.0 net:1.0 personal:1.0 quorum:1.0 rpc:1.0 txpool:1.0 web3:1.0
> quorum.nodeInfo
{
  blockMakerAccount: "0xca843569e3427144cead5e4d5999a3d0ccf92b8e",
blockmakestrategy: {
maxblocktime: 10,
minblocktime: 3,
status: "active",
type: "deadline"
},
canCreateBlocks: true,
canVote: true,
  voteAccount: "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
}
# let's look at the private txn created earlier:
> eth.getTransaction("0xbfb7bfb97ba9bacbf768e67ac8ef05e4ac6960fc1eeb6ab38247db91448b8ec6")
{
  blockHash: "0xb6aec633ef1f79daddc071bec8a56b7099ab08ac9ff2dc2764ffb34d5a8d15f8",
blockNumber: 1,
  from: "0xed9d02e382b34818e88b88a309c7fe71e65f419d",
gas: 300000,
gasPrice: 0,
  hash: "0xbfb7bfb97ba9bacbf768e67ac8ef05e4ac6960fc1eeb6ab38247db91448b8ec6",
  input: "0x9820c1a5869713757565daede6fcec57f3a6b45d659e59e72c98c531dcba9ed 206fd0012c75ce72dc8b48cd079ac08536d3214b1a4043da8cea85be858b39c1d",
nonce: 0,
  r: "0x226615349dc143a26852d91d2dff1e57b4259b576f675b06173e9972850089e7",
  s: "0x45d74765c5400c5c280dd6285a84032bdcb1de85a846e87b57e9e0cedad6c427",
to: null,
transactionIndex: 1,
v: "0x25",
value: 0
}

Note in particular the v field of “0x25” (37 in decimal), which marks the transaction as having a private payload (input).

Demonstration Privacy

A detailed step-by-step guide introducing the privacy features of Quorum can be found at quorum-examples/7nodes/README.

Further reading

Further documentation can be found in the docs folder and on the wiki pages.

You can also view

Quorum – https://github.com/jpmorganchase/quorum (this repository)

Constellation – https://github.com/jpmorganchase/constellation

Quorum Examples - https://github.com/jpmorganchase/quorum-examples

Quorum Wiki Page - https://github.com/jpmorganchase/quorum/wiki

<<:  iEx.ec, a distributed cloud computing platform, hopes to use blockchain to reuse idle computing power and thermal energy

>>:  Bitcoin Black Friday is about to begin, are you ready to spend?

Recommend

Judging a person's character from the hardness and softness of his hands

The elders always like to say that if a person...

How to read the palm lines of a woman destined to be rich and famous

Which woman in life does not want to be rich in t...

Nasal folds: Is it good to have nasolabial folds?

Nasal folds: Are people with nasolabial folds goo...

Winners and prisoners: They want to turn the tables with Bitcoin

Since then, Bitcoin, which was in a remote and ma...

How to look at the shape of the eyes in physiognomy

The shape of the eyes in physiognomy is also an i...

A powerful tool to solve the three major problems of blockchain

Although blockchain technology is developing rapi...

ViaBTC: Bitcoin miners reject SegWit for no technical reasons

Given the overwhelming support for Segwit2x, it’s...

Palmistry shows which women will make their ex-lovers miss them forever

After your ex-lover left you, do you often miss y...