文|蔡维德 胡子木 马圣程 邓恩艳
区块链技术从诞生至今已经经过了十几年的发展,诞生了诸如比特币,以太坊,Diem(原Libra)等区块链系统,现如今,区块链已经不仅仅能够支持点对点的数字货币转账交易,还可以使用智能合约进行一些复杂的数字资产交易。因此,新一代的区块链需要不仅仅可以从事交易,还要保障交易的可信、安全、可监管。
比特币系统使用的是UTXO模型,即账户跟随着交易。系统只有交易记录,没有账户信息,这被称为“半账本模型”。某一个“账户”中的余额并不是由一个数字表示的,而是由当前区块链网络中所有数据跟当前“账户”有关的 UTXO 组成。当需要计算某个地址中的余额时,需要遍历比特币网络中的全部相关区块,并且共识与交易也是不分离的。由于系统只有交易记录而没有账户信息,监管存在问题。
以太坊系统是全账本模型,一个地址对应一个余额。当每次查询账户余额时,不需要计算UTXO的复杂过程,只需取出地址对应的余额即可。虽然以太坊系统查找账户信息方便,块中也有交易信息可以找到账户,不存在透明度问题,但由于既要做交易又要维持账户,其存在扩展性问题。事实上,以太坊这种系统也比较难以管理,共识与交易是不分离的,系统要囊括以太坊代币,以及使用ERC-20产生的其他代币,十分臃肿。
以比特币系统为代表的传统区块链系统存在着一些弊端,例如共识与交易没有解耦,效率较低,无法进行监管等问题。如今区块链正逐渐成为一种金融系统的基础设施,这些都是必须要解决的问题。
本文在第二部分首先论述共识与交易耦合的原因和弊端;在第三部分介绍Diem中共识与交易解耦的机制,同时分析Diem中依然无法解决的监管问题;第四部分介绍PFMI原则在区块链上的关键指标;第五部分介绍以互链网为代表的新型区块链架构是如何做到共识与交易解耦、交易与结算解耦,以及如何解决Diem中存在的问题,并满足PFMI原则;第六部分进行总结。
在传统的区块链系统中,例如比特币的系统中,共识与交易是耦合的,当共识协议结束,就意味着交易的完成。如果一次共识的区块之内,出现了一笔有问题的交易,那么整个区块都将会无法通过共识,进而共识失败。
共识与交易耦合所带来的问题:第一,共识与交易耦合,一笔交易出现问题会导致当前正在进行共识的区块失败,所有在同一区块的交易都算失败,减慢效率。第二,共识的同时就完成同一区块内的所有交易,这不符合金融市场基础设施原则(Principles of Financial Market Infrastructure, PFMI)。 PFMI是多年金融系统累积下来的金融交易原则,如果违反PFMI原则,该金融系统的风险就很大。
原本共识与交易的耦合机制是为了保证共识过的交易成功执行。但由于传统区块链架构不具备监管机制,甚至设计点对点协议(P2P协议)来对抗政府的监管。随着区块链成为合规金融市场的重要基础设施,对于区块链系统的监管问题也变得日益重要,区块链系统不仅仅只能够做交易,还要在满足各种监管要求的条件下,对交易进行监管包括反洗钱(Anti-Money Laundering)。
如果共识和交易的机制耦合,系统就有机会发生雪崩的现象而整个瘫痪,而这现象多次发生在我们实验室。要了解这问题,需要先了解传统区块链共识失败的原因:所有参与节点上的数据不一致;只要有一笔交易在一区块内失败,这区块就算失败,所有里面的交易都算失败。
根据实验数据,建块失败(就是共识失败)的主要原因不是第一个原因(数据不一致),而是第2个原因。而且只需要几笔交易失败就可以将整个系统瘫痪。原因出于传统区块链系统的设计原则:
完成共识 = 在所有节点上的数据一致 + 在同一区块内所有交易都成功
根据上面的设计,一个高速区块链就有可能发生雪崩的现象:
1.一笔交易在一个区块内失败;
2.在同一区块内所有交易都算失败;
3.所有失败的交易都被放回区块链系统,需要再度参与共识,可是当时已经有大笔交易正在等待进行共识;
4.由于等待的交易数目增加,下一个区块体积增大,于是下一区块内的交易数量增加;
5.不幸的是下一个区块的共识也失败,所有在这区块的交易全部需要重新再进行共识;
6.这样,需要进行共识的交易数量越来越多,区块体积也越来越大;
7.区块越大(里面交易数目越大),假设每笔交易失败的可能性小但是一致(例如0.01%,就是一万笔交易只失败一次),但一个区块有5000笔交易时,这区块就有50%可能性会失败。如果一个区块有1万笔交易,这区块的可能性就非常大;
8.这样区块链系统很快就会进入一个雪崩的场景,整个系统停止,需要人工处理,将区块链网络上充满以及数据库内满载的数据清除。
而且这种雪崩现象不会因为加强区块链性能而改变。事实上,区块链的系统性能越好,越容易发生雪崩现象。原因很简单,如果一个区块链系统每秒只能处理100笔交易,而每笔交易失败的可能性小(例如0.01%),由于数目小,失败可能性不大。但是如果一个区块链系统一秒可以处理2万笔交易,失败的可能性就大大提高了,几乎每次都会失败。因此将共识和交易绑定不是一个好的方案。
在新型区块链系统内,如果将共识和交易解耦后,共识原则改变:
完成共识 = 在在所有节点上的数据一致 + 部分交易成功
根据上面的共识原则,共识失败的原因只有“数据不一致”,这样的共识失败的可能性大大降低,性能也同时间大大提高。这样雪崩的场景就很难再发生。
而且由于在所有节点上的数据有一致性,所有节点都知道哪一笔交易成功,哪一笔交易失败,交易完备性还是存留。因此共识和交易解耦是区块链系统内的至关重要的设计方案,没有这个机制,很难开发高速区块链系统。
Diem是Meta公司于2019年6月份提出一份震撼世界的白皮书,提出一个大型全球区块链政府系统。 2020年第2版白皮书出现,并且在系统上做了大量的改革和创新,其中一个创新就是共识与交易解耦,并且使用了多个Merkel树分别对账户、事件以及账本进行维护。第2版白皮书的一个重要改革是让系统可以被政府监管。
Diem区块链内的数据按照Merkel树的存储方法进行储存,并且根据根节点的哈希值检测到任何数据的变化,与其他区块链将区块链视为交易区块的集合不同,Diem区块链可以长期记录交易历史和状态,允许使用者从任何时间点读取任何数据。
Diem中存在着三个Merkel树,包括账本历史的Merkel树,其中每一个叶子节点都是经过共识后后产生的账本历史记录。在每一次的账本历史记录中,都记录了三个属性,分别是账本状态的Merkel树根节点的哈希值,本次共识中所包含的所有交易,以及由事件(Event)所构成的Merkel树。在账本状态的Merkel树中,记录了系统中所有账户的具体信息,并通过进行哈希得到哈希值,记录到Merkel树中,进而防止账户内的数据被篡改。
Diem的共识与交易是解耦的,就是将交易和共识机制分开进行,交易过程是交易过程,共识过程是共识过程。这样共识结束,不意味着交易的完成。之所以Diem是这样设计,是为了避免存在一些有问题的交易导致系统的性能下降。在进行共识的一批交易中,如果有些交易出现问题,例如余额不足,GAS用尽等,则不会通过虚拟机将交易执行,而仅仅是将这笔交易和其他正确执行的交易一起打包,进行共识阶段。也就是说,交易完成的成功与否,不影响共识过程的,通过共识阶段的交易,也有可能是有问题的交易。Diem不止对交易进行共识,也要对交易执行的序列进行共识,因为交易序列相同,所有的节点在执行到问题交易时,都会得到相同的问题,因此都会执行完全一样的操作,保证金融交易的完备性性。
Diem在执行交易的过程中会产生相应的事件,由于一笔交易存在于区块当中,并不意味着交易已经被正确执行了,需要其他证据来证明交易的正确执行。交易产生的事件也会通过Merkel树的形式保存起来,能够防止被篡改。这样,一个交易无论是执行成功或者失败,交易本身,交易产生的事件以及交易过后的账本状态,都会存储在区块链中。共识过程只需要保证上面的三者均相同,就可以通过共识,而不需要保证交易能够成功完成。
Diem虽然实现了共识与交易的解耦,但是却无法满足PFMI原则。但是在共识过程结束后,交易没有经过监管机制的检查就完成了,在交易之后就立刻进行了结算,这样会导致无法及时发现例如洗钱等金融违法行为。在这之后再进行检查监管等行为,也都为时已晚,因为经过交易结算之后,对应的资金已经转移到对应的账户,继续追踪也将变得更加困难。
Diem在第二版的白皮书中提到他们将会使用一个嵌入式的监管机制,以满足政府对于系统的监管需求,但是却不公开其监管机制。同时,Diem区块链的监管仅要求虚拟资产服务提供商(Virtual Asset Service Provider,VASP)符合监管条件,而不对用户进行监管,这些都会导致Diem无法满足PFMI原则。
PFMI是由国际清算银行支付结算体系委员会(CPSS)和国际证监会组织(IOSCO)为了防止2008年金融危机的重演提出的国际评估标准。PFMI是一个通用原则,适用于每个国家的金融系统。虽然是国际通用的原则,但是每个国家的金融系统使用的软件和硬件都不同,相关的法律也不同,因此虽然有统一的标准,但在实际评估时还需要大量考量。
根据PFMI的原则,许多学者和央行提出具体数字资产量化指标。PFMI原则全面,考虑到许多方面,例如系统架构、安全性、隐私性、流动性管理、和操作风险管理以及包括明确和严格的监管原则。在区块链系统中,针对PFMI原则,我们主要分析其中的的三个特性:可靠性、可扩展性与运行效率和可监管性。
跨链原子互换协议设计目的是为了让交易双方所在的链尽可能的减少通信,无需相互信任就能实现跨链交易,同时保证交易的原子性,所有交易操作或者同时成功,或者全部失败。
PFMI多次提出这需求,就是金融交易系统在全方面都必须是可靠的。可靠性性体现在两个方面,一是交易平台系统本身的可靠性,系统可靠性不仅是降低系统出错的概率,还包括在系统出错时可纠错和恢复正常运行的能力,即系统的容错能力。二是金融基础设施的可靠性,防止由于功能设计不当诱发各种风险。可靠性量化指标有很多,例如MTBF(Mean Time BetweenFailure),平均故障间隔时间用于评估电子产品的可靠性指标,这个量化方案广泛应用于包括电子产品在内的多项应用中。虽然这个量化指标可以用在分布式交易所系统,但是交易所作业复杂,现有的比较好的做法是使用三个过程来评估系统的可靠性。首先是交易前的运行可靠性,通过是否有身份认证来判断。其次是交易中的可靠性,通过判断是否存在黑手交易。最后交易后的可靠性,通过判断是否资金到位、安全回滚来判断。
PFMI 文件也多次提到系统必须可以扩展,而且每次提到扩展性都和可靠性一起提出,表示系统必须同时间可扩展而且扩展机制是可靠的,并且提出这会是系统运行的一个重要风险。根据PFMI原则,系统设计一定要满足对于金融交易业务能力可扩展性的要求,当系统增大数据量时,系统的处理速度和吞吐量等系统性能不会受到大的影响。依据USL(Universal Scalability Law)理论,我们可以得到可扩展性的计算方法。目前所有分布式账本系统的可扩展性都很低。原因是每种系统的架构不同,导致每种系统的可扩展性也不同。因此,依据分布式账本系统的特点和上述可扩展性量化公式,将可扩展性的量化分为三大类:第一类是使用POW为基础的共识算法,实践表明POW算法几乎没有可扩展性, 第二类是使用以BFT(拜占庭将军协议)为基础的共识算法,该算法的可扩展性要高于POW。第三类是在使用BFT的基础上可扩展性架构(例如ABC-TBC架构)达到无限扩展的目的。
PFMI多次提到央行或是监管单位需要监管金融系统,对监管有着明确而严格的规定,例如其中规定,关键程序和市场数据都需要提供充分的信息,公开披露,供参与者能够准确了解。目前区块链或是数字货币可监管性并没有统一标准,但一些研究已经做出了尝试。可监管性的量化条件可以主要分为三项:快速定位交易、身份认证以及建立人物以及相关公司的关系图谱和快速停止交易。快速定位交易这是监管第一个必要条件,找不到交易信息不可能监管该交易。身份认证以及建立人物以及相关公司的关系图谱这是传统金融监管的机制,主要使用大数据平台来完成。快速停止交易要求不但要及时找到信息,有的时候还需要及时停止该交易,因为有的交易是实时结算的。
我们提出一个新型交易和共识解耦的机制,同时还提出交易与结算分离,交易与账户分离,全流程监管。在区块链系统中满足了PFMI原则中可靠性、可扩展性和可监管性。共识与交易解耦之后,系统的性能变好,同时软件简化并且可以扩展。
新型区块链架构符合PFMI原则,一笔交易需要多次共识。与传统区块链不同(这些区块链只经过一次共识就完成所有过程)。图1展示了新型区块链架构中的共识与交易解耦的机制。当交易在经过KYC验证后会进行第一次共识并上链。在经过监管系统的检查后,会将不合规的交易拒绝,并将所有交易第二次通过共识上链。最后会将所有通过了监管检查的交易经过第三次共识上链。
图1 共识与交易解耦机制
具体来说,交易从提交到完成的过程可以分为以下几个步骤:
1)一笔所述交易到达区块链系统,查明所有交易方的信息后,确定资金以及资产都是确实的,在链上记录查验结果上链。
3)上链共识后,这笔交易等待交易。
4)交易完成后,将完成的交易信息第二次上链。如果交易没有成功或是交易被系统拒绝,这笔交易也上链,表示交易失败。
5)最后将成功完成的交易信息对外公布,第3次上链。如果不需要对外公布,可以省略。
一些系统可能选择在第一步前,先上链一次。目的是存收到的信息,保证交易数据在作业中没有被更改。
新型区块链架构上链3次的有益效果是可以追踪到所有交易流程中所有的步骤,包括失败的交易(不能完成交易)和在结算前被拒的交易。这些被拒的交易代表相关实体单位或是客户个人出问题,例如参与洗钱。3次上链保证相关信息能够被存留下来,存留下来的信息便于以后的审计使用。
新型区块链架构将共识与交易解耦,形成了一次交易,三次共识的三部曲。这样,三次共识分别用于不同的功能,做到步步监管,并且可以在不同系统上完成,提升了系统的效率。由于各个功能相互解耦,因此可以分别进行开发、简化、优化。在未来,根据不同的监管需要,三次共识也可以变为四次甚至五次,增加了系统的可扩展性。在整个过程中,每一次共识都有着监管机制的全程参与,保证交易的安全和可靠。
由于新型区块链架构使用的是基于拜占庭容错的共识机制(Byzantine Fault Tolerance, BFT),包括PBFT, CBFT,因此共识速度远远大于工作量证明(proof of work,POW)等共识机制,即便在交易前、交易中和交易后进行三次共识上链,依然可以保证很高的运行效率和吞吐量。
新型区块链架构与Diem设计不同,Diem区块链仅仅声明使用了一种嵌入式的监管方式,而没有详细说明具体以何种形式进行监管。同时,Diem区块链仅做到了将共识与交易解耦,没有三段式的上链机制。但新型区块链架构明确的提出了监管方法,使用大数据平台在多次共识中全程进行监管,一笔交易需要通过层层验证才可以被接受,有问题的交易也会在多次共识上链的过程中及时发现并拒绝。
新型区块链架构可以使用大数据平台将区块链系统报告的所述交易的信息存在数据表或数据图中,从而便于查询并从事监管活动。如图2所示大数据平台位于至少一个区块链系统的节点上,并和一个或多个监管单位连接。大数据平台收集验证数据后,进行分析,获得当时交易情形作为监管决策的依据。同时,大数据平台也可以从其他可靠单位获得相关监管信息,或者自身收集并分析信息。大数据平台根据黑名单以及其他评级数据,包括自己收集和分析的数据,对正在进行的交易快速评估,决定是否通过这笔交易。完成评估后,大数据平台立刻将评估决定实时发送到区块链系统,区块链系统根据监管报告,确定完成这笔交易或是拒绝这笔交易。因为共识与交易解耦,所以不论交易是否批准可以完成,区块链系统都会立刻将相关信息放进区块中,共识后上链。如果最后决定是拒绝这笔交易,例如相关单位或是个人如果参与洗钱活动,那么大数据平台和区块链系统都会自动报告该信息给监管单位;
图2 大数据平台在区块链系统的超级节点
新型区块链架构中由于存在多次共识,多次上链的机制,不仅仅做到了共识与交易的解耦,同时也做到了交易和结算的解耦。在共识与交易解耦方面,新型区块链架构中分为三次共识,交易通过监管检查后,只进行一次交易。明显的可以看出共识和交易是分开进行的,交易无论是否成功,是否会被监管机制所拒绝,都能够正常的进行共识,并且会将交易是否成功的信息也都通过共识,记录在区块链中。同时,由于存在监管机制,对应交易的监管信息也都将被记录在区块链上,保证所有的数据都不会被篡改,而且能够做到全链条的监管。
通过上一节我们可以看出,新型区块链架构将共识与交易完全解耦。不仅如此,相比Diem,新型区块链架构进一步的提出了将交易与结算解耦。绝大多数的区块链系统的交易与结算是一体的,交易的同时就进行了结算,将数字资产转移到相应的账户当中。但新型区块链架构将交易与结算解耦,在交易完成并上链后,再进行一次结算。结算的过程中会进行AML的检测,如果交易无法通过AML的检测,那么即便交易之前已经成功,那么也不会通过结算,对应的数字资产也就无法转移,图3展示的就是交易与结算解耦机制。
图3 交易与结算解耦机制
具体来说,交易从提交到交易完成再到结算完成的过程可以分为以下几个步骤:
1)一笔所述交易到达区块链系统进行第一次上链,查明所有交易方的信息后,确定资金以及资产都是确实的,就进行排队上链交易。
2)排队上链交易,共识与交易解耦,交易与结算解耦。
3)共识后,这笔交易等待完成,交易需要等待区块链系统交易完成。
4)交易完成后,将完成的交易信息第二次上链。如果交易没有成功或是交易被系统拒绝,这笔交易也上链,表示交易失败。
5)经过反洗钱等处理后,交易在适合的账户系统上结算成功,将这笔交易信息包括结算完成时间第3次上链。
新型区块链架构使用的交易与结算解耦,使监管系统进一步深入到区块链系统的交易流程当中,从交易到结算,每一个步骤都在监管系统的覆盖之下,使得区块链系统可以更好得满足PFMI所提出的要求。同时,新型区块链架构中还是用了5棵Merkel树来保证信息不被篡改,将共识、交易、结算这区块链中交易流程的三大元素彻底解耦。并且,新型区块链架构还连接着大数据平台,功能和性能都大大提高。
新型区块链架构的代表就是互链网架构,互链网能够多链交互,改变操作系统,数据库系统,连接多链。其中最重要的机制是片分片,管中管,库中库,层分层,密中密,块中块。同时提出了提出交子模型和NFR,网络上仅保存数字凭证,资产留在实体,遗失私钥也能保证资产的安全。
新型区块链系统,不再逃避监管,以监管科技为首,是可监管的区块链。形成区块链+智能合约+预言机(LSO)的模式,使用制度化标准化的管理方法。区块链用来控制数据,保证数据不能被篡改。智能合约用来控制应用流程,标准化应用,微服务化应用,监管式应用,智能合约本身也是在区块链上的。预言机用于和外界接触,控制外面系统接口,可使用任何技术包括区块链、智能合约。
新型区块链系统可以使用STRISA系统进行监管,可以实现穿透到个人数字钱包层面的监管,而这是Diem系统所无法做到的。新型区块链系统通过将共识与交易分开,不仅做到了高吞吐量,同时也可以实现嵌入式的监管,满足现在的金融市场基础设施PFMI原则,是一种能够满足监管要求的区块链系统。
通过分析区块链雪崩的现象,高速区块链系统需要将共识与交易耦合和解耦,为了要解决监管问题,还需要将交易和结算解耦。当我们这样设计时,整个区块链的设计就和传统区块链系统差异大。