加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

这个女生说:弄懂本文前,你所知道的区块链可能都是错的

发布时间:2018-12-21 20:23:48 所属栏目:传媒 来源:李晓泉译
导读:整个区块链行业的凛冽寒冬中,价格的涨跌已经左右了太多的人头脑之中的理智。可是,众人之中,究竟有几个人真正理解了区块链技术的密码学机制与分布式计算?究竟有几个人还会关心区块链在技术上的创新? 尘归尘,土归土。可能只有巨大的泡沫消散之后,区块链
副标题[/!--empirenews.page--]

整个区块链行业的凛冽寒冬中,价格的涨跌已经左右了太多的人头脑之中的理智。可是,众人之中,究竟有几个人真正理解了区块链技术的密码学机制与分布式计算?究竟有几个人还会关心区块链在技术上的创新?

尘归尘,土归土。可能只有巨大的泡沫消散之后,区块链才能通过技术创新显示出真正的影响力。让区块链回归技术与应用的本质,这也是区块链大本营一直以来的定位。然而,传播这样的内容和话题,离不开货真价实的技术干货,以及有感染力的人物和故事。

我们今天的内容就来自于这样一个女生:

她是工业与系统工程专业出身,做过顶级投行高盛的分析师,做过著名风投 a16z 的合伙人——这都是许多人梦寐以求的工作。但是,功成名就的路上,她却发现编程才是自己想要的生活。

1

笨办法学会编程?她没学会。如何用 HTML/CSS 做一个网页?她开始上瘾了。所以,没有选择斯坦福、MIT 的编程学位,她更喜欢 Hack Reactor 的全栈动手实践。先学 JavaScript、React,后面的想法是机器学习、计算机视觉……这个女生就是 Preethi Kasireddy。

接触区块链之后,金融从业背景和全栈编程能力让 Preethi 更加如鱼得水。从 Coinbase 工程师到智能合约设计的自由职业者,究根问底的天性让她开始用最浅显易懂的语言来向大家解释区块链技术的真相。

但是,不了解分布式系统的工作原理,不了解人们如何能在分散的网络上达成共识,你始终无法真正理解区块链技术的创新之处。众所周知,密码学和分布式计算都不是什么新鲜事物;那为什么把它们整合在一起的区块链技术,却能够迫使科学家和工程师不得不去重新审视分布式计算的基本范式呢?

接下来,我们就听 Preethi 从分布式系统的基本概念说起,一步一步说到公式算法,特别是中本聪共识的真正精妙之处,进而抓住区块链技术不会随泡沫而飘散的真实内涵:

2

分布式系统其实不是一个新鲜的话题,有关这个课题的研究已经进行过几十年了。

随着比特币、区块链等话题在网络上风生水起,分布式系统也逐渐走进大众的视野。区块链始于比特币,它本身就是一种新型的分布式系统,它们的流行反过来又促使分布式计算领域的研究发生翻天覆地的变化。

想真正弄懂区块链,充分理解分布式系统是必不可少的。

那么,你又该如何去了解分布式系统呢?

这个话题很难三言两语说清楚,因为它所涉及的知识实在是太广泛、太琐碎了。关于分布式计算的资料文献要么晦涩难懂,要么不成体系。况且,随着应用场景不断拓展,分布式系统又衍生出数百种不同架构,分别服务于数百种不同的需求,这一切让整个问题愈显复杂。

而如何把复杂的问题简单化,把生僻的话题讲明白,也就难上加难了。所以,在区块链概念满天飞的今天,如何 Get 到分布式系统和共识机制的基本概念而不被忽悠,就显得愈加迫切了。

本文正是出于这样的目的来介绍入门区块链的这一基础:

  1. 什么是分布式系统?
  2. 分布式系统的基本性质
  3. 分布式系统中的共识问题
  4. 一些基本的共识算法(Paxos、Raft、DLS 和 PBFT)
  5. 中本聪共识为什么这么牛?

请记住,如果读读这篇文章,你就想成为行业大拿,这肯定是不现实的。

一、什么是分布式系统?

分布式系统是一组不同、分散的的进程,它们之间能够互相协调,通过相互间的信息传递完成一个共同的目标。尽管这些进程是分开的,但呈现给用户的,是一个系统、一个整体。

分布式系统是围绕同一个目标而协同工作的一群计算设备。

进程可以是“节点”、“个体”、“计算机”或“组件”,在本文中,它们的意思都是一样的。与之类似,“网络”与“系统”表达的也是同一个意思。

前文中说过,分布式系统有数百种体系结构。

例如,一台计算机可以看作成一个分布式系统——CPU、内存 和 IO 设备都是独立的进程,它们相互协作完成同一个目标,比如上网、编程、游戏。

再比如,下图中飞机也可以看做是一个分布式系统,各单元共同协作,实现飞机的空间转移。

3

https://www.weetech.de/en/news-info/tester-abc/distributed-system-1/

类似的例子不胜枚举,在本文中,我们主要讨论进程是独立分散的计算机的分布式系统。

4

二、分布式系统的基本性质

分布式系统有一些基本的共性,它们包括:

1、并发性

系统中的进程是同时操作的,多个事件同时发生。换言之,网络中的每台计算机都在同时、独立地执行任务。

最大的难题在于协调。

5

Lamport, L (1978). Time, Clocks and Ordering of Events in a Distributed System

2、缺少全局时钟

在分布式计算机系统中,我们需要确定事件发生的先后顺序,但由于各台计算机在空间上是分开的,所以,我们缺少一个全局时钟。

在《分布式系统中的时间、时钟和事件顺序》这篇论文中,Leslie Lamport 展示了他的排序方法,首先需要记住以下两点:

消息发送在收到之前。

每台计算机都有一系列的事件。

通过确定某两个事件的先后,我们可以知道系统中事件的部分顺序。

译注:部分顺序——对应于总体顺序,例如:三个事件的特定顺序是 A>B>C,在一次计算中,我们只要求 A>C,不在乎 B 何时发生,这就是部分顺序,那么 A > B > C, A > C > B 和 B > A > C 都满足部分顺序。

Lamport 的论文中阐述了一种算法,它要求每台计算机都能从另一台上收到信息。通过这种方式,得到部分顺序后,总体顺序也可以逐步推出来。

在这里,我们是完全根据每台计算机收到信息的时间来排序的,那就会产生一些异常状况。因为各地的时钟或多或少都会有差别,这就导致系统顺序与外部用户感知到的顺序是不同的。

为了处理这种异常,Lamport 想出一个办法,同步各地的物理时钟!

问题这样就能解决了吗?太天真了,年轻人!

同步大量独立的时钟绝不是一个简单的事情,而是一个非常复杂的计算机科学问题。即使你在最初精确地设置了一大堆时钟,由于时钟漂移的存在,随着时间推移,时钟一定会有所变化。

译注:时钟漂移——各个时钟的计时速度存在细微差别,随着时间推移,一个时钟的运行速度与其参考时钟不完全相同,失去同步。计算机中使用的以晶体为基础的时钟也会发生漂移。容易被定时攻击所利用。

因此,在分布式计算机系统中,时间和事件顺序是根本障碍。

3、独立进程故障

在分布式系统中,每个进程都可能发生故障,这些故障可能是进程崩溃或失控,可能是信息遗漏、歪曲或重复,也可能是恶意信息,还可能是网络延迟、断网断电。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读