1. 第一步,你下单并把钱打给支付宝
  2. 第二步,支付宝收款后通知卖家可以发货了;
  3. 第三步,卖家收到支付宝通知之后给你发货;
  4. 第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;
  5. 第五步,支付宝收到通知,把款项打给卖家。流程结束。

你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。

你一定会摆出一个巨大的问号脸 ⊙.⊙?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!

假如说,支付宝程序发生重大 BUG,导致一段时间内的转账记录全部丢失,或者更彻底一点,支付宝的服务器被金三胖的一个导弹全部炸毁了。而我刚刚转出去的 100 元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。

上述就是中心化最大的弊端——过分依赖中心和权威,也就意味着逐渐丧失自己的话语权。

去中心化?

那么去中心化的形态是什么样子呢?还是拿刚才那个例子继续,我们构建一个极简的去中心化的交易系统,看看我们是如何在网络上从不认识的卖家手里买到一本书的。

  1. 第一步,你下单并把钱打给卖家;
  2. 第二步,你将这条转账信息记录在自己账本上;
  3. 第三步,你将这条转账信息广播出去;
  4. 第四步,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;
  5. 第五步,卖家发货,同时将发货的事实记录在自己的账本上;
  6. 第六步,卖家把这条事实记录广播出去;
  7. 第七步,你和支付宝收到这条事实记录,在自己的账本上分别记录;
  8. 第八步,你收到书籍。至此,交易流程走完。

刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,对不起卖家的账本还存在,我的账本还存在;这些都是这笔交易真实发生的铁证。

当然,在这套极简的交易系统中,你已经发现了诸多漏洞和不理解,比如说三方当中有一个是坏人,他故意记录了对他更有利的转账信息怎么办;又比如说消息在传递过程中被黑客篡改了怎么办等等等等。这在以往的计算机概论或者计算机网络书本上中可能都有提及到——“类两军”和“拜占庭将军”问题。这里就不打算赘述,因为暂时跟主线不相关,感兴趣的同学可以去 Google 或者百度一下,你只需要知道,在我们下面即将展开讲到的区块链系统中,通过巧妙的设计,足以解决上述存在的 BUG。

既然话已说到这份上,相信了解一点技术、特别是有运维背景的同学大概能够从极简交易系统中窥视到了更多区块链的一些影子——

  1. 分布式存储,通过多地备份,制造数据冗余
  2. 让所有人都有能力都去维护共同一份数据库
  3. 让所有人都有能力彼此监督维护数据库的行为

在我看来,你猜测的基本上没错。其实这些就是区块链技术最核心的东西,外人看起来高大上、深不可测,但探究其根本发现就是这么简单和淳朴。当然,这里面肯定会有很多很多很多细枝末节的技术需要重构。

如果你差不多认同上面的观点,那我们应该基本上可以达成共识,分布式部署肯定是构建去中心化网络理所当然的解决方向——通过 P2P 协议将全世界所有节点计算机彼此相互连接,形成一张密密麻麻的网络;以巧妙的机制,通过节点之间的交易数据同步来保证全球计算机节点的数据共享和一致。

哈哈,说的轻巧,“交易数据这么重要的东西,在一个完全不信任的 P2P 网络节点中以一种错综复杂的方式传递,数据的一致性和安全性谁来保证,如果说互相监督,他们到底怎么做到?”

好了,不卖关子了,下面让我们围绕这个最最最最直接的问题开始进入到真正区块链的世界,抽丝剥茧看看它到底是如何一步一步形成的,又是如何一步一步稳定运转。

# 从全球节点到交易数据

这张图的制作的意义为的是帮助你在宏观上先快速理解区块链中所涉及到的相关名词以及他们的层级关系。同时,文章的知识结构和设计思路也大抵上也会按照:

  1. 首先,将区块作为最小单位体,讲述极简区块链系统是如何运转的;
  2. 接着,进入到比区块更小单位体——交易记录,理解区块链是如何处理数据的;
  3. 最后,将所有知识点柔和在一起,重回到区块和区块链,完整讲述整个工作流程。

