如何理解比特币系统扩容

2016-09-18 10:10 来源:巴比特资讯 阅读:5313
 涉及到比特币时,2016年最受关注的话题之一,是缺乏良好的计划促进未来不断增长和将其扩容。我觉得这很奇怪,因为依赖于任何系统的任何人至少应该做一些调查,在今年和未来5年或更长的时间,它可以实现什么样的增长,以及它是否可以做我们想要的。在这篇文章中,我想做一项调查,关于我们可以期望比特币进行什么样的规模扩大,根据本系统我们需要做什么,以获得更多的扩展。、 目标 比特币具有价值的首要原因,

 

6ababd9a-6e2a-448c-b9b1-349aaacd67ae

涉及到比特币时,2016年最受关注的话题之一,是缺乏良好的计划促进未来不断增长和将其扩容。

我觉得这很奇怪,因为依赖于任何系统的任何人至少应该做一些调查,在今年和未来5年或更长的时间,它可以实现什么样的增长,以及它是否可以做我们想要的。

在这篇文章中,我想做一项调查,关于我们可以期望比特币进行什么样的规模扩大,根据本系统我们需要做什么,以获得更多的扩展。、

目标

比特币具有价值的首要原因,是比特币承诺的,在不远的将来比特币将被数以百万计的人使用并被视为有用。任何货币只有当足够多的人使用它时才有价值。钱只有在实际上可以使用时,它才有价值。如果没有人用它进行支付,它的价值就不会实现。

因此,头号目标是让数以百万计的人在他们的日常生活中使用比特币,这里“使用”被定义为至少一天一次交易。和任何技术一样,我们认为这个技术明天,甚至今年就可以使用,因为增长需要时间,系统构建需要时间。

因此,我们的目标之一是,5000万个用户每天使用比特币网络发送一个交易。不是今天,而是未来的5年间。

另一个更深层次的目标是,作为家庭用户,他们可以处理比特币块区块的速度应该至少是创建区块速度的五倍。这意味着,如果某个节点断网一个小时,它将需要约20分钟,就可以赶上最新的区块(处理积压以及在处理积压时生成的所有新交易)。

速度更快更好,但达不到区块创建速度的5倍就太慢了。

底线

或者说,目前的理论支持是什么?

比特币是以各种节点软件组成实现的系统,经过几年的发展已经成熟了。但开发者已经不在真的观注基层用户的增长了。因此我们看到竞争者Bitcoin Classic和Bitcoin Unlimited开始参与竞争。像往常一样,竞争对最终用户有好处,我们看到出现了一些有关未来收益的承诺。

但让我们看看今天我们可以支持什么样的交易负载。

上周forum.bitcoin.com发表了一段关于下载时间的视频。充分验证并检查了7年,或420000个区块的历史(从比特币出现的第一天 开始)。使用中档硬件,75GB的数据需要6小时50分钟才能完全验证。中档硬件并不便宜,但它肯定不是顶级硬件或服务器硬件。换言之,这是一个很好的基 线系统。

仔细看看在6小时50分钟里做了什么:

  • 从高度为295000 区块到高度为420000区块(共125000块)每个交易签名都得到了验证。

  • 从世界各地的比特币节点那里下载了75GB数据。

  •  一个UTXO数据库包含有1100万笔交易,创建有4000万未使用的比特币地址。(可以从RPC调用得到TX设置信息)。

  • 125000个区块包含了104847758笔全部验证了的交易。这是1亿500万个txs。

我们知道这都是在没有调整设置的情况下完成的。这是一个Classic 1.1.0节点(其性能相当于Bitcoin Core 0.12.1)

需要什么工作?

让我们看看,并把我们的目标与我们的底线进行比较。大多数人都喜欢软件总是能越快越好,但优先事项很重要,我们应该看看哪些部分需要注意。

我们的目标是,单个节点在24小时内能够处理约5000万个交易。

我们注意到,在6小时50分的基线检查,我们的节点实际上是在下载、存储和检查将近1亿500万的交易。可以计算得出下载和验证的速度是每天3亿6800万笔交易。

TXday

这意味着我们每天5000万次交易的未来5年目标对于今天的带宽和CPU功率已经不是问题。事实上,我们的基线系统(译者注:基线系统指前面提到的中档硬件)可以使用一个因素7超越了我们的目标。

今天我们的基线系统可以处理7倍于我们未来5年目标的数量!

今天,每个独立的比特币节点每天可以下载、存储和验证3亿6800万个交易。这个量级是比特币现在使用量的许多倍。

我如何理解系统扩容?

典型家庭点

需要有完全验证所有区块的节点,以确保每个人都诚实。它也给我带来心灵的平静,如果我相信我的节点,我就不需要相信任何别的人。所以我预见,你会得 到聚集全节点的小社区。你可以让你的家人使用它,或者只是为了支持社区,你的足球俱乐部或教堂将设置一个社区。个人将使他们的手机钱包至少有一个完他们信 任的完整节点是来自他的社区的人。

这保留了比特币最大的资产,你不必信任银行或政府。通常常见的是,人们相信他们的当地教会或足球俱乐部。

此类节点不需要保存从零高度区块的完整历史区块。它会使用精简。使用今天的硬件,并不意味着它不能够为全部历史区块服务,但它绝对可以轻松地获取一个月的区块历史。然而,这意味着我们需要使软件更智能。让我们来看一些精简思想。

今天的硬盘容量很便宜。在当前区块大小的限制下,3TB的硬盘可存储75年的比特币历史数据。但是如果我们开始到达我们的目标,又会怎样呢。我们需要什么样的硬盘驱动器?

答案是,我们根本不需要任何大的东西。因为区块变大了,所以我们需要有一个更大的硬盘驱动器,这种想法是个误解。事实上我们应该做一些精简,就可以使每个人无需在存储空间方面投资更多。

我们的需要节点的最后一个大性能是互联网连接速度。为了达到我们的目标,我们需要能够实现24小时下载5000万交易,平均一个交易占300字节数据。

byet

理想的情况下,如果节点会有一段时间离线,然后上线后我们要以5倍的速度进行下载区块,来确保节点可以“赶上”最新区块。我们可能也想为其他部分增 加一些开销。但今天1.39Mbit的下载速度几乎无处不在。2GB比我们需要在5年内达到的计划快1440倍,今天在日本这样的国家就实现了。

家庭节点绝对不用担心,即使每天约5000万用户的巨大的比特币增长。他们的硬件和互联网可以毫不费力地覆盖他们,尤其是在大约5年的时候,可能已经创建了更多的软件优化。

注意,这里没有依赖像摩尔定律这样的规律,我们不需要硬件技术增长,就可以达到我们的目标。

典型用户

典型用户会使用手机或硬件钱包。如果用户使用轻量级客户端(SPV)就能够实现安全、快速支付,对硬件的实际的要求真的很低。

虽然目前的钱包还需要一些优化工作。在使用网络来更新钱包的状态方面,他们通常相当贪婪。虽然有用,但在许多情况下,不需要这样做,例如当我在国外数据流量漫游是非常昂贵的情况下。

在创建一个支付交易之前,是不需要进行任何网络通信。而只有实际的支付本身需要被转移到比特币网络。

典型用户使用手机操作,在链上扩容这件事上,这类用户是几乎不需要做什么事的。

虽然瘦客户端(thin clients)的可用性和相关主题确实需要做大量的工作。

典型挖矿节点

矿工需要一个完整的节点。在这里“全部”的意思是它验证了所有的交易。除了要满足家庭节点的需求,矿工还需要快速地和其他矿工连接,并快速广播区块传递给其他矿工。

就像对于典型的家庭节点那样,作为网络的一部分,今天大部分带宽和硬盘的容量以及CPU速度已经足够大。

