什么是区块链?
根据工信部指导发布的《区块链技术和应用发展白皮书》的解释:
狭义的讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证不可篡改和不可伪造的分布式账本。
广义来讲,区块链技术是利用链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算模式。
顾名思义,区块链(blockchain)是一种数据以区块(block)为单位产生和存储,并按照时间顺序首尾相连形成链式(chain)结构,同时通过密码学保证不可篡改、不可伪造及数据传输访问安全的去中心化分布式账本。区块链中所谓的账本,其作用和现实生活中的账本基本一致,按照一定的格式记录流水等交易信息。特别是在各种加密数字货币中,交易内容就是各种转账信息。只是随着区块链的发展,记录的交易内容由各种转账记录扩展至各个领域的数据。比如,在供应链溯源应用中,区块中记录了供应链各个环节中物品所处的责任方、位置等信息。
区块链技术是一个技术合集,它包含共享账本、共识算法、安全隐私和智能合约等技术组成,具有多中心化、共识可信、不可篡改、可追溯等特性。
区块链的特点
区块链是多种已有技术的集成创新,主要用于实现多方信任和高效协同。通常,一个成熟的区块链系统具备透明可信、防篡改可追溯、隐私安全保障以及系统高可靠四大特点。
1、透明可信
在去中心化的系统中,网络中的所有节点均是对等节点,大家平等地发送和接收网络中的消息。所以,系统中的每个节点都可以完整观察网络中的全部行为,并将观察到的这些行为在各个节点维护一个本地账本,整个系统对于每个节点都具有透明性。区块链系统是典型的去中心化系统,网络中的所有交易对所有节点均是透明可见的,而交易的最终确认也由共识算法保证了在所有节点间的一致性。所以整个系统对所有节点均是透明、公平的,系统中的信息具有可信性。所谓共识,简单地理解就是指大家都达成一致的意思。其实在现实生活中,有很多需要达成共识的场景,如投票选举、开会讨论、多方签订一份合作协议等。而在区块链系统中,所有节点共同参与共识过程,共识算法则保证了所有节点的账本一致。
2、防篡改可追溯
“防篡改”和“可追溯”可以被拆开来理解,现在很多区块链应用都利用了防篡改可追溯这一特性,使得区块链技术在溯源等场景得到了广泛应用。“防篡改”是指交易一旦在全网范围内经过验证并添加至区块链,就很难被修改或者抹除。当前在联盟链中普遍采用的PBFT一类的共识算法保证数据一旦写入就无法篡改。而对于以比特币为代表的部分公有链系统采用了PoW作为共识算法,其篡改的难度大且其激励模型保证了篡改行为的不值得,攻击者需要控制全网超过51%的算力才能进行交易篡改,代价极其高昂。因为掌握51%的算力需要大量资金成本,而攻击行为一旦发生,区块链网络虽然最终会接受攻击者计算的结果,但是攻击过程仍然会被全网见证,当人们发现这套区块链系统已经被控制以后便不再会相信和使用这套系统,这套系统也就失去了价值,攻击者为购买算力而投入的大量资金便无法收回成本,所以一个理智的个体不会进行这种类型的攻击。“可追溯”是指区块链上发生的任意一笔交易都是有完整记录的,我们可以针对某一状态在区块链上追查与其相关的全部历史交易。“防篡改”特性保证了写入到区块链上的交易很难被篡改,这为“可追溯”特性提供了保证。
3、隐私安全保障
由于区块链系统中的任意节点都包含完整的区块校验逻辑,所以任意节点都不需要依赖其他节点完成区块链中交易的确认过程,也就是无须额外地信任其他节点。“去信任”的特性使得节点之间不需要互相公开身份,因为任意节点都不需要根据其他节点的身份进行交易有效性的判断,这为区块链系统保护用户隐私提供了基础。区块链系统中的用户通常通过公私钥体系中的私钥对身份进行控制,并使用与私钥对应的公钥,或公钥经密码学变换得到的地址作为唯一的身份标识,用户只要拥有私钥即可参与区块链上的各类交易,至于是谁持有该私钥则不是区块链所关注的事情,区块链也不会去记录用户与公私钥的对应关系,所以区块链系统知道某个私钥的持有者在区块链上进行了哪些交易,但并不知晓这个持有者是谁,从而在一定程度上保护了用户的隐私。
4、系统高可靠
区块链系统的高可靠体现在以下方面:(1)每个节点对等地维护一个账本并参与整个系统的共识,也就是说,即使其中某个节点发生了故障,都不影响整个系统的正常运转。(2) 区块链系统支持拜占庭容错。
区块链关键技术一——密码学
区块链作为综合性技术产物,密码学是其基石技术之一。密码学技术使区块链具备了不可篡改、消息(身份)验证、通信安全、存储安全、隐私保护等众多能力和特性。
从技术角度来看,主流区块链系统都会使用如下密码学技术:哈希算法、非对称加密算法、数字签名算法、数字证书、对称加密算法。对于一些高阶使用场景,还会使用到可信执行环境(TEE)、同态加密、零知识证明等技术。
1、哈希运算
哈希算法(Hash Algorithm)即散列算法的直接音译。其基本功能概括来说,就是把任意长度的输入信息通过一定的计算,生成一个固定长度的输出。
哈希运算的特性
正向快速: 对给定输入信息,通过哈希算法,可以在极短时间内快速计算得到哈希值。
逆向困难: 根据哈希值逆向运算出原输入值在计算上是不可行的,即该运算不存在一个多项式时间的算法。
输入敏感: 输入信息发生任何微小变化,哪怕仅仅是一个字符的更改,重新生成的哈希值与原哈希值也会有天壤之别。
强抗碰撞性: 很难找到两个不同的输入可以产生相同的哈希输出。
2、数字签名算法
签名的作用签名相信大家都不陌生,作为确定身份、责任认定的重要手段,各种重要文件、合同等均需要签名确认。同一个字,不同的人写出来虽然含义完全相同,但是字迹这种附加值是完全不同的,刻意模仿也能通过专业的手段进行鉴别。因为签名具有身份标识和不可否认性,所以可以通过签名来确定身份及定责。数字签名即通过一定算法实现类似传统物理签名的效果。
数字签名并不是指通过图像扫描、电子板录入等方式获取物理签名的电子版,而是通过密码学领域相关算法实现。一套数字签名算法一般包含签名和验签两种运算,数据经过签名后,非常容易验证完整性,并且不可抵赖。只需要使用配套的验签方法验证即可,不必像传统物理签名一样需要专业手段鉴别。通过签名和验签,保证了一段消息来自对的人,而且传输过程中没有被篡改过,即消息签名者可验证,消息完整性可验证。
数字签名在区块链中的用法
在区块链网络中,每个节点或用户都拥有一对公、私钥。节点(用户)发送交易时,使用私钥对交易内容生成一段数字签名,将签名以及公钥附加在交易中。其他节点收到广播消息后,首先利用公钥,对交易中附加的数字签名进行验证。只有签名验证通过,才能证明该交易在传播过程中的完整性未被破坏,且交易确实由公钥对应的私钥签名发出,从而认定该交易为一笔有效交易,进而触发后续交易执行、交易排序共识等处理流程。
目前在区块链中常见的数字签名算法包括ECDSA、Ed25519以及国密SM2。
3、数字证书
数字证书是指在互联网通信过程中,标识通信各方身份信息的一个数字标识。它本质上是一种电子文档,由权威的证书签发机构签发,借助数字签名等密码学手段,在网络上安全、有效地代表真实世界中的某种身份。如同数字签名技术构筑于非对称加密技术之上,数字证书技术又是构筑于数字签名技术之上。
数字证书中有一个概念CA(Certificate Authority)———认证中心。CA被认为是可信机构(信任根,作为整个体系中信任关系的基础),用来审核用户的证书制作请求,并给合法用户“签发”证书。在CA 机构中,保存着一对公、私钥,私钥被称作根密钥(ca.key),公钥保存在证书中,这本证书被称作根CA证书(ca.crt)。当用户向CA机构申请证书时,会递交一份申请材料。CSR文件中包含用户的身份信息(如,域名/用户名、国家、省份、公司等)、该用户的公钥以及该用户的私钥对身份信息的签名。CA机构会审核申请者的真实身份(如,实名认证),并利用用户公钥验证CSR文件的签名(验证是否是私钥的持有者生成了当前这份CSR文件)。当所有审核通过后,CA机构会使用根密钥对CSR文件进行签名,在补充其他附加信息后,形成一本完整的证书(server.crt)。
在实际使用中,证书的签发过程有可能是多级的,即根CA 机构签发中级CA 的证书,中级CA机构签发下一级的证书,形成一个链式结构。如下图:
证书签发过程示意图
如何验证证书server.crt的真实性: 验证方(比如,访问https网站的浏览器,或者区块链中的节点等)首先从可信的渠道拿到CA根证书,这个可信渠道可以是CA 机构的官方网站,也可以在系统部署启动的时候预置到系统中。通过CA 根证书中的公钥,验证ca.key对server.crt的签名,验证通过后,则可以确信server.crt是一本真实可信的身份证书,可以作为身份判断的依据。
同样,证书的验证过程也可能是多级的,如下图示。
证书验证过程的关键是保证根CA 证书(包括中级CA 证书)来源的可靠性,CA 作为信任根,一旦来源不可靠,那整个证书验证链条将变得不可靠。在确认server.crt真实可信之后,就可以提取server.crt中包含的公钥,作为可信公钥,来验证server.crt所代表的用户发过来的消息中的签名。
证书验证过程示意图
区块链关键技术二——共识算法
共识算法是区块链技术的基础和核心,决定了集群节点之间以何种方式对交易的执行顺序与内容达成一致,保障节点账本数据的一致性。对区块链系统而言,不同共识算法基于不同的基本假设,使用不同的实现方式,提供不同的故障容错及节点参与方式等特性,其分类维度是多样的。其中常见的维度归纳如下:
根据容错类型
(1) 崩溃容错共识(Crash Fault Tolerance Consensus)。能够在节点消息存在延迟或丢失等崩溃错误的网络中,确保分布式系统的正常节点间就特定数据达成一致的共识算法,称为崩溃容错共识算法。
(2) 拜占庭容错共识(Byzantine Fault Tolerance Consensus)。能够在节点消息存在延迟、丢失、重复甚至内容伪造等拜占庭错误的网络中,确保分布式系统正常节点间就特定数据达成一致的共识算法,称为拜占庭容错共识算法。
根据节点身份认证
(1) 授权共识(Permissioned Consensus)。授权共识是指节点在通过身份认证后才能参与的共识机制。授权共识中,节点的加入与退出都是受管理的,因此共识节点数量相对稳定,每个节点都能获知参与节点数量和身份等信息。
(2) 非授权共识(Permissionless Consensus): 非授权共识是指节点不需要经过身份认证,即可自由加入或退出共识流程的共识机制。非授权共识中,网络中节点数量可能随时变化,节点也无法获知系统所有参与节点数量和身份等信息。
根据实现方式
(1) 基于纯软件实现共识。以纯软件的方式实现的共识算法,灵活性高、通用性强,但所有特性的实现都依赖CPU 算力和网络带宽,性能容易遇到瓶颈。
(2) 基于软硬结合实现共识。以软件与硬件结合的方式实现的共识算法,例如,以硬件安全能力提升抗攻击性的共识算法。由于硬件的高性能与高可靠性,通常具有更优异的性能表现与更强的稳定性,但需要依赖特定的硬件环境,可移植性较弱。
共识算法类型丰富,并不存在适应所有场景需求的完美算法,因此需要设计者针对应用场景的关键需求进行合理设计与选型。
区块链关键技术三——智能合约
智能合约的引入可谓是区块链发展过程中的一个重要里程碑。区块链从最初单一的加密数字货币应用,到今天融入社会生产生活的各个领域,智能合约的作用不容忽视。这些金融、政务服务、供应链、游戏等各种类别的应用,几乎都是以智能合约的形式,运行在不同的区块链平台上。
智能合约的核心是当满足了一定的触发条件,就能被自动执行。例如,拍卖行可以通过智能合约实现对某件商品的拍卖。可以设计这样一个智能合约: 所有账户余额大于最新出价记录的用户都可以参与拍卖,对商品进行出价,出价成功的用户会把其出价对应的金额打入到指定账户A中,如果有其他用户出价更高,则归还出价次高用户的出价金额。假设小明先出价100元,这时智能合约会自动从小明账户中把100元打入到账户A 中,同时智能合约会记录最高出价者和竞拍金额; 后面的竞拍者只有出价大于100元才能出价成功,假设此时小华出价101元,那么智能合约会自动将A账户中的100元返还到小明的账户,然后从小华的账户中把101元打入到账户A中,同时智能合约更新最高出价者和竞拍金额; 最后在规定的时间内选出出价最高的竞拍者L,拍卖结束,智能合约自动将A账户的钱打入受益人账户中。整个过程非常高效、简单,不需要第三方的中间人进行裁决,也完全不会有赖账问题。
随着智能合约的普及,智能合约的编写必然会越来越严谨、规范,同时,其开发门槛也会越来越低,对应领域的专家也可以参与到智能合约的开发工作中,智能合约必定能在更多的领域发挥越来越大的作用。
区块链关键技术四——点对点网络
传统的网络服务架构大部分是客户端/服务端(Client/Server,C/S)架构,即通过一个中心化的服务端节点,对许多个申请服务的客户端进行应答和服务。C/S架构也称为主从式架构,其中服务端是整个网络服务的核心,客户端之间通信需要依赖服务端的协助。例如,当前流行的即时通信(Instant Message,IM)应用大多采用C/S架构: 手机端APP仅被作为一个客户端使用,它们之间相互收发消息需要依赖中心服务器。也就是说,在手机客户端之间进行消息收发时,手机客户端会先将消息发给中心服务器,再由中心服务器转发给接收方手机客户端。
C/S架构应用非常成熟,优势也非常明显: 中心化的服务端能够保持一致的服务形式,方便对服务进行维护和升级,同时也便于管理。然而,C/S架构同样也存在很多不足。首先,由于C/S架构采用中心化的服务端,因此当服务端节点发生故障时,整个服务都会陷入瘫痪。另外,服务端节点的处理能力是有限的,因此中心服务节点的性能往往成为整体网络的瓶颈。
点对点网络(Peer-to-Peer Networking,P2P网络)是一种去中心化的互联网信息交换方式,其消除了中心化的服务节点,将所有的网络参与者视为对等者(Peer),并在他们之间进行任务和工作负载分配。P2P结构打破了传统的C/S 模式,去除了中心服务器,是一种依靠用户群共同维护的网络结构,每个节点可以从任意(有能力的)节点处得到服务。由于节点间的数据传输不再依赖中心服务节点,P2P网络具有极强的可靠性,用户可以随时加入或者退出网络,任何单一或者少量节点故障都不会影响整个网络正常运转。同时,P2P网络的网络容量没有上限,随着节点数量的增加,整个网络的资源也在同步增加,P2P网络提供的服务质量也相应提高。
P2P网络的这些特性对于去中心化的区块链应用来说至关重要。在区块链系统中,要求所有节点共同维护账本数据,即每笔交易都需要发送给网络中的所有节点。如果按照传统的C/S模式,中心节点需要将大量交易信息转发给所有节点,这几乎是不可能完成的任务。P2P网络的设计思想与区块链的理念完美契合。在区块链中,所有交易及区块的传播并不要求发送者将消息发送给所有节点。节点只需要将消息发送给一定数量的相邻节点即可,其他节点收到消息后,会按照一定的规则转发给自己的相邻节点。最终通过一传十、十传百的方式,最终将消息发送给所有节点。
区块链相关职业培训
层次化培训体系,助您提升专业技能,成就职场新机遇
活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理
活动时间: 2020年8月12日-2020年9月11日
活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;
活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理
活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理
活动时间: 2020年8月12日-2020年9月11日
活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中上云礼包123等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;
活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理
活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理
活动时间: 2020年8月12日-2020年9月11日
活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;
活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理