01. 区块链技术
1.1 区块链概述
1.1.1 基本概念
1. 区块链技术的问世
为了快速完成信用建设,实现安全且低成本的价值转移,区块链技术应运而生
区块链也被称为公信链
区块链作为一个去中心化的分布式账本,可以在没有中心化的第三方信用建设的情况下,在一个开放式的平台上进行一个远距离的支付。
每一个区块链参与者都是一个节点。
因此,区块链这一账本将跨越遍布全球各地的无数节点,且网络中所有的参与者都保存着一份完全相同的账本,一旦账本进行修改,就要求全部副本数据在几分钟甚至几秒钟内全部修改完毕。
区块链的实质是一个不断增长的分布式结算数据库,它完美的解决了信息系统中的信任危机。
区块链使用算法证明机制来保证网络信用建设。
网络信用建设使得整个系统中的所有节点能够在相互信任的环境下自动安全的交换数据。
在区块链的应用下,人们只需要将信息数字化后加入区块链,就可以设定相应的保护条件,书写智能合约,按时自动发起和强制实施交易合作。
举例:在区块链系统中购买一首歌曲,一部电影。
2. 什么是区块链?
区块链一句话解释:一种由密码学算法、共识机制、点对点传输、数学、计算机编程等多种技术为基础,而形成的分布式记账系统。
区块链是一个分布式账本一种通过去中心化、去信任的方式集体维护十个可靠数据库的技术方案。
区块链本质通过密码学建立了一个不依赖任何中心的、完全分布式的数据库。
从账本角度来看
- 区块链是不再依赖中心化的记账,而是通过一种密码学计算让全网节点随机争夺记账权。
- 争夺到记账权的节点就会被奖励比特币,而记完后的账本发布给全网所有节点保存。
从数据角度来看
- 区块链是一种几乎不可能被更改的分布式数据库。
- “分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录,即由系统参与者共同维护。
从技术角度来看
- 区块链并不是一种单一的技术,而是多种技术整合的结果。
- 这些技术以新的结构组合在一起,形成了一种新的数据记录、存储和表达的方式。
从本质上来看
区块链可以理解为一个去中心化的分布式账本,其本身是一系列使用密码学而产生的具有互相关联的数据块。
区块可以理解为单位数据量的交易信息集合(大小约为 1MB,4000条交易记录),当一个区块打包完成后,人们将这个区块连接到以前的交易记录上,之后新的区块继续形成,再将新的区块继续链接到这一区块之后,就形成了一条链状结构,热门称之为区块链。
3. 区块链的特点
- 可以无限增加区块: 每个区块可以被看作这个账本中的一页,每增加一个区块,账本就多了一页,这一页中包含一条或者多条信息记录。
- 加密且有顺序: 某个时间段内的信息记录会被打包成一个区块并进行加密,同时盖上时间戳,前后区块按时间戳顺序进行链接,称为总账本中的组成页。
- 去中心化: 区块链作为一个分布式账本,是由网络内各节点用户共同维护的,不存在中心化的控制机构。
4. 区块链发展历史
2008年,一位名为中本聪(Satoshi Nakamoto)的密码学家发表了一篇《Bitcoin: A Peer-to-Peer Electronic Cash System》(中译:比特币:一种点对点的电子现金系统)白皮书,开始了比特币(BTC)的时代。
在2009年1月3日,第一个序号为0的创世区块才诞生,在一周后,也就是1月9日出现了序号为1的区块,这样标志着区块链的诞生。
区块链的版本划分
- 区块链1.0应用:数字货币。
- 区块链2.0应用:智能合约+数字货币,例如:跨境支付、反洗钱、证券发行与交易、数字化资产等。
- 区块链3.0应用:扩展到金融行业以外其他行业。
5. 区块链的三大类型
- 公有链(Public Blockchain) :完全去中心化,任何节点都可以进行访问,每个人都可以参与到区块链当中的计算,而且任何人都可下载完整的区块链账本。例如比特币、以太坊等网络都是公有链。其特点是保护隐私和系统效率低。
- 联盟链(Consortium Blockchain) :半中心化,参与每个节点的权限都完全对等,各个节点在完全不信任的情况下进行数据交互和可信交换。联盟链的各个节点只有通过授权后才能加入网络。例如Hyperledger Fabric、R3联盟等。其特点是自行背书、系统效率高。
- 私有链(Private Blockchain) :中心化,某些区块链的应用场景下,开发者不希望任何人参与这个系统,因此建立一个只有被许可的节点才可以参与并看所有数据的私有区块链。例如私有机构、企业内部等。其特点是集体背书,系统效率较高。
6. 中心化信用体系
- 信用是什么?所谓信用,是指依附在人之间、单位之间和商品交易之间形成的一种相互信任的生产关系和社会关系。
- 信用的分类:商业信用、银行信用、国家信用(货币,国债)等。
- 人类以往的信用都需要通过一个中心去建立和维护,例如货币基于央行这个中心,企业个人信用基于若干个征信巨头这样的中心,甚至QQ币也要依赖腾讯这个中心。
中心化信用体系存在的问题
- 一旦这个中心出现问题,这个信用体系就彻底崩塌,无法挽救,就如同津巴布韦货币的破产。
- 中心化信用体系有不透明、缺少监管的问题。
- 中心化信用体系还有成本高的问题,所有人之间的交易都要基于对方的信用,比如房产交易需要房产中介、房管所等众多组织和中介来介入。
7. 区块链的层次结构
- 数据层(Data Layer) :主要描述了区块链系统的物理形式,是区块链从创世区块起始的链式结构,包含了区块数据、随机数、时间戳和公私钥等数据,是整个区块链技术中最底层的数据结构。
- 网络层(Network Layer) :主要通过P2P技术实现分布式网络的机制,包括P2P组网机制、数据传播机制和数据验证机制。
- 共识层(Consensus Layer) :包含共识算法以及共识机制,能够让高度分散的节点在去中心化的区块链网络中高效地针对区块数据达成共识,是区块链的关键技术之一。
- 激励层(Actrator Layer) :主要包括经济激励的发行制度和分配制度,其功能是提供一定的激励措施,鼓励节点参与区块链中的验证工作,并将经济因素纳入到区块链技术体系中。
- 合约层(Contract Layer) :主要包括各种脚本、代码、算法机制和智能合约,是区块链可编程的基础。
- 应用层(Application Layer) :封装了各种应用场景和案例,类似于电脑操作系统上的应用程序。
1.1.2 区块链运行原理
1. 区块链系统用户为何记账
区块链系统用户为何记账?
这源于区块链的奖励机制,主动记账的用户获得记账权会得到金钱奖励,每一个区块链系统中的用户都可以去记账,记账的奖励主要有两个来源:手续费和打包费:
- 记账者会获得手续费收益。
- 打包这部分几张记录的人将获得一个打包奖励(比特币)
2. 区块链系统打包以谁为准
区块链系统打包以谁为准?
每个人都可以打包,单位时间内打包的人有很多,但只能有一个人打包成功,这个打包权给谁?
这里需要引入一个概念和方法——工作量证明(Proof of Work,PoW)
PoW 是一种共识算法,要求所有打包者参与一场困难的周期性的数学竞赛,这场数学竞赛难以计算但是以与验证,一旦有用户计算出了结果,他将用这个结果和这段时间自己从网络中收集的交易信息一起打包,形成当前区块,并将此区块广播至区块链节点网络,系统会反馈给该用户奖励(比特币)
人们将这个解数学题的过程形象的称之为 挖矿 ,挖矿解数学题的难度不在于人的脑子而在于计算机的脑子——CPU
数学题的原理基于 哈希函数
3. 区块链系统如何解决防伪问题
区块链系统如何解决防伪问题?
-
如何保证区块链的教习记录是真实的?
这个问题可以概括为如何进行身份认证
在交易过程中,人们必须保证每一台记录都是由货币持有者发出的,而不是其他人伪造的。
区块链中身份认证的方式称之为 电子签名
一个区块链系统用户在注册时,系统会生成一个随机数,通过一个随机数产生一个私钥,私钥产生公钥,同时产生地址,公钥和地址推算不出来私钥。
私钥是用户保密私有的,私钥一旦丢失,用户就会丢失自己的所有财产。
公钥和地址都是公开的,用户在交易过程中,需要将自己的私钥和地址发送给对方才能够进行交易。
-
如何进行余额检查和避免双重支付
余额检查: 区块链具有公开化,可追溯性,通过链条追溯统计各个区块中该用户的交易信息从而检查计算用户余额。
双重支付:
假设A只有1¥,但是A同时向B和C发出交易信息支付1¥,此时网络中的用户由于一定的延迟效应,会发出两条消息,一部分会先收到A向B支付了1¥的消息,一部分会先收到A向C支付了1¥的消息,先接收到第一条消息的用户会对A进行余额检查,并拒绝第二条消息。
此时,这两条消息都尚未得到承认,因为各自接收到其中某一条消息的用户会将这条消打包在自己的块中,努力去挖矿,已完成自己消息账单包的打包上传。区块链系统会以第一个挖矿成功的矿工所持账单中的交易信息为准,作为A的真实交易记录。比如第一个挖矿成功的矿工所持账单的消息为:A向C支付了1¥,那么A的账户中的1¥将会转移到B账户中,并生成真是的交易记录。
此时,A向B支付了1¥,将会被系统作废。
-
如何防止篡改已存在的记录
最长链原则:
如果在某一时刻,有两个矿工在同一时刻计算出了数学题,两个矿工(A,B)分别找到了一个新块,并将自己找到新块的信息向各个节点的用户传播。
而接受到消息的用户会分成两拨,现在用户会以自己接收到的第一个消息为准去站队,有的站A队,有的站B队,此时所有的用户都知道自己在另一边存在一个分支,但是他们先暂时不管,先按照自己受到的块进行计算挖矿,直到某个时间点,任意一队(A队或者B队)的人优先挖矿成功,则会在该队生成新的区块,并用链条链接上一条区块。此时这条链条长于另一条链条,另一台链条的矿工会重新排队到最长链的链条上去再进行计算。系统会以最长链的信息为准,短链条将会作废。
有了最长链原则之后,就可以解释区块链系统如何防止篡改问题了:
A在篡改某一交易记录时会在该树节点上生成一个新的区块,但是A所生成的新的区块链条长度永远不可能超过该节点已生成的链条长度,已生成的链条会试中被系统当作最长链,A篡改的区块将永远不会被系统承认,最长链原则有效地防止了交易记录的篡改。
1.1.3 技术基础
区块链技术
- 构建区块链网络与交易信息加密传输的基础技术。
- 区块链技术基于密码学原理,而不基于某一信任中心,使得交易双方在交易过程中进行直接交易,不需要三方中介的参与。
1. 区块链四大核心技术
分布式记账(P2P网络)
- 就是交易记账由分布在不同地方的多个节点共同完成,而目每一个节点都记录了完整的账目,因此它们都可以监督交易的合法性,同时也可以共同为其作证。
- 不同于传统的中心化记账方案,分布式记账没有任何一个节点可以单独记录账目,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。
- 另一方面,由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
共识机制
- 所有记账节点之间怎么达成共识去认定一个记录的有效性的一种机制。
- 这种机制既是认定的手段,也是防止篡改的手段。区块链提出了多种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
- 区块链的共识机制主要有工作量证明机制、权益证明机制、授权股权证明机制。
智能合约
- 从用户角度来讲,智能合约通常被认为是一个自动担保账户,例如,当特定的条件满足时,程序就会释放和转移资金。
- 从技术角度来讲,智能合约被认为是网络服务器,架设在区块链上,从而可以在其上面运行特定的合约程序。
- 但是与网络服务器不同的是,智能合约不依赖某个特定的硬件设备,所有人都可以看到智能合约,因为这些智能合约的 代码和状态都在区块链上(假设区块链是公开的),并由所有参与挖矿的设备来执行。
非对称加密技术
- 非对称加密(公钥加密)是指在加密和解密两个过程中使用不同的密钥。在这种加密技术中,每位用户都拥有一对钥匙:公钥和私钥。
- 加密使用公钥,解密私钥。公钥是可以向全网公开的,而私钥需要用户自己保存。
- 非对称加密安全性更好:使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
2. 区块链的基本架构
区块链
- 在区块链技术中,数据以区块的方式永久储存。
- 区块按时间顺序逐个先后生成并连接成链,每一个区块记录了创建期间发生的所有交易信息。区块数据结构—般分为区块头和区块体。
- 其中,区块头用于链接到前一个区块并且通过时间戳特性保证历史数据的完整性;区块体则包含了经过验证的、区块创建过程中产生的所有交易信息。
底层技术
- 数字签名:数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。
- Hash值的加密算法:相同的数据输入将得到相同的结果。输入数据只要稍有变化则将得到一个千差万别的结果,且结果无法事先预知。
- Merkle Tree:种哈希二叉树,使用它可以快速校验大规模数据的完整性。在比特币网络中,Merkle 树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何—笔交易信息的改变都会使得使得 Merkle 树改变。
3. 区块链的工作流程
-
第一步
所有者A利用他的私钥对前一次交易(比特货来源)和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。
-
第二部
A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中。
-
第三步
- 每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新比特币会在此过程中产生)
- 要点:节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的Hash值以及交易单三部分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解。由此可见,答案并不唯一。
-
第四步
当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对。
-
第五步
全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。
1.1.4 价值
1.1.5 发展历程
1.2 典型区块链技术介绍
1.2.1 以太坊技术框架
1. 底层服务
- 包含 P2P 网络服务、 LeveIDB 数据库、密码学算法以及分片(Sharding)优化等基础服务。
- P2P 网络中每一个节点彼此对等,各个节点共同提供服务,不存在任何特殊节点,网络中的节点能够生成或审核新数据。而 以太坊中的区块、交易等数据最终都是被存储在 LeveIDB 数据库中。
- 密码学算法用于保证数据的隐私性和区块链的安全。分片优化使得可以并行验证交易,大大加快了区块生成速度。这些底层服务共同促使区块链系统平稳地运行。
2. 核心层
- 核心层包含区块链、共识算法和以太坊虚拟机等核心元件,其以区块链技术为主体,辅以以太坊特有的共识算法,并以 EVM(以太坊虚拟机)作为运行智能合约的载体,该层是以太坊的核心组成部分。
- 区块链构造的去中心化账本需要解决的首要问题就是如何确保不同节点上的账本数据的一致性和正确性,而共识算法正是用 于解决这个问题。
- EVM 是以太坊的一个主要创新,它是以太坊中智能合约的运行环境,使得以太坊能够实现更复杂的逻辑。
3. 顶层应用
- 这一层包括 API 接口、智能合约以及去中心化应用等,以太坊的 DApp 通过 Web3.js与智能合约层进行信息交换。所有的智能合约都运行在 EVM 上,并会用到 RPC 的调用,该层是最接近用户的一层。
- 企业可以根据自己的业务逻辑,实现自身特有的智能合约,以帮助企业高效地执行业务。
1.2.2 以太坊的特点和核心概念
1. 以太坊的特点
- 区块链1.0(比特币)缺少图灵完备性
- 图灵完备性是指一切可计算的问题都能计算这样的虚拟机或者编程语言就叫图灵完备的。
- 比特币不能支持所有种类的计算,无法为账户的取款额度提供精细的控制,缺少更丰富的状态记录,导致比特币区块链系统的扩展性比较差。
- 以太坊建立了可编程的、图灵完备的区块链。
- 基于以太坊,可以通过简单的程序实现各类数字资产的生产,也可以通过编写程序对以太坊上流通的区块链资产的状态进行精确地控制。
- 以太坊是一个可以编程、图灵完备的区块链网络基础。
- 简单地说,以太坊技术就是区块链技术加上智能合约。
2. 智能合约(Smart Contract)
- 指的是由计算机程序定义并自动执行的承诺协议。
- 有了智能合约,任何人都能够在以太坊上创建自己想要做的去中心化的应用了。智能合约在以太坊上一旦被创建之后,就无需中间机构参与,就能自动执行,并且没有人能够阻止其运行。在以太坊上的智能合约,能够控制区块链上各种数字资产,进行复杂的算法和操作。
- Solidity:以太坊核心成员开发了Solidity,以便在区块链平台(如以太坊)撰写智能合约。
- 以太坊虚拟机 EVM
- 以太坊的虚拟机可以执行任意复杂的算法代码。开发者可以使用现有的JavaScript 或Python以及其他友好的编程语言,在以太坊上创造出自己想要的应用。
- 以太币
- 以太坊系统中的代币,简称 ETH。以太币(Ether)是以太坊内部的主要燃料,为在这个体系上运行各种数字资产交易提供主要的流动性,同时也是用于智能合约费用的的支付。
- 它是以太坊内置的区块链资产,用来支付智能合约运行。
3. 以太坊技术框架
-
去中心化应用(DApp)
去中心化应用是一种应用程序的设计模式,它通过在对等节点网络上分发关键组件来增强现代Web应用程序。
-
以太(Ether)和 Gas
-
以太币(Ether)是生态系统中的主要代币(token)。激励参与者执行以太相关的智能合同项目。gas是满足特定合同所有需求所需的燃料量,它用来衡量一个行为或者一系列行为有多少工作量。
-
gas是计算费用的方式,不过,这些费用仍然是以ether计算。类似于,我开车需要消耗多少天然气(gas),但是最终结算时用人民币(以太币)来结算。
1.2.3 超级账本Fabric技术框架
1. Fabric由来
- Fabric是JBM公司推进的企业级区块链)2017年(TBM将其贡献给 Hypherlegder项目。
- Fabric 的诞生主要是因为在金融、销售、供应链等特殊应用领域中,一些机构的数据不能公开,而且并不是所有的机构都有权力发起 Transaction。
2. Fabric特点
- Fabric是联盟链
- 区块链分为需要许可的和不需要许可的区块链(Permissioned vs Permissionless Blockchains)
- 不需要许可:Ethereum 的用户是匿名的,也就是任何人都可以参与,所以 Ethereum 是不需要许可的区块链,向 Ethereum 网络中提交一个合法的(只要有以太市即合法) Transaction,所有节点都会独立执行合约(根据数据)得到输出并生成区块。
- 需要许可:Fabic就是在所有节点中选择一部分,形成一个个的联盟,特定 Transaction 只在联盟内的节点独立运行。只有经过选择的特定节点参与执行 Transaction,数据只在这部分节点范围内公开。
- 解决这样数据的隐私和访问控制就能缓解。
3. Fabric架构
- P代表 Peer node,P1 隶属于 R1
- C 代表 Chain code
- L 代表 Ledger, C 代表 channel
- CA 是 Certificate Authority
- A代表 Client application,这里是用户操作的界面
- O是ordering service,或者叫 orderer
4. Fabric channel
构建在Fabric网络上的私有区块链,实现了数据的隔离和保密。channel是由特定的peer所共享的,交易方必须通过该通道正确验证才能与账本进行交互。
5. Fabric三大节点
- peer节点:Peer节点一般运行在docker中,主要负责接收交易请求,是在网络中具有一定功能的服务或软件。Peer节点主要分为三种类型:Endorser、Committer、Submitter。每一个Peer节点中都维护一份账本,账本数据本身是文件系统。
- Order节点:Order节点主要负责对收到的交易在网络中进行全局管理。接收transaction,产生block。并且负责共识机制的policy管理。
- CA节点:CA节点主要负责网络中成员身份管理。目前采用数字证书机制,实现PKI服务。
6. Fabric事务流程
- 客户端提出交易提议,并将交易提议发送到特定通道(Channel)上的一组预先确定的背书节点(Endorsing Peers)。
- 每个背书节点从交易提议的有效负载中验证用户的身份和授权。如果验证检查通过,则背书节点(Endorsing Peers)模拟交易,生成响应和读写结合,并使用其证书对生成的响应进行背书。
- 客户端(Client)积聚并检查来自背书节点(Endorsing Peers)的已背书交易提议响应,客户端(Client)将附有背书交易提议响应的交易发送给排序节点(Orderer)。
- 排序节点(Orderer)对接收到的交易进行排序,生成一个新的有序交易区块,并用其证书对生成的块进行签名。
- 排序节点(Orderer)将生成的区块广播给相关通道上的所有节点(同时向背书节点(Endorsing Peers)和承诺节点(ComittingPeers)。然后,每个节点确保接收到的区块中的每笔交易都由 适当的背书节点(Endorsing Peers)签名(即,从调用的链码的背书策略中确定)并且存在足够的背书。
- 节点都会将每个交易的 readset 与其账本的世界状态(World state)进行比较。如果验证检查通过,则交易被标记为有效,并且每个节点的世界状态(World state)都会更新。否则,交易被标记为无效而不更新世界状态(World state)。最后,无论该区块是否包含任 何无效交易,接收到的区块都会附加到每个节点的本地区块链中。
1.3 区块链的主要应用领域
1.3.1 区块链应用
1. 金融
区块链在国际汇兑、信用证、股权登记和证券交易所等金融领域有着潜在的巨大应用价值。将区块链技术应用在金融行业中,能够省去第三方中介环节,实现点对点的直接对接,从而在大大降低成本的同时,快速完成交易支付。
2. 供应链
记录物品的生命轨迹,构筑支撑多行业应用的供应链生态服务体系。
3. 保险
在保险理赔方面,保险机构负责资金归集、投资、理赔,往往管理和运营成本较高。通过智能合约的应用,既无需投保人申请, 也无需保险公司批准,只要触发理赔条件,实现保单自动理赔。
4. 慈善
善款进入系统后,整个生命周期都将记录在区块链上,没有人工拨付等环节,每一笔款项的去向很难人工更改。这样就可以促进公益捐款全过程的开放和透明。
1.3.2 区块链的发展趋势
区块链成为全球技术发展的前沿阵地,开辟国际竞争新赛道
- 区块链将成为进一步提速数字经济发展的新型关键基础设施。引领全球新—轮技术变革和产业变革,成为技术创新和模式创新的“策源地”。世界主要发达国家将进一步对区块链技术的关注度,密集出台相关政策规划,加大产业扶持引导,提升本国区块链 技术和产业的竞争力。
数字货币泡沫逐步冷却
- 随着区块链技术概念的传播普及,越来越多的人将认识到比特币并不等同于区块链,各种空气币将逐步被淘汰,区块链技术创新将回归到更加理性的轨道。
- 去中心化、多方协同、防算改等技术特征将受到相关行业领域的高度重视,部分创新能力较强的行业结合行业特征改造后的区块链应用将不断涌现。
区块链技术体系逐渐清晰,跨领域集成创新程度进一步加大
- 随着应用场景的不断拓展,区块链技术本身也将不断演进变化,在共识机制、分布式账本、智能合约等关键核心技术的基础之上,区块链技术将加快与云计算、大数据、人工智能等前沿技术的深度融合与集成创新。
- 区块链技术将进一步加快物流、信息流、资金流融合,切实发挥出推进实体经济转型升级和创新发展的巨大作用。
区块链将是一种改变生产关系的基础设施,基于价值的可编程社会将成为现实
- 区块链将推动人类社会建立基于加密算法而无须人工干预的新型信任机制,越来越多的经济社会事务和中介机构将会被程序代码和算法所替代。
- 人们将更愿意以共同参与、公平可见、基于技术的机制来构建信任、传递价值、开展合作,人与人之间、产业上下游之间将形成更加平等的生产合作关系,共建、共享、共治的平台经济将更好地解决多元主体之间的共赢合作和利益分成等问题。