本文是基于作者近几年来对各种区块链平台理念和技术的研究, 结合作者过去十多年 IT 架构经验, 审慎思考的结果, 文章仅代表作者个人观点作者会假设读者对各种区块链平台有一定认知, 不会对具体的区块链平台再做详细的介绍
为了从根本上说清楚区块链的架构内涵, 作者先概括出区块链的本质, 从区块链的本质出发, 以发展的眼光给出一个区块链的高阶架构, 并对高阶架构的各个模块进行详细的说明还会从区块链跨链的本质出发, 说明区块链的跨链架构, 以及区块链划分和发展趋势最后结合区块链高阶架构, 以可扩展性设计为导向, 给出一个区块链的高阶部署架构模型
区块链的本质和架构模型
区块链的定义和本质
笔者经过对各种区块链异同点的分析和归纳思考, 先给出了一个区块链定义
区块链是在符合现实社会法律法规前提下, 可治理的, 依赖于密码学算法和博弈经济性设计, 基于共识算法, 对发生在主体间的价值创造, 价值转移, 价值交换, 以及涉及到各个价值主体由机器驱动的业务流程, 在多个对等的主体间形成的共识, 从而达到共享业务状态, 共享价值状态, 即共享账本, 以达到加速社会资源配置和价值流通, 最终提高生产力的目的
区块链的本质是共识, 在互不信任的主体间的共识就形成了公认的价值区块链的目标是解放和提高整个社会的生产力, 手段是将生产关系虚拟化, 运用 IoT 和价值锚定技术将现实世界和虚拟世界无缝连接起来, 虚拟化的业务合约可以由机器自动化驱动现实和虚拟社会的资源配置, 价值生产和流通, 结合大数据智能分析优化虚拟的生产关系, 现实和虚拟的法律法规和治理机制为虚拟的区块链社会的稳定发展提供保障
区块链的架构模型
作者从区块链的本质出发, 以发展的眼光看待区块链的架构和架构未来的发展, 关注于主要业务和技术能力, 给出一个全面而高度概括的区块链架构模型这是一个面向链合约服务的高阶架构模型, 体现了未来基于区块链实现高度自动化智能化公平守约的虚拟社会生产关系的能力
面向链合约服务的高阶层次化架构包括了三大部分: 业务合约和账本, 区块链平台服务, UI 界面和 API 接口以下对各个部分进行详细说明
图 1 区块链架构模型
业务合约和账本
在现实世界, 我们每个人都处在各种关系契约中, 所有人在契约的约定下参与整个社会的生产和生活区块链技术最终要能促进生产关系虚拟化, 推动生产力的发展, 整个区块链生态系统的核心就是要能支持各种契约, 即业务合约, 并在相关参与者间共享交易账本
业务合约大到非常复杂的业务合约流程, 这要高于企业各自的流程, 是各个企业组织或个人作为流程主体共同参与制定共同认可的生产关系流程契约比业务合约流程粒度小的业务合约称为合约服务, 合约服务是在语义层面对业务行为进行抽象的最小契约, 合约服务由一组合约动作 (action) 构成作为抽象的合约服务的具体实现, 合约代码可以由不同合约语言编写, 合约代码中引用的业务条款和法律条款也都可以有具体的不同实现语言
合约流程
合约流程实现了基于合约服务的一系列固定的, 按照既定业务规则和法律条款串联或并联起来的合约动作, 通过各个合约动作的完成, 实现业务在各个流程参与方的执行, 实现由机器流程引擎驱动的价值高速自动创造, 自动流转, 自动交换合约流程一旦运行起来就是一个状态机, 合约流程在参与方间共享流程状态, 也就是共享一致的状态机的状态
业务参与各方在阅读具体的业务合约流程业务规则, 法律条款后, 签定合约流程契约, 合约流程生效, 流程可以通过时间触发, 也可以是链上的事件触发, 也可以 Oracle 事件触发, 也可以人工触发初始化后的流程实例按照后续节点的类型, 人工节点或是计算节点, 实现通过 UI 界面或 API 的外部输入确认的人工执行驱动, 或调用合约服务的具体 action 实现代码的机器计算驱动, 形成业务价值交易, 流程引擎调用业务条款检查服务和法律条款检查服务, 获得业务节点的业务规则状态和法律条款满足状态, 按照既定的流程规则, 引擎驱动流程判断流向下一 (多) 个节点
业务流程在各个节点流转时, 由流程引擎驱动形成一个个的流程流转交易, 业务流程合约参与方通过共享流程流转交易实现流程状态共享的目的流程验证者在本地的沙盒中执行对流程流转交易的验证, 实现流程状态机一致的状态流转
合约服务
作为业务合约的主体, 定义了业务合约最基本的服务内容, 每一个合约服务就是一种最小的完整的概念层面的业务语义定义合约服务定义了完成业务所需的一个或多个合约动作(action), 每个合约动作定义了输入状态和输出状态和要执行的业务逻辑命令
合约服务本身和每一个合约动作, 以及其中用到的任何合约条款法律条款都需要用人类语言进行清晰明确的描述, 必要时提供形式化语义描述以免出现语言理解偏差每一个合约动作的执行形成一个明确的合约价值交易合约流程引擎在执行流程节点流转时, 按照流程定义的对合约服务动作的调用, 自动进行服务动作的执行, 从而产生业务价值交易, 这是一种内在的合约服务调用合约服务的调用也可以是外在的, 由用户通过 UI 界面基于外部 API 接口实现调用
合约服务可以是一种组合服务, 对现有的合约服务动作进行组合, 形成新的服务动作业务语义合约服务的可组合化有利于基于已有的业务合约定义, 通过快速构建新型的业务合约进行生产关系创新, 实现不同产业价值服务的零距离整合为了实现合约服务的自包含化, 并支持服务流程的编排, 以及服务计算容器化分布式可扩展的架构部署要求, 合约服务需要定义成无状态的当签约用户或流程调用合约服务时, 合约服务会进行服务路由, 基于链服务管理的路由规则, 选择特定的合约代码实现来具体验证执行业务价值交易
合约代码
合约服务的每一个合约动作都会产生业务价值交易, 业务价值交易会在合约代码实现上进行执行和验证作为交易验证者, 合约服务可以有多种实现, 如不同合约语言的实现, 不同合约提供商的版本实现, 不同利益相关方的合约代码实现, 这有利于所有的合约服务参与者去中心化, 并在抽象的业务层面就达成共识
合约代码实现了合约动作定义的输入状态和输出状态和要执行的一组业务逻辑命令计算, 命令是最小的执行单元, 可以是调用一个技术服务, 如生成 zkSNARK 证明, 也可以是输入和输出状态检查逻辑计算法律条款服务检查等
经过所有的命令执行, 如果输入状态可以确定性地得到输出状态, 对于合约服务的发起者就可以形成一个业务价值交易建议, 而其他参与者可以对这个业务价值交易建议进行验证对于合约流程产生的流程流转交易, 由流程执行建议者计算出状态迁移交易建议, 由流程执行验证者进行本地流程流转验证
价值共享账本
合约流程的流转会产生流程流转交易, 合约服务的执行会形成业务价值交易, 所有的这些交易日志, 被分类按应用按联盟团体组织成区块链或者交易链, 形成不可更改和抵赖的数据结构, 在各个参与方之间形成一个统一的状态账本价值共享账本需要以高效规范的方式进行数据组织, 包括交易日志和账本状态, 以便于流程状态 (状态机) 和资产状态数据库的快速更新, 也便于对历史交易进行快速查找和回溯另外, 价值共享账本底层还需要有共享的通信机制, 如使用各种 P2P 算法, 便于相关方进行基于权限的相关交易数据的快速同步
区块链平台服务
区块链平台服务提供所有区块链平台层面的公共服务, 平台服务同具体的业务无关, 是可以为所有业务合约所共享的服务各种平台服务可以是链上的, 也可以是链外的, 一同构成一个区块链平台不可或缺的能力主要包括合约合规, 安全控制, 链上共识, 链服务管理, 治理(链上链外), 开发运维
合约合规
合约合规服务将那些公共的合规性要求抽取出来, 形成各个业务都通用的规则条款检查服务, 合约条款验证服务, 法律条款验证服务, Oracle 服务约定, 合约宪法条款约定
合约宪法指明了合约纠纷适用的法律, 争议解决办法, 以及人类可读的合约意图等一个实际的区块链平台能够同现实社会经济并行运行的一个前提条件就是同现实社会一致的合法合规性不论是把现实世界中心化的合约去中心化建模成虚拟世界的业务合约, 还是基于区块链新型的生产关系新创造的业务合约, 合法合规依然是根本
法律和规则都可以以最低粒度的条款内容存在, 为了支持业务合约的快速搭建和创新, 将通用的合约条款, 规则条款, 法律条款实现为一种服务, 基于对条款服务的引用和基于条款服务的组合, 可以实现更高粒度的合规合法性验证要求业务合约可以基于这些合约规则, 合约条款, 法律条款和组合的合规合法性验证要求自动进行交易的合规性验证
对于那些无法由代码实现的验证内容和合约意图, 可以通过人类可以理解的方式通过合约宪法指定合约运行所依赖的现实世界法律, 指定出现无法在链上解决的争议, 在现实世界的解决办法合约流程和合约服务如果使用现实世界数据输入的, 为了达到确定性运行, 所有验证人的验证执行都必须依赖相同的 Oracle 服务或者交易各方都认可的 Oracle 服务
安全控制
区块链在平台安全层面需要设计隐私模型, 权限模型
同现实世界人们需要一定的隐私性和匿名性一样, 区块链虚拟世界也需要提供相应的隐私保护给用户对于公有链, 出于网络的安全考虑, 往往需要交易无关方对交易内容执行验证, 必须让用户身份信息同用户的交易信息隔离, 使用户身份得到保护, 甚至采用零知识证明 zkSNARK 算法仅向验证者提供一个无需暴露交易内容的证明, 验证者就可完成验证, 做到绝对的交易身份隐匿
许可链由于网络的参与方都是受控的, 所以防范网络攻击的安全需求没有公有链那么高, 共识机制只需确保技术层面的一致和完备, 交易业务层面的验证可以只在交易相关方进行验证, 这样可以保证交易无关方看不到任何交易内容, 即使是加密的交易内容也看不到
公有链是一种开放权限的设计思路, 不会显式的设定不同参与人的操作权限, 只会采用黑名单机制而许可链是一种白名单机制, 有非常严格的准入机制, 只有允许的参与方才可以参与被允许的业务合约许可链通常采用 PKI 基础设施通过自身的 CA 机构, 同企业现有的权限管理系统进行集成, 如 LDAPAD 服务器, 进而控制不同的人具有不同的合约操作权限
区块链由于采用公私钥机制进行交易, 不论采用哪种数据模型, 都存在最小粒度的基于私钥的账户概念区块链存在两种类型的合约账户: 合约流程账户 (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 整合在一起, 让用户可以看到当前各个参与合约流程的当前状态, 各个合约服务的状态资产, 以统一的视图帮助用户进行交易的优化决策
区块链跨链本质和跨链模型
区块链跨链的本质
把整个现实社会都搬到一个区块链上是不现实的, 现实社会本身也是分产业分经济领域进行价值创造的, 通过市场实现不同产业和不同经济领域的价值交换每一个独立区块链维护了自己独立的价值经济体系, 跨链区块链是连接独立区块链的中枢, 承载了不同价值体系区块链价值交换的功能, 商品要能实现交互, 需要有价格, 价格来源于商品自身的价值, 取决于供求关系, 而供求关系是靠市场搭建的, 所以, 为了实现不同区块链商品的价值交换, 在跨链区块链上会出现各种价值交易市场, 跨链区块链上每一个价值交易市场就是一个跨链合约服务
价值不会凭空产生也不会凭空消失, 跨链设计也必须遵从人类自古以来的经济规律跨链的本质是价值等价交换, 任何违背这个基本原则的设计最终都会失败
区块链跨链架构模型
图 2 中独立区块链的架构模型已经在上文中说明了, 所有独立区块链如果需要支持跨链价值转移或交换, 就需要存在外链合约服务, 外链合约服务同普通的合约服务没有本质的区别, 也是一种合约服务规约, 不同之处在于合约的制定者会提供一组公开声明的跨链交易公钥地址, 需要进行跨链交易的主体可以把自己拥有的一定数量的价值体转移到跨链合约服务指定的公钥地址上, 并指定跨链交易内容, 如希望交换另一个区块链上一定数量的价值体, 并把交换后的价值体转到自己在另一个区块链上的公钥地址上
图 2 区块链跨链架构模型
这里假定存在两个独立区块链 A 和 B, 存在一个主体 X 和主体 Y, 他们都拥有两个链上的私钥地址, 主体 X 是区块链 A 上的价值生产者, 如农民生产粮食, 主体 Y 是区块链 B 上的价值生产者, 如工厂生产工业品, 主体 X 希望购买区块链 B 上的产品或服务, 如工业品, 主体 Y 希望购买区块链 A 上的产品或服务, 如粮食
跨链区块链主要有两种类型的链组成, 一种是主链, 跨链主链只有一个, 一种是适配子链, 适配子链至少存在 2 个, 由跨链主链连接各个适配子链, 各个子链之间没有信任关系, 而是通过主链进行信任的传递适配子链和主链按照设定的协议进行交互, 以达到信任传递和交易传递的目的
跨链区块链本身也需要有同独立区块链一样的区块链平台服务, 如合约合规安全控制链上共识链服务管理链上链外治理开发运维, 这些在上图都做了省略对于链上共识, 主链和子链需要采用比 PoW 更加高效的算法实现跨链交易交互, 如采用 BFT 共识算法, 目前两个跨链平台 (Cosmos 和 Polkadot) 设计都是采用 PoS+BFT 的混合共识算法
跨链区块链本身也是个区块链, 所以独立区块链所具有的业务合约能力也应具有, 但基于跨链区块链构建的业务合约会支持更复杂的业务, 实现同不同价值区块链的连接, 进行价值交换每一个跨链业务合约都会形成一个交易市场, 不同区块链的不同价值体系在这个交易市场上获得各自的定价, 并进行交易, 极有可能会形成基于主链代币或者主权加密通货的各种区块链价值体的统一报价和交易市场
更高级地通过跨链合约流程, 可以实现所有区块链虚拟社会生产关系的组合, 假设每个独立区块链是一个独立的经济领域, 跨链合约流程就可以串接起独立的经济领域成为一个完整的产业链条跨链区块链本身也是可以互联的, 通过跨链区块链的连接, 就串接起了工业农业服务业等各行各业, 从而构成了整个社会的生产关系
生产生活都关联到区块链虚拟社会上, 基于区块链提供的合约服务以及基于区块链提供的机器驱动业务流程, 结合 IoT 和人工智能, 价值生产转移和流通会更加快速便捷, 人类的生产关系也会更加优化协调, 生产力由此可以得到进一步解放区块链和跨链将整个人类对等地关联在一起, 去除了任何的信息不对称性和现实社会的各种屏障, 体现了公平公正, 个人主体是虚拟社会关系的参与者也是维护者也是受益者
跨链价值等价交换过程
结合上节的跨链架构, 我们对跨链价值交换过程进行说明这里仅以物物交换市场为例, 主体 X 是区块链 A 上的价值生产者, 主体 Y 是区块链 B 上的价值生产者, 主体 X 如果要获得区块链 B 上的价值体, 就需要拿区块链 A 上的价值体通过跨链价值交换合约服务同主体 Y 实现等价的物物交换
首先主体 X 需要加入 A 链上的外链合约服务, 接受合约服务规定的合约规则和法律条款, 主体 X 还需要加入某个跨链合约服务, 如可以实现 AB 交易匹配的一个跨链合约服务, 接收跨链交易市场的合约规则和法律条款然后主体 X 需按照 A 链上的外链合约服务的合约规则, 把自己拥有的一定数量的 A 链的价值体转移到外链合约服务指定的公钥地址上, 并指定跨链交易内容, 如希望交换另一个区块链 B 上设定数量的价值体, 并把交换后的价值体转到自己在另一个区块链上的公钥地址后续的交易过程如下:
入基于 LCV 的外链交易感知
适配子链的轻客户端验证 (LCV) 会不断同步区块链 A 的区块头, 其对于区块链 A 上的外链合约服务公开的公钥地址敏感, 一旦发现存在公钥地址的交易, 就认为存在跨链交易请求
入生成和打包跨链交易
由链适配代码将区块链 A 上主体 X 指定的跨链交易请求内容 (用链 A 上一定数量的价值体兑换链 B 上一定数量的价值体到指定公钥地址上) 生成一个子链交易, 并且打包进子链区块
入提供子链存在跨链交易证明, 发起主链跨链服务调用
链适配代码基于 Merkle 树给出一个跨链交易请求在子链上的存在性证明, 并按照跨链协议, 封装出发往主链的跨链服务调用
入执行主链跨链交易代码
主链的跨链服务总线, 验证交易在子链上的存在性证明, 分析主体 X 的跨链交易请求内容, 将跨链服务调用路由给具体的跨链价值交换合约同样过程, 主体 Y 的跨链交易请求 (用链 B 上一定数量的价值体兑换链 A 上一定数量的价值体到指定公钥地址上) 也被发往相同的跨链价值交换合约
入产生交易日志, 更新账本状态
跨链价值交换合约的代码实现, 会进行所有的 AB 交易匹配, 形成一个 A 链价值体同 B 链价值体的买卖市场深度, 一旦可以匹配上主体 X 和主体 Y 的交易请求, 就形成一个匹配交易, 用以封装 A 链和 B 链价值体在主体 X 和 Y 之间达成交换的结果跨链价值交换合约本质上就是一个场内交易所
出子链路由, 提供主链存在跨链交易证明, 向适配子链发起外链合约服务调用跨链价值交换合约实现代码, 会提供一个交易主体 X 和 Y 的跨链匹配交易在主链上的存在性证明, 分别向链 A 和链 B 的适配器子链发送转账指令交易, 一个指示往 A 链 Y 主体指定的公钥地址转移一定数量的价值体, 一个指示往 B 链的 X 主体指定的公钥地址转移一定数量的价值体
出生成和打包跨链交易
这两个适配子链分别将各自的转账指令交易记录日志, 并打包进各自的子链区块
出发起外链合约服务调用
链适配代码向各自对应的独立区块链上的外链合约服务发起转账指令交易 A 链的适配子链会向 A 链的外链合约服务发送一个转账交易, 指示从合约的公开地址上往 Y 主体指定的公钥地址转移一定数量的价值体 B 链的适配子链也会向 B 链的外链合约服务发送一个转账交易, 指示从合约的公开地址上往 X 主体指定的公钥地址转移一定数量的价值体
出执行外链合约代码
A 链的外链合约服务会执行合约代码, 生成交易, 把由合约控制的, 转账指令要求的一定数量的价值体转移给 Y 主体指定的公钥地址 B 链的外链合约服务会执行合约代码, 生成交易, 把由合约控制的转账指令要求的一定数量的价值体转移给 X 主体指定的公钥地址
出生成交易日志, 更新账本状态
一旦交易被打包进区块, 按照链的交易确认特性, 最终主体 X 获得了 B 链的价值体控制权, 主体 Y 获得了 A 链的价值体控制权
跨链区块链也会提供用户 UI 界面和 API 接口, 用户所有在跨链区块链合约服务上执行的交易都可以通过跨链用户界面和 API 接口获得当前的执行状态, 即查看用户在交易所挂单状态和交易市场的买卖深度, 甚至可以让用户基于私钥按照市场供求关系重新挂单
跨链区块链可以提供基于独立区块链上的外链合约服务的抵押机制, 在对应的适配子链上, 以换取相同数量的抵押区块链的价值体幻象或筹码, 业务主体拿抵押的子链上的价值体幻象参与主链的业务合约流程, 这种跨链的生产关系, 基于各个主体抵押的各自区块链上的价值体 (也可以是现实世界价值锚定), 配置生产资料, 开展合约生产, 最后分配生产产品价值跨链区块链如果有自己内生的代币, 也可以基于交易市场(合约) 完成到内生代币的价值兑换, 主体拿着跨链代币加入跨链合约流程或跨链合约服务的虚拟生产关系进行生产和价值交换
区块链的划分和发展趋势
为什么在区块链技术上, 首先出现的是比特币这种加密货币, 而不是以太坊, 也不是跨链 Cosmos? 因为加密货币从业务上更纯粹(数字 vs 合约 vs 市场), 从技术上更严密和容易实现(脚本栈 vs 以太坊虚拟机 vs 通用沙箱)
以比特币为代表的加密货币称为可编程货币, 以太坊可以建模各种代币和基于代币的合约动作, 称为可编程金融, 实用化的区块链系统会吸取现有区块链的实践教训, 从实际可用的目的出发重新设计区块链架构, 真正可用于实际社会的区块链建模的不仅仅是虚拟的价值, 还担负着社会生产关系虚拟化的重任, 在实现现实世界的价值在虚拟世界的锚定基础上, 实现现实世界不同契约, 不同业务流程在虚拟世界的共识建模, 甚至会创造出统一现实世界和虚拟世界的新型生产关系合约服务或合约流程, 这可以称之为可编程社会
可以看出, 区块链的划分不是为了严格区分各种区块链的优劣高下, 而是通过划分, 区分出不同区块链类型在建模对象和业务处理能力上的不同, 以及所要关注解决问题的不同更重要的是, 就如同现实社会, 货币是金融的基础, 货币和金融是这个社会运行的核心一样, 可编程货币是可编程金融和可编程社会的核心和价值交换基础, 可编程金融又会是可编程社会围绕的中心
图 3 区块链划分和功能性要求
上图主要是想从技术复杂度和业务自由度, 两个维度大概说明可编程货币金融社会三个代际划分的包含关系图上列出的几个区块链平台或者未来可能出现的链平台所摆放位置只是示意, 不尽准确仅供参考上图还列出了区块链各代际划分的主要功能需求, 这包括可编程货币的货币金额建模能力, 可编程社会的状态资产建模, 合约建模, 合约条款建模, 可编程社会的交易内流程建模, 治理流程建模, 法律法规建模, 跨交易链内流程建模, 跨交易跨链流程建模状态业务流程法规治理是几个区块链功能性能力的考察维度, 可能某些能力也是其他代际平台一定程度具有的能力, 只是在建模能力的强弱上有所不同
基于现有区块链存在的问题, 结合区块链社会应有的能力, 笔者认为未来的区块链会有如下几个发展趋势:
建模业务合约流程
目前的区块链在建模对象上只是状态, 而不能建模业务流程状态机, 相信由机器驱动的自动化流程, 结合 IoT 和价值锚定, 将虚拟社会和现实社会融为一体的生产关系, 才能顺应解放生产力的根本要求, 所以能够建模业务合约流程的区块链平台将会是演进趋势
跨链交易市场形成
独立区块链完成相关性较高的业务领域的价值生产, 要实现社会化商品和价值大流通, 就需要跨链交易市场, 通过跨链提供的跨链价值交换市场满足价值在不同主体自由等价流通
架构的高可扩展性设计
区块链社会对系统计算能力的要求是巨大的, 区块链平台需要有很好的横向可扩展能力, 以满足不断扩大的业务合约交易要求一个没有扩展性的区块链平台是没有实用价值的随着区块链实验技术的不断经验积累和实用化推进, 可扩展的区块链架构平台必然是设计趋势
同现实世界的价值锚定
要实现将现实生产统一到虚拟化的生产关系中, 以实现机器按照合约驱动生产的自动化目的, 就必须有一套切实可行的方案将虚拟世界的价值锚定标签, 植入到现实世界的产品和服务中去将现实世界的价值同虚拟世界的价值统一起来的价值锚定机制是急需解决的难题
同现实世界的法律接驳
区块链最终会将虚拟社会和现实社会融为一体, 形成统一的虚拟生产关系, 一个实际的区块链平台能够同现实社会经济并行运行的前提条件就是要有同现实社会一致的合法合规性符合现实世界法律精神和条款要求是虚拟法律条款合法合规的根本
仿现实世界治理机制和体系
能够建模社会生产关系的区块链就是一个小型的经济社会, 不同主体参与, 就需要同现实世界类似, 设立治理机制和体系, 以维护区块链的健康稳定持续发展, 以维护区块链社会的公平正义
区块链部署架构模型
从区块链实现虚拟化自动化社会化协作生产的目标出发, 基于关注点分离的架构原则和层次化的架构模式给出的区块链架构模型, 从设计时就考虑了平台的可用性以当前的计算架构, 采用多台大型主机的银行服务或者采用分布式架构的互联网服务才能支撑得起整个社会范围的交易并发, 这还是若干银行互联网公司共同提供的集中式交易
区块链共识就意味着冗余计算, 区块链又是建立在密码学上的计算, 本身就需要耗费大量的计算能力, 要能够提供满足目前银行和互联网服务性能的区块链虚拟计算, 就需要目前所有银行主机和分布式服务计算能力的若干倍才可以, 如果要实现连接现实社会的自动化流程驱动的生产, 整个社会的计算能力还需要有极大的提高区块链架构要想实现在整个社会范围内的实用化就必须实现功能模块的松耦合, 需要能够支持分布式并行计算, 支持密码学专用硬件加速, 甚至支持连接高性能计算中心的第三方计算
图 4 区块链部署架构模型
目前区块链架构模型设计成验证服务和平台共识服务分离, 业务验证服务的合约流程和合约服务以及实现代码分层服务化解耦, 业务合约服务同公用的合规合法检查服务, 技术服务以服务化的方式解耦, 区块链交易日志状态的规范化逻辑同平台共识服务逻辑分离解耦, 所有这些功能逻辑的服务化, 无状态化, 目的就是为了确保服务的横向分布式部署扩展能力, 实现服务容器化按需动态扩展, 充分利用当今云计算的发展成果
另外, 按照参与业务主体紧密程度, 业务相关性, 业务性能要求, 隐私要求的不同, 形成多个子链, 从链的高度实现分离以提高整个区块链的并行处理能力, 也是区块链并行处理交易的方式
真正实用的区块链共识节点上要运行大量的应用, 需要满足巨量吞吐量要求, 并且响应时间也需在实用可接受的范围, 共识节点所需要的计算能力不是个人能够承受的, 所以未来一个实用的区块链平台一定是运行在多个数据中心上的, 个人通过各种分布式 App 应用参与到链上合约业务
数据中心会提供大量容器资源, 以动态可扩展的方式为区块链各个功能模块提供服务运行所需的计算资源和存储资源, 从前端的分布式 APP, 到后端的微服务, 再到区块链共识服务, 账本服务, 各种业务合约 (合约流程, 合约服务) 实现的沙盒验证节点, 以及各种公共的链上服务节点, 如技术服务, 合约合法检查服务, 规则服务, Oracle 服务, 分布式存储服务, 合约服务路由服务等
一个数据中心可能是由一个中心化组织 (如公司) 运营, 也可以是由一个分布式自治组织 (DAO 或 DAC) 依据自治合约运行每一个数据中心对于同一个语义层面规格化的合约服务可能会有自己的代码实现, 可能会采用不同的合约编程语言, 可能运行在不同的沙盒中验证和执行每个数据中心都会并行运行多个账本副本和共识节点副本, 以保证验证结果的一致性, 提高系统可用性, 提高出块速度, 避免遭受经济惩罚
篇后语
笔者希望通过整体的区块链架构描述, 读者能够读懂区块链, 认识到区块链的本质是共识, 以及基于共识形成的公认价值, 认识到区块链跨链的本质是价值的等价交换和交易市场; 能够读会区块链, 知道区块链的高阶架构模型, 区块链不同类型划分和功能性要求, 以及发展趋势和实用的部署架构模型, 读者可以以高阶架构为蓝本, 实际设计和开发实用区块链; 相信凭借中国互联网发展在技术和受众上的积累, 我们可以更早感受到区块链带给整个社会生产关系和生产力变革的力量
作者简介: 庄鹏, IBM GBS 金融服务部高级咨询顾问资深架构师, 近几年主要关注区块链架构和区块链平台的发展, 以及同传统 IT 系统集成
来源: http://blog.csdn.net/blockchain_lemon/article/details/79273089