“说白了区块链就是一个账本”,其实它没那么简单

我们经常看到有人用这样一句话来解释什么是区块链——

“最简单、最通俗来说,区块链技术就是人人记账,或者分布式账本。如果我们把区块链类比成一个实物账本,那么每个区块就相当于这个账本中的一页。”

但要真正理解这个“账本”,并没有那么简单。

我们技术总监拿着一本300多页厚的书告诉我,“如果只是简单地解释,把区块链说明白怎么也得这样的书,3本!”虽略显夸张,但也不难看出区块链技术的复杂。

来源:瑞卓喜投 文\李凤紊

我们努力用相对简单的语言来描述区块链,它是这样的:

区块链实质上是一种集体式记录方式。特别之处在于它别出心裁的采用一组技术,实现了记录结果的真实可信,难以毁坏也无法篡改。

一是人人都有权记录,并互相认证以辨真假,这叫共识机制;

二是人人都无法篡改记录,因为有密码学签名;

三是人人都有副本,所以即使有的账本损坏了,整体也不受影响,这叫分布式存储。

通过这种方式记录下的信息以区块方式,依据密码学原理,按照时间顺序依次相连,形成链状结构,因此得名区块链。

用技术语言翻译过来,它是这样的:

区块链技术不是一个单项技术,而是一个集成了多方面研究成果基础之上的综合性技术系统。它有三项必不可缺的核心技术:共识机制、密码学原理和分布式数据存储。

共识机制:指多方参与的节点在预设规则下,通过多个节点交互对某些数据、行为或流程达成一致的过程。共识机制是指定义共识过程的算法、协议和规则。

密码学原理:在区块链中,信息的传播按照公钥、私钥这种非对称加密技术实现交易双方的互相信任。在具体实现过程中,通过公、私钥对中的一个密钥对信息加密后,只有用另一个密钥才能解开的过程。并且将其中一个密钥公开后(即为公开的公钥),根据公开的公钥无法测算出另一个不公开的密钥(即为私钥)。

分布式数据存储:区块链中的分布式存储是参与的节点各自都有独立的、完整的数据存储。

跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链的每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。数据节点可以是不同的物理机器,也可以是云端不同的实例。

今天我们就重点来讲讲区块链的核心技术之一——

共识机制

什么是共识

对区块以及区块内的交易进行一致性确认,只有通过共识的区块才能被加入区块链中并被所有的节点接受。需要注意的是,共识不包括业务逻辑校验的实现(业务逻辑校验由智能合约负责),共识针对业务逻辑校验的结果进行确认。

目前常见的共识算法:

共识模块可以支持多种共识算法实现,目前主流的共识算法包括PBFT算法、POS算法、DPOS算法、POW算法等,不同共识算法的适用场景有一定区别。

PBFT:Practical Byzantine Fault Tolerance,意为实用拜占庭容错算法。

POS算法:Proof of Stake,股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。

DPOS算法:Delegated Proof of Stake,委任权益证明。

POW算法:Proof of Work,工作证明。

基于PBFT算法的共识实现方式:

(瑞卓喜投采用的就是这种方式)

术语定义

1.业务中心:区块链系统智能合约的实现方式,负责实现业务逻辑校验。共识模块进行共识时调用交易对应的业务中心对交易的业务逻辑进行校验。

2. 区块链VP节点:区块链共识节点,负责处理交易,验证交易,将交易打包为区块并发起或参与对区块的共识。

3. 区块链NVP节点/RPC节点:区块链数据节点,负责接收并处理用户通过区块链SDK发送的请求,例如:广播交易、区块链查询服务。

4. 区块链SDK:负责证书申请、交易封装,并封装同区块链RPC节点、证书注册机构的接口。区块链SDK采用Java进行开发,并以jar的形式提供业务系统使用。

5. 证书注册机构(RA):负责接收、审批证书请求,并调用证书颁发机构颁发证书。

6. 证书颁发机构(CA):负责使用根证书为个人或者组织颁发证书。

