风言风语 | 欲速则不达,先掌握区块链最基本技术

【本文由赞我(zaneds.com)独家冠名】


“老铁,几天不见,区块链学习得咋样了,有没有长进一点啊?”

“风哥风哥,你可算回来了,你不在的这段日子,我可惨了。”

“怎么回事?”

“唉,这段时间,接触了一堆东西,什么代币、什么钱包,什么交易所,一样接一样的,搞得我头都大了。”

“那怪谁,谁叫你去碰这些东西的。不是跟你说过嘛,以你的知识水平,要慢慢来,先把最基础的学会了,再去学其它啊。”

“哦,好吧,我还是听风哥的。你说,这次给我讲什么?”

“今天啊,我们继续讲区块链最基本的技术组合。快,搬个小板凳,坐好啊。”

区块链系统结构的基本组成部分包含:区块链账本、共识机制、密码算法、脚本系统和网络路由。这些部件组合在一起,形成一个区块链软件,缺一不可。为了让你有更具体的感受和理解,我一一来讲解。

1、区块链账本

区块链,就是“区块+链”,所谓的区块就是指数据块的意思,每个数据块之间通过某个标志连接起来,从而形成一条链,如下图:

举个例子,如企业的会计账簿,每个月会计将记账凭证汇总为账簿并且月结,这样几个月下来,就形成了一个连续账簿,每个月的数据就相当于区块,区块与区块之间通过年月串联起来。老铁,这样说,是不是易懂一点?对了,你学过会计没?

区块链最早是比特币的底层技术,那么我们就先来看一看比特币。比特币大约是每10分钟产生一个区块,区块中主要包含了交易事务数据及区块的摘要信息。下图就是比特币中区块链数据的组成示意图:

通过上图我们可以看到区块数据在逻辑上分成了区块头和区块体,每个区块头中通过梅克尔根(梅克尔根哈希值,集体身份证号)关联了区块中众多的交易事务,而每个区块之间通过区块头哈希值(一个区块的身份证号)串联起来。它将连续不断发生的数据分成了一个一个的数据块,在下载同步这些数据的时候,可以并行地从各个节点来获得,无论数据先后,到达本地后再根据身份证号组装起来就行。

另外,这是一种链条格式,一环扣一环,很难从中间去破坏。比如有人篡改了中间的2号区块,那么就得同时把2号区块后续的所有区块都改掉,这个难度就大了。在区块链系统中,一个节点产生或更改的数据要发送到其它节点接受验证,而一个被篡改的数据是不会被验证通过的,这是一个很重要的技术设计。

还有一点,每个区块由谁来记录或者说打包,可以有一个规则。比如老铁你,连续掷骰子3次6,就由你来记录数据,为了补偿你的劳动投入,会给你一些奖励。比特币正是使用了这样的原理不断地发行新的比特币出来,奖励给你的比特币就是新发行的比特币。

2、共识机制

老铁啊,假如你在企业上班,老板发出一个通知,你是不是照着做就可以了。但是区块链是一个分布式的对等网络结构,没有哪个节点是“老大”,一切都要商量着来。那到底听谁的呢?如果今天老板安排一群人开会,但老板自己不参加,大家各抒己见,那么最后如何统一出一个决定出来呢?在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是个很核心的问题,这个问题的解决方案就是制定一套共识算法。

在企业里遇到这种情况,一般会这样做。从与会当中选出一个比较资深的人,由他负责汇总大家的内容,再发布完整的意见,其他人投票表决。当然如果有人有不同意见,也可以来做汇总发表,最后谁的结论支持者多就以谁的最终意见为准。这种思路,其实就算是一种共识算法了。

可是开会毕竟人少,而区块链的节点那么多,如果一个个来,要何年马月才能出结果。因此,我们需要通过一种机制筛选出最有代表性的人,也就是具有代表性的节点。如果筛选呢?其实就是设置一组条件,就像我们筛选运动员、尖子生一样,给一组指标让大家来完成,谁能更好地完成指标,谁就能有机会被选上。

