区块链应用指南:方法与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 区块链技术基础

1.4.1 技术设计与优势

区块链技术设计的核心是在分布式网络中,通过共识机制、加密算法、智能合约等技术实现一种难以篡改、防伪造和可追溯的分布式账本的维护过程。图1-2为基于区块链的分布式账本维护过程。在分布式的区块链网络中,如果参与方A发起一笔交易,这笔交易会在区块链网络中进行广播,之后通过共识机制(如PoW)选出本次交易的记账者,记账者的任务是将本次交易(也可能是与其他多个交易一起)打包形成区块,并将该区块广播给区块链网络中的所有参与者进行验证,经过验证后,该区块将永久性地被添加到区块链账本上,至此交易完成,区块链网络中的交易相关方B可以查看到交易结果。

图1-2 基于区块链的分布式账本维护过程

与集中式账本相比,通过区块链实现的分布式账本在分布式网络中的各节点保存账本的副本,从而可以有效规避单点故障带来的账本毁坏。同时,数据加密存储、多副本存储,以及“区块+链”的数据结构使数据极难被篡改或伪造,并且区块链上的数据按照先后顺序通过时间戳等技术组织起来,也使链上数据具有很好的可追溯性。

1.4.2 核心关键技术

区块链所依赖的技术包括提供存储、计算、通信等基础设施能力的P2P对等网络、虚拟化、容器、云计算、数据存储等相关技术,加密算法、数字摘要、数字签名、密钥管理、同态加密、零知识证明、环签名、属性加密等安全和隐私保护技术,以及共识机制、智能合约、跨链技术等。这些技术中很多是已经发展得比较成熟的技术,还有一些是在区块链中逐步发展或改良的技术,如共识机制、数据存储、加密算法、智能合约、跨链技术。

1.共识机制

在区块链中,分布式节点统一的交易验证与确认方式称为共识机制。目前常用的共识机制有工作量证明(PoW)、权益证明(PoS)、实用拜占庭容错(PBFT)、权威证明(PoA)等。其中,PoW是通过运算解决特定的计算难题来保证所有节点公平地获得记账权的一种共识机制。由于每次记账需要较多节点同时运算,且对于没有计算出结果的节点算力浪费巨大、性能效率较低。容错性方面允许50%的全网节点出错,但对于一些特定的区块链,存在25%容错性的攻击[9]。PoS是将节点获得记账权的难度和其所持有的权益挂钩的一种共识机制。通常来说,权益越大,越容易通过特定哈希值获得记账权。相对于PoW而言,PoS减少了大量的计算,容错性方面允许权益占比50%的全网节点出错。PBFT是一种基于选举领导者的共识机制,其通过委员会之间的投票来进行记账。PBFT允许拜占庭容错,由于避免了大量计算,性能效率比较高,允许33%的全网节点出错。由于选举并不一定需要全网节点都进行,所以该机制也可应用于联盟链之中。PoA与PoS类似,但其以权威性替代权益,参与节点需要进行强制认证以获得其参与记账的权力。一般而言,PoA具有50%的容错率,但如果在机制中使用拜占庭共识的方式,则容错率下降为33%。

2.数据存储

在区块链技术中,数据一般存放在区块内,区块按照生成的先后顺序,依次连接起来构成一个链状的线性结构。通常,区块具有区块头(Head)和区块体(Body)。区块头中存储着区块间的联系与加密信息,区块体中包含了经过验证的、区块创建过程中收集的所有交易信息。为了提升区块链的吞吐量,在数据存储结构的改良上,还出现了采用有向无环图(DAG)的形态替代单链的技术方案,即每一个新增的数据单元发布时,需要引用多个已存在的较新的父辈数据单元,随着时间的推移,所有包含交易的数据单元相互连接,形成有向无环图的图状结构。这种方案避免了单链中存在的串行化写入的限制,在并发性、可扩展性上有较大改善。

3.加密算法

目前,区块链中常用的加密算法大致有散列(哈希)算法和非对称加密算法两类。其中,散列算法主要是将一段信息转化成一个固定长度的摘要,并且保证确定性和随机性,即对于特定信息,加密的结果一致;对于近似信息,加密的结果随机且无关联。目前,区块链中使用得比较多的散列算法是SHA256。非对称加密算法是由一对相互对应的密钥,即公开密钥(公钥)与私有密钥(私钥)组成的加密方法。任何获得公钥的人都可以使用公钥与私钥持有人进行安全信息交互,但由于公/私钥存在依存关系,所以只有私钥持有者才能解密该信息,任何未被授权的人乃至信息发送者都无法进行解密。区块链中常见的非对称加密算法有RSA、ECC、ECDSA等。

4.智能合约

