摩根大通企业版区块链项目Quorum简介

2016-11-24 16:00 来源:巴比特资讯 阅读:5201
摩根大通,作为美国最大的金融服务机构之一,其在2015年初时便对比特币及其底层技术产生了兴趣,从招聘加密货币专家、加入区块链联盟R3CEV、与数字资产控股公司(Digital Asset Holdings)合作开展区块链试验项目、测试区块链汇款、推出分布式账本原型Juno(朱诺),到推出企业级区块链项目Quorum,摩根大通的区块链探索之路,正从起步,变成领跑。

摩根大通,作为美国最大的金融服务机构之一,其在2015年初时便对比特币及其底层技术产生了兴趣,从招聘加密货币专家、加入区块链联盟R3CEV、与数字资产控股公司(Digital Asset Holdings)合作开展区块链试验项目、测试区块链汇款、推出分布式账本原型Juno(朱诺),到推出企业级区块链项目Quorum,摩根大通的区块链探索之路,正从起步,变成领跑。

本文是对摩根大通区块链项目Quorum的一个简介。

“JP摩根一直在使用开源软件,很高兴能有机会回馈社区。Quorum是一个合作项目,我们期待与世界各地的技术专家合作,推进分布式账本技术的发展。”  ——J.P.摩根公司和投资银行 首席信息官 Lori Beer

JPMorgan

Quorum是一个基于以太坊的分布式账本协议,其具有交易与合约隐私功能 ,它是通过一种新的共识机制来实现的。

主要增强功能:

  1. QuorumChain - 一个基于多数投票的新共识模型;

  2. Constellation - 一项对等加密信息交换功能;

  3. Peer Security- 使用智能合约的节点/同等节点许可;

 架构

QuorumTransactionProcessing

上图是Quorum的隐私架构概述。有关其构成的更深入讨论,请参阅wiki页面。

快速上手

使用Quorum的最快方法,是使用VirtualBoxVagrant

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

现在您已建立了一个全功能的Quorum环境,然后我们要运行7个节点的集群示例。这会启动几个节点,其中包括投票节点、区块制造节点以及非特权节点。

# (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

现在,我们有了7个节点的Quorum,并从节点1将一个私有智能合约(SimpleStorage)发送至节点7;

使用以下命令,来连接并检查节点:

$ geth attach ipc:qdata/dd1/geth.ipc
$ geth attach ipc:qdata/dd2/geth.ipc
...
$ geth attach ipc:qdata/dd7/geth.ipc
# e.g.
$ 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: "0x9820c1a5869713757565daede6fcec57f3a6b45d659e59e72c98c531dcba9ed206fd0012c75ce72dc8b48cd079ac08536d3214b1a4043da8cea85be858b39c1d",
  nonce: 0,
  r: "0x226615349dc143a26852d91d2dff1e57b4259b576f675b06173e9972850089e7",
  s: "0x45d74765c5400c5c280dd6285a84032bdcb1de85a846e87b57e9e0cedad6c427",
  to: null,
  transactionIndex: 1,
  v: "0x25",
  value: 0
}

特别注意“0x25”(十进制中的37)的v字段,其将交易标记为具有私有有效载荷(输入)。

演示隐私

介绍Quorum隐私特性的详细步骤文档,可在quorum-examples / 7nodes / README 页面中找到。

深入阅读

更多文档可在docs文件夹和wiki页面中找到。

您也可以查看

Quorum – https://github.com/jpmorganchase/quorum(此存储库)

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

quorum例子 - https://github.com/jpmorganchase/quorum-examples

Quorum维基页面 - https://github.com/jpmorganchase/quorum/wiki

声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文

相关阅读