区块链技术介绍2018年4月许艾12345区块链技术起源与发展区块链基本概念及特征区块链核心技术区块链开源技术介绍区块链应用场景》区块链技术起源与发展区块链技术起源与发展》区块链技术起源与发展中本聪,日裔美国人。中本聪于2008年11月1日发表了一篇名为《比特币:一种点对点式的电子现金系统》的论文,描述了一种被他称为“比特币”的电子货币及其算法。2009年,他发布了首个比特币软件,并正式启动了比特币金融系统。2010年,中本聪逐渐淡出并将项目移交给比特币社区的其他成员(比特币的诞生)。2016年1月20日,中国人民银行数字货币研讨会在北京召开,会议肯定了数字货币在降低传统货币发行、流通成本,提高经济活动的便利和透明性等方面的价值。2016年10月,工业和信息化部发布《中国区块链技术和应用发展白皮书(2016)》,总结了国内外区块链发展现状和典型应用场景,介绍了我国区块链技术发展路线图以及未来区块链技术标准化方向和进程。》2016年12月,“区块链”首次被作为战略性前沿技术写入《国务院关于印发“十三五”国家信息化规划的通知》。2017年1月,工信部发布《软件和信息技术服务业发展规划(2016-2020年)》,提出区块链等领域创新达到国际先进水平等要求。2017年8月,国务院发布《关于进一步扩大和升级信息消费持续释放内需潜力的指导意见》提出开展基于区块链、人工智能等新技术的试点应用。2017年10月,国务院发布《关于积极推进供应链创新与应用的指导意见》提出要研究利用区块链、人工智能等新兴技术,建立基于供应链的信用评价机制。区块链技术起源与发展》2017年11月底,国内共有浙江、江苏、贵州、福建、广东、山东、江西、内蒙古、重庆等9个省份,将区块链列入本省“十三五”战略发展规划。2018年3月,工信部发布《2018年信息化和软件服务业标准化工作要点》,提出推动组建全国信息化和工业化融合管理标准化技术委员会、全国区块链和分布式记账技术标准化委员会。区块链技术起源与发展》区块链基本概念及特征区块链基本概念及特征》区块链:是一种去中心化、去信任、分布式账本技术,并由网络节点集体维护可靠、安全数据库技术。区块链基本概念与持征从数据的角度来看区块链是一种几乎不可能被更改的分布式数据库。这里的“分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录(即由系统参与者共同维护)。从技术的角度来看区块链并不是一种单一的技术,而是多种技术整合的结果。这些技术以新的结构组合在一起,形成了一种新的数据记录、存储和表达的方式。概念》去中心,去信任区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。开放,共识任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。特征区块链基本概念与持征》不可篡改,可追溯单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。所以,区块链只有增加、查询两种操作。交易透明,双方匿名(公有链)区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。特征区块链基本概念与持征》分类联盟链由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特性。通过授权加入与退出(如超级账本Fabric)。私有链建立在某个企业内部,系统的运行规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,数据的访问有着十分严格的权限控制。公有链无官方组织及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络、不受控制,节点间基于共识机制开展工作。自由加入与退出(如比特币、以太坊)。区块链基本概念与持征》区块链核心技术区块链核心技术》区块链涉及的综合技术分布式技术(P2P应用)身份认证与权限控制PKI与CA技术同态加密算法智能合约共识算法(共识机制)数据存储技术(KV型数据库如LevelDBRocksDB)区块链核心技术虚拟化技术(Docker容器)区块链涉及的综合技术》又称点对点技术,是没有中心服务器、依靠用户群来交换信息的互联网体系。P2P架构天生具有耐攻击、高容错的优点。由于服务是分散在各个节点之间进行的,部分节点或网络遭到破坏对其它部分的影响很小。实际就是我们经常下电影的BT技术。P2P网络区块链核心技术》区块链核心技术身份认证与权限控制身份认证身份认证,在Fabric中主要用于各节点的成员身份管理和权限的控制。主要有三种证书,身份证书、交易证书、通信证书。身份证书:颁发给用户或节点,用于表明节点身份(注册凭证)。交易证书:用于控制每个交易的权限(如交易签名)通信证书:控制对网络层的接入访问,可对远端实体进行身份校验(TLS证书)。权限控制对通道内数据的各种操作权限进行管理,读身份(读取通道的数据、区块)、写身份(如向通道发起交易)、管理员身份(修改通道配置信息)等权限进行控制。》密码算法分类对称算法、非对称算法、哈希(杂凑、散列)算法。常用经典算法:AES、SM4、RSA、SM2、ECC、SM3、SHA256描述对称算法:用来对敏感数据等信息进行加密。特点:加密解密密钥是相同的。非对称算法:用来保护和交换对称密钥及签名应用。特点:加密解密密钥是不相同的。哈希算法:相同的明文数据经过同一种哈希算法得到相同的密文。特点:不需要密钥。PKI与CA知识科普区块链核心技术》数字签名数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性(算法ECDSA)。工作原理发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。PKI与CA知识科普区块链核心技术》SHA256(或Ripemd160)一种求Hash值的加密算法。工作原理将任何一串数据输入到SHA256将得到一个256位的Hash值(散列值)。其特点:相同的数据输入将得到相同的结果。输入数据只要稍有变化(比如一个1变成了0)则将得到一个千差万别的结果,且结果无法事先预知。正向计算(由数据计算其对应的Hash值)十分容易。逆向计算(俗称“破解”,即由Hash值计算出其对应的数据)极其困难,在当前科技条件下被视作不可能。区块链核心技术PKI与CA知识科普》数字证书数字证书是PKI标准基于公钥密码体制,用于标志通讯各方身份的一种证书。一般是由权威的CA认证机构颁发,用于在网络流通中让别人识别自己的身份。描述公开密钥数字证书是一种将客户的身份(证书主体)与某个公开密钥值安全地联系在一起的数据结构。数字证书由认证机构颁发,包含公开密钥持有者信息、公开密钥文件、认证机构的数字签名、密钥的有效时间、认证机构的名称及证书序列号等信息。区块链核心技术PKI与CA知识科普》区块链核心技术数字证书样例PKI与CA知识科普》MerkleTree一种哈希二叉树,使用它可以快速校验大规模数据的完整性。在比特币网络中,Merkle树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得使得Merkle树改变。工作原理非叶子节点value的计算方法是将该节点的所有子节点进行组合,然后对组合结果进行hash计算所得出的hashvalue。区块链核心技术PKI与CA知识科普》时间戳服务器大多用来进行比对以及验证处理,时间戳服务器是一款基于PKI(公钥密码基础设施)技术的时间戳权威系统,对外提供精确可信的时间戳服务。它采用精确的时间源、高强度高标准的安全机制,以确认系统处理数据在某一时间的存在性和相关操作的相对时间顺序,为信息系统中的时间防抵赖提供基础服务。区块链核心技术PKI与CA知识科普》同态加密区块链核心技术同态加密是一种特殊的加密方法。对密文直接进行处理,跟对明文直接处理后再对处理结果加密,结果是一样的。经过同态加密后的密文,再经过特定的运算生成新密文;新密文与相应的明文进行特定的运算后生成的结果再加密是一致的。T(E(123))新密文等于E(T(123))全同态:同时满足加法同态与乘法同态称做全同态。》POW(ProofOfWork)工作量证明共识算法,在比特币中被首次提出。数字货币矿工们通过随机哈希计算获得当前区块的记账权,从而获得区块奖励。PoW的特点是哈希计算随机,难以弄虚作假,且容易被验证。但另一方面,矿工们间的哈希计算竞争浪费了大量资源。(耗费算力获取记账权)PoS(ProofOfStake)&DPoS权益证明共识算法,PoW的替代方案。根据节点所占权益比重,决定其获得区块记账权的概率,权益越多,越有机会获得区块记账权。DPoS在PoS的基础上更近一步,节点将权益委托给其他节点,由其代表自己行使权力。区块链核心技术共识算法》零知识证明:证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。例子:A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天两个人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B,有2个方法。①B把自己的私钥给A,A用这个私钥对某个数据加密,然后用B的公钥解密,如果正确,则证明对方确实是B。②A给出一个随机值,并使用B的公钥对其加密,然后将加密后的数据交给B,B用自己的私钥解密并展示给A,如果与A给出的随机值相同,则证明对方是B。方法②属于零知识证明区块链核心技术零知识证明》智能合约区块链核心技术智能合约是一个由计算机处理的、可执行合约条款的交易协议。其总体目标是能够满足普通的合约条件,例如支付、抵押、保密甚至强制执行,并最小化恶意或意外事件发生的可能性,以及最小化对信任中介的需求。智能合约所要达到的相关经济目标包括降低合约欺诈所造成的损失,降低仲裁和强制执行所产生的成本以及其它交易成本等。》区块链核心技术智能合约(以太坊)智能合约是以太坊一个重要的概念,以计算机程序的方式来运行各种合约。以太坊以图灵完备的高级语言(Solidity、Serpent、Viper)来开发智能合约。智能合约运行在以太坊虚拟机(EVM)中,它可以接收来自外部的交易请求与事件,通过触发运行提前编写好的代码逻辑实现业务规则。以太坊客户端要接入以太坊网络需要安装客户端程序或调用SDK开发库(标准的JSON-RPC协议),实现账户管理、交易、挖矿、智能合约方面的操作。》区块链核心技术智能合约部署(以太坊)》区块链核心技术区块链技术架构》区块链核心技术区块结构(比特币为例)》版本号,标示软件及协议的相关版本信息。前一区块哈希值,引用区块链中前一区块头的哈希值,通过这个值每个区块才首尾相连组成了区块链Merkle根,这个值是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值,主要用于检验一笔交易是否在这个区块中存在。时间戳,记录该区块产生的时间,精确到秒。难度值,本区块头哈希值小于或等于难度值才能被网络所接受,难度值越小,产生的新区块难度越大。(该值由区块链系统根据产生新区块时间调整)随机数,用来尝试产生满足本区块哈希值小于或等于难度值的随机参数。区块头数据项区块链核心技术》1、区块头:80字节2、版本号:4字节3、上一区块哈希值:32字节(256位)4、Merkle根节