智能合约是一段完全部署在区块链上可自主运行的程序,程序所有的输出都会被完整地记录在链上。程序在封闭的沙盒中运行,与外部的交互只依赖于程序的输入与输出,无法直接操纵外部网络、文件系统或其他智能合约的信息。

国际标准《区块链和分布式记账技术——区块链和分布式记账技术中智能合约的概述与交互》[12]指出,智能合约需要具备机密性、公正性、可行性与隐私性,以保证智能合约不会被误用和滥用。其中,机密性是指由于智能合约全程都需要在区块链上运行,所以对于所有节点,智能合约的执行都是可见的。为了避免泄露智能合约的当前状态,需要使用同态加密或零知识证明的方式对信息进行处理。公正性是指需要保证智能合约按照最初的设定执行。可行性是指由于停机问题的存在,若智能合约是图灵完备的,那么外部可能会无法判断当前智能合约程序的运行状况。常见的解决方案是要么通过控制运行时间,保证不会出现停机问题;要么将智能合约的语言约束在一个更小的语言空间中,以避免出现停机问题。隐私性是指特定的智能合约只能由特定的群体进行调用和操作,以保证智能合约的状态和数据不会外泄。

5.跨链技术

跨链技术泛指两个或多个相对独立的区块链之间进行信息通信交互的技术。随着区块链技术的发展及不同区块链项目的快速增加,多链并行、多链互通成为未来发展趋势。链与链之间的数据交互、数据转移、信息通信日益重要。

跨链分为同构链之间的跨链和异构链之间的跨链。同构链之间的跨链大多发生于侧链和主链之间的信息交互。由于同构链具有相同的结构,其信息的转移传递相对比较容易。异构链之间的跨链则复杂得多,需要双方通过智能合约、预言机或第三方机构的中继等方式进行通信。

当前跨链技术依然不够成熟,跨链的易用性和可扩展性还有待发展。在跨链中同样也存在监管的问题,如何更安全、更快速地进行链与链之间的数据交互依然是亟须解决的问题。

1.4.3 区块链中的安全和隐私保护

1.区块链技术的安全性

区块链技术的安全性包括数据安全性和系统安全性两个方面。其中,区块链的数据安全性是指对于链上的数据,通常只有私钥所有者才能对其进行解密,而链上的其他人只能对数据进行验证,以避免所有者对数据进行私下操作,这样同时保证了隐私性和安全性。同时,当数据需要写入链上时,必须通过共识机制,即只有全网大部分人都认同数据记录的正确性时,数据才被允许写入。区块链的系统安全性是指对于所有参与者而言,看到的链上数据都是相同的,并且每个参与者都会拥有一份链上存储信息的副本,因此区块链天然地避免了传统的点对点的针对性攻击。

2.区块链技术面临的安全挑战与应对策略

1)数据公开性与参与公开性

在区块链上,所有的数据都是可见的,所有人(公有链)或经过授权的人(专有链或联盟链)都能参与到区块链中。因此,对于身份伪造或信息窃取的防范具有一定的挑战。现有策略一般是通过足够困难的密码学技术,在计算上防止这一类问题的出现。

2)隐私保护

由于参与者链上的行为和变化对于所有人都可见,因此存在攻击者通过参与者链上行为对其进行相关信息推断的可能性。当前一般通过零知识证明等方式对参与者具体行为和隐私进行保护。

3)攻击防范

除典型的双花攻击、分布式攻击等攻击方式之外,对于具体的区块链,还可能存在一部分攻击者所需资源占比低于50%的针对性攻击。在区块链机制上防止这一类攻击的出现,同时严防传统攻击条件成立的可能,对于区块链发展亦是一个重大挑战。目前,除部分已知攻击外,暂时还没有办法避免新的攻击出现。区块链的攻击与防范将在区块链技术发展成熟后成为一个新的研究热点。

3.区块链的安全体系

1)物理安全

运行区块链系统的网络和主机应处于受保护的环境中,以避免其受到攻击导致区块链网络被破坏。根据实际情况和安全级别,可以采用防火墙、物理隔离、设立专网等方式进行保护。

2)数据安全与身份安全

由于区块链系统的公开性,链上数据传输应尽量避免数据和数据提供者身份的泄露。在向区块链网络提供数据时,应对数据及加密方式进行评估,以此决定是否发送数据上链。

3)密钥安全

由于密钥是区块链网络上唯一能对数据进行解密的工具,因此应对密钥进行妥善保管,如通过传统保密方式进行保存。建议对密钥进行周期性更新,或者在交易传输中使用一次性密钥等方式防止密钥在多次交易中泄露。

4)监管与风控

对区块链上整体状态变化应有严密的监测机制,对于可疑的操作应进行警告、排除,若有非法操作,则应评估损失,并在技术和业务层面对其进行补救,追查非法操作的来源与方式,杜绝同类攻击的再次发生。