7. 代码级别的可拔插:定义为开发人员可以通过继承抽象类

(Consensus类)的方式编写新的共识算法,并通过修改该类中的共识算法列表,将新共识算法配置到区块链系统中。在生成区块链创世纪块时,可以通过配置生成创世纪块的参数,选择区块链系统支持的任意一种共识算法。同时,从包中删除某个共识算法相关的java包并从Consensus注册算法中去掉后不影响系统的运行。

【VP\NVP节点的分布式管理】

说明:

1. 被准入节点通过部署工具向RA发出生成VP证书申请

2. 管理员通过RA为被准入节点颁发VP证书

3. RA调用CA签发VP证书

4. RA将VP证书广播到区块链

5. 管理员通过RA界面对PBFT共识算法重新配置,包括增加/删除共识节点的调整和共识算法的参数调整

6. RA调用CA对PBFT共识算法变更交易进行签名

7. RA将PBFT共识算法的变更交易广播到区块链VP节点

8. VP节点将PBFT共识算法的变更交易打包入区块,节点间同步区块并广播节点切换消息,节点进入PBFT共识算法切换状态

9. 根据节点类型的变化进行相应操作 a:被准出节点停止工作 b:其他VP节点按照新的节点数量和VP证书重新初始化PBFT算法参数

10. 用户对被准入节点进行配置,启动被准入节点

11. 被准入节点启动后,连接到其他节点,进行区块同步等操作,经过一段时间完成所有的同步工作后加入共识

12. 如果希望被准出节点继续以NVP形式连接到区块链,用户需要配置被准出节点使用NVP证书,重新启动被准出节点

13. 如果希望吊销被准出节点证书,管理员通过RA吊销该证书

14. RA请求CA签发证书吊销

15. RA将证书吊销交易广播到区块链中

【共识模块】

在区块链中,共识模块的主要功能为生成新区块。下图展示了区块生成和同步的主要流程。

VP节点收到新交易后,新交易会进入共识模块,由共识模块进行处理。共识模块会调用业务中心模块对新交易进行校验,如果校验成功,共识模块将此交易放入下一区块的交易列表中。

如果该共识模块需要处理多个VP节点,共识模块会在多个VP节点间发送消息,使得VP节点对下一区块的内容达成共识。在VP节点对下一区块交易列表达成共识后,共识模块会完成生成区块工作。区块生成完成后,共识模块会调用区块链数据库模块,将区块保存到本地数据库中,并调用区块同步模块,将区块广播至其他节点。其他节点收到区块后,也会调用共识模块,根据区块签名校验区块有效性。

延展阅读

区块如何连接成区块链?

区块链由一串使用密码学算法产生的区块连接而成。每一个区块上写满了交易记录,区块按顺序相连形成链状结构,也就是区块链大账本。

以比特币为例,矿工在生成新区块时,需要根据前一个区块的哈希值、新交易区块和随机数,来计算新的哈希值和随机数。也就是说每一个区块都是在前一个区块数据的基础上生成的,该机制保证了区块链数据的唯一性。

因为交易记录细微的变化也会彻底改变哈希值的结果,所以矿工在进行算力竞争的时候无法作弊,每个矿工都必须等前一个区块生成之后才能根据前一个区块的数据开始计算符合条件的随机数,保证了挖矿的公平性。

时间戳

区块链通过时间戳保证每个区块依次顺序相连。时间戳使区块链上每一笔数据都具有时间标记。简单来说,时间戳证明了区块链上什么时候发生了什么事情,且任何人无法篡改。

比特币与区块链

区块链技术是比特币的底层技术,比特币是区块链的第一个应用。比特币的交易信息都被记录在一个去中心化的账本上面,这个账本就是区块链。

今天就先到这里吧,下次再见

(内容综合参考:腾讯白皮书、新浪区块链100问、《区块链:重塑经济与世界》、《区块链:定义未来金融与经济新格局》等)

—/End/—

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180131G0TGKA00?refer=cp_1026

相关快讯

扫码关注云+社区