比特币的核心组件叫做“区块链Blockchain”,它是一个全球共享式的记录着每一笔曾经发生过的比特币交易的文件。它的名字源自平均每10分钟P2P的比特币网络就会添上一个新的收纳了最近的交易记录的“区块Block”。
这一区块链是参与到一个叫做“挖矿mining”的交易结算过程中的数量巨大的计算机中所共享的。为避免这些计算机过载,比特币软件在目前限制每个区块的最大尺寸在1MB。结果是:目前,比特币网络每秒只能处理大概7笔交易。相较之下,Visa网络的设计目标是可以处理峰值每秒10000笔的交易。
到目前为止,这还不是个大问题,因为比特币用户们现在每秒大概只生成一笔交易。但如果比特币经济持续增长,上面说的那个限制早晚会成为一个麻烦。
比特币网络可以进行修改,以应付将来可能出现的比现在高得多的交易量吗?为了找到问题的答案,我和著名比特币开发者Mike Hearn聊了聊。他帮助我了解了当前比特币系统性能的限制,以及比特币开发团队关于如何解决这些问题的计划。
Timothy B. Lee(作者): 你可以简单的讲讲一下当前比特币网络对于可以容纳多少笔交易的限制吗?
Mike Hearn: 现在市面上存在着两种比特币客户端:“完全节点”和“轻节点”,后者我们又称作简化支付验证(SPV)节点。轻节点不关心区块的尺寸有多大,而完全节点有个硬性的物理尺寸限制(也就是每个区块最大1MB)。
所以每10分钟1MB,除以每笔交易记录的平均尺寸,我们可以得出当前的限制大概是在每秒7笔交易。
比特币每日交易笔数。现在理论上的限制大概是每天600,000笔交易。
我们现在距离那个限制有多远?
如果你看过那个每天交易数量的图,就会知道我们当前交易数量的峰值是每日70,000笔。我们现在甚至都还没到每秒一笔交易(也就是每天86,400笔交易)的程度。数值在增长。它增长的很好很快。如果你画出一张整体图的话,就可以看到它有个漂亮的小指数斜率。我们距离那个限制还有相当长的一段距离。因为各种各样的原因,这也说不好。但我们目前完全不用担心容量用完这回事。
如果想要提供超过每秒7笔的处理能力,会有些什么要求?
我们只需要拿开那个限制,并让人们更新他们的节点就行了。我们还没有做这件事情的原因是,我们还在想办法搞清楚究竟是换一个新的限制还是完全不要加限制好了。如果不加限制的话,我们如何保证没有人会故意制造一个让人们感觉讨厌的臃肿区块。
Gavin(指Gavin Andresen,他是比特币的头号开发者)正在为这个事情做一些准备性的工作。他现在正在改造收费系统。我们的设计目标是在将来不对区块尺寸设任何限制,但默认情况下矿工们将拒绝处理那些大到离谱的区块。
你可以解释一下比特币交易费是如何运作的吗,以及为什么这个系统需要它们?
在比特币世界里,你可以在任何一笔交易上附上一笔交易费(是指一笔付给处理这笔交易的矿工的报酬)。在最开始比特币还是个新生事物的时候,所有的交易都是免费的,并且随着时间的流逝规则也有所调整,所以你还是可以发送不付费的交易,但它们会的处理速度会比较慢。交易费充当着一个阻止虚假交易泛滥于网络上的限流器。如果每笔交易都是一直免费的,你会看到人们有事没事就把比特币来来回回发送着玩。
现在我们遇到的主要麻烦是,贯穿全网的交易费设定和协商机制非常基础。费率不是真正的被协商出来的。最低费率是Gavin在不到一年前决定的。当时比特币的价格比现在要低得多。因为这一数值是固定在软件中的,它们不是依美元而定,而是依比特币而定。所以比特币系统在没有良好的理由的情况下,交易成本变高了。Gavin正在研究怎么对那个机制做出改变。
节点将可以观察到广播到系统上的交易,之后他们会看看交易要花多少时间。所以他们会说“如果你想要你的交易在三个区块之内就被处理,你就得付这么多的交易费。”这个想法是矿工可以根据自己的意愿设定交易费。我希望的是,如果其他事情也一切顺利的话,交易费将明显的降低。
当我在2011年开始使用比特币的时候,我的比特币软件花了一天的时间来下载从2009年起源开始到2011年的所有比特币交易记录。到了2013年,如果客户端连续几天没有开启运行的话,它每次启动就得花几个小时来赶上最近几天的交易记录的进度。这个问题会不会在未来随着网络日益繁忙而变得越来越严重?
终端用户不再需要运行这个软件(也就是那个会把整个区块链文件下载下来的软件)了。我们一直都在做的事情之一,就是让用户们不再使用Bitcoin-Qt,也就是你用的那个(下载整个区块链文件的)软件,而改用其他像Multibit这样的客户端。Multibit将可以在几秒钟之内和区块链完成同步。(搞定上面那个事情)曾经是个大麻烦。如果你有一台一直都在运行着并连接到互联网的计算机,那么你可以通过运行(那个完整版的比特币客户端)软件来帮助整个系统的运行,但如果你只想使用它,那么你就可以选择使用这种更轻量级的软件。(译者写了个迁徙的教程,链接见此)
轻量的程度也有所不同,在2011年的时候,可选项只有Bitcoin-Qt或者网络钱包。从那以后,我们开发了一些中本聪(比特币的创造者)在他的原始论文里面描述的东西。相较于Bitcoin-Qt,它使用了一个相对稍弱的信任模型。在SPV(译者注:简化支付验证)模型中,通过像Multibit和Hive这样的客户端,它仍然扫描整个区块链,并且它假设“拥有大部分矿工的那条区块链就是正确的那条”。而不是验证所有的内容,它只是相信大部分的矿工都是诚实的。它仍然是P2P点对点的。不存在一个告诉你该做什么或者你的结余是多少或者其他东西的中央服务器。只要大部分矿工是诚实的,那么它就能顺利运作。
基本上来说,一个SPV模型拥有一个清单,清单列着的是已经知道是存在于几个月前的最佳区块链上的区块,并随后就只下载区块的一小部分。它下载区块的头部信息,并接着下载相关的交易信息。它连接到一个随机的(在比特币网络上的)节点。SPV客户端并不做出直接的查询。取而代之的是它会上传一个叫做有噪音Bloom过滤器(译者注:Bloom过滤器是以在1970年发明了它的Burton Howard Bloom先生命名的,更多内容请看此链接)的东西,这是个钱包(也就是SPV客户端)需要的看起来像乱码的东西。节点发回一些区块链的子集。SPV客户端会做一些数学上的防伪检查以确保这些东西不是节点伪造的。
所以如果普通用户开始使用SPV客户端而不是完全版的比特币客户端,那对比特币网络的架构会有什么影响呢?
老实讲,我们还没有很好的度量标准。现在网络上有成千上万个的节点。但所发生的事情是,随着时间的推移,网络结构正在改变。节点的组成上来看,在家里运行的临时节点逐渐减少,而运行在数据中心的长期节点日益增加。
现在租用服务器是非常廉价的。虚拟化技术使得它变得很便宜。所以对于有工作需要运行自有服务器的个人来讲,在服务器上面运行一个比特币节点是完全可行的。完整节点的确会给你带来更好的安全性。举个例子,如果你在运营着一家线上商店,运行一个完整节点是很有意义的。这真的很便宜,反正你的计算机不管怎么样都是要运行着的。
作者简介:
Timothy B. Lee报道涉及科技政策,包括版权和专利法案、电信监管、隐私、以及言论自由的内容。他同时还会写一些关于科技的经济文章。他之前为Ars Technica和Forbes写过东西。
翻译 He1l_Q
本文如有帮助,请考虑捐助:15X9AMhccjqqPRkhpgraoj7fgdqymW3iSC
欢迎转载,转载时请注明作者翻译者和出处,谢谢支持!
登录
评论