希望你在这个引导和结构下有一个比较好的阅读体验。Let's go~

# 区块,混沌世界的起源

既然已经达成共识,所以,我们事先构建好了一个去中心化的 P2P 网络;同时,为了让读者朋友们听起来更轻松,我先粗暴的规定在这个极简的区块链系统里,每十分钟有且仅产生一笔交易。

故事继续,在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块(你可以将区块想象为一个盒子),这个区块里放着一些数字货币以及一张小纸条,小纸条上记录了这十分钟内产生的那唯一一笔交易信息,比如说——“小 A 转账给了小 B100 元”;当然,这段信息肯定是被加密处理过的,为的就是保证只有小 A 和小 B(通过他们手上的钥匙)才有能力解读里面真正的内容。

这个神奇的区块被创造出来之后,很快被埋在了地底下,至于埋在哪里?没有一个人不知道,需要所有计算机节点一起参与进来掘地三尺后才有可能找到(找到一个有效的工作量证明)。显然,这是一件工作量巨大、成果随机的事件。但是呢,对于计算机节点来说,一旦从地底下挖出这个区块,他将获得区块内价值不菲的数字货币,以及“小 A 转账给了小 B100 元”过程中小 A 所支付的小费。同时,对于这个节点来说,也只有他才有权利真正记录小纸条里的内容,这是一份荣耀,而其他节点相当于只能使用它的复制品,一个已经没有数字货币加持的副本。当然这个神奇的区块还有一些其他很特别的地方,后面我们会再细细聊。

为了更好的描述,我们将计算机节点从地底下挖出区块的过程叫做「挖矿」,刚才说了,这是一件工作量巨大、运气成分较多、但收益丰厚的事儿。

过了一会儿,来自中国上海浦东新区张衡路上的一个节点突然跳出来很兴奋的说:“ 我挖到区块了!里面的小纸条都是有效的!奖励归我!” 。虽然此刻张衡路节点已经拿到了数字货币,但对于其他计算机节点来说,因为这里面还涉及到其他一些利益瓜葛,他们不会选择默认相信张衡路节点所说的话;基于陌生节点彼此不信任的原则,他们拿过张衡路节点所谓挖到的区块(副本),开始校验区块内的小纸条信息是否真实有效等等。在区块链世界里,节点们正是通过校验小纸条信息的准确性,或间接或直接判断成功挖出区块的节点是否撒谎。(如何定义小纸条信息真实有效,后面会讲解,这里暂不做赘述)。

在校验过程中,各个节点们会直接通过下面两个行为表达自己对张衡路节点的认同(准确无误)和态度:

  • 停止已经进行了一半甚至 80%的挖矿进程;
  • 将张衡路节点成功挖出的区块(副本)追加到自己区块链的末尾。

你可以稍微有点困惑:停止可能已经执行了 80%的挖矿行为,那之前 80%的工作不是就白做了嘛?!然后,区块链的末尾又是个什么鬼东西?

对于第一个困惑。我想说,你说的一点没错,但是没办法,现实就是这么残酷,即便工作做了 80%,那也得放弃,这 80%的工作劳苦几乎可以视为无用功,绝对的伤财劳众。第二个困惑,区块链和区块链的末尾是什么鬼?这里因为事先并没有讲清楚,但是你可以简单想象一下:区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能事先已经执行了 N 次“从别人手上拿过区块 -> 校验小纸条有效性”的流程,肯定在自己的节点上早已经存放了 N 个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状。没错,这个链条,就是你一直以来认为的那个区块链。如果你还是不能够理解,没关系,文章后面还会有很多次机会深入研究。

    博文


    
    武汉宏图博创期待着倾听您喷薄欲出的商业构想,与您一起书写经典,打造传奇。我是网站资深策划龚杰,手机
    1507-116-5558随时恭候!

    联系方式

    开发部:武汉市洪山区创星汇科技园F栋4楼

    411286223@qq.com

    1507-116-5558 1303-7167-999

    在线留言