区块链是一个封闭的、确定性的环境,链上无法主动获取链外真实世界的数据,联盟链平台通过引入预言机,可以把外部不确定、变化的可信数据源接入到区块链中执行更复杂的业务逻辑,丰富更多的业务场景。以下是联盟链技术扩展层的一些关键问题。
1. 隐私保护
在实际商业应用中有很多隐私保护的场景,而区块链公开、透明的特性在落地过程中限制了业务扩展,联盟链通常采用分区共识和隐私交易等机制解决业务数据隐私保护问题。分区共识通过将不同的业务交易按照物理区间进行隔离划分,按照联盟链网络节点参与业务的不同,组成不同分区粒度的子网络。隐私数据通过建立独立私密的分区进行共享和存储,使敏感交易数据的存储和执行空间互相隔离、互不可见。联盟链针对业务系统中灵活隐私策略的需求实现了用户隐私权限控制,支持交易粒度的可验证隐私保护。通过交易相关方动态制定策略,确保交易明细只在相关方存储,同时将隐私交易的哈希广播公共网络完成全网共识并存储在公共账本,保证了隐私交易数据的有效隔离及真实可证,实现数据可验不可见。
2. 成员管理
联盟链对成员管理主要通过身份证书认证的方式。目前联盟链中的证书准入机制有两种,即中心化的CA(Certification Authority)服务和分布式的CA服务。中心化的CA服务可以由可信机构提供,也可通过自建CA体系实现。通过第三方可信机构(如CFCA等)可以实现数字证书管理功能,满足对于证书系统安全性与权威性有较高要求的银行或金融机构的需求。而自建CA体系通过建设独立的PKI/CA系统,需建立完整的运营管理体系,运维成本较高。中心化CA服务存在单点集权、自动化程度较低等问题。为避免上述问题,联盟链可以采用分布式CA进行认证管理,将证书管理权限由中心机构转移到联盟链各参与方,联盟网络节点互相颁发准入证书给其他网络节点,在建立连接阶段完成证书认证。分布式CA治理具有去中心、自动化、高效等优点。
3. 联盟治理
区块链以其去中心化、不可篡改等特性引起了广泛的关注,但在实际工程实践过程中发现,区块链的不可篡改、去中心化等特性,往往带来诸多使用限制,比较突出的一点就是智能合约的升级。没有任何一个系统是没有漏洞的,区块链的不可篡改性与工程上的迭代更新需求存在明显的矛盾和冲突,而解决冲突需要强有力的决策,但现有区块链系统缺乏很好的治理机制来做出合理民主的决策。为了解决这一矛盾,联盟链需要提供一种有效的能促进链自我改进的联盟自治机制。当初始协议无法满足现实需求,或是联盟链网络在运行的过程中出现了矛盾协议,需要升级时,这些矛盾可以通过联盟自治机制得以妥善解决。联盟自治机制主要用于联盟成员变更、合约升级、系统升级等方面。
(1)联盟成员变更:联盟自治机制利用智能合约充当变更提案的协商平台,通过节点自派发的数据证书作为协商结果凭证(分布式CA),可以进行动态成员变更,使流程保有多中心化、公开透明的特点。
(2)智能合约升级:联盟自治机制提供了一套有效的合约升级治理方式,通过链下协商、链上投票、决策执行的方式实现分布式的智能合约升级方案。
(3)联盟链系统升级:通过有效的线上协商系统协同升级机制,实现系统高效自动化同步升级。
4. 数据管理
区块链系统从外部看来是一个封闭的黑盒系统,以至于对区块链内数据的运维可视化管理困难。为了更好地使用区块链中的业务数据,需要通过相应技术手段提升区块链数据管理的能力。目前数据管理的问题主要在合约数据可视化、数据归档以及获取可信外部数据等几个方面。
区块链底层合约数据出于隐私安全的考虑,采用复杂的编码方式,致使业务人员无法获取合约数据的明文信息。为了解决合约数据的分析和审计问题,通常会使用一种基于源码解析的合约数据解析方案,通过合约数据可视化服务将合约源码、合约地址及合约数据集进行数据解析,并导入关系型数据库,实现合约数据的可视化浏览和复杂查询。
数据归档主要解决线上存储容量问题,区块链存储容量随着运行时间不断增长,其线性增长速度会超过存储介质容量增长的速度。针对此问题可采用动态归档的方法。归档是一种基于状态备份的数据存储机制,能够在整个区块链系统不停机情况下进行动态数据归档,并可以通过数据恢复机制将线下归档数据重载到线上进行浏览查看,实现区块链节点存储压力的减负以及数据库内容的快速恢复。
数据源的获取通常包括URL数据、搜索引擎以及跨链数据等;在数据传输的过程中通过类TLS传输层安全协议(如TLSNotary)保证数据真实可靠不被篡改;在数据处理过程中通过TEE可信执行环境来保证程序服务的公平公正性,预言机再通过自身私钥签名将处理完的数据发送到区块链中。