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

Good Bitcoin Launches Quick Bitcoin Purchase Service

Editor: What are the advantages of buying coins o...

How is the fortune of people with wide nose bridge in their later years?

Generally speaking, a person's fortune direct...

The most likely face to attract wealth

The most likely face to attract wealth In daily l...

IMF: Regulation should maintain the advantages of digital currencies

The International Monetary Fund (IMF) has release...

What are the requirements for eyebrows? What eyebrow shape brings good luck?

Although medical technology has developed to a re...

What does the marriage palace in physiognomy mean?

What does the marriage palace in physiognomy mean...

People with these eyebrows tend to be harmful to others, so be careful

Messy eyebrows Messy eyebrows are not good. Once ...

What are the facial features of an ambitious man?

In modern life, people's pace of life is very...

What kind of face makes a woman lustful and romantic

In society, it's not just men who are lustful...

What does it mean when a woman has very light eyebrows?

Eyebrows may seem insignificant among facial orga...

How to buy your first Ethereum on Localethereum

Localethereum is a peer-to-peer Ethereum trading ...

How many moles do you know that can cause you big trouble?

The moles on each of our bodies represent certain...