联盟链概念分析
行业里通常将区块链的类型分为公有链,联盟链,私有链。公有链指所有人都可以随时随地参与甚至是匿名参与的链;私有链指一个主体(如一个机构或一个自然人)所有,私有化的管理和使用的链;联盟链通常是指多个主体达成一定的协议,或建立了一个业务联盟后,多方共同组建的链,加入联盟链的成员需要经过验证,一般是身份可知的。正因为有准入机制,所以联盟链也通常被称为“许可链”。
因为联盟链从组建、加入、运营、交易等环节有准入和身份管理,在链上的操作可以用权限进行管控,共识方面一般采用PBFT等基于多方多轮验证投票的共识机制,不采用POW挖矿的高能耗机制,网络规模相对可控,在交易时延性、事务一致性和确定性、并发和容量方面都可以进行大幅的优化。
联盟链在继承区块链技术的优势的同时,更适合性能容量要求高,强调监管、合规的敏感业务场景,如金融、司法、以及大量和实体经济相关的业务。联盟链的路线,兼顾了业务合规稳定和业务创新,也是国家和行业鼓励发展的方向。
性能
性能指标
软件系统的处理性能指标最常见的是TPS(Transaction Per Second),即系统每秒能处理和确认的交易数,TPS越高,性能越高。区块链领域的性能指标除了TPS之外,还有确认时延,网络规模大小等。
确认时延是指交易发送到区块链网络后,经过验证、运算和共识等一系列流程后,到被确认时所用的时间,如比特币网络一个区块是10分钟,交易被大概率确认需要6个区块,即一个小时。采用PBFT算法的话,可以使交易在秒级确认,一旦确认即具有最终确定性,更适合金融等业务需求。
网络规模指在保证一定的TPS和确认时延前提下,能支持多少共识节点的协同工作。业界一般认为采用PBFT共识算法的系统,节点规模在百级左右,再增加就会导致TPS下降,确认时延增加。目前业界有通过随机数算法选择记账组的共识机制,可以改善这个问题。
性能优化
性能的优化有两个方向,向上扩展(Scale up)和平行扩展(Scale out)。向上扩展指在有限的资源基础上优化软硬件配置,极大提升处理能力,如采用更有效率的算法,采用硬件加速等。平行扩展指系统架构具有良好的可扩展性,可以采用分片、分区的方式承载不同的用户、业务流的处理,只要适当增加软硬件资源,就能承载更多的请求。
性能指标和软件架构,硬件配置如CPU、内存、存储规格、网络带宽都密切相关,且随着TPS的增加,对存储容量的压力也会相应增加,需要综合考虑。
安全性
安全性是个很大的话题,尤其是构建在分布式网络上多方参与的区块链系统。在系统层面,需要关注网络攻击、系统渗透、数据破坏和泄漏的问题,在业务层面需要关注越权操作、逻辑错误、系统稳定性造成的资产损失、隐私被侵害等问题。
安全性的保障要关注”木桶的短板“,需要有综合性的防护策略,提供多层面,全面的安全防护,满足高要求的安全标准,并提供安全方面的最佳实践,对齐所有参与者的安全级别,保障全网安全。
准入机制
准入机制指在无论是机构还是个人组建和加入链之前,需要满足身份可知、资质可信,技术可靠的标准,主体信息由多方共同审核后,才会启动联盟链组建工作,然后将经过审核的主体的节点加入到网络,为经过审核的人员分配可发送交易的公私钥。 在准入完成后,机构、节点、人员的信息都会登记到链上或可靠的信息服务里,链上的一切行为都可以追溯到机构和人。
权限控制
联盟链上权限控制即不同人员对各种敏感级别的数据读写的控制,细分可以罗列出如合约部署、合约内数据访问、区块数据同步、系统参数访问和修改、节点启停等不同的权限,根据业务需要,还可以加入更多的权限控制点。
权限是分配给角色的,可沿用典型的基于角色的权限访问控制(Role-Based Access Control)设计,一个参考设计是将角色分为运营管理者,交易操作员,应用开发者,运维管理者,监管方,每个角色还可以根据需要细分层级,完备的模型可能会很庞大复杂,可以根据场景需要进行适当的设计,能达到业务安全可控的程度即可。
隐私保护
基于区块链架构的业务场景要求各参与方都输出和共享相关数据,以共同计算和验证,在复杂的商业环境中,机构希望自己的商业数据受控,在越来越被重视的个人数据隐私保护的形势下,个人对隐私保护的诉求也日益增强。如何对共享的数据牵涉隐私的部分进行保护,以及在避免运作过程泄漏隐私,是一个很重要的问题。
隐私保护首先是个管理问题,要求在构建系统开展业务时,把握“最小授权,明示同意的原则”,对数据的收集、存储、应用、披露、删除、恢复全生命周期进行管理,建立日常管理和应急管理制度,在高敏感业务场景设定监管角色,引入第三方检视和审计,从事先事中事后全环节进行管控。
在技术上,可以采用数据脱敏,业务隔离或者系统物理隔离等方式控制数据分发范围,同时也可以引入密码学方法如零知识证明、安全多方计算、环签名、群签名、盲签名等,对数据进行高强度的加密保护。
物理隔离
这个概念主要用于隐私保护领域,“物理隔离”是避免隐私数据泄露的彻底手段,物理隔离指只有共享数据的参与者在网络通信层互通,不参与共享数据的参与者在网络互相都不能通信,不交换哪怕一个字节的数据。
相对而言的是逻辑隔离,参与者可以接收到和自己无关的数据,但数据本身带上权限控制或加密保护,使得没有授权或密钥的参与者不能访问和修改。但随着技术的发展,所受到的权限受控数据或加密数据在若干年后依旧有可能被破解。
对极高敏感性的数据,可以采用“物理隔离”的策略,从根源上杜绝被破解的可能性。相应的成本是需要仔细甄别数据的敏感级别,对隔离策略进行周密的规划,并分配足够的硬件资源承载不同的数据。
治理与监管
联盟链治理
联盟链治理牵涉到多参与方协调工作,激励机制,安全运营,监管审计等一系列的问题,核心是理清各参与方的责权利,工作流程,构建顺畅的开发和运维体系,以及保障业务的合法合规,对包括安全性在内的问题能事先防范事后应急处理。为达成治理,需要制定相关的规则且保证各参与方达成共识并贯彻执行。
一个典型的联盟链治理参考模型是各参与方共同组建联盟链委员会,共同讨论和决议,根据场景需要设定各种角色和分配任务,如某些机构负责开发,某些机构参与运营管理,所有机构参与交易和运维,采用智能合约实现管理规则和维护系统数据,委员会和监管机构可掌握一定的管理权限,对业务、机构、人员进行审核和设置,并在出现紧急情况时,根据事先约定的流程,通过共识过的智能合约规则,进行应急操作,如账户重置,业务调整等,在需要进行系统升级时,委员会负责协调各方进行系统更新。
在具备完善治理机制的联盟链上,各参与方根据规则进行点对点的对等合作,包括资产交易、数据交换,极大程度提升运作效率,促进业务创新,同时合规性和安全性等方面也得到了保障。
快速部署
构建一个区块链系统的大致步骤包括:获取硬件资源包括服务器、网络、内存、硬盘存储等,进行环境配置包括选择指定操作系统、开通网络端口和相关策略、带宽规划、存储空间分配等,获取区块链二进制可运行软件或者从源码进行编译,然后进行区块链系统的配置,包括创世块配置、运行时参数配置,日志配置等,进行多方互联配置,包括节点准入配置、端口发现、共识参与方列表等,客户端和开发者工具配置,包括控制台、SDK等,这个过程会包括许多细节,如各种证书和公私钥的管理等,很容易出现环境、版本、配置的差错,导致整个过程复杂、繁琐和反复,形成了较高的使用门槛。
如何将以上步骤简化和加速,使构建和组链过程变得简便,快速,不容易出错,且低成本,需要从以下几方面进行考虑: 首先,标准化目标部署平台,事先将操作系统、依赖软件列表、网络带宽和存储容量、网络策略等关键的软硬件准备好,对齐版本和参数,使得平台可用,依赖完备。当下流行的云服务,docker等方式都可以帮助构建这样的标准化平台。
然后,从使用者的视角出发,优化区块链软件的构建、配置和组链流程,提供快速构建,自动组链的工具,使得使用者不需要关注诸多细节,简单的几步操作即可运行起供开发调试、上线运行的链。
FISCO BCOS非常重视使用者的部署体验,提供了一键部署的命令行,帮助开发者快速搭建开发调试环境,提供企业级搭链工具,面向多机构联合组链的场景,灵活的进行主机、网络等参数配置,管理相关的证书,便于多个企业之间协同工作。经过快速部署的优化,将使用者搭起区块链的时间缩短到几分钟到半小时以内。
数据治理
区块链强调数据层层验证,历史记录可追溯,常见的方案是从创世块以来,所有的数据都会保存在所有的参与节点上(轻节点之外),导致的结果是数据膨胀,容量紧张,尤其是在承载海量服务的场景里,在一定时间之后,一般的存储方案已经无法容纳数据,而海量存储成本很高,另一个角度是安全性,全量数据永久保存,可能面临历史数据泄露的风险,所以需要在数据治理方面进行设计。
数据治理主要是几个策略:裁剪迁移,平行扩容,分布式存储。如何选择需要结合场景分析。
对具有较强时间特征的数据,如某业务的清结算周期是一个星期,那么一个星期前的数据不需要参与在线计算和验证,旧的数据则可以从节点迁移到大数据存储里,满足数据可查询可验证的需求以及业务保存年限的要求,线上节点的数据压力大幅降低,历史数据离线保存,在安全策略上也可以进行更严密的保护。
对规模持续扩大的业务,如用户数或合同存证量剧增,可以针对不同的用户和合同,分配到不同的逻辑分区,每个逻辑分区有独立的存储空间,只承载一定容量的数据,当接近容量的上限,则再分配更多资源容纳新的数据。分区的的设计使得在资源调配,成本管理上都更容易把控。
结合数据裁剪迁移和平行扩容,数据的容量成本,安全级别都得到很好的控制,便于开展海量规模的业务。
运维监控
区块链系统从构建和运行逻辑上都具有较高一致性,不同节点的软硬件系统基本一致。其标准化特性给运维人员带来了便利,可使用通用的工具、运维策略和运维流程等对区块链系统进行构建、部署、配置、故障处理,从而降低运维成本以及提升效率。
运维人员对联盟链的操作会被权限系统控制,运维人员有修改系统配置、启停进程、查看运行日志、排查故障等权限,但不参与到业务交易中,也不能直接查看具有较高安全隐私等级的用户数据,交易数据。
系统运行过程中,可通过监控系统对各种运行指标进行监控,对系统的健康程度进行评估,当出现故障时发出告警通知,便于运维快速反应,进行处理。
监控的维度包括基础环境监控,如CPU占比、系统内存占比和增长、磁盘IO情况、网络连接数和流量等。
区块链系统监控包括如区块高度、交易量和虚拟机计算量,共识节点出块投票情况等。
接口监控包括如接口调用计数、接口调用耗时情况、接口调用成功率等。
监控数据可以通过日志或网络接口进行输出,便于和机构的现有的监控系统进行对接,复用机构的监控能力和既有的运维流程。运维人员收到告警后,采用联盟链提供的运维工具,查看系统信息、修改配置、启停进程、处理故障等。
监管审计
随着区块链技术和业务形态探索的发展,需要在区块链技术平台上提供支持监管的功能,避免区块链系统游离于法律法规以及行业规则之外,成为洗钱、非法融资或犯罪交易的载体。
审计功能主要用于满足区块链系统的审计内控、责任鉴定和事件追溯等要求,需要以有效的技术手段,配合业务所属的行业标准进行精确的审计管理。
监管者可以做为节点接入到区块链系统里,或者通过接口和区块链系统进行交互,监管者可同步到所有的数据进行审计分析,跟踪全局的业务流程,如发现异常,可以向区块链发出具备监管权限的指令,对业务、参与人、账户等进行管控,实现“穿透式监管”。
FISCO BCOS在角色和权限设计,功能接口,审计工具等方面都对监管审计进行了支持。