社区所有版块导航
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学习  »  区块链

区块链和共识:理解区块链和用例的非技术性方法

区块链技术学习 • 5 年前 • 631 次点击  

来自:区块网,作者:考拉

链接:http://www.qukuaiwang.com.cn/news/143329.html


区块链技术是近年来人们越来越感兴趣和关注的课题。有很多关于这个主题的讨论、活动和出版物;然而,大多数关于区块链的内容都具有误导性。


关于区块链技术的真相、它的功能以及它对企业未来的影响,人们仍然有很多困惑。甚至有人提出,区块链将取代医生。



不,区块链不是来统治我们的未来的。作为一名致力于开发该技术并将其应用于实际场景的技术人员,我认为现在应该对区块链进行清楚的说明,并就其好处和最合适的用例达成共识。

我认为,人们在解释这项技术时最常犯的错误是,在解释技术细节时,甚至没有提到我们最初为什么需要它。要清楚地理解一个解决方案,最好的方法是首先理解问题本身。那么,区块链存在的目的是什么?它解决了什么问题?

“共识”是我们在这里寻找的关键词,具体来说,它是计算机系统的共识。由于我们已经开始构建多进程、多机器、可伸缩和冗余的系统,所以我们在系统的历史和当前状态方面存在共识问题。

我们在这里讨论的计算机系统可以被认为由两个基本部分组成。我们有当前状态的数据,我们有规则来处理数据,改变它,创建它。


这些系统有多个部分,即通过部分可靠的网络分布和连接的机器来实现。系统的各个部分对收集到的数据进行处理,并根据系统预先确定的规则运行,以此,对数据进行操作


在此过程中,它们需要彼此同步,而同步的目的是保持数据的完整性和系统的共识性。事实上,无论它们是如何分布的,它们都试图像一个原子实体那样工作。

当我们有一个分布式系统时,我们经常不得不面对共识的问题。

为了保持数据的完整性和正常工作,分布式系统的各个部分相互通信。不幸的是,他们的通信渠道是不完善的计算机网络,数据可能丢失或延迟。

此外,还存在竞争条件问题,可能会与其他竞争部分的工作发生冲突。在这些情况下,共识算法可以帮助我们,有几种成熟的算法,如PAXOSand RAFT。我不会详细介绍这些算法,但是我们需要知道的是它们是在一个可信任的环境中工作的。我的意思是,系统中的每一方都依赖于这样一个事实,即系统的其他组成部分是根据规则工作的,而不会试图破坏系统。

另一方面,分散式系统与分布式系统的不同之处在于,它缺乏中央权威,并且对业务网络的其他各方缺乏信任。旧的共识算法在分散的环境中变得不够。这就是区块链解决方案和拜占庭共识算法帮助我们的地方。


在分散式的系统中,没有任何一方说了算。即使我们可以依靠其他各方的意愿,建立一个健全的制度,我们也需要执行规则,并能够相应地运行这个制度。那么,当没有人来统治这个体系时,我们如何让它运转起来呢?当我们进入一个分散的环境时,我们的共识问题会发生一些变化,变成拜占庭式的共识问题。


拜占庭共识不同于分布式系统的共识。在分布式系统中,所有各方都可以信任对方正确地工作。然而,拜占庭式的共识必须考虑到不可靠的政党,甚至那些反对体制的政党。区块链系统固有的拜占庭容错算法是分散业务案例的止痛药。

区块链技术的价值在于它所嵌入的拜占庭共识性算法。事实上,块、链只是一个巧妙设计的工具,帮助我们达成共识,并保持它。在区块链实现中使用了许多共识的算法。举几个例子,我们可以提到PoW (work proof)、PoS (proof of stake)、PoA (proof of authority)、PBFT等等……

基于区块链的系统按其性质可分为三类:公共的、许可的和私有的。在公共区块链中,任何人都可以访问和参与网络。比特币是公共区块链的一个很好的例子。在一个被许可的区块链中,只有那些被授权的人才可以参与网络。私有区块链是用于替换机构中基于数据库的解决方案的内部区块链。

虽然区块链因比特币的流行而出名,但加密货币只是合适的用例之一。在企业界,尤其是在金融业,有很多研究和工作正在进行,以利用这项技术。

企业应用程序通常更喜欢经过许可的区块链。企业区块链系统通常选择PoA、PBFT算法或其变体作为共识算法。

对于在这个领域工作的人来说,为区块链找到一个合适的用例是一个常见的痛点。要找到合适的用例,我们应该看到区块链解决的问题是分散的、不可信的系统。在这样的系统中,多个参与方共同工作,但并不一定信任彼此。区块链技术使得网络中没有必要信任其他系统。

在过去许多多方协作的业务案例中,通常会找到一个新的可信第三方来运行系统。中央银行、清算与结算银行等机构都扮演着值得信赖的第三方角色。所有各方都会信任第三方来运行这个系统。企业区块链技术将第三方的信任分配给网络本身。与只与一方信任和共享所有业务不同,参与其中的每个人都信任整个网络来正常运行。区块链和共识算法使得对数据达成一致成为可能,甚至可以存储在数据上运行的系统规则(智能合约)。

那么,我们如何为区块链选择正确的业务模型和用例呢?

与普遍的看法相反,如果使用传统的数据库和web服务技术可以合理地实现某些业务模型,那么区块链技术很可能不是一个合适的替代方案。另一方面,任何需要建立可信第三方的企业都非常适合区块链技术。在这两种情况之间的任何地方都有区块链技术候选项,需要单独考虑。

另一个可能出现的问题是,区块链如何影响已经建立的可信第三方,甚至未来的第三方?同样,与普遍看法相反,区块链不能取代这些机构。它只是一个技术基础设施,仍然需要建立网络,定义系统的规则,并负责它。所以区块链将为第三方做的是通过自动化大部分底层工作来减轻他们肩上的负担。

后面,我将尝试深入探讨共识主题,并计划分析实际的区块链业务案例。我还想谈谈我们在应用区块链技术时所面临的问题,尤其是大多数未知的隐私问题和ZKP解决方案。与GDPR相关的问题在多方业务案例中的含义,以及如何使用区块链和高级加密协议解决这些问题,也是我想提到的主题之一。



●编号275,输入编号直达本文

●输入m获取文章目录

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37751
 
631 次点击