区块链技术目录区块链简介1特征及分类2区块链网络3数据结构4核心问题5前景展望61.区块链简介区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。它基于密码学原理而不基于信用,使得任何达成一致的双方直接支付,从而不需要第三方中介的参与。互联网上的贸易,几乎都需要借助可资信赖的第三方信用机构来处理电子支付信息。这类系统仍然内生性地受制于“基于信用的模式”。背景1.区块链简介区块链是一个分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。定义从数据的角度来看区块链是一种几乎不可能被更改的分布式数据库。这里的“分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录(即由系统参与者共同维护)。从技术的角度来看区块链并不是一种单一的技术,而是多种技术整合的结果。这些技术以新的结构组合在一起,形成了一种新的数据记录、存储和表达的方式。1.区块链简介国际权威杂志《经济学人》、《哈佛商业周刊》、《福布斯杂志》等相继报道区块链技术将影响世界。创业公司R3联合全球42家顶级银行成立区块链联盟,包括摩根大通、美国银行、汇丰银行、花旗银行、富国银行、三菱UFJ金融集团、巴克莱银行、高盛、德意志银行等。动态1.区块链简介把区块链想象成比特币网络的分布式数据库完整备份12块状存储3交易广播4历史记录21.区块链简介如果我有一元人民币,只有银行服务器可以证明;但全世界都可以证明我有一个比特币目录区块链简介1特征及分类2区块链网络3数据结构4核心问题5前景展望62.特征及分类特征去中心,去信任区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。开放,共识任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。2.特征及分类特征不可篡改,可追溯单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。交易透明,双方匿名区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。2.特征及分类分类联盟链由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特性。私有链建立在某个企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性。公有链无官方组织及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络、不受控制,节点间基于共识机制开展工作。目录区块链简介1特征及分类2区块链网络3数据结构4核心问题5前景展望63.区块链网络区块链基础技术架构数据层是最底层的技术,主要实现了两个功能,一个是相关数据的存储,另一个是账户和交易的实现与安全。数据存储主要通过区块的方式和链式结构实现。账号和交易的实现基于数字签名、哈希函数和非对称加密技术等多种密码学算法和技术,保证了交易在去中心化的情况下能够安全的进行。主要封装了底层数据区块的链式结构,以及相关的非对称公私钥数据加密技术和时间戳等技术,这是整个区块链技术中最底层的数据机构。其建立的一个起始节点是“创世区块”,之后在同样规则下创建的规格相同的区块通过一个链式的结构依次相连组成一条主链条。随着运行时间越来越长,新的区块通过验证后不断被添加到主链上,主链也会不断地延长。网络层主要实现网络节点的连接和通讯,又称点对点技术,是没有中心服务器、依靠用户群交换信息的互联网体系。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,其具有去中心化与健壮性等特点。每一个节点既接收信息,也产生信息。节点之间通过维护一个共同的区块链来保持通信。区块链的网络中,每一个节点都可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当全区块链网络中超过51%的用户验证通过后,这个新区块就可以被添加到主链上了。共识层主要实现全网所有节点对交易和数据达成一致,防范拜占庭攻击、女巫攻击、51%攻击等共识攻击,其算法称为共识机制。共识机制算法是区块链技术的核心技术,因为这决定了到底由谁来进行记账,记账者选择方式将会影响整个系统的安全性和可靠性。区块链中比较常用的共识机制主要有:投注共识、瑞波共识机制、Pool验证池、实用拜占庭容错、授权拜占庭容错、帕克索斯算法等。激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制,该层主要出现在公有链中,因为在公有链中必须激励遵守规则参与记账的节点,并且惩罚不遵守规则的节点,才能让整个系统朝着良性循环的方向发展。所以激励机制往往也是一种博弈机制,让更多遵守规则的节点愿意进行记账。而在私有链中,则不一定需要进行激励,因为参与记账者的节点往往是在链外完成了博弈,也就是可能有强制力或者有其它需求来要求参与者记账。激励层主要实现区块链代币的发行和分配机制,比如以太坊,定位以太币为平台运行的燃料,可以通过挖矿获得,每挖到一个区块固定奖励5个以太币,同时运行智能合约和发送交易都需要向矿工支付一定的以太币。合约层主要封装各类脚本、算法和智能合约,赋予账本可编程的特性。区块链2.0通过虚拟机的方式运行代码实现智能合约的功能,比如以太坊的以太坊虚拟机(EVM)。同时,这一层通过在智能合约上添加能够与用户交互的前台界面,形成去中心化的应用(DAPP)。以太坊在比特币结构基础上,内置了编程语言协议,从而在理论上可以实现任何应用功能。如果把比特币看成是全球账本的话,那么就可以把以太坊看作是一台“全球计算机”。应用层主要封装了区块链的各种应用场景和案例,比如搭建在以太坊上的各类区块链应用就是部署在应用层,所谓可编程货币和可编程金融也将会搭建在应用层。数据层、网络层和共识层是构建区块链应用的必要因素,否则将不能称之为真正意义上的区块链。而激励层、合约层和应用层则不是每个区块链应用的必要因素3.区块链网络科普数字签名数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。工作原理发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。3.区块链网络科普SHA256一种求Hash值的加密算法。工作原理将任何一串数据输入到SHA256将得到一个256位的Hash值(散列值)。其特点:相同的数据输入将得到相同的结果。输入数据只要稍有变化(比如一个1变成了0)则将得到一个千差万别的结果,且结果无法事先预知。正向计算(由数据计算其对应的Hash值)十分容易。逆向计算(俗称“破解”,即由Hash值计算出其对应的数据)极其困难,在当前科技条件下被视作不可能。3.区块链网络MerkleTree一种哈希二叉树,使用它可以快速校验大规模数据的完整性。在比特币网络中,Merkle树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得使得Merkle树改变。科普工作原理非叶子节点value的计算方法是将该节点的所有子节点进行组合,然后对组合结果进行hash计算所得出的hashvalue。3.区块链网络时间戳服务器大多用来进行比对以及验证处理,时间戳服务器是一款基于PKI(公钥密码基础设施)技术的时间戳权威系统,对外提供精确可信的时间戳服务。它采用精确的时间源、高强度高标准的安全机制,以确认系统处理数据在某一时间的存在性和相关操作的相对时间顺序,为信息系统中的时间防抵赖提供基础服务。科普3.区块链网络节点网络本章节后续内容,均以比特币网络特性展开阐述3.区块链网络节点网络任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功能:1.钱包,允许用户在区块链网络上进行交易2.完整区块链,记录了所有交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法性3.矿工,通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖励4.路由功能,把其它节点传送过来的交易数据等信息再传送给更多的节点除了路由功能以外,其它的功能都不是必须的。3.区块链网络交易过程3.区块链网络交易过程第2步:A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中第1步:所有者A利用他的私钥对前一次交易(比特货来源)和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单要点:B以公钥作为接收方地址要点:对B而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用。目前一笔比特币从支付到最终确认成功,得到6个区块确认之后才能真正确认到帐。3.区块链网络交易过程第3步:每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新比特币会在此过程中产生)要点:节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的Hash值以及交易单三部分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解。由此可见,答案并不唯一第4步:当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对要点:时间戳用来证实特定区块必然于某特定时间是的确存在的。比特币网络采取从5个以上节点获取时间,然后取中间值的方式作为时间戳。3.区块链网络交易过程第5步:全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。要点:每个区块的创建时间大约在10分钟。随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短、随算力减弱而延长。其原理是根据最近产生的2016年区块的时间差(约两周时间),自动调整每个区块的生成难度(比如减少或增加目标值中0的个数),使得每个区块的生成时间是10分钟。目录区块链简介1特征及分类2区块链网络3数据结构4核心问题5前景展望64.数据结构区块链区块链以区块为单位组织数据。全网所有的交易记录都以交易单的形式存储在全网唯一的区块链中。4.数据结构区块是一种记录交易的数据结构。每个区块由区块头和区块主体组成,区块主体只负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现。区块4.数据结构区块头1.版本号,标示软件及协议的相关版本信息2.父区块哈希值,引用的区块链中父区块头的哈希值,通过这个值每个区块才首尾相连组成了区块链,并且这个值对区块链的安全性起到了至关重要的作用3.Merkle根,这个值是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值,主要用于检验一笔交易是否在这个区块中存在4.时间戳,记录该区块产生的时间,精确到秒5.难度值,该区块相关数学题的难度目标6.随机数(Nonce),记录解密该区块相关数学题的答案的值4.数据结构在当前区块加入区块链后,所有矿工就立即开始下一个区块的生成工作。1.把在本地内存中的交易信息记录到区块主体中2.在区块主体中生成此区块中所有交易信息的Merkle树,把Merkle树根的值保存在区块头中3.把上一个刚刚生成的区块的区块头的数据通过SHA256算法生成一个哈希值填入到当前区块的父哈希值中4.把当前时间保存在时间戳