区块链的定义和本质
笔者经过对各种区块链异同点的分析和归纳思考,先给出了一个区块链定义。
区块链是在符合现实社会法律法规前提下,可治理的,依赖于密码学算法和博弈经济性设计,基于共识算法,对发生在主体间的价值创造,价值转移,价值交换,以及涉及到各个价值主体由机器驱动的业务流程,在多个对等的主体间形成的共识,从而达到共享业务状态,共享价值状态,即共享账本,以达到加速社会资源配置和价值流通,最终提高生产力的目的。
区块链的本质是共识,在互不信任的主体间的共识就形成了公认的价值。区块链的目标是解放和提高整个社会的生产力,手段是将生产关系虚拟化,运用IoT和价值锚定技术将现实世界和虚拟世界无缝连接起来,虚拟化的业务合约可以由机器自动化驱动现实和虚拟社会的资源配置,价值生产和流通,结合大数据智能分析优化虚拟的生产关系,现实和虚拟的法律法规和治理机制为虚拟的区块链社会的稳定发展提供保障。
区块链的架构模型
作者从区块链的本质出发,以发展的眼光看待区块链的架构和架构未来的发展,关注于主要业务和技术能力,给出一个全面而高度概括的区块链架构模型。这是一个面向链合约服务的高阶架构模型,体现了未来基于区块链实现高度自动化、智能化、公平守约的虚拟社会生产关系的能力。
面向链合约服务的高阶层次化架构包括了三大部分:业务合约和账本,区块链平台服务,UI界面和API接口。以下对各个部分进行详细说明。
图1 区块链架构模型
业务合约和账本
在现实世界,我们每个人都处在各种关系契约中,所有人在契约的约定下参与整个社会的生产和生活。区块链技术最终要能促进生产关系虚拟化,推动生产力的发展,整个区块链生态系统的核心就是要能支持各种契约,即业务合约,并在相关参与者间共享交易账本。
业务合约大到非常复杂的业务合约流程,这要高于企业各自的流程,是各个企业、组织或个人作为流程主体共同参与制定共同认可的生产关系流程契约。比业务合约流程粒度小的业务合约称为合约服务,合约服务是在语义层面对业务行为进行抽象的最小契约,合约服务由一组合约动作(action)构成。作为抽象的合约服务的具体实现,合约代码可以由不同合约语言编写,合约代码中引用的业务条款和法律条款也都可以有具体的不同实现语言。
合约流程
合约流程实现了基于合约服务的一系列固定的,按照既定业务规则和法律条款串联或并联起来的合约动作,通过各个合约动作的完成,实现业务在各个流程参与方的执行,实现由机器流程引擎驱动的价值高速自动创造,自动流转,自动交换。合约流程一旦运行起来就是一个状态机,合约流程在参与方间共享流程状态,也就是共享一致的状态机的状态。
业务参与各方在阅读具体的业务合约流程业务规则,法律条款后,签定合约流程契约,合约流程生效,流程可以通过时间触发,也可以是链上的事件触发,也可以Oracle事件触发,也可以人工触发。初始化后的流程实例按照后续节点的类型,人工节点或是计算节点,实现通过UI界面或API的外部输入确认的人工执行驱动,或调用合约服务的具体action实现代码的机器计算驱动,形成业务价值交易,流程引擎调用业务条款检查服务和法律条款检查服务,获得业务节点的业务规则状态和法律条款满足状态,按照既定的流程规则,引擎驱动流程判断流向下一(多)个节点。
业务流程在各个节点流转时,由流程引擎驱动形成一个个的流程流转交易,业务流程合约参与方通过共享流程流转交易实现流程状态共享的目的。流程验证者在本地的沙盒中执行对流程流转交易的验证,实现流程状态机一致的状态流转。
合约服务
作为业务合约的主体,定义了业务合约最基本的服务内容,每一个合约服务就是一种最小的完整的概念层面的业务语义定义。合约服务定义了完成业务所需的一个或多个合约动作(action),每个合约动作定义了输入状态和输出状态和要执行的业务逻辑命令。
合约服务本身和每一个合约动作,以及其中用到的任何合约条款法律条款都需要用人类语言进行清晰明确的描述,必要时提供形式化语义描述以免出现语言理解偏差。每一个合约动作的执行形成一个明确的合约价值交易。合约流程引擎在执行流程节点流转时,按照流程定义的对合约服务动作的调用,自动进行服务动作的执行,从而产生业务价值交易,这是一种内在的合约服务调用。合约服务的调用也可以是外在的,由用户通过UI界面基于外部API接口实现调用。
合约服务可以是一种组合服务,对现有的合约服务动作进行组合,形成新的服务动作业务语义。合约服务的可组合化有利于基于已有的业务合约定义,通过快速构建新型的业务合约进行生产关系创新,实现不同产业价值服务的零距离整合。为了实现合约服务的自包含化,并支持服务流程的编排,以及服务计算容器化、分布式、可扩展的架构部署要求,合约服务需要定义成无状态的。当签约用户或流程调用合约服务时,合约服务会进行服务路由,基于链服务管理的路由规则,选择特定的合约代码实现来具体验证执行业务价值交易。
合约代码
合约服务的每一个合约动作都会产生业务价值交易,业务价值交易会在合约代码实现上进行执行和验证。作为交易验证者,合约服务可以有多种实现,如不同合约语言的实现,不同合约提供商的版本实现,不同利益相关方的合约代码实现,这有利于所有的合约服务参与者去中心化,并在抽象的业务层面就达成共识。
合约代码实现了合约动作定义的输入状态和输出状态和要执行的一组业务逻辑命令计算,命令是最小的执行单元,可以是调用一个技术服务,如生成zkSNARK证明,也可以是输入和输出状态检查、逻辑计算、法律条款服务检查等。
经过所有的命令执行,如果输入状态可以确定性地得到输出状态,对于合约服务的发起者就可以形成一个业务价值交易建议,而其他参与者可以对这个业务价值交易建议进行验证。对于合约流程产生的流程流转交易,由流程执行建议者计算出状态迁移交易建议,由流程执行验证者进行本地流程流转验证。
价值共享账本
合约流程的流转会产生流程流转交易,合约服务的执行会形成业务价值交易,所有的这些交易日志,被分类按应用按联盟团体组织成区块链或者交易链,形成不可更改和抵赖的数据结构,在各个参与方之间形成一个统一的状态账本。价值共享账本需要以高效、规范的方式进行数据组织,包括交易日志和账本状态,以便于流程状态(状态机)和资产状态数据库的快速更新,也便于对历史交易进行快速查找和回溯。另外,价值共享账本底层还需要有共享的通信机制,如使用各种P2P算法,便于相关方进行基于权限的相关交易数据的快速同步。
区块链平台服务
区块链平台服务提供所有区块链平台层面的公共服务,平台服务同具体的业务无关,是可以为所有业务合约所共享的服务。各种平台服务可以是链上的,也可以是链外的,一同构成一个区块链平台不可或缺的能力。主要包括合约合规,安全控制,链上共识,链服务管理,治理(链上、链外),开发运维。
合约合规
合约合规服务将那些公共的合规性要求抽取出来,形成各个业务都通用的规则条款检查服务,合约条款验证服务,法律条款验证服务,Oracle服务约定,合约宪法条款约定。
合约宪法指明了合约纠纷适用的法律,争议解决办法,以及人类可读的合约意图等。一个实际的区块链平台能够同现实社会经济并行运行的一个前提条件就是同现实社会一致的合法合规性。不论是把现实世界中心化的合约去中心化建模成虚拟世界的业务合约,还是基于区块链新型的生产关系新创造的业务合约,合法合规依然是根本。
法律和规则都可以以最低粒度的条款内容存在,为了支持业务合约的快速搭建和创新,将通用的合约条款,规则条款,法律条款实现为一种服务,基于对条款服务的引用和基于条款服务的组合,可以实现更高粒度的合规合法性验证要求。业务合约可以基于这些合约规则,合约条款,法律条款和组合的合规合法性验证要求自动进行交易的合规性验证。
对于那些无法由代码实现的验证内容和合约意图,可以通过人类可以理解的方式通过合约宪法指定合约运行所依赖的现实世界法律,指定出现无法在链上解决的争议,在现实世界的解决办法。合约流程和合约服务如果使用现实世界数据输入的,为了达到确定性运行,所有验证人的验证执行都必须依赖相同的Oracle服务或者交易各方都认可的Oracle服务。
安全控制
区块链在平台安全层面需要设计隐私模型,权限模型。
同现实世界人们需要一定的隐私性和匿名性一样,区块链虚拟世界也需要提供相应的隐私保护给用户。对于公有链,出于网络的安全考虑,往往需要交易无关方对交易内容执行验证,必须让用户身份信息同用户的交易信息隔离,使用户身份得到保护,甚至采用零知识证明zkSNARK算法仅向验证者提供一个无需暴露交易内容的证明,验证者就可完成验证,做到绝对的交易身份隐匿。
许可链由于网络的参与方都是受控的,所以防范网络攻击的安全需求没有公有链那么高,共识机制只需确保技术层面的一致和完备,交易业务层面的验证可以只在交易相关方进行验证,这样可以保证交易无关方看不到任何交易内容,即使是加密的交易内容也看不到。
公有链是一种开放权限的设计思路,不会显式的设定不同参与人的操作权限,只会采用黑名单机制。而许可链是一种白名单机制,有非常严格的准入机制,只有允许的参与方才可以参与被允许的业务合约。许可链通常采用PKI基础设施通过自身的CA机构,同企业现有的权限管理系统进行集成,如LDAP、AD服务器,进而控制不同的人具有不同的合约操作权限。
区块链由于采用公私钥机制进行交易,不论采用哪种数据模型,都存在最小粒度的基于私钥的账户概念。区块链存在两种类型的合约账户:合约流程账户(Contract Process Account, CPA)和合约服务账户(Contract Service Account, CSA)。外部用户也会有自己的私钥账户(User Account, UA),外部用户账户会参与到合约流程账户和合约服务账户相关的活动中,而合约流程账户会依赖合约服务账户执行相关的合约动作调用。
不同的合约流程和合约服务实例化后的相互关系会非常复杂,我们可以把这三种账户按照使用关系和依赖关系组织成树状结构,采用merkle证明的方式进行权限证明验证。
链上共识
共识机制是区块链建立信任的基石。不同类型的区块链出于不同的考虑会选择不同的共识算法或者采用共识算法的组合。共识的内容包括账本的规范化(如何组织区块,组织交易链),交易的确定性执行结果,交易的非双花唯一性,交易的顺序完备性,以及其他保证网络安全稳定运行的其他信息(如数据可用性)。
另一方面,共识机制的运行又不应同账本的规范化和交易的验证紧密绑定在一起,这也遵从关注点分离的架构原则,有利于区块链平台整体的模块化,插件化,容器化,有利于平台的横向扩展性。
链服务管理
区块链平台服务一个很重要的能力体现就是对于链上服务的高效可靠的管理,所有区块链的业务合约的正常稳定运行都依赖于这些注册的链服务。这种重要性使得链服务的管理需要遵从区块链治理体制和治理流程规则。链服务包括以下几种类型:
- 合约流程管理:包括对合约流程的建立,版本升级,退出的管理。一旦某个用户账户绑定在合约流程实例账户上运行,一直要运行到整个合约流程实例完全结束,可以提供退出子流程供中途退出,或者通过治理流程,让所有参与者选举主动结束合约流程实例。
- 合约服务管理:包括对合约服务的注册,版本升级,退出的管理。每一个合约服务是一个有完整业务意义的抽象的合约规约,其中每一个合约动作都代表了不同利益方共同遵守的价值约定,一旦签约加入合约服务,就从法律意义上确认了这样的价值约定。
- 链技术服务管理:包括对链技术服务的注册,版本升级,删除操作。合约服务和合约流程运行时所依赖的公共技术服务,如生成链平台的zkSNARK证明,验证签名,如果暴露成链服务的形式,就可以完成基于无状态服务的计算可扩展性,特别适用于计算密集型的技术服务高负载运行时,可最大并行度地支持合约服务的验证执行,也有利于采用特定的硬件加速技术服务。
- Oracle服务管理:包括Oracle服务的注册,版本升级,删除操作。Oracle服务是虚拟世界同现实世界的桥梁,很多业务合约的运行都离不开来自于现实世界的信息,必须提供统一的Oracle服务,供所有的验证人进行运行时验证,才能保证交易验证的确定性。Oracle服务横跨两个世界,所以必须在两个世界都要设立对其的监督制约机制。虚拟世界的监督机制设计,如存入大额抵押金成为Oracle服务提供方,成立赏金猎人监督机制,一旦被发现非法行为,如提供同实际情况不符的Oracle证明,即被没收所有抵押金,吊销Oracle服务资质,记录征信档案,在现实世界也需要做出相应的惩罚。
链上治理和链外治理
任何不同利益主体参与的活动,从长期稳定发展的角度来看,都需要配套的治理策略和机制保障。区块链作为多利益主体参与的动态变化的系统,架构处于不断演进过程中,运行的业务合约也不断发展变化,还面临利益驱使的恶意行为,及有组织的黑客攻击行为,运行的业务合约和交易都存在监管和审计的需求。
为了让区块链可以平稳安全的运行,特别是对于公有链,需要从公平正义的基本法理出发,预先设计出完整的博弈经济模型和社会化治理机制。博弈经济模型可以保证区块链的参与者都以不同的角色,积极高效自觉地参与和维护区块链的生产、管理和治理,对符合区块链整体利益的行为进行激励,对正义行为进行奖励,对恶意行为进行惩罚,使用经济手段阻断黑客攻击,让攻击行为得不偿失,另外,模仿现实世界对经济活动征收税收,税收用于整个区块链平台的治理。
为了能高效公平地推进链的治理,可以预先设计出扩展性良好的底层治理机制,如设计底层的链上投票合约,基于这个底层机制可以进行相关平台重大事项的社会化投票公决,如区块链主宪法的更改,链参数的更新,链系统合约的升级,业务合约(合约流程,合约服务,合约代码)以及合约法律的升级。
对于那些无法通过链上解决的治理问题,或者需要现实世界配合解决的问题,以及那些还无法预见的问题,需要设定链外治理的策略和机制,如对于确认的业务合约中的恶意行为或黑客行为,除了经济手段惩罚,还可以诉诸现实世界法律手段。
一个稳定运行的区块链系统就形成一个经济和金融体系,离不开对在其中运行的经济交易的持续审计和监管,以杜绝违法合约和交易行为,如反洗钱交易。每一个业务合约的接入方需要负责对客户进行尽职调查,做到KYC监管要求。对于区块链的有效治理,还离不开基于区块链交易数据的大数据智能分析,由于区块链是一个经济系统,可能还需要基于分析结果施加以适应经济规律的宏观政策。
开发运维
一个成功的区块链平台就是一个多利益主体参与的生态系统,每一个参与主体(政府、企业、组织、个人)都有可能参与到平台的开发和运维工作中来。
设计和开发人员可以参与到基础平台层服务的设计开发,也可以实现业务合约的规格制定和开发,这其中会涉及到架构人员,业务人员,法律人员,技术人员,监管人员等各种专业人员。
对于一个业务合约的设计和开发,首先需要由业务人员,法律人员和架构师完成完整的业务合约规约的制定,不同价值主体可以共同完成或由一方完成后讨论,形成合约共识,制定出完整的合约流程,合约服务规格说明书;再由不同的参与主体自行开发实现或委托实现,可以不断迭代提炼出通用的服务,如法律条款检查服务,通用技术服务,各方在自行开发实现时充分利用平台已有的成熟的通用服务以提高实现效率和服务稳定性,参与各方可以采用不同的语言实现合约服务逻辑,以保证合约服务语义层面的一致性和合约的分布性。可以设计和开发的要件有:合约流程,合约服务,合约代码,技术服务,规则服务,合规服务。
每一个参与主体特别是验证节点都可以参与到区块链的平台运维中来,运维行为包括对运行节点服务的容器化集群,提供动态扩展能力,安装多语言多VM实现节点,支持多节点并行运行,并行验证。生产运维需要有完善的流程,面对区块链日新月异的变化,可以充分利用DevOps进行持续开发,持续集成的新开发运维体制和自动化测试部署流程。
对于生产系统需要能够进行监控,进行事件记录,对重要事件发出告警,对于告警错误码需要预先制定处理流程,针对区块链系统和业务,还需要预先制定出正常情况和异常情况下的运维流程。
UI界面和API接口
整个区块链服务对外的交互接口,包括提供给人的UI界面和提供给其他信息系统或人工智能代理的API接口。交互的主要内容包括:
个性化任务列表
价值主体加入某个合约流程后,如果合约流程的某个业务流程节点需要主体的输入和确认,这就转化成对这个主体的界面交互请求,用户需要在一个业务界面中输入必须的内容,或者确认系统提供的业务信息,并使用主体的业务操作私钥进行签名,以表明主体的操作权限,让业务合约得以继续进行下去。主体可以同时加入多个合约流程,这就会存在一个任务列表,需要主体逐个进行界面操作完成。
个性化分布式APP
每一个业务合约都可能是一个App,多个业务合约一起也可以是一个App,用户,用户的IoT智能终端,或者用户的人工智能代理,加入的每一个业务合约(合约流程或合约服务)都是一个业务应用,所以需要为用户提供定制化的分布式App,满足用户的个性化需求。比如设计一个大一统的App基础平台,在其上提供各种插件式的个性化小应用,为用户加入的各个业务合约提供界面,用户自己管理自己身份,不再控制在集中的机构手中,所有小应用的交易和授权都是基于用户各个应用的私钥进行,只由用户本人控制。
IoT协议适配和价值锚定
区块链一个大的应用方向就是同物联网的结合,物联网的各种终端要实现智能化自动制造,智能化自主服务,就需要将他们绑定到虚拟世界里,传统的IoT中心化控制架构是无法直接反应社会化生产和服务要求的。
区块链作为一个虚拟的经济社会,维持了虚拟的经济生产关系,让IoT智能终端参与区块链群体中,参与到具体的区块链合约流程和合约服务中,由社会化的区块链机器自动驱动IoT终端进行自动化的生产和服务,并引入人工智能代理加速人工处理,可以极大提高生产力。区块链需要同IoT的协议进行适配,以确保双向交易的无障碍流通。
另外,为了在虚拟世界建模现实世界的价值生产,转移和交换,将现实世界真正融入到虚拟世界的生产关系合约中,需要为现实世界生产的产品和服务价值,在虚拟社会分配一个价值锚定标签,就如同虚拟世界拥有了私钥就可以锁定价值一样,在现实世界,也需要有一套可行的方案将虚拟世界的价值锚定标签植入到现实世界的产品和服务中去,不同的产品和服务可能需要不同的锚定机制。通过价值锚定标签,现实世界价值的生产、转移和交换就可以无缝融合进虚拟世界的生产关系合约流程和服务中去。
人工智能代理
作为价值主体,可以使用人工智能代理帮助其完成合约流程的自动流转和合约服务动作的自动发起。一个虚拟世界高速运转的生产关系需要这样的角色,随着人工智能的发展,人工智能代理也能够胜任基本的基于规则和用户习惯的操作。另外,结合大数据智能分析,在设定一定的业务目标后,可以由人工智能代理主动发起一些优化的交易,降低人工操作,提高整个合约服务的运行效率,可以预见性地优化资源配置,减少整个社会化生产的资源浪费。
开放API
整个区块链平台对于可以开放的或者可以权限开放的接口,都提供标准的API,允许外部系统或人工智能代理进行访问和操作。区块链的各种业务合约(合约流程,合约服务)信息,区块链的各种交易结果,当前流程状态,资产状态,或者区块链的交易发生证明,资产存在证明,链上治理接口,也都可以API的方式向外部系统提供。通过API接口,也可以进行各种业务合约的操作,如人工处理的提交,合约动作交易的提交等。
业务合约浏览器
通过业务合约浏览器,用户可以看到权限范围内的所有可参与的业务合约,包括合约具体的规格化内容,如合约流程、合约服务各动作、合约具体规则、合约法律条款、合约宪法、治理规则等。
区块链浏览器
区块链浏览器可以浏览所有的区块,以及权限许可的交易内容,可以对可浏览的交易进行回溯查看,可以从不同的维度进行交易、流程和价值资产的审查。
资产浏览器
资产浏览器运行用户以统一的视角看待用户关联的所有合约资产。资产浏览器可以同个性化分布式App整合在一起,让用户可以看到当前各个参与合约流程的当前状态,各个合约服务的状态资产,以统一的视图帮助用户进行交易的优化决策。