JPM Coin 三部曲 (中) - 摩根大通为何青睐 Quorum 区块链

2023-11-16

本篇是三部曲的第二部分,聊一聊 JPM coin 背后的区块链网络 - Quorum,详解其特点、共识机制,及其如何满足传统银行业的商业需求。

Quorum 被认为是“企业级以太坊”,从2016年起由摩根大通银行启动的开源项目。

(https://github.com/jpmorganchase/quorum)

相对于一般的区块链,Quorum 有以下几个特点:

 

  • 兼容以太坊合约

  • 准入系统,已知节点

  • 链下+链上隐私保护

  • 灵活支持多种共识机制

  • 高性能、速度快、抗分叉

以太坊的克隆

Quorum 之所以可以兼容以太坊的合约,其本身是以太坊客户端 Go 语言版本 (go-ethereum) 的“克隆”,并根据 go-ethereum 发布进行更新。这意味着所有在以太坊上跑的合约,包括如 Truffle 一样的开发框架,都可以直接部署在 Quorum 上。

但这不代表 Quorum 和以太坊网络之间当下可以互通 (Interoperability)。Quorum 更多是一个联盟链,不是所有人都可以随意加入网络。节点的加入与去除需要授权,并且是已知的身份。这个网络里没有挖矿机制,也没有原生代币。尽管保留 Gas 本身,但是删除了以太坊中 Gas 的定价,即 gasPrice = 0,转账时没有矿工费。

注重隐私与监管友好

以太坊的特点是账本公开透明,普通人打开一个以太坊浏览器,就可以查到每笔交易的全部信息。透明性对于公链是一个优点,到了传统行业,却成了无法匹配的痛点。对于金融业而言,数据的隐私非常重要,银行不希望将自己的资产状况和交易记录公之于众,更不愿意这些数据被竞争者获取。

保护隐私性是 Quorum 的核心功能之一,Quorum 将交易分为公开交易与私人交易。

公开交易直接在主链节点间完成,与以太坊基本一致。

而私人交易会放在链下独立的服务器进行加密处理。Quorum 主链上只存储加密后数据的哈希值,而私有交易的数据将存储在链下,通过管理引擎(Tessera 和 Constellation)在节点间共享。只有交易的相关方(以及监管部门)才能看到交易的细节,非相关方无法获取交易细节。

 

主链中所有节点的状态公开,达成绝对的状态共识,而私有状态数据库的情况则不同,不保存全局状态。如果你希望进行一笔私人交易,只需要在发起交易时添加一个 privateFor 的标签,加入节点对象,这笔交易便可以在私有状态数据库中点对点进行。

不过这也会带来一些问题,

1. 一旦 privateFor 的节点列表确认发送,就无法添加新的节点到列表中。换句话说,如果对方事先不处于这笔交易链条的一环,就无法获取之前发生的交易详情。设想,对于某些交易,如果央行或者监管者一开始不在这个网络中,后来决定加入,却无法直接获取之前的交易信息。

2. 由于私有状态数据库是点对点进行,不同步全局状态,这就带来双花的风险。

此外,将数据放在链下的服务器不可避免地带来中心化和单点失败的风险。

为了解决链下隐私方案的缺陷,Quorum 在 2017 年与 Zcash 团队合作,提供了一种链上的隐私方案,连接私有合约以及主链 — 合约的商业逻辑在私有合约内部达成一致,然后在主链上进行清算,并以零知识证明的方式使用 z-token 作为保护隐私的桥梁

 

如何搭建隐私桥梁呢?z-contract 合约会生成与主链资产 1:1 的代币资产 z-tokens。需要注意的是,z-contract 也在主链上运行,只是其资产是隐蔽资产 (Shielded Assets) 可以隐藏交易信息(发送方、接收方、资产数量等)。

对于一笔隐私交易,会按照以下步骤进行:

  1. 卖方创建私人合约,规定合约的细则:包括资产金额、买卖方等。

  2. 买方接受合约,此时双方在私人合约层达成一致。

  3. 私人合约通知买方付款。

  4. 买方将一部分资产从公开主链转移到 z-contract 层,通过 z-tokens 完成隐蔽支付。

  5. 买方通知私人合约支付已经完成。

  6. 私人合约验证支付已经完成,通知卖方转移资产。

  7. 卖方同样通过 z-contract 层的 z-tokens 完成隐秘转移。

  8. 卖方通知私人合约转移已经完成。

  9. 私人合约验证转移已经完成,此时交易完成最终结算。

  10. 其他节点只能看见公开账本上的余额,监管者可以查看 z-contract 层的 z-tokens 转移。

通过增加一层平行的支付网络,交易过程中无需暴露全部的信息,资产在链上清算避免双花和中心化的风险。同时,也给监管者提供了便利。

灵活的共识机制 - 追求最终性 (Finality)

Quorum 可以支持三种共识机制,包括 PoA、RAFT 和 IBFT。

在介绍这几种共识机制之前,我们发现 Quorum 并没有支持最常见的 PoW (工作量证明) 或者 PoS (权益证明),为何呢?

PoW 和 PoS 都属于 Nakamoto Consensus,任何人都可以随时加入和退出节点,这种共识机制通过节点之间某种公平的“投票”选择记账人,由于节点没有身份,可以自由地创造,相互不信任,因此投票资源必须是稀缺性的。在 PoW 机制下,稀缺资源是物理算力,而在 PoS 下,这种资源是经济权益。无需准入带来了去中心化的制衡,但节点之间的“竞争”记账不可避免地牺牲了速度与效率。

对于私有链和联盟链,Nakamoto Consensus 并不合适。出于安全和隐私的考虑,私有链和联盟链的节点之间必须相互许可,才能加入网络。而相互许可的前提是每个节点都有固定的身份,这种身份让节点之间成为信任或者部分信任节点 。基于部分信任或者完全信任节点,可以采用高性能的容错分布式系统 Byzantine Fault Tolerant (BFT),如 PoA 和 IBFT;或者容故障分布式系统 Crash Fault Tolerant (CFT),如 RAFT。

PoA

PoA 的全称是 Proof of Authority (权威证明)。PoA 基于一组有身份的节点,轮流进行记账。换句话说,每个节点在用自己的身份和权威作为担保。每个区块只需要一个签名确认,这大大提高了出块速度和每秒能够吞吐的交易。

虽然有中心化的风险,不过 PoA 的设计中为了限制单个节点的权力,每个节点的签名间隔需要大于 N (总节点数)/2。

Quorum 在早期开发阶段使用了 PoA 共识,但在正式进入生产阶段却剔除了 PoA,这又是出于什么原因呢?

这就涉及到金融结算网络最看重的另一个特性 - 最终性 (Finality),也可以说,抗分叉 (Non-forkable)。

JPM coin 要求抗分叉的前提,排除了其使用包括 PoW、PoS 和 PoA 的可能。因为在这几种共识机制下,虽然区块链按一致的规则检验和收录区块,但也会出现同时有多个相同高度的正确区块产生。一般而言,全网会迅速归集到最长的同一链上。但当涉及规则改变时,即网络中存在遵守不同的规则的节点时,就会存在区块链分叉且不能迅速回归同一链的可能,也就是我们常说的“分叉”。

参考比特币现金对比特币分叉以及其自身的影响,你就可以理解作为每天处理 6 万亿美金的摩根大通银行,一定不希望这些交易因为分叉而无效。

相对而言,Quorum 支持的另外两种共识机制: RAFT 和 IBFT 都是抗分叉的。

RAFT

RAFT 其实是一种已经广为使用的传统分布式一致性协议,应用在包括 Kubernetes, Docker Swarm 等容器集群管理系统。RAFT 对于容故障、可信节点,并且需要更快出块时间和最终性的封闭联盟非常有效。

与以太坊相比,RAFT 也有自己的节点。相对于以太坊任何节点都可以出块,RAFT 的节点分为 Leader 、Follower 以及暂时的 Candidate。

Leader 是负责生产区块的唯一节点,Follower 监听 Leader 的“心跳”,并收取 Leader 传递过来的区块。

如果 Follower 在其周期内没有收到 Leader 发来的心跳,则会认为Leader 已经死了。此时,没有收到 Leader心跳的 Follower 重新发起选举,自己的身份从 Follower 改变为 Candidate。它会给自己投一票,然后发送投票申请到其他 Follower,自己成为 Leader。

接受心跳的目的是为了抗系统故障,新的节点作为 Leader 继续出块。

值得注意的是,当新的交易产生后, Leader 并不会马上记录到链上,而是等收到所有 Follower 的确认回执后,记录并广播一个执行的消息,之后所有收到执行消息的 Follower 才会将区块记录在本地的链上。这样就可以避免分叉,确保最终性。

RAFT 机制下的默认出块时间间隔是 50 ms,而且只有在有交易发生时才会出块,大大节省了储存空间。

但 RAFT 机制也有不足之处,要使其得以运转的前提是全部节点是诚实的,RAFT 虽然可以容单点故障,但是不具备容错,无法防止节点作恶和篡改历史数据。

IBFT

IBFT,全称 Istanbul Byzantine Fault Tolerance (伊斯坦布尔拜占庭容错) 可以在抗分叉的基础上,防止部分节点作恶。

拜占庭将军问题是一个古老的关于容错的一致性协议。想象拜占庭军队围住一个敌方城市,拜占庭部队分开驻扎在城外,每个部分仅由自己的将军指挥。将军们只能通过信使和其它将军进行通信。在观察了敌情之后,他们必须制定一个一致行动的计划。结果表明:只要超过2/3的将军忠诚时即可达成一致。

IBFT 是一种实用拜占庭容错算法,与 RAFT 完全相信 Leader 不同,IBFT 的前提是包容 1/3 不诚实节点,通过验证者多轮投票,达到彼此一致后出块。

出块主要需要三个阶段:预准备 (pre-prepare) 、准备(prepare) 和确认 (commit)

首先,从全网节点轮流选举出一个主节点(Leader)负责生成区块,主节点在收到交易请求后生成新区块。

预准备(Pre-prepare):主节点向所有备份节点发送预准备消息,提议节点将从网络收集到需放在新区块内的多个交易排序后存入列表。

准备(Prepare) :所有备份节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,广播基于交易结果计算新区块的哈希摘要。

确认(Commit):如果一个节点收到的 2/3 个其它节点发来的摘要都和自己相同,就向全网广播一条 commit 消息。

如果节点收到 2/3 条 commit 消息,即可提交新区块及其交易到本地的区块链和状态数据库,随机进入下一轮区块高度。

可以看到,每个区块经过三个阶段的验证,即使 1/3 的节点出现故障或者作恶,也可以正常添加。如果主节点作恶,备份节点之间可以相互检查,在冲突时提交一次 Round Change,选取新的主节点。

由于在每个区块高度只有一个节点负责出块,不会有分叉的风险。而且账本不可篡改,试图修改历史纪录需要获取所有备份节点和主节点的私钥。与 PoW 相比,IBFT 没有竞争机制,出块速度更快。

不过,IBFT 的劣势也很明显,多个验证阶段的结构下让消息数量与节点数量成指数级增长,因此 IBFT 的节点数不能太多,通常用作企业级和政府的网络。

综合来看,节点准入、注重隐私、交易最终性、支持灵活的共识机制满足不同商业场景下的需求,并且监管友好是传统金融巨头发行加密货币看重的特点和条件。

虽然摩根大通对 Quorum 区块链的建设和信息非常开放,但遗憾地是,官方并没有公开 JPM coin 使用何种共识机制的信息。推断来看,JPM coin 会根据不同的应用场景在 RAFT 和 IBFT 中选择。如果所有的节点都是摩根银行信任的伙伴,那么 RAFT 是不二的选择;如果只部分信任成员银行,IBFT 将是最为可行的方案。

 

这也意味着,至少在早期阶段,JPM coin 的对象是相对封闭的联盟。但摩根币和一般用户并不是没有任何关系,摩根大通的清算网络可以大大增加银行之间的网络效应,而且为跨境支付提供了更加安全的合规信息交流协议。银行本身效率的提升和成本的降低,对终端用户来说无疑是一件好事。 更重要的是,摩根币的推出是对以太坊 ,包括区块链应用落地的一个巨大推动。从技术层面,兼容以太坊合约的 Quorum 网络完全有可能在之后和已有的公共区块链进行互通,在中心化与点对点的货币系统之间搭建桥梁。

在第三部分中,我会横向比较各国大型银行和央行发行和正在试验的加密货币以及数字货币 ,以及对当地经济甚至全球货币市场的重塑意义。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPM Coin 三部曲 (中) - 摩根大通为何青睐 Quorum 区块链 的相关文章

  • 数据可视化分析之热门旅游景区数据分析

    背景介绍 对景区的数据分析可以判断热门景区的走向和趋势 从而帮助更好的决定去哪里游玩 具有一定的指导意义 景区数据分析 这里直接展示数据分析的结果 首先展示了数据的原始信息 然后 使用了pyecharts来进行数据可视化分析 得到相关的结果
  • Java 4-6、优化启动配置,properties改为yml

    优化启动配置 properties改为yml yml缩进严格 把之前的配置转换为yml的文件重写一下 一 application yml 环境配置 dev和prod spring profiles active dev 一 applicat

随机推荐

  • 数学建模:评价性模型学习——灰色关联分析法(GRA模型)

    目录 前言 一 灰色关联分析 1 什么是灰色关联分析 2 流程介绍 二 综合评价 1 数据无量纲化处理 2 确定参考序列 3 确定权重 4 计算灰色关联系数 5 计算灰色加权关联度 6 代码 总结 前言 继续学习数学建模涉及的评价性模型 这
  • 做个mp3播放器mciSendString()用法【转】

    做个mp3播放器 用realplay和WMP做出来的程序内存占用太大 如果你仅仅是播放MP3 建议使用API函数mciSendString 我把该函数的详细资料罗列如下供你参考 Option ExplicitPrivate Declare
  • PCB包地与串扰,工程界常常使用保护地线进行隔离,来抑制信号间的相互干扰,保护地线有时能够提高信号间的隔离度

    包地与串扰 硬件工程师炼成之路 工程界常常使用保护地线进行隔离 来抑制信号间的相互干扰 的确 保护地线有时能够提高信号间的隔离度 但是保护地线并不是总是有效的 有时甚至反而会使干扰更加恶化 使用保护地线必须根据实际情况仔细分析 并认真处理
  • Java多线程代码编写

    Java多线程代码编写 什么是多线程 并发和并行 并行 指两个或多个时间在同一时刻发生 同时发生 并发 指两个或多个事件在一个时间段内发生 在操作系统中 安装了多个程序 并发指的是在一段时间内宏观上有多个程序同时运行 这在单 CPU 系统中
  • java timestamp是什么类型_Java中Date和Timestamp的区别

    在java语言中 使用Date包为java util Date Date表示特定的瞬间 精确到毫秒 Timestamp此类型由 java util Date 和单独的毫微秒值组成 只有整数秒才会存储在 java util Date 组件中
  • Vue3中使用component :is 加载组件

    1 不使用setup语法糖 这种方式和vue2差不多 is可以是个字符串
  • Pentaho 社区版 5.2 安装配置

    Pentaho安装配置 一 系统配置 1 Windows环境 试验环境为Windows 7 专业版 需要安装配置JDK 试验环境为1 7 0 67 打开计算机 系统属性 高级系统设置 环境变量 新建系统变量Path JAVA HOME bi
  • 基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用

    普通数码相机记录了红 绿 蓝三种波长的光 多光谱成像技术除了记录这三种波长光之外 还可以记录其他波长 例如 近红外 热红外等 光的信息 与昂贵 不易获取的高光谱 高空间分辨率卫星数据相比 中等分辨率的多光谱卫星数据可以免费下载获取 例如 l
  • android pull 解析xml

    Pull简介 1 常见的XML解析方式有三种 DOM SAX Pull Android系统中推荐使用Pull 2 Pull解析器是一个开源的Java项目 Android系统内部解析XML文件均为此种方式 也可用于JavaEE项目 3 And
  • Python Pymem 游戏内存基址读取修改 - 获取游戏DLL模块基址

    运行环境 python3 9 0 64位 安装pymem pip install pymem Pymem 的文档 https pymem readthedocs io en latest 读取游戏模块DLL基址 完整代码 import py
  • Java NIO框架Mina、Netty、Grizzly介绍与对比

    目录 Java NIO框架MinaNettyGrizzly介绍与对比 Mina Netty Grizzly 结语 Java NIO框架Mina Netty Grizzly介绍与对比 原文链接 http www 24xuexi com w 2
  • 一文带你沉浸式感受黑马实战项目研发过程

    我们必须拒绝Demo式项目 拒绝技术堆叠式项目 要让学生学到真本领 在传智研究院严格的项目课程新标准下 黑马JavaEE学科再添真实企业级新项目 天机学堂 历时近1年才能上线的项目课程 背后又藏着哪些让学生高薪 理想就业的秘密 一文带你揭晓
  • 变化多端 – 多种纯CSS的HTML表格设计

    介绍 在HTML中 Table节点由于其层层嵌套的节点结构 一度名声很臭 且一度被呼吁用DIV CSS取而代之 但在实际项目开发中 一碰到规整的数据显示 不知不觉又会用起它 可见其生命力之顽强 这儿就探讨下几种不同的通过CSS实现的Tabl
  • PCL RANSAC分割提取多个空间圆

    目录 一 概述 二 代码实现 三 结果展示 1 原始数据 2 提取结果 四 测试数据 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述 使用PCL分割提取多个空间圆 其核心原理仍然
  • Rancher安装、部署、使用

    1 搭建rancher平台 1 通过实训平台进入到操作系统界面 在 后输入vi etc sysconfig docker命令 编辑配置文件 示例代码如下 root xxx home vi etc sysconfig docker 按i 小写
  • 刷脸免单打折领红包带动消费者进店二次消费

    刷脸自动扣款 效率高 耗时少 避免消费者长时间排队等待 不需要拿出手机 打开微信 打开扫一扫或者收付款等一系类繁杂的动作 省去了记密码 输密码的麻烦 实现了人与钱包或银行卡的合二为一 消费者方便 也更愿意来您家消费 手机没电 不拿手机也能付
  • C精华练习系列(2)

    C 练习实例6 题目 用 号输出字母C的图案 程序分析 可先用 号在纸上写出字母C 再分行输出 参考代码为 include
  • 可重入锁简单理解

    可重入锁 指的是以线程为单位 当一个线程获取对象锁之后 这个线程可以再次获取本对象上的锁 而其他的线程是不可以的 synchronized 和 ReentrantLock 都是可重入锁 可重入锁的意义之一在于防止死锁 实现原理实现是通过为每
  • 照片怎样变漫画图片?建议收藏这些方法

    小伙伴们平时喜欢在社交平台上 发布一些照片的动态吗 那有没有发现别人的一些照片动态很好看 有漫画照片 文字照片 边框照片等多种多样的效果 有小伙伴羡慕别的照片问什么这么多样吗 其实你们也可以做到的 只需要使用软件就可以帮助我们完成这些照片编
  • JPM Coin 三部曲 (中) - 摩根大通为何青睐 Quorum 区块链

    本篇是三部曲的第二部分 聊一聊 JPM coin 背后的区块链网络 Quorum 详解其特点 共识机制 及其如何满足传统银行业的商业需求 Quorum 被认为是 企业级以太坊 从2016年起由摩根大通银行启动的开源项目 https gith