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

Is it good for a woman to have a mole on her right earlobe?

Everyone knows about moles. They are found on eve...

Foreign media: Bitcoin price returns to $50,000 mark

According to foreign media reports on September 6...

Face reading and annual fortune

The area right in the middle of the hairline on t...

A man's marriage line is forked, which means he may divorce his wife.

How to interpret the forked marriage line of a ma...

Selling sex for money

Selling sex for money The first type of facial fe...

Teach you how to identify these people who come with "fraudulent signs"

There are more and more scammers in today's s...

Palmistry: How you look at people

Palmistry: How you look at people Some people are...

Interpretation of the "川" pattern on men's palms

The Sichuan-shaped palm is one of the many palm li...

What does a beautiful and kind-hearted woman look like?

For a woman, being beautiful is far from enough. ...

Origin: Bitcoin was born from this block!

This week, Turong will interpret the hottest conc...

What features reveal your flaws?

What features reveal your flaws? No gold is pure,...