此外,矿工使用他们的节点创建区块。这意味着他们需要处理一个内存池里的未确认的交易,然后创建一个新区块。现在已经在这个过程有了一些优化,但还 可以作出更多的优化。比如在该区块返回前,使用getblocktemplate RPC调用检查刚刚创建的块链以验证有效性。该检查需要相当长的时间,简单的解决办法是减弱区块的返回和验证,这样矿工越过验证就可以开始挖矿(应该至少 在100%的情况下通过)(译者注:这一句我翻译可能不确认,保留原文:This check takes quite a lot of time and a simple solution would beto decouple the returning of the block and the validation so the miner canstart mining optimistically over the check passing (it should pass in 100% ofthe cases anyway))。

当区块变的更大时,被返回的数据更多,并且系统目前使用JSON,这几乎是大型二进制数据块的数据容器最糟糕的类型了。用一个简单的东西替换RPC 接口,只是将通信格式变成二进制,这是比较容易做到的(可能是一个月时间的项目),而且可能不会造成矿工延迟太久(译者注:这一小句翻译可能不准确,原文 是:likely needed for miners to not end up waiting too long on interfacedelays.)。

在我们的基线节点中,我们解释说,从一个全新的节点从零开始完全同步需要花7个小时。如果我们将区块扩展到更大的尺寸,情况将不会是这样。它将花费 大量的时间开始做初始同步。然而,矿工需要完全同步的节点。Bitcoin Classic已经做了很大变化,这将大大缩短验证时间。它引入了动态检查点,通过一个设定一个一周内区块都没有双花的头部信息,允许矿工节点跳过验证的 交易数据(译者注:这一句翻译可能不准确,原文是:It introduced dynamic checkpoints which allow the node to skipvalidation of transaction data by assuming that about a week’s worth of blockswill not be built on top of double-spend data.)。这将让一个从零开始同步的节点可删除数以百万计的交易验证。

针对矿工,对于未来比特币客户端的另一个建议是,一个新的节点可以指向一个已知和值得信赖的节点。新的节点将接收需要从这个可信节点快速启动和运行的UTXO和所有其他细节。这意味着,在10分钟内,下载后几个兆字节数据就可以运行一个的新节点。

对挖矿来说,最重要改进是使用各种方法确保快速下载和上传新区块。

首先是极廋区块(xthin),这是只需花费25KB数据就可以传递一个1MB区块给所有矿工的方法。这种扩大是线性的,因此发送10MB的块链需要发送250KB的数据。

另一种方法是我称之为“乐观挖矿”的技术,它有助于矿工通过切分区块为两部分上传。一个部分是新区块的超快速通知。只是发送区块头部信息。收到此类 头部信息的矿工可以证实它的工作量证明的有效性,并且在这个头部信息上开始挖空块。当完整区块到达时,新区块包含的交易就可以被看到。在内存池里的所有交 易都会被添加到新区块里,最后,新区块的创建将尽可能多添加交易,然后让矿工继续挖矿。

一个挖矿节点并不需要在节点上包含钱包,也不需要在节点上存储历史区块,所以他们可以进行精简。

许多此类技术已经开发完成,也有些计划在未来一年左右完成。为了在5年后达到我们每天5000万用户的计划,大多数这些技术足够使一个矿工能够保持连接到比特币网络,而不必投资一个高端服务器的比特币节点。

结论

我尽力的目标是每天5000万个用户。从今天开始算起,该目标是一个巨大增长。但要确保我们做的正确,我的目标设置在未来5年完成。

比特币扩容是一个非常枯燥的工作,只需要很少的努力,因为早已证明现代的简单系统可以轻松实现区块尺寸扩大到目前区块大小限制的10000倍。

整个系统的扩容需要更多的工作,主要是因为矿工还没有接收到许多为安全扩容准备好的新特性。大多数的这些特性可以在几个月内补充上,包括采用像极廋区块(xthin)和乐观挖矿这种早已开发完成的技术。

我要给出的结论是:5000万用户/天的目标不仅仅是可达的,5年的时间是我们会很容易做到的。

在这个文档中根本没有提及像闪电网络这样的聪明技巧,因为没有必要。比特币可以相当容易而且几乎没有风险实现链上扩容。像闪电网络一样的想法存在相当高的风险,因为有太多的未知数。

现在关于扩容的最大问题是1MB的区块尺寸的协议限制。应该尽快删除这一协议限制。


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文