区块链002 区块链系统是如何运转的?

区块链科普系列第2天:区块链的工作流程和技术组合

文/杜豆豆


区块链002 区块链系统是如何运转的?_第1张图片
BITCOIN:比特币

1

首先讲讲区块链技术的一般工作流程。

区块链系统有很多种。第一个应用的软件就是比特币。后来,又出现了许多衍生系统,比如闪电网络、公证通、以太坊、超级账本项目等。但从工作流程上讲,都是类似的。

以转账交易的流程为例。简单理解,就是发送一笔数据。该数据被发送后,就会打包进区块,然后广播给所有节点确认,通过后就写入各节点的本地区块链账本中。当网络中大多数节点都确认写入后,转账过程完成。

其他各种系统都是在这个基础上进行的衍生和扩展。

比如,加个身份认证功能啊,扩展数据表达能力等等。但万变不离其宗,说到底,就是大家维护一份公共账本,区块链技术就是围绕如何保持数据一致,保证公共账本数据不被篡改而展开的。为了解决这些问题,区块链技术拥有一套技术栈。

2

所谓技术栈,简单理解,就是一个个模块化部件组成的技术组合。

区块链本身实际就是一种数据的记录格式,但是和我们常用的表格或者文档不一样的是,区块链是把数据按照一定的时间间隔分成一个个的数据块来记录的,然后再根据数据块的先后关系串联起来。按照时间线来记录的目的是为了防止数据被篡改。

那么为什么这样会能实现数据不被篡改呢?

是因为它有一套技术组合来保证。这套技术组合包括区块链账本、共识机制、密码算法、网络路由和脚本系统,称为区块链的技术栈。

这套基本的技术组合,我们可以理解为是区块链的一个个零部件,只要把这些零部件装备在一起,就可以形成一个区块链软件,然后做成客户端软件就变成了节点。多个这样的节点运行起来就组成一个网络,每个节点都是平等的,大家互相服务,那这种网络就被称为点对点的对等网络。

3

区块链技术栈的第一个模块就是区块链账本。

区块链账本,表示的是一种特有的数据记录格式。我们可以把区块链,拆解为“区块+链”。区块就是一个个数据块,每个数据块之间是通过某个标识连接起来的,这样就会形成一条链。

我们以比特币为例,看看这个区块数据是怎么组成的。你可以把区块数据想象成一条拉链,在逻辑上它分为区块头和区块体,每个区块头里面都通过称为“梅克尔根”的事务性身份证号来关联区块中众多的交易事务,而区块和区块之间是通过区块头的哈希值(区块的身份证号)来进行串联。这样,就会形成一个一环套一环的数据格式。

在同步这些数据的时候,这些数据就可以并行地从各个节点来获得。到达本地后,再根据身份证号组装起来。如果中间被破坏了,因为有区块哈希值和事务梅克尔根这样的限制,破坏的数据会马上再形成一个新的区块哈希值和事务梅克尔根值,那所有的数据都要跟着变才行,而不是单独这一个数据块和节点,改自己的账本容易,改所有人的难度就很大,而且,当你发送到网络中其他节点要验证时,其他节点也是没办法通过的,因为数据匹配不起来,这样的话就能防止数据被篡改。

另外,这种格式还有个巧妙的地方。以比特币为例,因为是共同记录的,每个区块数据交给谁记录和打包产生,就可以玩个游戏规则,比如掷骰子。负责打包的那个人会为此付出劳动,为了补偿他的劳动投入,就需要奖励给他一些收益。奖励的比特币就需要不断地发行,就会产生新发行的比特币。

4

区块链技术栈的第二大模块是共识机制。

所谓共识,就是大家都达成一致。区块链的网络结构,不是主机为核心的集中式结构,而是分布式的对等结构。你可以理解为,是个没有领导的会议,只有临时选出的主持人,大家各抒己见,产生各种信息数据,每个人都有自己的会议记录,主持人负责最后打包汇总所有人的信息,然后再把这些信息发给各个参会者。

在这种结构里,没有哪个节点是老大,一切都要商量着来,所以必须要有一个游戏规则,让各自的数据保持一致。这个问题的解决方案就是制定一套共识算法。共识算法就是一个规则,每个节点都按照这个规则去确认各自的数据。比如,刚才讲到的开会,大家都在各抒己见,但最后如何统一出一个决定呢?我们就可以规定,一个时间段只能选出一个人发言,负责汇总大家的意见,然后投票表决,最后谁的支持者多就以谁的最终意见为准。这就是一种共识算法。

