本文根据高振峰在Umefin专栏《6小时,解码区块链》的直播内容整理。高振峰老师从区块链技术背景出发,结合区块链的基本原理和核心技术,深入探讨主流区块链的架构和应用。让您从底层技术和原理了解区块链的价值和应用。
分享者:高振峰,清华大学自动化系博士生,联盟链核心开发者。
一、区块链技术背景一、数字货币是社会发展和信息技术的必然产物
货币是人类文明发展中非常重要的发明。其重要功能是价值尺度、流通手段和储存手段。随着人类社会的发展,货币的形态也经历了多阶段的演变。从原始社会开始,人们就用食物来代替货币,然后用金属来制造货币。随后产生了替代货币、信用货币以及现在的电子货币,进而进一步诞生了数字货币。货币形态的演变反映了货币本身价值的演变。最初是用食物或金属货币来表示货币,反映了货币的实物价值。随着社会的发展和货币形式的变化,替代货币和信用货币体现了货币的信用价值。比特币、以太坊等各种数字货币体现了人类或公众对科学技术和信息系统的信任价值。
上表直观地展示了数字货币与纸币的对比。它通过不同的属性来比较数字货币和纸币的优缺点:可携带性、防伪性、匿名性、可交易性、资源消耗、市场控制能力和运营模式。
在市场控制方面,纸币具有无可比拟的优势。例如,可以通过控制纸币的发行来控制通货膨胀。但数字货币的市场掌控能力还需要进一步观察,目前还没有明确的结论。从运作模式来看,数字货币的优势显而易见。数字货币可以实现去中心化交易,有多种适用场景,可以作为应用扩展。
传统纸币的发行需要第三方机构的参与,而第三方机构必须是值得信任的。例如,如果你信任央行,它生产的纸币就会有价值。因此,数字货币是社会发展与信息技术结合的必然产物。数字货币的核心是去中心化的实现。
现实生活中,很多应用场景都很难找到安全可靠的第三方会计机构。原因是多方面的: 1、汇率变化导致双方意见不同; 2. 匿名在线方希望直接购买,无需通过电子商务平台; 3、交易双方互不信任,找不到同意的人。第三方担保机构; 4、第三方机构可能出现链路故障或被篡改攻击。
去中心化数字货币需要解决的问题: 1、货币防伪,如何识别货币真伪? 2. 在货币交易中,如何保证货币从一方向另一方安全转移? 3. 避免重复支付,如何避免向多个收款人支付同一种币种?
2. 比特币首次安全、可靠、去中心化。
图中的项目都在某些方面为比特币的成功落地提供了理论或操作基础。
2008年10月31日,中本聪提出比特币设计白皮书,并于2009年发布了最初的实现代码。2009年1月3日,第一个比特币产生。比特币将POW与共识机制联系起来,实现了安全、可靠、去中心化的数字货币。首次推出货币加密系统。比特币的意义和价值不言而喻,而这不仅仅体现在它的价格上。基于区块链结构,巧妙设计了一套分布式账本,提供安全可靠、不可恶意篡改的数字货币账本功能。
比特币发行总量由协议规定,并通过发行速度自动调整,可以避免通货膨胀或滞胀。区块链的概念是由比特币或数字货币驱动的。
3.区块链:摆脱数字货币的束缚
区块链是从比特币网络架构中提炼出来的。它是加密算法、数字签名、共识算法、分布式算法、分布式共识等技术发展到一定程度并突破应用门槛的产物。会计相关技术对于资产管理非常关键,而去中心化或多中心的分布式账本技术对于当前开放、多元化的商业模式具有重要意义。
区块链技术特点:分布式容错、不可篡改、隐私保护。如果使用区块链作为底层来构建业务应用,这些业务应用还将具有以下基本特征:可信、降低成本、增强安全性。
第二部分、区块链基本原理和核心技术一、区块链的定义
最早公认的关于区块链的描述性文件是Nakamotomura 的白皮书《Bitcoin:A Peer-to-Peer Electronic Cash System》。但并没有明确提出区块链的定义和概念。它表明区块链用于记录比特币交易账户的历史。数据结构。维基百科对区块链的定义是:一种分布式数据库技术,通过维护数据块的链式结构,能够维持不断增长且不可篡改的数据记录。我个人的理解是:区块链是一种分布式账本技术,解决多方信任问题;去中心化的架构解决了多方互信的问题。这种分布式账本技术为我们各种应用场景提供了底层架构基础。
2. 区块链基本原理
区块链的三个基本概念: 1、交易:对账本的操作导致账本状态发生变化,比如添加一条转账记录。 2、区块:记录一定时间内发生的所有交易和状态结果,是对当前账本状态的共识。 3、链:由很多块按照出现的顺序串联而成。它是整个账本状态变化的日志记录。
区块链是一种有效的链式结构,有点类似于状态机。相似之处: 1. 每笔交易都是一次改变状态的尝试; 2. 每次共识生成一个区块时,参与者实际上确认了区块中交易状态变化的结果。
上图是区块链结构的一个例子。可以看到后续的区块通过记录前导区块的哈希值形成链式结构;为了将新数据添加到区块链中,该交易必须放置在新的区块中;通过计算哈希值可以快速验证数据块是否合法。例如,公链中维护的任何节点都可以提出一个新的合法区块,但这个合法区块必须经过共识机制,对最终选定的区块达成一致,以保证网络的一致性。
3、区块链核心技术
区块链的核心问题是: 1、如何生成包含新交易信息的区块; 2. 在去中心化网络架构中,如何让新生成的区块被识别并添加到网络中; 3. 如何确保记录安全且不可变。总结起来,区块链的核心技术包括两个方面:一是共识算法;二是共识算法。第二,密码学和安全技术。
共识算法并不是一个新概念。通常提到的分布式系统的一致性问题中,往往会涉及到共识算法的概念。一致性是指分布式系统中数据通过多个副本呈现给外界的状态,而实践一致性的方式就是通过共识。共识描述了分布式系统中多个节点就某种状态达成共识的过程。
共识算法
共识算法的问题是:在理想的系统中,网络节点运行不会出现故障,节点之间的通信不会丢失,并且可以通过广播实现即时投票和响应。因此,理想的系统中不需要考虑共识问题。然而,在实际系统中,通常会遇到各种现实情况,例如非拜占庭错误/故障。错误——,部分节点因断电等原因出现故障,但信息不会被伪造。此外,还将有拜占庭
错误—— 系统中可能存在恶意节点。这些节点可以伪造信息、伪造虚假信息来恶意攻击网络。
常见共识算法:非拜占庭错误算法,如Paxos、Raft等,容忍度不超过普通故障节点;拜占庭错误算法,比如PBFT等,此类算法一旦对某个结果达成共识,就是不可逆的。在实践中,底层根据不同的应用场景采用不同的共识算法,或者创新性地提出一些控制算法,比如比特币架构中的POW、以太坊中的POS等。
密码学与安全技术
区块链中使用了密码学和安全技术方面的许多非常新的技术。不限于以下几点:散列算法、数字摘要、加解密算法、消息认证码和数字签名、数字证书以及相关的管理和分发系统。另外,以太网中采用Merkle结构进行存储。
现代密码学和信息安全技术的发展是进入信息时代的重要技术保障。也为区块链的底层技术和区块链的不可篡改的安全性提供了保障。
第三部分主流区块链架构介绍1. 区块链的分类
区块链分为三类:公有链、私有链和联盟链。
比特币是典型的公有链。任何人都可以参与公链的使用和维护,公链中的信息完全公开。在公有链的基础上引入许可机制,私有链和联盟链诞生了。私有链是由中心化管理者管理和限制的结构。只有链内少数人可以使用,信息/接口不向外界公开。例如,基于区块链的银行间对账系统。联盟链是介于公有链和私有链之间的区块链,由多个组织合作维护。联盟链的使用必须受到权限限制,相关信息将根据不同的权限受到保护。例如Hyperledger就是典型的联盟链场景。
2. 比特币:区块链思想的创造者
比特币是一种基于区块链技术的数字货币实现。比特币网络是历史上第一个经过大规模现场、长期验证的数字货币系统。比特币的底层是区块链网络,它提供了一个公开可见的账本来记录已经发生的交易的历史信息,从而有效避免重放攻击。其功能特点包括三点: 1、去中心化。任何交易请求都需要大多数参与者达成共识。 2. 匿名性:账户地址是匿名的,无法从交易信息中链接到特定个人。 3. 防止通货膨胀:比特币独特的经济学
确保数字货币系统稳定运行并防止通货膨胀的设计和框架。其发行通过挖矿计算进行,每四年产能减半。
比特币的基本概念:账户/地址。
比特币使用非对称加密算法。用户保存自己的私钥,在发起交易时,签署自己的交易并向公众公开自己的公钥/账户地址。通过一系列哈希运算可以计算出账户地址,但账户并不是直接的公钥,而是哈希后的一个值。这样可以避免私钥过早泄露后被迫公开所带来的一系列问题。损失。
比特币的基本概念:交易。
交易是完成比特币功能的核心概念。一笔交易通常包括:付款人地址、付款人对交易的签名认证、支付资金来源的交易ID;交易金额、时间戳;收款人的地址、付款人的公钥。
网络中的节点收到交易后,会对其进行检查:交易是否已被处理、是否合法、输入之和是否大于输出之和等。这种形式是在比特币底层实现的通过UTXO检查。比特币中的一笔合法交易需要引用某些现有交易的UTXO作为交易的输入并生成新的输出。
比特币的基本概念:区块。
区块也是比特币中一个非常重要的概念。在比特币区块中,通常包含区块大小信息、区块头信息、交易数量计数器以及所有交易的具体内容。
比特币的主要创新
首先,它解决了节点作恶的问题。通过经济博弈模型,合作者可以获得利益,而不合作者可能会遭受损失和风险。合作者遵守规则,不作恶,维护网络节点。当网络参与者众多时,如果非合作者想要作为网络中的节点作恶,你需要付出的代价大于你的收益。这种解决邪恶的方法称为挖矿。
其次,比特币具有独特的负反馈调节机制。简单来说,当挖矿系统中的矿工越多,即维护比特币的网络节点越多,系统就越稳定,比特币的价值就越高。但对于每个矿工来说,挖矿或获得比特币奖励的概率会越来越低。这将使比特币的价格稳定在合适的价值。对于每个矿工来说,挖矿的概率等于期望的利润,所以有动力去维护这样一个系统。
三、独创的POW共识算法。一种基于概率随时间逐渐增加的共识算法。
挖矿——POW的体现
挖矿是POW共识算法的直观体现。挖矿的过程是参与维护比特币网络的节点通过协助生成新区块来获得一定数量的新比特币的过程。我们称之为采矿。挖矿参与者需要花费大量的时间和算力。
具体过程是参与者将前一个区块的哈希值和前一个区块之后生成的已验证交易内容结合起来,再加上一个随机数X,一起打包成一个候选新区块,使其哈希值小于一个数在比特币网络中给出。如果导出这样一组金额,则生成满足要求的块。算力越大,挖矿的概率就越大。简而言之,这意味着你开采的区块有更大的机会被网络识别。
比特币系统每两周根据前一周的挖矿时间自动调整挖矿难度,使出块时间稳定在十分钟左右。理论上,当某个个体达到全网算力的1/3时,就会出现破坏性风险。但这是不现实的,需要付出巨大的经济成本。
基于POW的共识机制
基于POW的共识机制通过经济惩罚来限制恶意参与,使得作恶成本高昂。由于这个哈希问题在当前的计算模型下只能暴力解决,这保证了一定时间内系统中只会出现少数合法的提案。能够提出合法的提案,也证明了提案者进行了大量的哈希运算,确实投入了一定的工作量。这也是“工作的人”这个名字的由来。这些法律提案或法律区块将在网络中广播。经过节点验证后,问题将根据用户认为最长的链继续计算。所以我们可能会遇到一种情况,一个或几个合法的区块同时在网络中广播,这可能会造成分叉,但最终会有一条链成为最常见的链,而这条最长链的原则保证了网络的独特性。
比特币相关研究热点
首先,侧链。允许资产在比特币区块链和其他区块链之间转移是目前非常热门的研究方向。第二,分叉。比特币分叉通常分为软分叉和硬分叉。分叉的原因是需要修复漏洞、扩展功能或者调整区块结构。底层的升级必须在整个网络的配合下进行。软分叉意味着旧节点仍然可以验证新节点生成的交易和区块。硬分叉是对旧节点的结构调整,不接受升级后的新节点产生的交易和区块。另外,扩容问题是区块链每个区块的大小。还有比特币相关的监管追踪问题,一直是社会热点话题。
3.以太坊:智能合约的登场
以太坊项目的最初目标是创建一个支持图灵完备应用并根据智能合约逻辑自动执行的智能合约平台。理想情况下,不会出现停机、审查、欺诈和第三方干预等问题。使用一个
用一个词概括就是:打造一台全球通用的计算机。以太坊网络基于比特币网络的核心思想,并进行了一系列的扩展。例如,比特币网络的脚本是图灵不完备的,只能运行简单的脚本——将资金从账户A转移到B。以太坊网络支持图灵完备的智能合约语言,可以开发各种去中心化应用程序(DApp)基于它。
以太坊的主要特点:首先,支持图灵完备的智能合约,拥有编程语言Solidity和虚拟机EVM。另外,以太坊独特的叔块激励机制,降低了矿池的优势,缩短了区块生成的间隔。简单来说,比如你通过工作量挖出一个区块,虽然并没有得到大家的共识,因为可能有人在你之前挖出来了,并且在你挖出这个区块之前就在网络中达成了共识,那么你挖出来的区块将被称为叔块。在计算你的收入时,叔叔块将计入你的工作中。这就是以太坊独特的叔块激励机制。
以太坊中使用的账户系统和世界状态,而不是比特币中的UTXO,可以支持复杂的逻辑。在以太坊中,账户系统分为两种:第一种是用户账户,与比特币类似。它有一个由它控制的帐户私钥。发起交易时,需要使用私钥进行签名;另一个是合约账户用来管理合约、响应一些外部对合约的调用的代码。
在以太坊中,猜测是用来限制代码执行的次数,从而避免循环执行攻击,保证这台全球计算机的稳定运行。在共识算法层面,以太坊支持POW,并计划支持POS。
以太坊的核心创新:智能合约。
以太坊支持通过图灵完备的高级语言(Solidity、Serpent、Viper)开发智能合约。智能合约是在以太坊虚拟机中运行的应用程序。它们通过接收外部的交易请求和事件,通过触发预先编译好的代码逻辑来触发相应的功能,进一步生成新的交易和事件,或者执行其他功能。智能合约做出决定。智能合约的执行结果可以更新以太坊网络上的账本状态。
相关开发工具
以太坊项目从2015年开始开发,截至目前,以太坊社区已经提供了多种语言实现的客户端和开发库,支持标准的JSON-RPC协议。最常见的是Geth,基于GO语言实现的go-ethereum独立客户端。此外,它还提供用于编写合约和Dapp的IDE,例如Truffle、Embark、Remix等。
4. Hyperledger:企业级分布式账本
Hyperledger是一种企业级分布式账本。该项目由开源界旗舰组织Linux基金会于2015年创立,并联合30多家初始企业成员宣布成立。 Hyperledger项目的出现宣告了区块链技术的发展
不再局限于完全开放的公链模式,标志着区块链技术已经正式得到主流企业市场的认可并应用于实践。
Hyperledger分为八个顶级项目。面对不同的用途和应用场景,有不同的项目:Fabric、Sawtooth、Iroha、Blockchain Explorer、Cello、Indy、Composer、Burrow。 Hyperledger的设计原则有三个方面:1、遵循模块化设计; 2、注重代码可读性; 3.可持续的演化路径。
Hyperledger Fabric:企业分布式账本
Hyperledger Fabric项目是Hyperledger中第一个添加的顶级项目,目前包括Fabric、Fabric CA、Fabric SDK等项目。它定位为企业级分布式账本平台,或者说是企业级区块链底层架构。其重要特点是引入了权限管理机制,这是联盟链应用场景所特有的。此外,该设计还支持可插拔性和可扩展性。它是第一个面向联盟链场景的开源项目,也是迄今为止最成熟的联盟链底层架构。
Hyperledger Fabric:架构设计
上图是Hyperledger的架构设计。账本是核心结构,记录应用程序信息,应用程序通过发起交易将数据记录在账本中。交易执行的逻辑是通过链码来承载的。权限管理负责整个流程的访问控制。这样的分层结构提高了架构的可扩展性和可插拔性,使开发人员更容易在逐个模块的基础上进行更敏捷或快速的开发。
Hyperledger Fabric:核心设计
Hyperledger Fabric的核心设计有五个方面:1.节点功能解耦; 2.多通道(Channel)功能; 3. 共识; 4. 权限和隐私; 5. 链码。
在联盟链的应用场景中,各个节点的功能被解耦,网络中各个参与节点的角色被解耦为四种角色: Endorser,指背书交易提案;确认者(Committer)指的是交易的最终检查和安置;排序者(Orderer)用于对交易进行排序以打包并生成新的区块; CA用于管理证书。它不参与交易过程,但用于控制和管理此权限。
第二个功能是多通道(Channel)功能。不同通道之间的数据相互隔离,从而提高安全性。节点可以加入不同的通道来实现不同的业务逻辑。
三是共识,对组成区块的所有交易进行全面验证,包括背书策略、读写集的MWVV验证、访问控制等。发布并支持排序算法,如Solo、Kafka等拜占庭金融时报。
第四是权限和隐私,控制网络通道、交易流程等各个层面的权限。 Fabric CA实现了基于PKI的证书颁发和管理系统。
Chaincode是一个扩展智能合约的概念。 Chaincode响应Fabric应用程序发送的交易,执行代码逻辑,并与账本交互。链码会创建一些状态并将它们写入账本。链码在Fabric节点上的隔离沙箱(目前是Docker容器)中执行。它通过GRPC协议与节点交互,并发布支持多种计算机语言的实现。链码,常用的有Golang、Java、Java等。
有了超级账本微控制器,用户可以通过CA授权访问整个网络,并通过APP/SDK发送交易请求。请求到达Orders后,背书模块将对请求进行验证并背书。后续消息会回复到APP/SDK端,然后将签名(背书交易)转发给Orders。
在一定时间内收到许多这样的背书交易后,它将对大块进行排序和打包,并将新生成的块广播到网络上。 Peer收到交易区块后,会对交易的结构完整性、签名是否重复、版本等进行一系列的检查和验证。通过后,将基于区块执行交易来改变账本的状态。
Hyperledger Fabric:部署和使用
需要先安装本地编译环境,然后获取Docker镜像,启动Fabric网络,最后开发调试链码(智能合约)。
5、区块链技术的演进过程。
从比特币到以太坊再到超级账本的演变过程,揭示了区块链技术从1.0(记账功能)到区块链2.0(智能合约)再到超级账本(商业应用)的演变过程。它们有不同的应用场景和不同的核心功能。以太坊和超级账本都支持图灵完备的智能合约。它们的核心共识算法会有所不同,根据应用场景会有不同的改进。比特币的核心功能只是记账,比特币的区块链底层只实现了数字货币的记账系统。以太坊首次基于它实现了智能合约的功能。虽然它是一条非常稳定的公链,但其性能仍然存在一定的问题。 Hyperledger是联盟链方向的应用。是对区块链底层在商业层和企业级应用场景的探索。这是一个逐步的过程。
第四部分区块链应用一、应用场景概述
区块链具有分布式容错、不可篡改和隐私保护等特点。建立在其上的业务应用通常具有以下特点: 可信,是去中心化或弱中心化的,可以解决多方互信问题;安全性,利用区块链不可篡改信息的安全技术,提供安全可靠的账户管理和结算功能;降低成本,与传统技术所需的时间、人力和维护成本相比,使用区块链可以完成更少的工作;经济激励是最重要的
最重要的是它底层有经济激励模型来维持生态系统的繁荣和发展。针对实际应用场景的不同需求,我利用区块链的特性来解决不同行业的具体问题。
银行财务管理
区块链技术被认为是银行业革命性变革的基础。许多金融机构已经做出了尝试。例如,中国人民银行投资了区块链研究,加拿大银行提出了自己的数字货币,日本政府取消了比特币的消费税。中国邮政银行也将区块链技术应用到其核心业务系统中,一些机构推出了基于区块链的新型支付服务,也非常具有创新性。
证券交易
传统的中心化交易系统和验证系统往往极其复杂和昂贵,而区块链技术可以大大减少处理时间并减少人工参与。同时,作为去中心化的应用,保证了多方之间的相互信任。不过,目前区块链的性能还达不到要求(典型要求是每秒超过10000笔交易),但随着时间的推移,区块链的性能会逐渐提高。一个典型的应用是,2015年10月,美国纳斯达克证券交易所推出了自己的区块链平台(Nasdaq Linq),实现一级市场的股票交易流程。通过该平台发行股票的发行人将享有“数字化”股权。
众筹投资
作为去中心化众筹管理的代表,DAO创下了历史最高融资记录,融资总额超过1.6亿美元。 ICO 是为加密货币/区块链项目筹集资金的常见方式,早期参与者可以收到初始生成的加密货币作为回报。 2017年9月ICO被政府部门叫停。区块链给很多应用场景带来了革命性的创新,但需要理性对待。在接受这项技术的同时,您还需要意识到风险并遵守相应的管理政策。
信用管理
信用管理是一个非常巨大的潜在市场,也是大数据应用领域最有前景的方向之一。目前平台存在的问题包括:数据量不足、关联性差、时效性不够。区块链天然具有不可篡改、不可否认的特性。它可以在时间和空间上准确定位这些数据并与用户严格关联,从而提高信用评估的准确性并降低相应的成本。一个典型的应用是,2016年7月,德勤、Stratumn和LemonWay联合推出了专为共享经济场景设计的“小额保险”概念平台,区块链扮演了可信第三方的角色。
任期管理
区块链技术可用于财产权、版权和其他所有权的管理和追踪。利用区块链技术,物品的所有权可以直接写入数据链,任何人都无法篡改。一旦合同规定的情况发生,区块链技术将保证智能合约的准确执行,有效降低人工干预和执行成本。
其他应用
2018年将是区块链应用元年。结合区块链技术的特点,将为不同行业带来革命性的创新。例如:共享经济、贸易管理、物联网、云存储、医疗行业、通信、社交、投票系统等。
区块链底层技术的发展趋势有安全隐私、分布式共识、交易性能三个方面。其中,交易性能在目前所有公链平台中都存在,是公链平台相对稳定运行的关键。需要提高吞吐量、降低延迟来实现不同级别的商业应用。例如需要提高单个节点的性能、将高频交易放在链外、在联盟链场景下基于一定的信任前提和利益约束进行优化设计以提高交易性能等。
在区块链未来的发展趋势中,联盟链将会得到广泛的应用。主要是因为它有两个特点:1.细粒度的权限控制。在商业应用场景中,涉及多个组织。每个组织都会有不同的访问或数据读取权限。利用联盟链可以实现这种细粒度的权限控制。 1.商业级应用性能。另外,相对稳定的公链性能无法达到商业级标准,而联盟链可以达到商业级标准,可以满足部分商业需求。我们
有理由相信,随着性能的提升,区块链将会被更多地用 于各种各样的业务场景。并且在实际的应用中,针对不同应用场景的具体需求,可以修改相应 的底层架构,搭建不同垂直领域的区块链通用底层架构。