Author

Topic: 2019-10-27 胡翌霖 从“讯息块”到“区块链”:区块链对互联网的补全 (Read 359 times)

copper member
Activity: 94
Merit: 1
文/胡翌霖 2019年10月27日
原文链接 https://yilinhut.net/2019/10/27/7778.html

《界面》的蹭热点约稿。我正在合肥参加中国科技史年会,昨晚上开完一天会之后躺床上写的,有些仓促。

不过这算是我第一篇脱离比特币专谈区块链的文章。在我看来,区块链的核心应用无疑还是货币,脱离货币或广义货币(证券等)的区块链技术基本就只是个噱头。但这并不妨碍我们确实可以在比特币之外,在互联网的发展史中,为区块链技术探寻一种定位。下面转帖全文:

 

1959年,刚刚加入兰德公司的巴兰(Paul Baran)加入了一个课题,这个课题受到美国空军的委托,目的是建立一套在核战争下让通信指挥系统保持运转的方案。

苏联在1957年率先发射人造卫星,这意味着苏联人能够把核弹头送到地球的任何地方。美国人在冷战的压力下,在可能随时遭遇核打击的前提下,研究应对策略。在核打击下,指挥中枢一定是优先打击的目标,再怎么修建防空设施,都难以保证指挥中心在或长或短的时间内陷入瘫痪。那么,如何在指挥中心或通信线路的中枢被破坏后,仍然保持各地的通讯呢?巴兰最终给出的方案是“分布式通信”。

巴兰提出核心概念是“讯息块”(message blocks),即把要传递的讯息先分成一块一块分开发出,而不是像传统电话系统那样在两点之间建立一个持续的连接关系。

后来这个词被我们现在所熟悉的“数据包”概念所替换,每一“块”数据好比一个邮包,寄信人并不指定唯一的传递路径,而是指定确定的“终点”。同一块数据可以同时经由不同路径传播,只要最后到达收件人即可。

比如A要向D发消息,不一定非得通过中心的O转接,而是可以通过A→B→C→D,也可以通过A→F→E→D,或者通过A→C→E→D等等。这样一来,无论其中哪一个节点出了故障,讯息总还能找到其它路径传递。这样一来,整个通信系统的抗打击性或者说容错率被大大强化了。

 



当然,远距离传递信息总会出现错漏问题,因此还需要设计一系列指令规范,以便及时校验数据,在出现问题时要求重发或中断连接。

这套分布式通信系统就是“网络”的原型,在类似思想下诞生的通信网,是后来互联网的前身。简单来说,互联网技术的出发点,是解决“通信的去中心化”这一问题。

讯息分块保证了去中心的网络化,但是,把连续的讯息拆散成一块一块,马上就面临一个新问题,那就是如何判断块与块之间的先后次序呢?当第一块数据沿着A→F→E→D传输时,第二块数据也许已经通过A→C→D抵达了目的地。于是接受者需要复原它们的原始顺序,这样才能准确地还原出完整的讯息。

这个问题看起来很容易解决,只要A在寄出信息时,在每个“邮包”上盖上“时间戳”就行了,接受者按照邮包上盖的戳重新整理,自然就还原出准确的顺序了。

但这是建立在寄信者不做假的前提之下的。而如果寄信者有意或无意地发出错误的讯息,又该如何处理呢?

如果在网络通信中交换的只有数字信息本身,那么错误和矛盾的信息无非是添了点乱,最终清理掉就行了。但关键是,随着信息时代的发展,我们通过互联网所交换的不再只是单纯的数字,或者说,一些数字拥有了额外的价值。

比方说,我银行存折上的那一串数字,就大有价值。如果这段数字稍微错了点位,变了变次序,我可能就要发财了。而当我大笔一挥,在支票上写下一串数字并寄给某位朋友,那么这一封信也就拥有了额外的价值。当然,收信者最终还要到银行去兑现,才能保证我这张支票不包含有意或无意的错误。

无论是填写支票还是兑换支票,无非也都是信息的传输和校验的过程,那么,这些过程能不能全部放在网络上进行呢?当然可以了,我们现在早已经对网络银行、网络支付习以为常了。

但是在这种情况下,我们发现,“中心”又回来了。当发信者有可能造假时,为了信任或校验,我们必须诉诸第三方。于是往往就需要一个核心节点O(如银行)来提供最权威的判断。

那么这个核心裁判者能否再“去中心化”呢?例如,我们让B、C、E、F等节点都有权进行裁判,以至于即便失去了中枢节点,各节点之间仍能建立可信的交易。

比方说,A的“存折”不止保存着O那里,B、C、E、F都保存一份副本,当A签发一张支票时,他们都可以与记录中的余额对比,只要A的存款够用,就把相应款项划到D名下,确认这笔汇款的完成;如果A的存款不够用,就否决这笔汇款,判定A作假。

这种用“公共账本”取代“中心账本”的方案并不难想到,但其中的问题也很容易想到——当验证者之间再出现矛盾又该如何?

例如,A向B发送一条信息,说把我的存款都划给C;同时A向F发送一条信息,说把我的存款都划给E,结果就是C和E同时收到A的全部存款,究竟该判给谁呢?

或许可以这样:我们等待一会儿,等全网各个节点都收到信息后,再一起投票表决,得到支持更多的信息更加优先。但问题是,如何判断信息已经足够广泛地传播到了“全网”?节点的计数又如何比较呢?(因为互联网上能够随时开设无数虚拟的节点)

于是,许多人放弃了进一步推进网络的去中心化,认为只有在那些不涉及信任问题的单纯的信息传递过程中,去中心化才是有可能的,而一旦涉及信任和裁判,就还是必须确立一个最高的权威才行。

直到2008年,中本聪提出了“区块链”的概念,终于为“分布式网络”补上了这一环。

区块链之“块”当然不是巴兰的“讯息块”,但其思路却异曲同工。巴兰对连续的讯息进行分块处理,而中本聪对“公共账本”进行分块。公共账本不再是连续的一笔一笔记录的累积,而是若干时间之内的记录打包成块,一块一块地累积起来。

基本方案仍然是——网络中的所有节点都有权验证每一条信息,最后根据“投票”,让多数的一方决定账本的内容。但是,“投票”和“记账”都是以“块”为单位的,而不是连续进行的,每一个“账本块”被打包完成之后有充分的时间被全网确认。投票权也并不是以节点数量为准,而是以某种“计算竞赛”的方式进行。

这个账本分块和计算竞赛的具体细节,涉及到密码学技术,在这里不多展开了。本文只想讨论区块链技术达到的结果,那就是在权威中心缺席的情况下,在分布式网络中实现了“信任”的传播。

有人把区块链技术说成“Web3.0”的标志,这不无道理,但我宁愿说,直到区块链技术,“Web1.0”才真正完成。使得这个“去中心化交流网络”不只是“有效的”,更是“可信的”。

当然,和互联网一样,区块链技术作为某种底层设计,有可能支持完全不同的应用方向。好比说互联网既可以受到军方和政府的欢迎,受到学者和商人的欢迎,也同时受到无政府主义者和犯罪者的欢迎。区块链也是如此。这也正是为什么我们必须以开放的心态,积极推进区块链相关技术开发和立法进程。
Jump to: