潘超:摩根大通背后的清算体系与区块链网络
演讲者:Maker Dao中国区负责人 潘超
编辑:氢3
摩根大通发行稳定币一事,在圈内引发了广泛的讨论,其中又以Maker Dao经济研究员兼中国区负责人潘超的《JPM Coin三部曲》讨论得最为详细深远。近日我们有幸邀请到潘超做客碳链价值的「碳话」线下沙龙。在这场沙龙中,潘超分析了摩根大通的稳定币和我们常见的稳定币(如USDT)有什么不同、摩根大通可能会采取怎样的共识机制,其主要追求的是哪些性能等问题。以下为碳链价值整理的演讲全文:
01
摩根币的诞生
摩根币是什么?最简单的说,一个摩根币等于1美元,看起来和普通的稳定币一样。但是他们面向的并不是同样的一个市场。USDT、USDC、GUSD 属于零售性的稳定币,一般用户可以使用,投资者也可以在交易所上买到,做日常的交易,或者与法币交换等等。但摩根币的对象不是普通用户,而是批发性的银行。普通人接触不到,也不会有任何交易所能够上这个币。摩根币是用于实时大额资金结算,可以叫做清算凭证。
摩根大通的成员银行把美元存在一个指定账户里,会按照1:1生成摩根币。之后可以将摩根币返还回去,获得一对一的美元。这看起来和USDT的生成与赎回一样,其实不然。如我刚刚所言,摩根币是用于实时大额资金结算。
为什么大额实时资金结算需要一个这样的东西?首先需要先了解资金是怎么在银行之间转移的。
-只有一个银行的时候,假设两人之间发生一笔10块钱的交易,那么直接记录Alice减少10块钱,Bob增加10块钱。
-如果有两个银行的时候,比如说我在工行,你在建行的话,如果说我想付给你十块钱,我需要告诉工行说,说我要给你转十块钱。工行必须跟建行去达成一个协议,建立一个关系账户,在这个关系账户当中,工行和建行事先都在这一个账户当中先存一点钱,双方发生交易的时候,不用在双方之间进行一个结算,而直接在这个银行层面就可以进行结算就可以了。
但是这样的模式也会产生问题。只有两个银行时,关系账户还是比较方便,但是如果银行的数量增加了,一个国家可能有成千上万个银行,那么如果每两个银行之间都要建立这样的一个账户的话,它会是一个指数关系。
那么怎样解决这样一个问题?在清结算当中有两种模式,一种叫做实时大额结算,同时还有一个叫延迟结算。对于延时结算而言,不同的银行只负责记账,不需要马上进行结算。只需要去记,比如说A欠B多少钱,B欠了C多少钱,然后在一天结束的时候看一下净额就行了。比如我们在使用微信进行一个支付的时候,它只是一个支付环节,要等到一段时间的周期后才会最终在银行层面进行结算。
但是延迟结算存在一个问题。延迟结算中交易可以进行撤回。如果对方支付一笔非常大金额,往往需要实时结算,也就是交易的最终性。因为负担不起资金撤销带来的成本。银行也存在破产的风险,不能在每个银行都放置一个关系账户。
有一个解决方式,这种办法就是回到最初的银行世界,依靠一个非常大的公共账本。这个账本所做的事情就是负责大额的实时结算,这是为什么会存在中央银行的原因之一。中央银行作为一个权威,所有人都会相信这个账本。摩根大通最早在美国就起到央行的作用,这也解释了为什么摩根币会出现。涉及到大额支付的时候,银行A跟银行B把摩根大通网络当做一个大池子,银行A跟银行B都可以将自己的存款放在大池子中,然后会生成一个 1:1 的摩根币用于即时结算。
02
摩根币的诞生摩根币的区块链上有何不同?
那么为什么这个网络需要基于区块链呢?
摩根大通使用区块链的原因并非因为透明性、去中心化等原因,传统公链的特性对于摩根大通而言,反而是 Bug。
那么对于传统金融机构而言,所需要的区块链账本有什么特征呢?
第一点是隐私性。金融机构之间需要高度隐私性。不能把所有的账本全部都公开给大众,否则会导致挤兑风险以及流动性风险。同时银行也不希望让对手银行看见自己账户上的情况,并且还要保护用户本身的财产信息。这一点在公链尤其是以太坊网络,基本没法实现的,因为只要打开任何以太坊浏览器,就可以看到账户所有的信息,余额多少、每一笔交易的对象。传统金融机构如果用区块链研发,必须要解决隐私性问题。
第二点是需要高性能的区块链,虽然大额的资金转账对时间要求并不是那么迫切,但是现在每秒处理几个交易的公链,很难是满足全国性,或者大规模的金融应用。
第三点是最终性。最终性是说这笔交易从我账户发给你,那么我就没法对这个交易进行更改,就像现金一样。我把一百块钱给到你,你拿走这一百块钱,就代表交易结束。而不是可以撤回的交易,比如在微信转账和 Paypal 交易中,是可以撤回的。很多区块链并没有最终性,因为会出现分叉的概率。以太坊 The DAO 事件受到攻击的时候,就进行了一个分叉和回滚,黑客攻击那部分和之后的交易不被承认,而传统金融机构无法接受这件事。
03
Quorum是什么?摩根币采用什么共识?
摩根大通银行选择的区块链是什么?摩根大通选择的是Quorum。
Quorum 可以说是以太坊的一个克隆,是一个准入系统,更类似一个联盟链。Quorum 通过链上加链下实现隐私保护,同时可以灵活的支持多种的共识机制,相对来说也具有高性能和高速度。并且抗分叉,能够实现交易最终性。
Quorum 根据以太坊客户端 Geth 进行更新。这也就意味着以太坊上使用的合约可以直接移植到 Quorum 上,包括一些开发协议(Truffle),都可以直接部署。以太坊是目前而言最健全的公链,同时也经历了多年的攻击以及抗攻击,可以说是 Bulletproofed。
那么 Quorum 和以太坊有什么区别呢?
首先在交易上有区别,一笔交易在Quorum上可以选择公开交易或者私人交易。对于公开交易来说,这笔交易是在Quorum主链上完成的。在这个主链上的节点都可以看到交易的信息,如账户的余额、发起方是谁、接收方是谁,和以太坊的逻辑上是一致的。如果选择私人交易的话,就会拿到链下,使用独立的服务器。
Quorum 主链上只存储加密后数据的哈希值,而私有交易的数据将存储在链下,通过管理理引擎(Tessera 和 Constellation)在节点共享。只有交易的相关方(以及监管部门)才能看到交易的细节,非相关方无法获取交易细节。
但是这也会有一些问题,可能会出现单点故障,以及一些细节上的问题,包括监管层面。比如央行或者一个监管机构,一开始并不在这个私有列表里,但他突然觉得这笔交易存在问题,想去检查这笔交易。但是因为没法将账户直接加进来,所以没法看到之前的交易信息,这从监管层面而言不是很理想。对于摩根大通这种传统机构,他首先想到的便是监管友好。同时,这种方案无法靠区块链上的共识机制解决双花问题。
Quorum 与 Zcash 团队合作,提供了一种链上的隐私方案,连接私有合约以及主链。合约的商业逻辑在私有合约内部达成一致,然后在主链上进行清算,并以零知识证明的方式使用 z-token 作为保护隐私的桥梁。z-contract 合约会生成与主链资产 1:1 的代币资产 z-tokens。z-contract 也在主链上运行,只是其资产是隐蔽资产 (Shielded Assets) 可以隐藏交易信息(发送方、接收方、资产数量量等)。
Quorum 既没有采用PoW也没有采用PoS,因为PoW和PoS都属于Nakamoto Consensus,任何人都可以随时加入和退出节点,这种共识机制通过节点之间某种公平的“投票”选择记账人。由于节点没有身份,可以自由地创造,相互不信任,因此投票资源必须是稀缺的。在PoW机制下,缺资源是物理算力,而在PoS下,这种资源是经济权益。无需准入带来了去中心化的制衡,但节点之间的“竞争”记账不可避免地牺牲了速度与效率。
而且对于一个联盟链或者私有平台、金融机构来说,是不允许任何人都可以到公链作为一个节点来记账的,所以 Quorum 不会使用 Nakamoto Consensus 全局共识机制。
为了解决这些问题,Quorum 尝试采用高性能的容错分布式系统 Byzantine Fault Tolerant (BFT),如 PoA 和 IBFT; 和容故障分布式系统 Crash Fault Tolerant (CFT),如 RAFT。
PoA 的全称是Proof of Authority (权威证明)。PoA 基于一组有身份的节点,轮流进行记账。换句话说,每个节点在用自己的 身份和权威作为担保。
每个区块只要一个签名确认就可以,因为只有这几个节点,不需要与其他节点产生时间竞争,和中心化服务器的效率不相上下。可能会产生一个节点权力太大的问题,为了解决这样的单个节点权力过大的问题,每个节点必须间隔记账。比如说这边有四个节点,必须在间隔两个节点之后,才能进行下一次记账,这个方式就是去限制单个节点的权利。Quorum最初使用的是 PoA,后来因为最终性(可以进行分叉)而不再使用PoA。摩根大通每天处理6万亿美金,如果进行了分叉,参考比特币现金的分叉对整个系统的影响,大家就能理解摩根大通为什么不允许分叉的产生了,因为这会导致很多交易无效。
相对而言,Quorum支持的另外两种共识机制RAFT和IBFT都是抗分叉的。RAFT 其实是一种已经广为使用的传统分布式一致性协议,应用在包括 Kubernetes, Docker Swarm等容器集群管理系统。RAFT 对于容故障、可信节点,需要更快出块时间和最终性的封闭联盟非常有效。 与以太坊相比,RAFT 也有自己的节点。相对于以太坊任何节点都可以出块, RAFT 的节点分为 Leader 、Follower 以及暂时的 Candidate。Leader 是负责生产区块的唯一节点,Follower 监听 Leader 的“心跳”,并收取 Leader 传递过来的区块。接受心跳的目的是为了抗系统故障,如果 Follower 在其周期内没有收到 Leader 发来的心跳,新的节点作为 Leader 继续出块。
当新的交易产生后, Leader并不会马上记录到链上,而是等收到所有 Follower的确认回执后,记录并广播一个执行的消息,之后所有收到执行消息的 Follower才会将区块记录在本地的链上,避免分叉,确保最终性。RAFT 机制下的默认出块时间间隔是 50 ms,而且只有在有交易发生时才会出块, 大大节省了储存空间。但 RAFT 机制也有不足之处,要使其得以运转的前提是全部节点是诚实的。 RAFT虽然可以容单点故障,但是不具备容错,无法防止节点作恶和篡改历史数据。
如何防止节点作恶同时又能保证效率和最终性呢?Quorum 支持了伊斯坦布尔拜占庭容错机制。
与 RAFT完全相信 Leader 不同,IBFT 的前提是包容 1/3 不诚实节点,通过验证者多轮投票,达到彼此一致后出块。由于在每个区块高度只有一个节点负责出块,不会有分叉的风险。 账本不可改,试图修改历史纪录需要获取所有备份节点和主节点的私钥。与 PoW 相比,IBFT 没有竞争机制,出块速度更快。不过,IBFT 的劣势也很明显,多个验证阶段的结构下让消息数量与节点数量成指数级增长,因此 IBFT 的节点数不能太多,通常用作企业级和政府的网络。
摩根币到底使用的是哪一种共识机制呢?虽然摩根大通对 Quorum 网络的信息十分公开, 但是并没有公布关于摩根币的共识机制。
从上文推断来看,摩根币不会选择PoA机制,因为没法实现最终性,那么只会在IBFT的跟RAFT中进行一个选择。如果所有的节点都是摩根大通信任的伙伴,那么RAFT是不二的选择;如果只是信任部分成员银行,IBFT则是可行的试点。
至少在早期阶段,摩根币的对象是相对封闭的联盟。 摩根大通的清算网络可以大大增加银行之间的网络效应,而且为跨境支付提供了更加安全的合规信息交流协议。摩根币的推出是对以太坊 ,包括区块链应用落地的一个巨大推动。从技术层面,兼容以太坊合约的 Quorum网络有机会在之后和已有的公共区块链进行互通,在中心化与点对点的货币系统之间搭建桥梁。