社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

干货 | 一致性算法与区块链基础设施建设(附PPT)

数据派THU • 5 年前 • 517 次点击  


本讲座选自清华-青岛数据科学研究院大数据基础设施研究中心特约研究员、加拿大Viscore公司创始人兼总裁刘运渠先生于近期在清华大数据“技术·前沿”系列讲座上所做的题为《一致性、原子广播与区块链》的演讲。


后台回复1031获取完整版PPT~


 

刘运渠:要理解区块链,我们必须理解分布式系统,以及分布式系统如何保证一致性。这里的一致性指的是英语里的consistency。一致性和时间有直接逻辑和数学关系。爱因斯坦狭义相对论说没有时间,只有同步的事件。在计算机领域中,Leslie Lamport在他的著名论文里面说过,他不知道物理世界里面有没有时间,但是可以明确的说计算机系统里没有时间。FLP和CAP都表明在非同步的网络上要实现一致性技术是不可能的。 工程上在一定概率内,例如99.9%,可以实现可靠性一致性等等。


一致性在我们日常活动中例子,可以用我们几个人去哪吃饭的决策过程来举例。有几个方案来决定。一个是一人决定。第二种是一个人说的不算,需几个人投票。第一种方案是很典型的中心化权力方案,第二种方案我们用高大上投票方案,很多一致性基于多数投票(Quorum)的。比如说在比特币里是最长链说了算,DAG里面说权重最重的那部分说了算,其实都是投票制的方案。

 

用计算机的术语来描述一致性。同样10台电脑,上面都有一个变量叫A,当所有变量A被赋值为1的时候,我们说是一致的。如果有9个机器赋值为1,另外一个机器赋值为0,这就是不一致。我们知道赋值不会自动发生,一般是有一个状态机给它赋值。如果多个节点的状态机里面,状态都是相同的,这就是一致的。在一个集群里面,所有状态机,输入状态机的数据是相同的,而且是同顺序的。这时候状态机就会停止在同一个状态,我们说状态机取得了一致。


在区块链场景里面一致性到底是什么意思?无非是两个问题:


  • 每一个地址和账号里面,UTXO的数据是一致的。

  • 谁把钱转给谁,保证这件事情一致,这是电子货币的系统的基础。

 

假设我们的资产不是电子货币,而是任何其他的电子数字资产,也就是说你要对数字资产的状态和交易数据一致。

 

用阿里巴巴的讲法,分布式系统有两个最基本问题(一致性与唯一性),和两个最基本的技术,data replication,与一致性哈希。我今天只讲是Data Replication,状态机在它开始工作之前,我也可以当成一个数据处理。一致性问题可以转化成Data Replication问题,是因为我们可以转化成状态机一致性问题,状态机翻转问题。外部一致性的问题也可以理解为Data Replication问题。

 

假设状态机本身是运行良好,我们可以把一致性转化为广播问题。另外,很多时候前状态和后状态之间没有因果性,没有因果性的事件之间不需要顺序上一致。只有因果性事件才需要顺序上的一致。


在广播问题中,FIFO广播是指消息按照它送的顺序收到,日常交谈中这几乎显然的,那是因为我们有空气广播作为稳定的广播通道。如果你在IP网络发一个包,你先发的后收到,后发的先收到。


原子广播意思就是除非所有人都收到,否则这个消息就撤回。只要其中有一个人没有听到,就把信息撤回。

 

拜占庭将军,是不确定性的通信系统。这个问题怎么解决?广播出去让所有人都知道,广播解决方案可以叫做去中心化,也可以叫多中心化。

 

广播有很多种实现。


  • 第一种尽力实现的广播服务,网络提供广播服务,但是不保证送达。就像IPMC。

  • 第二种保证送达广播,但不保证FIFO,也不保证原子性,例如简单的基于TCP的overlay广播。最后一种是原子广播与可靠广播。


第一层是用户层实现,好处是很容易应用,缺点就是性能比较差。第二层在物理层实现,但是还没有一种网络设备提供可靠的广播。

 

常见的交换模型如Infiniband模型,所用的方法三级multi-stage模型。大家会看到这个方法实现会有blocking。


我们的新架构,Optical Broadcast-Select Switch,里面有N的3次方的节点,实现N的N次方的任意组合,所以可以支持可靠的任意光广播(arbitrary multicast)。在加拿大做的产品原型prototype,在12个节点做到了68亿不丢包。可以用这样硬件做一个广播负荷的卸载技术。这是可以在广播上应用的高性能技术。

 

最后是区块链与基础网络的问题。区块链技术的一个重要价值是去中心化的交易,不需要第三方信任,可以支持一个完全开放的系统。区块链的不可能三角是指去中心化,性能与安全性三个不可能都同时满足。


区块链基础设施,基于现在互联网络设施的区块链,如同当年的64K拨号上网internet,不仅仅是性能问题,而是基础设施的设计原则发生了变化。它的性能里面的交易特性,跟总量、带宽、时延都有关系。


我们用一个网络路由算法Pub/Sub architecture来提升广播服务。这个网络平面在基础设施层面上提供一个广播的服务,不是简单把数据乱丢,而是知道哪个节点是我要的。

 

清华数据院对区块链基础设施的想法,我们提供了广播的高速广域,不是仅仅为了支持区块链服务,而是支持整个数据服务。 我们希望做到更低的时延。

 

整理:张卓婧


后台回复1031获取完整版PPT~



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/RyUmZI8bZp
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/26031
 
517 次点击