在区块链系统中,存在着多种多样的筛选方案,如工作量证明、权益证明、委托权益证明、实用拜占庭容错算法等。区块链系统就是通过这种筛选算法或者说共识算法来使得网络中各个节点的账本数据达成一致的。

3、密码算法

通过上述讲解我们已经知道,区块链账本就是连接起来的一个个区块。那么到底是通过什么来连接的呢?学过数据结构的朋友都知道,在数据结构中,有一种变量叫指针,它是可以用来指向某个数据的地址的。那么区块的连接是不是通过这样的数据地址呢?

事实上,区块之间的连接,往往都不是靠数据地址来关联的,而是靠一种叫作哈希值的数据来关联的。那么什么叫哈希值?这是通过密码算法中的哈希算法计算得出的。哈希算法可以通过对一段数据计算后得出一段摘要字符串,这种摘要字符串与原始数据是唯一对应的。

如果我们对原始数据进行修改,哪怕只是一点点修改,那么计算出来的哈希值都会发生完全的变化。区块链账本对每个区块都会计算出一个哈希值,称为区块哈希,通过区块哈希来串联区块。如果有人篡改了中间的某一个区块数据,那么后面的区块都要进行修改,因为区块哈希发生变化了。

另外还有一个密码算法的应用,叫梅克尔树结构。实际上,除了整个区块会被计算哈希值外,区块中包含的每一笔事务数据也会被计算出一个哈希值,称为“事务哈希”,每一个事务哈希都可以唯一地表示一个事务。对一个区块中所有的事务进行哈希计算后,可以得出一组事务哈希,再通过加工处理,最终会得出一棵哈希的数据结构。哈希树的顶部就是树根,称为“梅克尔根”。通过这个梅克尔根就可以将整个区块中的事务约束起来,只要区块中的事务有任何改变,梅克尔根就会发生变化,利用这一点,可以确保区块数据的完整性。

老铁,别开小差,是不是觉得很深奥,认真听啊,不认真听更听不懂了。

4、脚本系统

区块链系统之所以能形成一个有价值的网络,依靠的其实是脚本系统,它就像是发动机一样,驱动着区块链系统不断进行着各种数据的收发。所谓脚本,就是指一组程序规则。在区块链系统中,有些程序规则是固定的,在些是允许用户自行编写一组程序规则,这可以扩展区块链系统的功能。

脚本系统使得在区块链中可以实现各种各样的业务功能。本来只是通过区块链来记财务账的,通过脚本系统,大家可以使用区块链来记录各种各样的数据,比如订单、众筹账户、物流信息、供应链信息等,这些数据一旦记录到区块链上,那么区块链的优点就能够被充分地发挥出来。

5、网络路由

其实这个上一节课已经讲过了,它是解决区块链这个分布式网络中的节点彼此如何进行连接通信的。由于分布式网络结构中不存在一个指定的服务器,大家没法通过一个服务器来直接交换彼此的身份信息,就只能依靠彼此联系并传播信息。在区块链系统中,这个功能一般会定义成一种协议,称为“节点发现协议”。

除了要发现节点外,更重要的一个功能就是同步数据。如何同步呢?没有服务器来下载,就只能通过邻近的节点了。通过向邻近节点发送数据请求来获得最新的数据,节点彼此都充当服务者和被服务者,通过这种方式,网络中的每一个节点都会在某一个时刻达成数据上的一致。

网络路由其实就是区块链系统中的触角,通过大量的触角将每个节点连入网络,从而形成一个功能强大的区块链共识网络。

老铁,讲到这儿,会不会想到章鱼?呵呵,不过章鱼的触角还是太少,要无数个章鱼才够。

好了,老铁,今天讲的内容专业性有点强,你赶紧回去好好消化吧。记得,不能偷懒啊,不然下堂课你又要跟不上了。

你可能感兴趣的:(风言风语 | 欲速则不达,先掌握区块链最基本技术)