资源描述
了解区块链主题NO.1NO.2NO.3NO.4什么是区块链区块链技术特点区块链应用场景开发区块链应用1 简单地说,区块链就是一种去中心化的分布式账本数据库。去中心化,即与传统中心化的方式不同,这里是没有中心,或者说人人都是中心;分布式账本数据库,意味着记载方式不只是将账本数据存储在每个节点,而且每个节点会同步共享复制整个账本的数据。同时,区块链还具有去中介化、信息透明等特点。2去中心化不可篡改可追溯去中心化:在区块链的网络中分布着众多的节点,节点和节点之间地位平等,可以自由连接进行数据交换,不存在中心节点。不可篡改性:利用密码学的技术保证区块链上的数据不可被篡改,主要是两个点:哈希和非对称加密。可追溯性:区块链的数据结构保证了从第一个区块(创世区块)开始所有的数据形成了一条链,在链上的任何记录都可以通过链的结构追溯到本源(也就是创世区块的信息)。核心技术点区块链是以区块结构存储数据,多方参与、多方维护,通过密码学、P2P 网络、共识算法等保证数据可靠的传输、存储、访问的技术体系。P2P 网络密码学共识算法保证区块链落地应用的技术基石中心化网络传统的网络是中心化的网络,所有的机器、通讯都要走过一个中心化的节点完成通讯,一旦这个节点出现了问题整个网络就瘫痪了。就像现在如果电信、移动、联通的基站出现问题周围的网络通讯将会受到影响P2P网络传统的网络是中心化的网络,所有的机器、通讯都要走过一个中心化的节点完成通讯,一旦这个节点出现了问题整个网络就瘫痪了。就像现在如果电信、移动、联通的基站出现问题周围的网络通讯将会受到影响非对称加密技术非对称加密技术完全可以解决签名问题。非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的”公钥”和”私钥”。公钥和私钥一般成对出现,如果消息使用公钥加密,那么需要该公钥对应的私钥才能解密;同样,如果消息使用私钥加密,那么需要该私钥对应的公钥才能解密。Merkle树每一个区块都有 Merkle Tree,区块上所有的交易都会被存储在 Merkle Tree 上。区块和区块之间也是相互链接的,每一个区块都知道上一个区块的 Hash 值。那为什么这样的区块结构能实现数据不可篡改呢?假设我要篡改 Tx3,那我们将要篡改 Hash3 的值,接下来改变了 Hash3 就要改变 Hash23,以此类推一直要改变 Merkle Root 的 Hash 值。因为区块的 HASH 中包括了该区块 Merkle Tree Root 的 HASH 值,所以一旦你改变了区块的 HASH,就必须要修改之后所有区块的哈希值。同时这样的修改还要被网络中超过共识算法要求的节点接受。这就造成了篡改数据树的成本极高,几乎是不可能的。密码学:哈希函数哈希函数,输入可以是任意信息或者文件,输出是固定长度的比特串。例如256bit的1/0串,这个输出叫做这个信息的“哈希值”或者“摘要”(digest)。SHA256就是一个哈希函数。密码哈希函数有几个特点特点是输入值稍微变化后,结果就会有很大的不同,完全无法预测不同输入间的规律逆向计算不可行,只能使用试错法(穷举法),解空间 2的256次方POW共识算法也就是常见的比特币网络的共识算法,它通过哈希算力作为工作量证明去竞争记账权。POW 的几个缺点:性能比较低;消耗大量的资源,尤其是算力;出块比较慢,10 分钟左右。但它也优点,抗容错性很好,只有超过 51%的节点攻击网络,网络才会失败,容错性 50%。POS共识算法相对 POW,POS 是用所谓的权益计算法。相对 POW 来说它有几大改进:不再消耗资源;提高性能,2 分钟左右出块;同样容错性也是 50%。PBFT共识算法PBFT 也就是所谓的拜占廷容错,它的性能非常非常快,可以达到秒级出块甚至比秒级还要快,但是它的容错性相对差一些,一般是 33%左右。PXOS共识算法PXOS 假设的前提是没有恶意参与者,简单说就是节点不会发送错误的信息,但有可能漏发信息。在这种前提下容错性 50%,性能也是很快的,基本上秒级出块。DPOS共识算法POS 实现 2 分钟左右出块是比较大的提高,但距离业务的要求还有一定距离,所以在此基础上进行优化产生了 DPOS,简单来说 DPOS 不要求每个节点记帐,而是有代理节点来记帐,这比较像现实生活当中的议会制度,大家选出代表帮忙记帐,这样参与记帐的节点会相对集中,性能也就会提高。所以在 DPOS 情况下基本可以做到秒级出块,容错性也是 50%。工作量证明根据之前说过SHA256的性质:输入变化输出不可预测,找到这个特殊数字唯一的办法就是穷举。换言之,你很容易就证明了他们进行了海量的计算。而这个特殊数字就叫做工作量证明(proof of work)。这就意味着,所有的工作量证明就对应了交易列表(账本 Ledger),如果你修改了一个交易,哪怕只是其中一个字符,就会完全改变哈希值,就得重做工作量证明。修改任何部分都意味着重新计算区块链分代区块链分类主流区块链技术平台区块链1.0比特币以及相关的数字货币划分为区块链 1.0。区块链 1.0 是基础的区块链,实现了数字货币所需的所有特性。区块链2.0以以太坊为代表的智能合约划分为区块链 2.0,区块链 2.0 的核心概念是智能合约,简单说就是可编程的数字货币。虽然只是加了一个前缀,但却是巨大的进步。这意味着不仅仅价值本身,价值相关的商业规则也可以被数字化,是价值互联网的一个巨大进度。区块链3.0在非货币和金融领域外,在其他领域里的区块链的应用划分为区块链 3.0。公有链公有链是任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。联盟链联盟链主要针对有竞争又需要合作的场景,技术上联盟区块链是指其共识过程受到预选节点控制的区块链。只有获准进入联盟的节点才可以参与其中。私有链私有链一般仅在一个公司或者组织内使用,它更像一个分布式账本。比特币比特币Bitcoin Core是一个代码质量高、文档良好的开源软件,从学习区块链原理、掌握核心技术的角度来说,Bitcoin Core是最佳切入点,Bitcoin Core是用C+写的,而且用了一些C+11和Boost库的机制,对学习者的C+水平提出了较高的要求。以太坊Solidity进行的智能合约开发是切入区块链开发最简单的方式,没有之一。以太坊的理想非常宏大,由于配备了强大的图灵完备的智能合约虚拟机,因此可以成为一切区块链项目的母平台,是驮住整个区块链世界的大乌龟。Fabric它是Hyperledger的第一个也是最知名的孵化项目。Fabric最早来自IBM的Open Blockchain项目,到2015年11月,IBM将当时已经开发完成的44,000行Go语言代码交给Linux基金会,并入Hyperledger项目之中。主流区块链平台3金融服务供应链文化娱乐防伪、溯源医疗体育公益物流4认识 Hyperledger FabricHyperledger Fabric 的架构设计Hyperledger Fabric学习资源Hyperledger Fabric 的架构设计Hyperledger 是面向企业应用的全球最大的分布式账本开源项目,由 Linux 基金会支持,创建于 2015 年底。目前已有 200 多家科技、金融行业领军企业加入成员,包括 IBM、Intel、摩根、甲骨文、万达、百度、腾讯等。大量基于超级账本技术的企业界区块链项目已经成功落地。如今说到 Hyperledger 基本都是指的当中 IBM 开发的 Fabric 平台。而 Hyperledger Fabric 项目自诞生之日起就吸引了全球众多企业的密切关注,已经先后发布了两个大的版本,0.6 实验版本(2016 年 9 月),1.0 正式版本(2017 年 7 月),1.1 正式版本(2018 年 3 月 20 日)。Hyperledger Fabric,也叫超级账本。现在由 Linux 基金会管理,主要由 IBM 和 Digital Asset 发起。IBM 和 Digital Asset 的客户都是企业、政府部门。那么超级账本的也是是针对企业应用的开发的。开放超级账本的是 Linux 基金会 2015 年底宣布成立的,成立之后很快就吸引了大批的企业。到 2016 年底,加入的企业数达到 120 多家,大约四分之一是中国企业。现在的 Fabric 的代码,主要是由 IBM 和 Digital Asset 这两家公司提供的。IBM 把代码贡献出去之前,内部叫 Openblockchain,是 IBM 开源的 blockchain 项目,中国有很多企业在研究这个项目,包括中信,民生,华为,浪潮,腾讯,招商银行等。谈到 Linux 基金会的大家首先会想到 Lnux Github。Linux 毫无疑问是应用最广的 OS,Github 是最大的开源社区里面,github 上有无数的开源软件,遍布全球的程序员每天都在 Github 上提交新项目,改进代码。开放谈到 Linux 基金会的大家首先会想到 Linux Github。Linux 毫无疑问是应用最广的 OS,Github 是最大的开源社区里面,github 上有无数的开源软件,遍布全球的程序员每天都在 Github 上提交新项目,改进代码。开源它的源代码是开放的,Github 上有镜像,大家可以很方便地下载。支持多语言SDK 目前支持 go,java,js,python 四种语言,基本是目前最流行的编程语言,绝大部分写代码的同学至少会其中的一种。这也就大大降低了使用 Fabric 的门槛,开发者不用再学习新的语言就可以开始写程序做区块链的应用了。可插拔,可扩展Fabric 中的 CA,数据库,共识算法等,都是可以插拔的。而且,Farbric 的 Chaincode 通过 docker 实现。Chaincode 是什么呢?这又要回到共识机制。共识机制就是所有参与者对每个合约的确认过程。举个简单的例子,A 转账给 B100 元:“A 付款,B 收款确认”,这些信息被记录在账本上,这就是共识机制。代码怎么实现这个动作呢?A 转账的动作,B 确认的动作,都是在 chaincode 实现。类似于我们定义一个转账的接口,A 实现付款的代码,B 实现确认的代码。这些代码就是 chaincode。Peer节点Ordering-ServiceCAPeer节点,大部分代码都在 peer 里面实现.Ordering-Service完成共识机制的地方.CA成员管理.Hyperledger Fabric 的架构设计Fabric三大核心组件节点(Peer)在 Fabric 中,Peer 主要有三种类型:Endorser,Committer,Submitter。1.Endorser(背书节点):负责对交易提案进行检查背书,根据定义好的规则读写数据,读写集,这个读写的数据叫 state db,或者叫 world state db。背书就是签署,它做的具体事情就是根据约定,往事务里读写数据,可以理解为执行合同里的每个条款。注意这个数据没有写到账本数据,因为账本是共享的。2.Committer(确认节点):负责检查交易请求,验证 endorsements 和 transaction 结果,并且执行交易,并维护区块链和账本结构。Commiter 会写到共享账本数据。3.Submitter:目前版本中还未公布其具体功能,可能会参与写账本。Peer 是在网络中具有一定功能的服务或者软件。它在 Fabric 网络中,主要负责接收交易请求。维护账本,一般都是运行在容器。节点之间通过 gRPC 进行通信。排序者(Orderer)Orderer 负责对收到的交易在网络中进行全局排序。Order 是接收 transaction,产生 block。并且负责共识机制的 policy 管理,有点类似比特币里面的矿工。CA 节点负责对网络中的成员身份进行管理。目前采用的事数字证书机制,CA 节点实现了 PKI 服务。PKI 体系 PKI(Public Key Infrastructure),它不是某一种技术,而是综合多种密码学手段来实现安 全可靠传递消息和身份确认的一个框架和规范。一般情况下,包括如下组件:CA(Certification Authority):负责证书的颁发和作废,接收来自 RA 的请求;RA(Registration Authority):对用户身份进行验证,校验数据合法性,负责登记,审 核过了就发给 CA;证书数据库:存放证书,一般采用 LDAP 目录服务,标准格式采用 X.500 系列。CA 是最核心的组件,主要完成对公钥的管理。密钥有两种 类型:用于签名和用于加解密,对应称为 签名密钥对 和 加密密钥对。用户基于 PKI 体系要申请一个证书,一般可以由 CA 来生成证书和私钥,也可以自己生成公钥和私钥,然后由 CA 来对公钥进行签发。完成一个事务的具体工程事务就是合约、合同,完成这个合同不同的参与者需要完成不同的任务右上角的紫色的框内是签署规则,根据这个规则,E0,E1,E2 三方需要完成签名。第一步就是客户端根据规则向这个网络中广播一条消息E0,E1,E2 收到消息就执行背书E0,E1,E2 完成背书之后,通知客户端客户端收到大家的确认之后就,就向 Orderer service 发送请求。Order service 对这个transaction 进行排序,之后写到 block 中,并发送给 committing peers。这个 block 就是区块链的 blockCommitter peer 验证 transcation,Committing peer 调用 validate chaincode 对这个 transaction 进行验证。验证通过,就写入到账本里面。最后再通知客户端,交易完成相关学习资料说明访问地址超级账本官网https:/cn.hyperledger.org/超级账本1.1说明文档http:/hyperledger-fabric.readthedocs.io/en/release-1.1/超级账本源码https:/ SDKhttps:/ SDK样例代码http:/
展开阅读全文