前言

不讨论细节,旨在勾勒出区块链的轮廓。

由于是以介绍为主,所以不会涉及细节,而且肯定会有一些错误。如果有兴趣的话可以自行查询资料或者阅读本博客的区块链相关的文章:分类 “区块链” 下的文章

故事

我们先讲个故事:张三是一个三年级的学生,他的父母是做生意的。有一天管帐本的妈妈把账本弄丢了,付出了很大的代价才搞清楚资金的来龙去脉,于是父母商量了一下决定,爸爸和张三每次收支都要告诉妈妈,由妈妈记录这一笔帐,并每天晚上将账本公布,账本开头写上昨日三人的期初余额,结尾写上三人的期末余额。爸爸和张三检查无误后各自抄走一份,如果公布的账本有误则认为是假账,则选择昨日公认的账本作为今天的账本,今日的所有支出作废,损失由妈妈承担。

检查账本时都要检查下列项目:

  • 每笔交易是否有资金支出者的签名
  • 资金支出者是否有足够的钱支付
  • 今日的收支是否计算得出账本结尾声明的三人的期末余额。
  • 今日账本三人的期初余额和昨日账本三人的期末余额一致

Q:妈妈是否可以记录一些虚假的交易,比如妈妈擅自记录一笔爸爸转给妈妈 100 块钱的账?
A:不可能,因为这笔转账必须由爸爸的签名才行,如果没有签名则晚上爸爸和张三检查账本的时候会被认为是假账,而损失却由妈妈自己承担。

Q:张三是否可以假装爸爸发给妈妈一笔给自己买零食的交替?
A:不能,因为没有爸爸的签名。


时间一长,妈妈发现记账很累,于是要求每记一笔账都要求支出放支付一块钱给妈妈。后续爸爸和张三发现妈妈记账很赚钱,于是想要自己来记账。一家人商量后达成一致,每个人都将自己的交易发送给其它两人,到了晚上汇总的时候,通过抽签选择采用谁的账本,并给予记账人报酬。


有一次爸爸妈妈一起出差了,抽签抽到爸爸记账,但是爸爸很忙,没时间把账本给张三看,导致张三无法抄写今天的账本。后来一家人商量后达成一致,当允许抄写记账人以外的账本。比如爸爸很忙,但是妈妈有空,妈妈抄完后可以让张三抄。

解释

这个故事描述了区块链的大致工作流程和特点。

区块链中的就是故事中的账本,每天产生一个账本就是每天产生一个「区块」。「链」对应的就是昨日账本的期末余额和今日账本的期初余额,两种余额将两个账本连接在一起,对应将「区块」连接依赖的「链」。

区块链的特点

  • 分布式:对应故事中账本并不是只有记账人有,其它人也有一份。对应现实中数据不只有一份,而是有很多份,在不同的地方存储。
  • 去中心化:对应故事中对账本起决定作用的人不是记账人,只有一家三口都认同的账本才是有效账本。对应现实中一份数据的内容究竟是什么不是一个人或者一个组织能够决定的,而是要大多数参与者达成共识才能决定。
  • 点对点:对应故事中抄写账本时可以从任何持有账本的人手中抄写一份,而不是必须从记账人手中抄写。对应现实中一个节点请求数组不是请求中心节点,而是请求任意一个节点即可。
  • 难以篡改:对应故事中任何人都无法伪造账本中的交易记录,因为必须要有签名。对应现实中依靠密码学保证的防篡改功能。

区块链的工作流程

  1. 利用共识选择出一定时间段内的数据的管理员:对应故事中一家三口通过抽签决定记账人。
  2. 当数据发生改动时要对所有的节点进行广播:对应故事中一家三口在晚上决定记账人钱必须将自己的交易告知其余两人。
  3. 对于数据管理员公布的数据要进行检查:对应故事中要对账本进行的四种检查。
  4. 如果检查错误则回滚数据:对应故事中如果检查有误,则选择昨日公认的账本作为今天的账本,今日的所有支出作废。
  5. 如果检查无误则复制一份保存在本地:对应故事中没人都会抄写一份账本。

写在最后

本文是指介绍了一下区块链的特点时大致工作流程,并未涉及细节问题,如果有兴趣的话可以自行查询资料或者阅读本博客的区块链相关的文章:分类 “区块链” 下的文章