技术原理
区块链是首个自带对账功能的数字记账技术实现,属于一种去中心化的记录技术
区块链包含的技术:存储数据的数据区块及其之上的数字签名、时间戳技术、支撑P2P网络和维护系统共识算法、挖矿和工作量证明机制、匿名交易机制和比特币钱包;
交易、区块、技术解析
交易
交易是指区块链参与方在区块链上进行所有操作的基本形式,包括简单的付款到智能合约的执行。每次交易成功后,当前区块链账本的状态会发生一次变化
区块
区块是指区块链账本的单元形式,它记录了一段时间内发生的所有交易以及交易后状态改变的结果,此区块记录的内容需要得到所有参与者的共识
链
区块记录的内容得到所有参与方的共识后,每个区块按照发生顺序串联成链,形成整个区块链账本状态变化的日志记录,相邻区块之间通过将前一个区块的散列值放入下一个区块中的方式进行链接,以此类推
运作机制和结构分析
运作机制
在各参与方广播各种区块交易后,矿工或捕获到这些信息,根据交易中包含的操作和当前区块链记录的相关状态进行改变,然后将更改后的交易记录到各自的区块中,最后所有旷工都达成共识的所有区块按照相关顺序记录到区块链中
结构分析
后续区块记录前一个区块的散列值,当有新的区块需要加入时,就需要加入到新的区块中,核验新区块的合法性则需要通过计算散列值及特定的共识算法快速检验出来;
一个新的区块可以被任意维护的节点提出,但是要想添加到区块链中则需要通过一定的共识算法来定了
区块链整体框架分析
一个典型的区块链系统包括数据层、网络层、共识层、合约层和应用层,旨在实现交易、区块和链
数据层
数据层解决了区块数据和交易消息格式的问题,一个区块可由区块头和区块数据组成,
- 区块头
- 包含了前一个区块的散列值、时间戳、随机数等
- 区块数据
- 包含了一条条的交易记录和对应的一些状态的变化
- 区块在记录数据时采用Merkle数的方式,将数据和状态变化组织起来
- 区块体中的merkle树会将对每一笔交易进行数字签名,以此来确保每一笔交易都不可伪造且没有重复交易
- 所有交易都将通过Merkle数的hash过程产生一个唯一Merkle根值计入区块头
- 区块链账本可追溯性要求不可迁移删除之前的区块数据
网络层
在该层中,区块链各参与方相互连接起来并交互各类交易信息,各参与方通过特定的P2P协议彼此连接成一整张网络,各参与方作为一个Peer,同时与多个邻居Peer通信 Peer发出的交易消息将会广播到邻居Peer,收到消息的邻居Peer会先验证消息的有效性,然后广播到其他Peer
共识层
共识层是整个区块链的核心,可以将区块链与其他中心化系统区别开;
共识层是保证所有区块链参与方可以形成统一账本的关键 目前常见的共识机制有
- 比特币和以太坊采用的PoW共识机制(工作量证明机制(Proof of Work,PoW))
- Qtum采用的PoS机制(权益证明机制(Proof of Stake,PoS))
- EOS采用的DPoS机制(代理权益证明机制(Delegated Proof of Stake,DPoS))
- 超级账本使用的Fabric使用pBFT机制(使用拜占庭容错机制(pratical Byzantine Fault Tolerance,pBFT))
- 工作量证明机制(Proof of Work,PoW):比特币的这种基于算力寻找nonce串的共识机制称为
工作量证明- 在进行一次交易中,待确认的交易会被打包在一起,形成一个候选区块,然后再试图找到一个nonce串(随机串)放到区块里,使得候选区块的哈希结果满足一定的条件(比如小于某个值)
- 一旦一个节点算出了满足条件的nonce串,这个区块在格式上就被认为是合法的了,就可以被广播出去,其他节点收到候选的区块后进行验证,当通过验证后就会将此新区块添加到自己维护的区块链上
合约层
合约层是使区块链真正区别于简单转账交易而实现智能经济的重要组成部分,在这一层中,区块链节点提供虚拟机,使简单的交易脚本和智能合约程序可以运行在节点的虚拟机上,从而实现了各种复杂逻辑的执行
应用层
应用层是区块链面向各类应用的层次。目前业界基于区块链在较多领域开发了去中心化的应用,如存证、溯源、共享经济、数字资产一个数据交换等,各类应用的参与方可以通过RPC或其他方式接入到区块链节点中,让业务数据和价值通过区块链进行流通,从而解决各参与方之间的不信任问题。
「架构方面分层 - 协议层(存储层和网络层)、拓展层和应用层」
协议层
协议层是最底层的技术,这个层通常是一个完整的区块链产品,类似于个人电脑的操作系统,维护着网络节点,供API调用;在该层,构建了网络环境,搭建了交易通道、签订了节点奖励规则,而将具体的交易信息交给了使用者;
从技术层面来讲,协议层主要包括
网络编程、分布式算法、密码学和数据存储4方面
- 存储层
- 数据存储相对独立些,系统的性能主要取决于网络或数据存储的I/O性能,网络的I/O优化空间不大,但是本地数据存储的I/O是可以优化的
拓展层
目的是为了让区块链产品更加的实用,拓展区块链的应用场景,目前有两类拓展层
- 各类交易市场,是法币兑换加密货币的重要渠道,实现简单,来钱快、成本低,但风险大
- 针对某个方向的拓展实现,如基于亿书侧链,可以为第三方出版机构、论坛网站等内容厂商提供定制服务等
- 常说的「智能合约」就是典型的拓展层面的应用开发
- 「智能」是执行上的智能,也就是说达到某个条件时,合约就自动执行,比如自动转移证券、自动付款等
- 拓展层使用的技术
- 包括但不限于分布式存储、机器学习、VR、物联网、大数据等
- 在开发上,除了在交易时与协议层进行交互之外,其他时候尽量不要与协议层的开发混合在一起
- 正因为这个层面的存在,区块链可以脱离业务的限制,不仅仅局限于金融行业
拓展
P2P网络与区块链
P2P网络(peer-to-peer network,对等网络)是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算机模型在应用层形成的一种组网或网络形式;
区块链系统是建立在IP通信协议和分布式网络的基础上的,不依赖传统的电路交换,而是建立在网络通信上,完全通过互联网去交换信息;
- 节点的作用
- 承担网络路由,验证数据区块等
- 节点的数据存储分类
- 全节点
- 存储了从创世区块以来的所有区块数据,且不断增加中
- 优点:进行数据校验时不需要通过其他节点,仅靠自身就可以完成数据的校验和更新操作
- 缺点:硬件成本较高
- 轻量节点
- 只存储部分数据信息,当需要其他信息时可以通过简单的支付验证方式向临近的节点请求所需数据来完成验证更新
- 全节点
数字签名
数字签名就是在信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。一般是发送者将信息用哈希算法处理得出一个哈希值,然后用私钥对该哈希值进行加密,得出一个签名。然后发送者再将信息和签名一起发送给接收者。接收者使用发送者的公钥对签名进行解密,还原出哈希值,再通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致,从而可以鉴定信息是否来自发送者或验证信息是否被篡改。- <区块链技术丛书>