区块链(Blockchain)
在2008年由署名为中本聪的作者在《比特币:一种点对点的电子现金系统》一文提出,指的是一种在对等网络环境下,通过透明和可信规则,构建防伪造、防篡改和可追溯的块链式数据结构,实现和管理事务处理的模式。区块链本质上是一个去中心化的数据库,通过其独特的技术设计和数据管理方式,可以支撑不同领域的多方协作。
区块链可以借由密码学,串接并保护内容的串联交易记录(又称区块)。在区块链中,区块内容具有难以篡改的特性,每一个区块都包含了前一个区块的加密散列、相应时间戳记以及交易数据(通常用Hash树计算的散列值表示)。用区块链串接的分布式账本能让交易双方有效地记录交易,且可永久查验。
- 包含一个分布式数据库
- 分布式数据库是区块链的物理载体,区块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本
- 区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体
- 区块链只对添加有效,对其他操作无效
- 基于非对称加密的公私钥验证
- 记账节点要求拜占庭将军问题可解/避免
- 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。
- 共识过程能够解决double-spending问题
1、数据区块
在区块链技术中,数据以区块的方式永久储存。区块按时间顺序逐个先后生成并连接成链,每一个区块记录了创建期间发生的所有交易信息。区块的数据结构一般分为区块头和区块体。其中,区块头用于链接到前一个区块并且通过时间戳特性保证历史数据的完整性;区块体则包含了经过验证的、区块创建过程中产生的所有交易信息。
2、挖矿
并不是所有的区块链都有挖矿这个概念,一般公有链才有挖矿,区块在挖矿过程中产生。挖矿,实际上就是穷举随机数算法,找到一个随机数Nonce使得计算出来的哈希值满足一定的条件,以获得该区块的记账权,同时获取系统给的一定数量的比特币奖励。
3、哈希函数
哈希算法就是以哈希函数为基础构造的,常用于实现数据完整性和实体认证。一个优秀的 hash 算法,将能实现:
- 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
- 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
- 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
- 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。
4、双重支付(double-spending)
双重支付问题又称为“双花”问题,即利用货币的数字特性用“同一笔钱”完成两次或多次支付。这个问题引申出来的就是如何保证每一笔数字现金都只会被花掉一次,避免重复支出。比特币运行的底层技术区块链技术很大程度上就是在解决这个问题以及“拜占庭将军问题”。这里只简述相关概念。
在传统的金融和货币体系中,由于金钱货币是物理实体,具有客观唯一存在的属性,所以可以避免双重支付的情况。但在其他的电子货币系统中,则需要可信的第三方管理机构提供保证。区块链技术则在去中心化的系统中不借助任何第三方机构而只通过分布式节点之间的相互验证和共识机制,有效地解决了双重支付问题,在信息传输的同时完成了价值转移。
5、P2P网络(以太坊)
P2P网络技术是区块链系统连接各对等节点的组网技术,在比特币出现之前,P2P网络计算技术已被广泛用于开发各种应用,如即时通讯软件、文件共享和下载软件、网络视频播放软件、计算资源共享软件等。
6、拜占庭将军问题
拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
区块链原理
区块链技术可以认为是要解决互联网时代下的“拜占庭将军问题”,即在网络中的中心节点和信息传递通道都缺乏可信度的情况下,如何使网络中的各个节点达成共识。区块链技术在去中心化、各节点无须事先信任的情况下,通过加密算法、共识机制和特定的数据存储方式,构建一个集体维护的可靠的数据模式,实现数字资产在网络节点之间的转移。
区块链采用了特定的“块—链”存储结构:
“块—链”存储结构
首先,数据被按时间顺序划分成区块,每一个区块存放一段时间内的所有价值交换信息,所有节点存储这段时间内的数据,并且永久保存,各个节点通过特定的计算争夺领导权,将下一时间段的信息进行打包分发,并通过某种特定的信息添加到上一区块的后面,构成区块链结构。这种区块链结构的特点就是可以保证数据的完整性,因为每一个区块都会存储它被创建之前的所有价值交换信息;还可以保证数据的严谨性,因为一旦新的区块被加入链中,之前的区块就再也不能修改。区块链实现了从记录到传输再到存储的全面分布式的模式,数据传输、数据验证、数据存储都去中心化,所有参与者共同构建数据库。
区块链采用非对称加密算法以提高数据的可信赖度,非对称加密即指加密和解密使用不同的密码,即公钥和私钥。加密数据所用的密码被称为公钥,是所有人都知道的、可以用来给信息加密的密码;解密数据所用的密码被称为私钥,是只有该信息的接收者知道并用于解密的密码。公钥加密的信息只有使用对应的私钥才可以解密。
实际情况中,假设甲向乙发送一个信息,甲、乙各自生产一对公钥与私钥用以加密和解密,甲、乙分别保管自己的私钥并向对方告知公钥,如果甲向乙发送信息,那么甲用乙的公钥进行加密并向乙发送加密后的信息,乙收到消息后用自己的私钥解密,网络中其他参与者均无法解密。这种算法强度高的加密方式保证了区块链信息的可信赖度。区块链使用数学方法解决信任问题,用算法代替中心化的第三方机构,为人们创造信用,帮助人们达成共识。
区块链利用脚本使系统可以直接定义完成价值交换活动所需要的条件,有了脚本,区块链技术就有机会使系统不断成长,去处理一些新出现的交易模式,确保其时效性和实用性。脚本中包含大量指令,每次价值交换都会记录指令,比如接收价值的一方如何接收,以及花费掉自己曾收到的留存价值需要满足什么附加条件等。脚本的可编程性使其可以灵活改变花费掉留存价值的附加条件,如增加所需公钥的数量。它也可以在发送价值时规定价值再转移的条件。
区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。
区块链技术体系
- 第一层:数据层,存储底层数据、非对称数据加密和时间戳等基础数据。
- 第二层:网络层,含有分布式组网机制、数据传播机制、数据验证机制等。
- 第三层:共识层,封装有各类共识机制算法,确定记账决定方式,这关系到整个系统的安全性和可靠性。目前较为知名的由共识层封装的共识机制有工作量证明机制(PoW,Proof of Work)、股份授权证明机制(DPoS,Delegated Proof of Stake)、权益证明机制(PoS,Proof of Stake)等。
- 第四层:激励层,在区块链技术体系中使用的经济手段,包括经济激励的发行以及分配,多出现在公有链中。
- 第五层:合约层,封装区块链系统中的脚本代码、算法以及智能合约,帮助区块链灵活地处理数据。
- 第六层:应用层,封装了各种应用场景和案例,如电商购物、新闻浏览、视频观看等。
区块链架构
我们知道区块链系统实际上就是一个维护公共数据账本的系统,一切的技术单元的设计都是为了更好地维护好这个公共账本。
- 通过共识算法达成节点的账本的数据一致;
- 通过密码算法确保账本数据的不可篡改性以及数据发送的安全性;
- 通过脚本系统扩展账本数据的表达范畴。
我们甚至可以认为去区块链系统实际上就是特别设计的数据库系统或者分布式数据库系统,在这个数据库可以存储数字货币,也可以存储更复杂的智能合约,以及范围更加广阔的各种业务数据。在区块链的发展历程中,也经历了一个这样的阶段,从比特币开始,早期的区块链系统都是面向数字货币的,比如比特币、莱特币。这个阶段我们可以认为区块链系统是一个支持数字货币合约的系统。之后出现了更灵活地,能够支持自定义智能合约的系统,其代表作就是以太坊,可以认为以太坊就是对比特币这样数字货币系统的扩展,不过以太坊仍然内置了对数字货币的支持,延续了比特币系统的金融特征,也使得以太坊的应用更多的是面向金融范畴,再之后就是代表就是超级账本项目,尤其是其中的Fabric子项目,在这个系统中,超越了对金融范畴的应用,支持各个领域的数据定义。
我们分别将这个三个阶段成为区块链系的1.0、2.0、3.0结构时期。为了让大家让大家对发展过程中的区块链系统有一个整体的概念,在本文中,我将描述一下区块链系统的架构,并在不同角度对区块链系统进行分类。
1、区块链1.0架构
如摘要中所说的,这个阶段的区块链系统主要是用来实现数字货币的,我们可以先看看示意图:
如图所示,在整个结构中,分为核心节点和前端工具,这里我要提一下核心节点中的“矿工”功能。在矿工的1.0系统中,主要承担两个任务:
第一个是通过竞争获得区块数据的打包权后将内存池(发送在网络中但是还没有确认进区块的交易数据,属于待确认交易数据)中的交易数据打包进区块,并且广播给其他节点;
第二个是接受系统对打包行为的数字货币奖励,从而系统通过这种奖励机制完成新货币的发行。
在前端工具中,最明显的就是钱包工具,钱包工具是提供给用户管理自己账户地址以及余额的;浏览器是用来查看区块链网络中发生的数据情况,比如最新的区块高度,内存池的交易数、单位时间的网络处理能力等;PRC客户端和命令行接口都是用来访问节点的功能的,在这个时候,核心节点就相当于一个服务器,通过PRC服务提供功能调用接口。
2、区块链2.0架构
在区块链2.0架构的代表产品是以太坊,因此我们可以套用以太坊的架构来说明,先来看看示意图:
与1.0的架构相比,最大的特点就是支持智能合约,在以太坊中,我们使用智能合约开发工具开发合约程序,并且编译为字节码,最终部署到以太坊的区块链账本中。部署后的智能合约是运行在虚拟机上的,成为“以太坊虚拟机”。正式通过这样的智能合约的实现,扩展了区块链系统的功能,同时我们也看到,在以太坊中还是支持数字货币的,因此在应用工具中还是有钱包工具的。
3、区块链3.0架构
在3.0的架构中,超越了对数字货币或者金融的应用范畴,而将区块链技术作为一种泛解决方案,可以在其他领域使用,比如行政管理、文化艺术、企业供应链、医疗健康、物联网、产权登记等,可以认为是面向行业应用。
行业应用一般是需要具备企业级属性的,比如身份认证、许可授权、加密传输等,并且对数据的处理性能也会有要求,因此企业级场景下的应用,往往都是联盟链或者私有链。我们来看一下示意图
在上图中,数字货币不再是一个必选的组件了,当然如果需要,我们也可以通过智能合约的方式来实现数字货币的。与之前的架构相比,最大的特点就是增加了一个网管控制,实际上就是增加了对安全保密的需求的支持,并且通过数据审计加强对数据的可靠性管理。
在3.0中,实际上可以看成是一套框架,通过对框架的配置和二次开发可以使用各行业的需求,比如图中的“可插拔共识”,意思就是共识机制不是固定的,而是可以通过用户自己去选用配置。
区块链分类
1、根据网络范围分类
根据网络范围,区块链可以分为公有链、私有链、联盟链。
1.公有链
所谓公有就是完全对外开放,任何人都可以任意使用,没有权限的限定,也没有身份认证之类,不但可以任意参与使用,而且发生的所有数据都可以任意查看,完全公开透明。比特币就是一个公有链网络系统,大家在使用比特币系统的时候,只需要下载相应的软件客户端,创建钱包地址、转账交易、挖矿等操作,这些功能都可以自由使用。公有链系统由于完全没有第三方管理,因此依靠的就是一组实现预定的规则,这个规则要确保每个参与者在不信任的网络中能够发起可靠的交易事务。通常来说,凡是需要公众参与,需要最大限度保证数据公开透明的系统,都适用公有链,比如数字货币系统、众筹系统、金融交易系统等。
这里需要注意,在公有链的环境中,节点数量是不固定的,节点的在线与否也是无法控制的,甚至一些节点可能是恶意节点。我在介绍区块链工作流程的时候,提到了一个问题,在这种情况下,如何知道数据是被大多数的节点写入确认的呢?实际在公有链的环境下,这个问题没有很好的解决,目前最合适的做法就是通过不断地去互相同步,最终网络中大多数节点都同步一致的区块数据所形成的的链就是被承认的主链,这也被称为最终一致性。
2.私有链
私有链是与公有链相对的一个概念,所谓私有就是指不对外开放,仅仅在组织内部使用的系统,比如企业的票据管理、财务审计、供应链管理等,或者一些政务管理系统。私有链在使用过程中,通常是有注册要求的,即需要提交身份认证,而且具备一套权限管理体系。有朋友可能会问,比特币、以太坊这些等系统虽然是公链系统,如果将这些系统搭建在一个不与外网连接的局域网中,这个不就成了私有链吗?从网路传播范围来看,可以算,只不过由于使用的系统本身没有任何的身份认证以及权限设置,因此从技术角度上来说,这种情况只能算是使用公链系统的客户端搭建的私有测试网络。当然也适用于企业应用。
在私有链环境中,节点数量和节点的状态通常是可控的,因此在私有链环境中一般不需要通过竞争的方式来筛选区块数据的打包者,可以采取更加节能环保的方式,比如在上述共识机制介绍中提到的PoS(权限证明)、DPoS(委托权益证明)、PBFT(使用拜占庭容错算法)等。
3.联盟链
联盟链的网络范围结余共有链和私有链之间,通常是使用在多个成员角色的环境下,比如银行之间的支付结算、企业之间的物流等,这些场景下往往都是由不同权限的成员参与的,与私有链一样,联盟链系统一般也是具有身份认证和权限设置的,而且节点的数量往往是确定的,对于企业或者机构之间的事务处理和合适。联盟链不一定要完全管控,比如财务系统,有些数据可以对外工卡的,就可以部分放出来。
由于联盟链一般用在明确的机构之间,因此与私有链一样,节点的数量和状态也是可控的,并且通常也是爱用更加节能环保的共识机制。
2、根据部署环境分类
1.主链
所谓主链,也就是部署在生产环境中的真正的区块链系统,软件在正式发布前会经过很多的内部测试版本,用于发现一些可能存在的bug,并且用来内部演示以便于查看结果,最后才会正式发布正式版。主链,也可以说是正式版客户端组成的区块链网络,只有主链才会真正被推广使用的,各项功能的设计都是相对完善的。另外有些时候,区块链系统会由于种种原因导致分叉,比如挖矿的时候临时产生的小分叉等等,因此最长的那条原始链成为主链
2.测试链
这个也很好理解,就是开发者为了方面大家学习使用提供的测试用途的区块链系统,比如比特币测试链、以太坊测试链等,当然,倒也不是树非得是区块链开发者才能提供测试链,用户也可以自行搭建测试网络。测试链中的功能设计与生产环境中的主链是可以有一些差别的,比如主链中使用工作量证明算法进行挖矿,在测试链中可以换成其他算法以便测试使用。
3、根据对接类型
1.单链
能够单独运行的区块链系统都可以成为是“单链”,比如比特币主链、测试链,以太坊主链与测试链;超级账本中的Fabric搭建的联盟链等,这些区块链系统拥有完美的组件模块,自成一个体系。大家要注意了,对于有些软件系统,例如基于以太坊的众筹系统或者金融担保系统等,这写只能算是智能合约应用,不能算一个独立的区块链系统,应用程序的运行需要独立的区块链系统的支撑。
2.侧链
侧链属于一种区块链系统的跨链技术,这个概念主要是比特币侧链发起的,随着技术的发展,除了比特币,出现了越来越多的区块链系统,每一种系统都有自己的优势特点。如何将不同的链结合起来,打通信息孤岛,彼此互补呢?侧链就是其中的一项技术。
以比特币来说,比特币系统主要是设计用来实现数字加密货币的,且业务逻辑已经固化。因此并不是适用实现其他的功能,例如金融只能合约,小额快速支付等。然而比特币是目前适用规模最大的一个公有区块链系统,在可靠性,去中心化保证等方面的优势,那么如何利用比特币网络的优势来运行其他的区块链系统呢?可以考虑在现有的比特币的区块链之上,建立一个新的区块链系统,新的系统可以具有很多比特币没有的功能,比如私密交易、快速支付等等,并且能够与比特币的主链进行互通。简单来说,侧链是锚定比特币为基础的新型区块链。锚定比特币的侧链,目前有ConsenSys的BTCRelay、Rootstock和BlockStream的元素链。
区块链系统与侧链系统本身都是一个独立的链系统,两者之间可以按照一定的协议进行数据互动,通过这种方式,侧链能起到一个队主链功能扩展的作用,很多在主链中不方便实现的功能可以在侧链中实现,而侧链再通过与主链数据交互增强自己的可靠性。
3.互联链
如今我们的生活可以说是离不开互联网了,仅仅互通互联,带来的能量已经如此巨大。区块链也是这样,目前各种区块链系统不断涌现,有的只是实现数字货币,有的实现了智能合约,有的实现了金融交易平台,有的是共有链,有的是联盟链,等等。这么多的链,功能各异,不断刷新着更新颖的应用玩法,那么这些链系统如果能批次之间互联会发生什么化学反应呢?与传统的软件不同的是,区块链系应用拥有独特的性质,比如数据不可篡改、完全性证明、自动网络共识、智能合约等,从最初的数字货币到未来可能的区块链可编程社会,这些不单单改变生活服务方式,还会促进社会治理的变革。如果说每一条链都是一条神经的话,一旦互联起来,就像是神经系统一般,将会给我们的社会发展带来更新层次的智能化。
另外,从技术上角度来讲,区块链系统中的互联,可以彼此互补,每一类系统都会有长处和不足,彼此进行功能上的互补,可以批次进行互相验证,可以大大增强系统的可靠性以及性能。
核心技术
区块链技术是一种不依赖第三方、通过自身分布式节点进行网络数据的存储、验证、传递和交流的一种技术方案。通俗一点说,区块链是一种由多方共同维护,使用密码学保证传输和能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。
分布式账本指的是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点记录的是完整的账目,因此他们都可以参与监督交易合法性,同时也可以共同为其作证。跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分层多分进行存储。二是区块链每个节点存储都是独立的,地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能行。
分布式账本构建了区块链的框架,它本质是一个分布式数据库,当一笔数据产生后,经大家处理,就会储存在这个数据库里面,所以分布式账本在区块链中起到了数据储存的作用。
因为分布式账本去中心化的特点,决定了区块链网络是一个分布式的结构,每个人都可以自由地加入其中,共同参与数据的记录。但与此同时,就衍生出来了令人头疼的“拜占庭将军问题”,即网络中参与的人数越多,全网也就越难以达成统一。于是就需要另一套机制来协调全节点账目保持一致,共识机制就制定了一套规则,明确每个人处理数据的途径,并通过争夺记账权的方式来完节点间的意见统一,最后谁取得记账权,全网就用谁处理的数据。所以共识机制在区块链中起到了统筹节点行为、明确数据处理的作用。
此外,数据进入分布式数据库中,也不是单纯地打包进来就没事了,底层的数据构架则是由区块链密码学来决定的。打包好的数据块,会通过密码学中的哈希函数处理成一个链式的结构,后一个区块包含前一个区块的哈希值,因为哈希算法具备单向性、抗篡改等特点,所以只要在区块链网络中,数据一旦上链就不可篡改、且可追溯。另外你的账户也会通过非对称加密的方式进行加密,进而保证了数据的安全,验证了数据的归属。
最后,可以在分布式账本的基础上,搭建应用层面的智能合约,当我们想要解决一些信任问题,可以通过智能合约,将用户之间的约定由代码的形式,将条件罗列清楚,并通过程序来执行,而区块链中的数据,则可以通过智能合约进行调用。所以智能合约在区块链中起到了数据的执行与应用的功能。
区块链的核心技术中共识机制、数据存储、加密算法、智能合约、网络协议和隐私保护等6类公认的区块链核心技术发展活跃,不断取得新的进展。此外,跨链、分片等技术进展较快,也已逐渐成为新的核心技术方向。
1)共识机制
共识机制指的是群体或组织达成和维护共识的方式。区块链作为分布式记账技术,没有一个中心来指挥协调多方之间的协作,就必须有一个共识机制来解决谁有权写入数据和如何进行同步数据的问题。常用的共识机制主要有PoW工作量证明、PoS 权益证明、DPoS 委托权益证明、Paxos 算法、PBFT实用拜占庭容错算法、dBFT授权拜占庭容错算法等。
2)数据存储
区块链中每一个区块记录了创建期间所有的交易信息,按时间顺序逐个先后生成并连接成链。每个区块都指向前一个区块,形成链表。区块分为区块头和区块体两部分。区块头存储着区块的多项特征值,包含上一个区块的哈希值、本区块体的哈希值以及时间戳等等。区块体中记录了该区块存储的交易数量以及交易数据。
3)智能合约
智能合约是一种特殊协议,旨在提供、验证及执行合约,可以由一个计算系统自动执行。其最大的优势是利用程序算法替代人仲裁和执行合同。区块链可以实现去中心化的重要原因之一是智能合约,使得进行可追溯、不可逆转和安全的交易时可以不依赖第三方。
4)加密算法
区块链中用到的密码学算法主要有两大类:哈希算法和非对称加密算法。哈希算法是将任意长度的字符串映射为较短的固定长度的字符串。其确定性、高效性使得去中心化的计算能够实现,其对输入的敏感性和抗原像攻击对区块链系统的安全性有很大帮助,被广泛地用于构建区块和确认交易的完整性。非对称加密技术的加密和解密过程使用的是一对不同的密钥:公开密钥和私有密钥。交换信息时使用一方的公钥或私钥加密,则需对应的私钥或公钥才能解密。非对称加密在区块链中有数据加密和数字签名等用途。
5)网络协议
区块链在网络层一般采用P2P协议,由多个节点组成网络结构,节点之间处于对等的地位且共享资源,既可以是资源的提供者,也可以资源的接受者。P2P 网络结构是扁平化的拓扑结构,节点相互之间没有层次之分。不同的区块链系统往往有其独特的P2P网络协议。
6)隐私保护
目前区块链上传输和存储的数据都是公开可见的。为了达到匿名效果,通常以一串无意义的数字作为组织或个人的代号,通过该代号的表面信息无法将其对应到某一个具体对象的真实身份。但这样的保护并非完美,通过一°些手段还是可以追查到帐户和交易的关联性。想要加强区块链的隐私保护,可以采用混币、环签名、同态加密、零知识证明等方式。
7)跨链
区块链的链与链之间存在高度异构化,每一个单独的区块链网络都是-一个相对独立的网络,数据信息不能做到互通互联。不同的区块链网络之间协作的难度大,极大地限制了区块链应用的发展。跨链可以理解为一种协议,解决两个或多个不同链上的资产以及功能状态可以互相传递、转移、交换的难题。跨链的存在,不仅是增加了区块链的可拓展性,还可以解决不同区块链之间交易困难产生的信息孤岛问题。
8)分片
分片是数据库设计中的一个概念,将较大的数据库分成更小、更快、更容易管理的部分,实现扩容并提高性能。可以将分片的思想运用到区块链网络中,将一个大任务拆分为多个可以并行处理的小任务,从而提升性能。将网络中的工作分摊给所有参与的节点,通过使用多个网络设备来获得平行处理转账的功能,进行分片处理。将网络分割为碎片可以使得更多的交易同时被处理和验证。
区块链特点
1、去中心化
去中心化就是指网络中各个节点的地位相等,传输内容和交易数据不再需要通过某个中心节点进行,数据也不再存储在中心节点上,这样可以防止因中心节点权力过大而引起的风险。区块链模式中,每个节点都存储数据交易中所有的价值交换数据,取代了中央计算机存储所有信息的模式。
去中心化网络
另外,每个节点不仅会参与数据存储,还会验证其他节点记录信息的正确性。只有当某个记录的正确性被大部分节点认同,或者所有节点的对比结果一致时,它才可以被写入链中。
同时,为了保护数据信息不会因节点受攻击或其他意外而丢失,区块链会对所有数据进行分布式存储(将数据存储在网络中的每一个参与的节点中),并实时更新,极大地提高了数据库的安全性。不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理,去中心化是区块链最突出最本质的特征。
2、安全性:信息不可篡改
区块链网络中,每个参与节点都保存一份完整的交易历史记录,这样,任何一个节点想篡改这些历史记录,别的节点都可以拿出自己的数据备份进行证伪。只要不能掌握全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更,可以说,信息一旦被写入区块中,就不能更改、撤销了。
3、可验证性:信息透明
区块链中的项目和数据都是公开透明的。区块链项目组会公示项目信息和项目代码,区块中的数据经处理后被公开在区块链上,意味着所有的交易信息都是公开可见的。极短时间内,区块信息会被发送到网络中的所有节点上,实现全网数据同步,每个节点都能回溯交易双方过去的所有交易信息。
可验证性指的是数据来源的可验证。每一笔交易中电子货币的产生和输入、输出都是可以验证的。区块链结构中不会凭空增加电子货币。以比特币为例,每一笔交易的输入都是前一笔交易的输出,每一笔交易的输出又是下一笔交易的输入,即交易的可追溯性。除了来源的可验证外,还有交易金额的可验证,即验证金额的正确性,确保交易过程中的每一笔资金都是可靠的。目前,为了保证用户的隐私,很多电子货币通过混币、环签名、零知识证明等技术在数据可验证的情况下,尽可能地切断金额的可追溯性。
区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。
4、开放性:可共同维护
在整个区块链系统中,无论是价值的提供者还是价值的接收者,都可以充当维护者,共同维护整个区块链信息的可靠性。
区块链系统是开放的,除了价值交易双方的私有信息被加密外,系统还由其中所有参与节点共同维护,任何一个节点都可以通过公开的接口查询区块链数据和开发相关应用,共同维护整个系统的信息透明度和可信赖性。
5、独立性
基于协商一致的规范和协议(类似比特币采用的哈希算法等各种数学算法),整个区块链系统不依赖其他第三方,所有节点能够在系统内自动安全的验证、交换数据,不需要任何人为的干扰。
6、匿名性
除非由法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行。区块链中的匿名性实际上是一种伪匿名性。区块链中使用假名技术来切断账号和真实身份的联系。比如,对用户公钥进行一系列的Hash运算,得到的固定长度的Hash值作为对应的电子账号。实际上,随着使用次数的增加,通过数据分析可以分析出账号的很多交易行为,比如经常和那些账号做交易,交易金额多少等,甚至可以和现实中的真实身份相联系。
区块链应用
区块链技术是加密和安全领域新的研究成果,与网络与信息安全有着本质的联系,提供了一种完全不同的方法来存储信息、进行交易、执行功能和建立信任,可以用来解决网络与某些领域的某些信息安全问题。其应用领域十分广阔,如:
- 金融:跨境支付、数字货币、数字票据、支付清算、征信管理、证券交易、保险管理等;
- 医疗:去中心化的病人医疗健康信息数据存储与共享的建立;
- 内容社交平台:抖音、微博、微信公众号-每个人都是一个节点,任何人也都可以成为一个中心;
- 慈善:提高慈善领域的信息透明度;
- 教育:简化流程并提高学历认证的效率;
- 版权保护:实现对所有权的溯源;
- 投票:区块链去中心化和透明化的特点使投票透明、真实性强。
比特币
比特币网络中的节点主要有四大功能:钱包、挖矿、区块链数据库、网络路由。每个节点都会具备路由功能,但其他功能不一定都具备,不同类型的节点可能只包含部分功能,一般只有比特币核心(bitcoin core)节点才会包含所有四大功能。区块链并不等同于比特币,比特币也不是区块链,区块链只是比特币应用的一种技术,这个技术能给我们带来启发,比特币的伟大之处在于应用了前所未有的区块链技术。比特币是区块链技术最成功的应用,但是比特币本身也有很多问题,它想通过发行货币来挑战主权货币,这个动机有待商榷。此外,由于比特币的匿名性,只需要一个公钥或地址就能进行交易,为黑色产业提供了很好的平台。另外,比特币并不是一个成熟的支付系统,它具有吞吐率低,可拓展性差等缺点。
以太坊
和比特币一样,以太坊的节点也具备钱包、挖矿、区块链数据库、网络路由四大功能,也同样存在很多不同类型的节点,除了主网络之外也同样存在很多扩展网络。但与比特币不同的,比特币主网的 P2P 网络是无结构的,但以太坊的 P2P 网络是有结构的。前面我们已经提过,以太坊的 P2P 网络主要采用了 Kademlia(简称 Kad) 算法实现,Kad 是一种分布式哈希表(DHT)技术,使用该技术,可以实现在分布式环境下快速而又准确地路由、定位数据的问题。
超级账本(hyperledger)
超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,加入成员包括:荷兰银行(ABN AMRO)、埃森哲(Accenture)等十几个不同利益体,目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程。由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。
Fabric项目:超级账本项目
Fabric是一个支持智能合约的分布式账本系统。Fabric是私有的,只有通过MSP认证的成员才可以进入到系统,参与合约的缔造与执行。Fabric是插件式设计,账本数据有多种存放方式,共识机制可以切换,支持不同类型的MSP。Fabric开发了channel功能,一个channel对应一个账本,只有加入channel的成员可见,可以防止竞争对手知晓交易的细节。账本由两部分组成:全局状态(word state)和交易日志(transaction log)。 全局状态中记录的是当前状态,交易日志中记录了所有的交易记录,全局状态是这些交易记录的执行结果。智能合约(Smart Contracts)用chaincode编写,由区块链外部的应用调用执行,chaincode通常是用来更新账本的。
安全应用
区块链作为新技术在许多方面尚未成熟,多数的应用仍处于研究和发展阶段,运行成本较高,现阶段的用途和效果可能存在夸大和炒作的情况,实现技术优化和更好的应用仍是需要研究的重要课题。区块链技术是加密和安全领域新的研究成果,与网络与信息安全有着密切的联系,可以用来解决该领域的一些问题,例如攻击防御、数据保护、隐私保护、身份认证、崩溃恢复等:
1)支持更安全的DNS架构
区块链中的交易一旦被确认,不容易被篡改。可以利用该特性将域名和P地址对应关系的操作记录在区块链中,在全网达成共识,不可篡改,形成交易记录,完美地保存域名服务器信息。使用去中心化的区块链技术的域名服务器比传统的中心化域名服务器更安全,能支持域名管理,防止域名服务器缓存投毒。
2)缓解DDoS攻击
分布式拒绝服务攻击(DDoS 攻击)将多个计算机联合起来作为攻击平台来发动攻击,通过大量合法的请求,大规模消耗目标网站的主机资源,使被攻击的对象无法正常提供服务。区块链技术允许用户加入分布式网络,从而缓解DDoS攻击。此外,还可通过出租额外带宽,以支持那些流量过载的网络。
3)保护边缘计算设备
由于边缘计算的网络体系和网络环境庞杂,要想为分散布局的边缘计算设备设置有效的隔离保护,增加的大量网络隔离设备会带来成本和工作量的压力。但若不防护,边缘计算设备一旦被入侵或者攻击,会渗透到整个网络。此外,如果边缘计算中的终端设备没有身份认证体系,攻击者可以随意接入恶意终端来传播病毒或恶意软件,也会导致网络瘫瘓,影响生产和生活。通过区块链技术可以很好解决以上问题。区块链技术可以通过给边缘计算不同域及终端设备分发数字证书,控制功能权限和数据权限,提供更安全的运算与存储环境。区块链技术也可以为边缘计算中的终端设备提供身份认证体系。在进行边缘计算和数据上传前,首先要进行身份验证,之后才能传输数据。
4)数据保护
区块链构建分布式账本不可篡改,能够通过加密和权限控制等技术保障数据的机密性、完整性、可用性。区块链对数据的完全加密可以确保这些数据在传输过程中不会被未授权的用户访问。使用分布式记账技术对文件进行签名,来代替传统的签名方式,使得攻击者几乎不可能伪造和窃取数据。区块链可以被视为一条存储数据的链条,环环紧扣。每当加入新的一环,前一环中数据的特征值将被记录在新的环节上。只要验证对应某一环与前后两环的特征值,就可以判断原始信息是否被篡改。
5)与PKI结合提高安全性
目前标准的加密技术是基于公钥基础设施(PKI)的,主要依赖于中心化、受信任的第三方认证机构(CA)来发放、激活和存储用户证书。如果黑客攻击了这些第三方认证机构,就可以伪造成CA欺骗用户身份并破解加密通信。在区块链中依靠非对称加密技术,对用户的身份信息进行高度加密,发放密钥来鉴别对方的真实身份,一旦信息经过验证并添加至区块链,采用去中心化的管理方式,不容易篡改,理论上来说可以大大提高数字证书的安全性。
6)隐私保护
区块链技术可以通过分布式结构、可追溯性、匿名性来实现隐私保护。在区块链中,用户的隐私数据是随机发布在分布式账本中的,攻击者无法通过入侵单一节点来收集到用户的所有数据,能最大限度地防止数据泄露。区块链的可追溯特性使得数据从采集、交易、流通到计算分析的每步记录都可以留存在区块链上,不容易被篡改。在区块链技术中,各节点之间的数据交换基于地址而非个人身份,交易双方采取匿名方式就能交易,因此大部分个人隐私信息都不会暴露。
7)崩溃恢复
区块链上的数据分布在对等节点之间。不同于传统数据库中所有数据都存储在中心位置,区块链上的每个用户有权生成并维护数据的完整副本。虽然造成数据冗余,但大大提高了可靠性,增加了网络的容错性。如果某些节点受到攻击,不会对其余部分网络造成损害,也容易实现崩溃恢复。
小结
区块链所具有的去中心化,不可篡改性,安全性等特征可与多行业所结合,大力促进了各行业的升级与发展,5G时代正在来临,区块链在今后的发展中仍需要不断的挖掘研究。
注:仅作资料整理!
如有错误、侵权,请联系笔者更改删除!!!