LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 小乔和你聊聊区块链的事儿(652)

小乔和你聊聊区块链的事儿(652)

2020-05-15 乔辞念安 来源:区块链网络

曾经坐下来构建DApp的任何程序员都必须考虑当前公共区块链的局限性,最重要和显而易见的一个问题是吞吐量有限,即每秒处理的事务数。为了运行可满足实际吞吐量要求的DApp,区块链必须具有可扩展性。分块是区块链扩展的一个答案。分片有望通过更改网络验证块的方式来提高吞吐量。分片使其在所有(链上)缩放解决方案中独一无二的关键特征是水平缩放,即吞吐量随着采矿网络的扩展而增加。分片的这一特殊特征可能使其成为刺激迅速采用区块链技术的理想燃料。 本文将简要讨论现有区块链平台的扩展性问题,因为大多数读者必须已经熟悉它。然后将讨论分片及其不同形式如何成为解决扩展问题的有希望的解决方案。它还将涉及实施分片的一些理论和实践挑战,以及如何克服这些挑战。


当今公共区块链平台面临的最大问题之一是可扩展性。所有流行的平台都在努力处理每秒大量的交易。实际上,今天的公共以太坊和加密货币网络平均每秒可以处理7-10笔交易。这些数字远不如Visa这类集中支付处理器的平均速度,后者每秒平均处理大约8,000次交易。缓慢的交易处理造成了一个主要问题,因为它们阻塞了网络,使得难以将区块链用于实时支付等应用。付款所需的时间越长,给最终用户带来的不便就越大;这是为什么像PayPal这样的付款方式和像Visa这样的信用卡仍然更具吸引力的主要原因之一。随着更复杂的DApp开始依赖同一网络,由事务速度较慢引起的问题只会更加复杂。从更高的技术角度来看,所有区块链共识协议都具有挑战性的局限性:网络中每个完全参与的节点必须验证每笔交易,并且必须从其上的其他节点寻求协议,这是区块链技术的组成部分,可创建分布式分类帐并它安全。在加密货币和以太坊等大多数链中,节点都是由公众运行的。尽管分散的共识机制提供了一些至关重要的优势,例如容错,安全性,政治中立性和真实性,但是这种验证链的方法是以可伸缩性为代价的。随着这些公共区块链变得越来越大,验证它们将需要越来越多的处理能力,这可能会在这些网络中造成瓶颈并减慢新应用程序的创建速度。


分片是一种可伸缩的技术,它受数据库分片的传统概念的启发,该技术将数据库划分为多个部分,然后放置在不同的服务器上。在公共区块链的上下文中,网络上的交易负载将被分为不同的碎片,包括网络上的不同节点。结果,每个节点将仅处理一小部分传入事务,并且它将与网络上的其他节点并行处理。将网络划分为碎片将导致同时处理和验证更多事务。结果,随着网络的发展,有可能处理越来越多的交易。此属性也称为水平缩放。我们可以想象现有的区块链像一条繁忙的高速公路一样运作,只有一个收费站运行一个收费站。当人们排长队通过收费站时,结果将造成交通阻塞。实施基于分片的区块链就像在高速公路上增加15或20个收费站。这将大大提高流量通过站点的速度。分片将产生巨大差异,并显着提高交易速度。基于分片的区块链的实施可以为公共区块链带来各种好处。首先,每秒可以处理数千笔甚至更多笔交易,从而改变了人们对加密货币作为支付方式的效率的感觉。提高交易吞吐量将为去中心化系统带来越来越多的用户和应用程序,这反过来又提倡进一步采用区块链,从而使挖掘更加有利可图,并吸引更多节点进入公共网络,从而形成良性循环。此外,分片可以帮助降低交易费用,因为验证单个交易所需的处理更少。节点可以收取较小的费用,并且仍然可以从中获利。加上低廉的费用和高的交易处理能力,公共链将对现实中的用例越来越有吸引力。这些积极趋势持续的越多,我们通常会看到更多的主流加密货币和区块链应用。


这是基本概念,但是还有更细粒度的方法来实现分片策略,例如网络和事务分片以及状态分片。通过网络和交易分片,将区块链节点的网络划分为不同的分片,每个分片形成为处理不同交易子集并达成共识。这样,可以并行处理未连接的交易子集,从而将交易吞吐量显着提高几个数量级。另一方面,在当今主流的公共区块链上,存储交易,智能合约和各种状态的负担由所有公共节点承担,这可能使其在维持区块链上持续运行所需的存储空间方面变得过分昂贵。已经提出了一种称为状态分片的潜在方法来解决此问题。关键是将整个存储分为几部分,让不同的碎片存储不同的部分。因此,每个节点仅负责托管自己的分片数据,而不负责完整的区块链状态。


尽管所有不同形式的分片可能都是非常直观的,但对技术细节进行假脱机可以揭示方法的复杂性和潜在的挑战。其中一些挑战很容易克服,而其他挑战则并非如此。一般而言,网络和事务分片更容易完成,而状态分片则更为复杂。下面,针对不同的分片机制,我们将对其中的一些挑战以及如何克服这些挑战进行分类讨论。分片的第一个也是最重要的挑战是分片的创建。将需要开发一种机制,以安全的方式确定哪个节点驻留在哪个分片中,以避免受到对特定分片有很多控制权的人的可能攻击。击败对手的最佳方法(至少在大多数情况下)是通过随机性。通过利用随机性,网络应有可能随机采样节点以形成碎片。随机采样可防止恶意节点过多填充单个碎片。但是,随机性应从何而来?公开随机性最容易获得的来源是块,例如交易的Merkle树根。块中可用的随机性是可公开验证的,并且可以通过随机性提取器从中提取(接近)统一的随机位。然而,仅具有随机机制来将节点分配给分片是不够的。还必须确保网络在分片中就成员达成一致。例如,这可以通过诸如工作量证明之类的共识协议来实现。


事务分片并不像听起来那么简单。考虑在类似加密货币的系统(没有智能合约)中引入交易分片,该系统的状态是使用UTXO定义的。让我们假设网络已经由碎片组成,并且用户发出了一笔交易。该事务有两个输入和一个输出。现在,应如何将此事务分配给分片?最直观的方法是根据交易哈希的最后几位来决定分片。例如,如果哈希的最后一位为0,则将事务分配给第一个分片,否则将其分配给第二个分片(假设我们只有两个分片)。这允许在单个分片内验证交易。但是,如果用户是恶意用户,则他可能会使用相同的两个输入但不同的输出来创建另一笔交易-是的,两次支出。第二个事务将具有不同的哈希,因此,这两个事务可能会以不同的碎片结束。然后,每个分片将单独验证收到的交易,而忽略另一个分片中正在验证的双花交易。为了防止重复支出,在进行验证时,分片必须相互通信。实际上,由于双花交易可能落入任何分片,因此接收交易的给定分片将必须与其他所有分片进行通信。实际上,通信开销可能会破坏事务分片的整个目的。另一方面,当我们拥有基于帐户的系统(没有智能合约)时,解决该问题要简单得多。这样,每个事务都会有一个发送者的地址,然后可以根据该发送者的地址将其分配给一个分片。这确保了两个双花交易将在同一分片中得到验证,因此无需任何跨分片通信即可轻松检测到。

好啦,今天的内容小乔就给大家讲到这里啦,下面我们来一起看看数字货币的数据:


最后祝大家天天开心,生活愉快!

—-

编译者/作者:乔辞念安

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...