1.2 技术理解
1.2.1 区块链和分布式账本架构的组成
区块链与分布式账本在技术架构上分为以下几个部分:
❑ 账本:记录交易和权益归属。
❑ P2P协议:节点之间的网络通信协议。
❑ 共识算法:用来保障不同节点的账本是一致的。
❑ 激励:权益的应用方式。
❑ 合约:以程序代码达成交易的机制。
❑ 应用:面向场景的应用功能实现。
1.账本
每个区块链和分布式账本的节点都持有一份自己认可的账本。账本就是记录若干交易和账户状态的数据集合,也可以理解为账本数据库。但是要注意,与分布式数据库相比,区块链和分布式账本有几个不同的要点:
(1)在数据库内,区块链与分布式账本的每条交易记录之间都具有锁定关系,一般是严格按照时间先后顺序锁定的,而普通的数据库记录之间则没有这种锁定关系,可以设置索引,按不同的索引规则任意排序,其中任何一条记录删除后,按索引会重新排序。
(2)在数据特点方面,区块链与分布式账本记录的数据完全是具有交易特征和账户状态的数据,就是说任何一条记录一定会体现某种权益的交割和状态变化。而普通的数据库,无论是结构化的还是非结构化的,都可以存储任何数据。
(3)在数据库之间,普通的分布式数据库中的数据的同步是分数据库向主数据库看齐。而区块链和分布式账本则是依据共识算法的规则进行验证,通过验证则自己认可,记入自己的账本;验证不通过的,丢弃,不记入自己的账本。也就是说,在区块链和分布式账本中不是像其他数据库看齐,而是向共识规则看齐。
2.对等网络与P2P协议
这是非常非常底层和基础的部分,事实上包括众多区块链平台的开发者在内,在这一部分可以设计的余地都不大,都是选择不同的对等网络特性和P2P协议参数。因为我们的网络基础标准是固定的,所以在此基础上设计、修改的余地不大,而且一般研发者和设计者不需要,他们也没有实力在这一层次做出独特的设计和修改。读者只需要知道,区块链与分布式账本建立在对等网络的基础上,不同的区块链和分布式账本架构,根据自己的架构设计面向的方向,均已选择好适合的对等网络、P2P协议及相关参数。
3.共识算法
共识算法是区块链和分布式账本最具特色的部分,如果一个系统没有共识算法,那么就不能称为区块链或是分布式账本系统。共识算法的基本功能是保持账本的一致性和唯一性,是在众多节点发起的众多交易中确定账本的下一笔交易的下一个块应该是哪个。虽然实现记账一致是共识算法的基本功能,但是因为是处在对等网络环境和点对点记账中,所以共识算法往往还需要考虑安全性和经济模型。安全性是指在遭受恶意记账攻击和双重花费的情况下,能够识别和抵御;经济模型用来处置整个区块链生态中的资源分配优化问题。当前几种比较主要的共识算法有POW、POS、DPOS及各类BFT。笔者针对财税这种涉及公共管理的场景设计了EPOS共识算法,即扩展权益证明共识,在本书后面的章节有专门的介绍。
4.激励
激励是区块链和分布式账本系统对参与并产生贡献者的奖励,是以区块链系统独特的技术优势形成的一种资源优化配置机制。例如在比特币系统中,众多节点通过POW共识算法随机筛选出下一个具有记账权的节点,被选出的节点因为贡献了计算资源,所以获得系统共识算法自动分配的比特币奖励,这可以称为算力激励。对于其他节点而言,虽然在此轮计算中没有获得记账权,但是因为POW的随机性,使得所有参与节点都不断有机会获得记账权,从而形成回报。
5.合约
合约以及智能合约是在区块链和分布式账本系统中自动处理不同交易方的权益交易的程序。合约和智能合约有几个主要特征:
(1)至少包含了两个参与方,产生了有条件的交易,发生了与交易权责对应的权益交割。如果仅仅是使用计算机程序就达成某一条件自动执行某一程序,这不算是合约和智能合约。
(2)合约以及智能合约是完全在无人参与的情况下达成的,合约的条件和要交割的权益,需要计算机可准确判断和识别的对象,否则就需要有人参与。
(3)最重要的一点,部署合约和智能合约需要在该应用场景和生态中认可代码即法律,否则无意义。而财税场景的特殊之处在于,这个场景的各种业务绝大多数涉及各种现行的传统的行政政策法规,如何做好衔接、平滑过渡和发展到能完全发挥出区块链的潜力,是额外的工作。
6.应用
区块链和分布式账本的不同节点代表不同的主体,而对于任何一个主体而言,为了这个主体内部节点与其他各种业务系统的配合,所对应的节点程序必须又是一个小的中心化系统,即以节点为中心。区块链中的应用程序不管是Web应用程序还是手机应用程序,或是其他应用程序,都与现有的应用程序完全相同,这里不再展开叙述。所以,单从应用程序来看,可能不太容易发现后台支撑是否涉及了区块链。
1.2.2 五种非常有用的加密算法
区块链和分布式账本技术带来了加密经济模式。所以对加密技术的使用是必不可少的,我们先对财税领域涉及的几种有价值的加密技术做介绍。
1.哈希算法
哈希算法又称摘要算法,其功能是把一段对象数据转换为一个固定长度的数据串,其特点是如果你的原文发生了一点改变,那么哈希值就会跟着变,这个可以用来锁定文件内容并校验内容是否有修改。其另外一个功能是为其他算法简化对象原文数据。
2.对称加密算法
对称加密算法使用一个密钥对一段对象数据进行加密,解密使用同一密钥,所以密钥的保管非常重要。
3.非对称加密算法
非对称加密算法的密钥成对生成,一个用于加密,另外一个用于解密。其中一个密钥属于私钥,永久不公开,另外一个属于公钥,完全公开。因为是密钥对,所以当你用私钥加密某一信息时,其他任何人都可以用你的公钥解开,能用你的公钥解开就代表是你做的加密,这就是数字签名,这是一种电子签名的技术机制,可实现不可抵赖性。所以在技术范畴内,公钥代表身份,私钥代表操作权。通过该算法可以实现匿名性。在现实社会的公共事务中,配合电子签名法可产生相应法律效力。对于任一主体,其私钥、公钥与实体法人或者自然人具有对应关系,按照《电子签名法和商用密码产品管理条例》规定,由公安部和国密办检验合格的数字证书服务机构可提供数字签名相关产品和服务。在此情况下进行操作,效果与实体盖章和手写签名等同。
4.零知识证明算法
在财税领域,涉及大量的交易信息,这些是双方的商业秘密。在实际场景中,有一种需求是双方要验证对方就某一事务的权益,但又不适合泄露任何事务信息,这种情况下就非常适合使用零知识证明算法。该算法的功能是双方彼此验证对方就某一事务的知情状态或支配权,但不需要提供给对方任何有效信息。
5.同态加密算法
同态加密算法用来处理密文,并得到和处理明文一样的结果。对于财税商业交易,如果需要某一非当事人的第三方就一项数据进行加工,并给出一个结果值,但该第三方又不是交易的相关方时,为了信息保密,适合使用同态加密算法。先将业务数据加密后再交给第三方处理,得到结果后解密,解密后的值和直接把明文交给第三方处理得到的结果一样。现阶段有许多为了交给第三方办理某项业务,而不得不提供隐私信息,最后造成信息泄露的例子,这些都可以用同态加密算法来解决。
1.2.3 几种具有代表性的架构和共识算法
对于区块链和分布式账本技术,这里介绍几种具有典型代表意义的架构思想和共识机制,以帮助读者进一步理解。
1.比特币
比特币是一种点对点的电子现金系统,其特征是所有节点记录在一本账中,身份匿名,以公钥标识身份,以私钥操作转账,形成的效果是,所有节点都能看到已有公钥名下有多少比特币,但不知道这个公钥是谁。比特币是一条公链,任何人都可以参与,不涉及实名对应。因为比特币被定义为一种电子现金,所以需要考虑庞大的共识节点数量。其共识机制为POW(工作量证明),共识的方法是,确定一个随机数哈希目标值,所有节点各自计算,先得到符合要求的结果节点,再获得下一次的记账权,其他节点以该节点的最新记账数据为准。这样比特币的架构和POW共识算法的应用价值就是:适合庞大数量的节点达成共识,一本账管理重要资产的交易和权益属性。
2.以太坊
以太坊是在比特币的基础上,考虑把所有节点的综合算力都利用起来的思想,其提出了以太坊虚拟机和智能合约的机制。以太坊使得区块链的应用思路相对于一开始的比特币有了很大的拓宽。以太坊也是公链,任何人都可以参与,且无须许可,身份是隐匿的。以太坊的共识算法分阶段设计,初始阶段也是POW。以太坊的核心价值就是提出了虚拟机和智能合约,以及运行合约需要消耗以太币的机制,这为进一步设计复杂、灵活的应用打下了良好的基础。关于激励和代币,我们在后面会有阐述,这里仅讨论架构和共识算法。
3.超级账本Fabric
超级账本是Linux基金会的开源区块链项目,该项目下面目前有7~8种进展不同的架构社区,目前应用广泛的是Fabric。Fabric是一种联盟链架构,特点是有许可机制,需要获得成员管理模块发行的数字证书才能开展链上操作。联盟链是适合联盟场合使用的区块链架构,联盟中参与共识的各参与方,都具有自己庞大的用户群和业务群。也就是说与之前的比特币和以太坊比较,联盟链适合的是链接多个中心系统,这种情况下,参与共识的节点目前一般不超过30个,使用的共识算法可插拔。Fabric的特点是在1.0版本后增加了通道的机制,就是一个节点可以加入多个通道,共识是在通道内形成,以此来满足复杂应用场景的需求。
4. Corda
Corda是R3公司提出的一种分布式账本架构,非常适合用于金融处理、财税业务等场景。Corda的思路是不设立全局账本,账本只在交易相关方持有和共识。其引入了公证人概念,公证人可理解为不同业务群的权威机构。实际上技术不断发展,如果某些业务需要全局共识,这与Corda的架构也不冲突。另外,Corda实现了合约与现实合约的完全衔接和对应,这使得实施变得更为平滑和容易。本书第二部分将详细介绍Corda的开发。
5. Sawtooth
Sawtooth是英特尔公司基于其硬件体系提出的区块链架构,提供结合硬件芯片级的TEE环境,以及POET共识。其节点地址包含节点自身地址与域地址两部分,域地址具有域共识特性,即大范围域覆盖小范围域,这种共识特性使Sawtooth可用于与其对应的场景。
6. IOTA
IOTA是面向物联网的一种架构,和前面所有架构的不同之处在于,其交易的验证具有随机性,所有的交易之间关系整体看是一个网状的结构,而不是像其他架构那样的链状结构,共识效率与被验证的次数权重有关。这是一种另辟蹊径的发展方向,感兴趣的读者可关注。
7. NEO与ONT
NEO是中国社区很早就开始贡献的一种开源架构技术体系。NEO因应用开发的友好和开发环境的完善而受到开发者称赞;ONT重在实现多链网间应用和身份识别,其是发展前景比较好、构思成熟的一类技术体系。
除了上述共识算法外,还有POS、DPOS和BFT等共识算法。
在某一业务背景下,具有利害关系的参与方共识才有意义,其他人可能就是用户。与中心化的单一角色服务的信息系统相比,通过共识算法达成的区块链系统,能够使得各种业务需求得到分布式的区域实现。而对于中心化系统来说,若其不支持区域局部需求,那么区域局部性需求就无法实现。另外,区块链系统通过共识算法,能避免单一系统的被操纵,因为利益方不会认可任何损害自身利益的事务。所以共识算法的设计,往往除了考虑记账一致性这个基本需求外,还需结合经济模型和并充分考虑安全性。
1.2.4 区块链激励机制设计与发展趋势
目前比特币、以太坊等公链已有的都是算力激励,即节点持有者投入了设备,那么就可以挖矿,挖矿所得报酬就是对算力贡献的一种回报,记账也需要支付代币作为报酬,这一层的激励都算是算力激励。随着区块链技术的应用发展,会出现第二层的与业务场景绑定的业务场景激励,和第三层的与应用绑定的应用激励。
激励机制和经济模型的设计,依据设计者对于区块链生态的设计意图而产生。我们可以结合一个例子来分析一下算力激励的优点。例如,在传统的计算机设备销售过程中,制造商将计算机卖给客户,获得销售收入,客户使用到年限然后报废,整个过程就这么简单。如果购买计算机的客户,共同用这些计算机搭建一个信息系统,那么一般会有几个现象:
(1)不同客户产生的业务量对系统资源的消耗,与不同客户贡献计算机的比例可能不匹配。
(2)这个系统可能还有没有贡献计算机设备的使用者。
在这种情况下,需要一种分配机制,使得购买计算机者能够获得相匹配的回报。而产生业务量消耗计算资源者的付出,也与自己的业务量匹配。通过这两方面的兼顾考虑,使得资源配置更加公平合理。在POW算法中,记账权的节点获得的奖励,记账获得的记账费,这都是算力激励的体现。
当前因为区块链处在发展的初级阶段,各类区块链平台也都处在建设期,所以各类算法和激励都体现在算力激励与算力资源配置的优化上。笔者认为,区块链系统的激励和经济模型,不会只有体现在算力这一层,还会有更多层面和更多维度的激励和经济模型设计,例如不同领域的区块链系统的激励措施就应该有区别,比如银行业和农牧业应该区别对待。而相同领域中的不同组织或不同产品,也应该有所区别,比如同属银行业,但是一线大城市的银行和小县城的银行之间应该区别对待,而不同档次的理财产品之间也应该有所区别。这就如同我们现在常见的会员系统,往往不同等级的会员会设定不同的年费和可以享受不同的服务。区块链系统结合场景和代币来设计激励措施和经济模型,可以使品质与价格匹配得更加紧密,真正做到一分钱一分货。体现到在商业上,可能会产生消灭统一定价,甚至消灭价格的效果。