1、区块链:从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”、“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。
2、区块链的起源:
- 区块链起源于比特币,2008年11月1日,一位自称中本聪(Satoshi Nakamoto)的人发表了《比特币:一种点对点的电子现金系统》一文 ,阐述了基于P2P网络技术、加密技术、时间戳技术、区块链技术等的电子现金系统的构架理念,这标志着比特币的诞生。两个月后理论步入实践,2009年1月3日第一个序号为0的创世区块诞生。几天后2009年1月9日出现序号为1的区块,并与序号为0的创世区块相连接形成了链,标志着区块链的诞生 。
- 近年来,世界对比特币的态度起起落落,但作为比特币底层技术之一的区块链技术日益受到重视。在比特币形成过程中,区块是一个一个的存储单元,记录了一定时间内各个区块节点全部的交流信息。各个区块之间通过随机散列(也称哈希算法)实现链接,后一个区块包含前一个区块的哈希值,随着信息交流的扩大,一个区块与一个区块相继接续,形成的结果就叫区块链。
3、区块链的特点:
- 去中心化——不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理,去中心化是区块链最突出最本质的特征;
- 开放性——区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明;
- 独立性——基于协商一致的规范和协议(类似比特币采用的哈希算法等各种数学算法),整个区块链系统不依赖其他第三方,所有节点能够在系统内自动安全地验证、交换数据,不需要任何人为的干预;
- 安全性——只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更;
- 匿名性——除非有法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行。
4、区块链的类型:
- 公有链——是公有的、开放的,公有链是开放程度最高,也是去中心化程度最高的;在公有链中数据的更新、存储、操作都不依赖于一个中心化的服务器,而是依赖于网络上的每一个节点,这就意味着公有链上的数据是由全球互联网上成千上万的网络节点共同记录与维护的,没有人能够篡改其中的数据,这也是最重要的标志;
【缺点】
(1)公有链数据是全网公开的,并不适用于所有行业,比如银行、政府、证券不可能将全网数据公开。
(2)处理交易的速度慢,因为需要全网节点共同参与,参与节点太多,影响处理交易的速度,导致效率低。
(3)公有链涉及发币,需要进行ICO(Initial Coin Offering),指是一种为加密数字货币/区块链项目筹措资金的常用方式,早期参与者可以从中获得初始产生的加密数字货币作为回报,但ICO是现在各国政府所禁止的敏感话题。 - 联盟链——公司与公司、组织与组织之间达成的联盟模式,维护链上数据的节点都来自这个联盟的公司或组织,记录与维护数据的权利掌握在联盟公司成员手上;采用联盟链的主要群体有银行、证券、保险、集团企业等。联盟链不像公有链那样数据完全开放,弱化了去中心化,目前联盟链的典型项目是超级账本项目,目前有荷兰银行、埃森哲等十几个不同利益体加入,联盟链能满足他们各自行业需求,简化业务流程。
- 私有链——是不对外开放的,只有被授权的节点才能参与并且查看数据的区块链类型;,采用私有链的主要群体是金融机构、大型企业、政府部门等。私有链典型的应用是央行开发的用于发行央行数字货币的区块链,这个链只能由央行进行记账,个人是不可能参与到的。还有一些大型公司在做私有链的,比如阿里、百度、京东等,他们主要侧重区块链在数据安全、供应链等行业痛点方面的作用。
5、区块链的架构模型:一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成
- 数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法;
- 网络层则包括分布式组网机制、数据传播机制和数据验证机制等;
- 共识层主要封装网络节点的各类共识算法;
- 激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;
- 合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;
- 应用层则封装了区块链的各种应用场景和案例。
该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。
6、区块链核心技术:
-
基于时间戳的链式区块结构:区块链是在时间上有序的、由记录块(区块)组成的一根链条。一个区块包含两个部分:区块头(Block Header)和记录部分。
区块中的所有记录通过默克尔树(Merkle Tree)组织起来,默克尔树根(Root)的哈希值做为本区块里所有记录的数字指纹被放入区块头。区块头还包含以下字段:前一个区块头的哈希值(这是前一个区块的数字指纹,也可以看做是指向前一个区块的哈希指针),本区块的时间戳、高度(Hight,即从第一个区块开始数本区块是第几个块),以及一些其他信息。系统的共识算法保证了每过固定的一段时间(Bitcoin是大约10分钟),参与整个系统记账的节点会达成共识在区块链上添加下一个新的区块。
时间戳的这种设计,使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改。这是因为,如果改动某个区块里的一条记录,意味着该区块原来的默克尔树根失效了,需要改动区块头,该区块的数字指纹随之失效。又由于下一个区块的区块头包含这个哈希指针,这就意味着下一个区块也需要改动。如此直到最新的那个区块。
-
分布式节点的共识机制:分布式指的是系统运作由参与该系统的所有个体分工合作进行,所谓共识,是指多方参与的节点在预设规则下,通过多个节点交互对某些数据、行为或流程达成一致的过程。共识机制是指定义共识过程的算法、协议和规则。
区块链的共识机制具备*“少数服从多数”以及“人人平等”*的特点。- “少数服从多数” 并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。
- “人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并最后有可能成为最终共识结果。
-
基于共识算力的经济激励:区块链的世界里,节点通过共识机制来创造新的区块,哪个节点创造出来,该节点就会得到Token(虚拟货币)。
每个在区块链上活跃的节点都在通过挖矿的方式来获取Token,比如比特币是通过算力,谁先算出这个hash的结果,谁得到奖励,以太坊则是通过一定的行为来触发,你触发次数越多,权益就越高,收获的奖励也就越多。
简单来说,激励机制是通过经济平衡的手段,鼓励节点参与到维护区块链系统安全运行中来,防止对总帐本进行篡改、是长期维持区块链网络运行的动力。
-
灵活可编程的智能合约:一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
智能合约又称智能合同,是由事件驱动的、具有状态的、获得多方承认的、运行在区块链之上的、且能够根据预设条件自动处理资产的程序,智能合约最大的优势是利用程序算法替代人仲裁和执行合同。简单说,智能合约是一种用计算机语言取代法律语言去记录条款的合约。智能合约可以由一个计算系统自动执行,是传统合约的数字化版本。
如果区块链是一个数据库,智能合约就是能够使区块链技术应用到现实当中的应用层。智能合约是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此合约是不可更改的。
7、区块链的共识机制:平时说的CFT就是Crash Fault Tolerant的简写,是无恶意节点的情况下的容错,常用的共识算法有: Paxos、Raft;而BFT就是Byzantine Fault Tolerant的简写,是有恶意节点的情况下的容错,常用的共识算法有:PBFT、POW;
-
PBFT(Practical Byzantine Fault Tolerance)算法:
【问题提出】拜占庭将军问题是一个共识问题: 首先由Leslie Lamport与另外两人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。Lamport的论文中讲了这样一个故事:拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗?这就是著名的拜占庭将军问题。
两军问题描述了这样一个故事:白军驻扎在沟渠里,蓝军则分散在沟渠两边。白军比任何一支蓝军都更为强大,但是蓝军若能同时合力进攻则能够打败白军。他们不能够远程的沟通,只能派遣通信兵穿过沟渠去通知对方蓝军协商进攻时间。是否存在一个能使蓝军必胜的通信协议,这就是两军问题。两军问题中信道是不可靠的,并且其中没有叛徒之说,这就是两军问题和拜占庭将军问题的根本性不同。
【算法描述】PBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。该算法是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。
这个算法在保证活性和安全性的前提下提供了(n-1)/3的容错性,也就是节点数需要达到3f+1个节点才能容错f个节点。以4个节点组成的分布式网络为例,PBFT算法的节点间网络通信如图所示:
网络通信的复杂度达到了O(n²),这也就意味着,PBFT网络节点不能太多,如果节点太多将会造成网络风暴,使得整个网络堵塞。 -
POW(Proof of Work)工作证明:PoW机制的核心在于强迫攻击者作出一定量的工作才能进行接下来的交互操作,这样无形中就给攻击者提高了攻击的成本。自然而然,攻击者需要完成的工作可以按消耗的计算机资源种类分为以下三大类:
- 消耗CPU资源。例如,反垃圾邮件的Hashcash方案以及受此启发而诞生的比特币;
- 消耗内存资源。例如,为了防止与比特币采用相同的共识机制所可能导致的51%攻击,以太坊目前就使用了一种需要占用大量内存资源的PoW算法;
- 消耗网络资源。攻击者在进行拒绝服务攻击之前,必须要获取多个远程服务器发送的命令。
POW作为数字货币的共识机制于 1998 年在 B-money 设计中提出。2008年中本聪发表比特币白皮书,比特币采用POW共识,通过计算来猜测一个数值(nonce),得以解决规定的 Hash 问题(两次SHA256)。保证在一段时间内,系统中只能出现少数合法提案。 同时,这些少量的合法提案会在网络中进行广播,收到的用户进行验证后会基于它认为的最长链上继续难题的计算。因此,系统中可能出现链的分叉(Fork),但最终会有一条链成为最长的链。
Hash 问题具有不可逆的特点,因此,目前除了暴力计算外,还没有有效的算法进行解决。反之,如果获得符合要求的 nonce,则说明在概率上是付出了对应的算力。谁的算力多,谁最先解决问题的概率就越大。 当掌握超过全网一半算力时,从概率上就能控制网络中链的走向。这也是所谓 51% 攻击的由来。
-
POS(Proof-of-Stake)权益证明:如果说POW主要比拼算力,算力越大,挖到一个块的概率越大,POS则是比拼余额,通俗说就是自己的手里的币越多,挖到一个块的概率越大。
POS共识算法存在一个漏洞,就是鼎鼎大名的Nothing-at-Stake攻击(常写作N@S)——假设系统中出现了两个分支链,那么对于持有币的”挖矿者“来讲,最佳的操作策略就是同时在两个分支上进行“挖矿”,这样,无论哪个分支胜出,对币种持有者来讲,都会获得本属于他的利益,即不会有利益损失。而且由于不需要算力消耗,因此PoS中在两个分支上挖矿是可行的。这导致的问题是,只要系统存在分叉,“矿工们”都会同时在这几个分支上挖矿;因此在某个情况下,发起攻击的分叉链是极有可能成功的,因为所有人也都在这个分叉链上达成了共识;而且甚至不用持有51%的币量,就可以成功发起分叉攻击。而这在PoW中是不可行的,因为挖矿需要消耗算力,矿工只能在一个分支上进行挖矿。所以在实际POS算法中,还需要加入一些惩罚机制,如果矿工被发现两个分支同时挖矿,就会进行惩罚。
-
DPOS(Delegated Proof-Of-Stake)代理权益证明:比特股核心账本采用石墨稀技术,对交易容量和区块速度有极高要求,显然POW或POS都达不到要求,于是比特股发明了一种新的共识机制——Delegated Proof-Of-Stake(DPOS),即代理股权证明。
DPOS类似于现代企业董事会制度,比特股系统将代币持有者称为股东,由股东投票选出101名代表,然后由这些代表负责产生区块。那么需要解决的核心问题主要有:代表如何被选出,代表如何自由退出“董事会”,代表之间如何协作产生区块等。持币者若想成为一名代表,需先拿自己的公钥去区块链注册,获得一个长度为32位的特有身份标识符,用户可以对这个标识符以交易的形式进行投票,得票数前101位被选为代表。代表们轮流产生区块,收益(交易手续费)平分。如果有代表不老实生产区块,很容易被其他代表和股东发现,他将立即被踢出“董事会”,空缺位置由票数排名102的代表自动填补。
从某种角度来说,DPOS可以理解为多中心系统,兼具去中心化和中心化优势。
8、区块链应用领域:
-
金融领域——区块链在国际汇兑、信用证、股权登记和证券交易所等金融领域有着潜在的巨大应用价值。将区块链技术应用在金融行业中,能够省去第三方中介环节,实现点对点的直接对接,从而在大大降低成本的同时,快速完成交易支付。
-
物联网和物流领域——区块链在物联网和物流领域也可以天然结合。通过区块链可以降低物流成本,追溯物品的生产和运送过程,并且提高供应链管理的效率。该领域被认为是区块链一个很有前景的应用方向 ,区块链通过结点连接的散状网络分层结构,能够在整个网络中实现信息的全面传递,并能够检验信息的准确程度,这种特性一定程度上提高了物联网交易的便利性和智能化。
区块链+大数据的解决方案就利用了大数据的自动筛选过滤模式,在区块链中建立信用资源,可双重提高交易的安全性,并提高物联网交易便利程度。为智能物流模式应用节约时间成本。
-
公共服务领域——区块链在公共管理、能源、交通等领域都与民众的生产生活息息相关,但是这些领域的中心化特质也带来了一些问题,可以用区块链来改造。区块链提供的去中心化的完全分布式DNS服务通过网络中各个节点之间的点对点数据传输服务就能实现域名的查询和解析,可用于确保某个重要的基础设施的操作系统和固件没有被篡改,可以监控软件的状态和完整性,发现不良的篡改,并确保使用了物联网技术的系统所传输的数据没用经过篡改。
-
数字版权领域——通过区块链技术,可以对作品进行鉴权,证明文字、视频、音频等作品的存在,保证权属的真实、唯一性。作品在区块链上被确权后,后续交易都会进行实时记录,实现数字版权全生命周期管理,也可作为司法取证中的技术性保障。
-
保险领域——在保险理赔方面,保险机构负责资金归集、投资、理赔,往往管理和运营成本较高。通过智能合约的应用,既无需投保人申请,也无需保险公司批准,只要触发理赔条件,实现保单自动理赔。
-
公益领域——区块链上存储的数据,高可靠且不可篡改,天然适合用在社会公益场景。公益流程中的相关信息,如捐赠项目、募集明细、资金流向、受助人反馈等,均可以存放于区块链上,并且有条件地进行透明公开公示,方便社会监督。
【信息来源】
[1] 百度百科:区块链
[2] 区块链必知的三种类型
[3] 区块链共识机制的演进