那人少可以像上面那样做,人多怎么办呢?就可以依靠软件来帮我们筛选,怎么去筛选呢?就是要设置一组条件,这些条件组成一组就变成了算法,其实就是不同的游戏玩法。

5

区块链技术栈的第三大模块是密码算法。

密码算法的应用很多,我们这里只讲几个关键应用。

前面讲到,区块链账本是连接起来的一个个区块。那么靠什么来连接呢?

不同于我们以前所知道的数据结构。数据结构里有个变量叫做指针,可以指向某个地址来联结数据。但区块链中,区块之间的连接不是靠数据地址来关联的,而是靠一种叫做哈希值的数据来关联。

什么是哈希值呢?

就是通过哈希算法计算出来的一种数值。哈希算法是对一段数据计算后得出一段摘要字符串。这种摘要字符串和原始数据是唯一对应的,当你对原始数据进行修改时,计算出来的哈希值都会发生完全的变化,哪怕只是一点点修改。

区块链帐本会对每个区块都计算一个哈希值,叫做区块哈西,然后用区块哈西把各个区块串联起来,所以如果有人篡改了中间的某一个区块数据,那么后面的区块都要改才行。

还有一个密码算法的应用,就是梅克尔根树结构

除了整个区块会被计算哈希值之外,区块中包含的每个事务数据,也会被计算出一个哈希值,称为事务哈希。一个区块中所有的事务进行哈希计算后,就可以得出一组事务哈希,然后对这些事务哈希进行处理,就会得到一棵哈希数的数据结构。哈希数的顶部就是树根,称为梅克尔根。通过这个梅克尔根,就可以把整个区块中的事务约束起来,只要区块中的事务有变化,每个梅克尔根就会跟着变,这样就确保了区块数据的完整性。

6

区块链技术栈的第四大模块,脚本系统。

脚本系统听起来很抽象,但很重要,它就像汽车里的发动机,作用是驱动系统进行各种数据的收发。

所谓脚本,就是一组程序规则。在区块链系统中,有些脚本系统是固定的,比如只能进行比特币的发送和接收。有些系统,是允许用户自行编写的。这些脚本系统编写好之后,还可以部署到区块链账本中,用来扩展功能。比如以太坊里就有一套自定义功能的脚本系统,可以实现智能合约的功能。

说白了,脚本系统就是在区块链中帮助你实现各种各样业务功能的小程序。通过这些程序,你才可以记录各种数据,互相进行收发传递。

7

区块链技术栈的第五大模块是网络路由。

节点之间,要传输信息就一定要进行通信。我们前面说到,区块链的网络结构是分布式网络。在分布式的网络结构里,没有指定的主机,没办法通过一台主机来进行身份信息的交换,只能依靠彼此联系来传播信息。那么这个功能,就会被定义成一种协议,称为“节点发现协议”。你可以把它想象成手机对Wi-Fi的发现功能。

除了发现节点以外,还有一个重要功能就是同步数据。因为没有服务器来帮助你汇总和更新数据,那就要通过临近的节点来更新。节点之间,互相服务,来达成数据的一致。换句话说,网络路由就是一种特殊的通讯协议,通过这个协议,节点之间可以互相发现并且同步数据。

区块链002 区块链系统是如何运转的?_第2张图片
区块链也是一种技术组合

(未完待续)

本文观点和案例均参考自《白话区块链》。

原创不易,非授权不得转载,转载请注明出处。如果您觉的文章有用,别忘了在文末点赞哦。

读更多好书,请访问我的文集:《一生必读的万卷好书》

欢迎加入“万卷好书读书会”:在这个群里,大家可以分享电子书,交流读书心得,以文会友,自由点赞支持。目前该群已超过100人,需要群主发邀请才能进,有兴趣的简友请加微信dudoudou189联系我。读书会座右铭:在浮躁的时代,安心读书写作,养育心灵。

我已晋升最高级别的“会员合伙人”,欢迎使用我的专属会员推广链接:https://www.jianshu.com/mobile/club?ref=11f3ab2f1288,订阅会员,享受最优惠福利。

你可能感兴趣的:(区块链002 区块链系统是如何运转的?)