中间地带
所以,富贾们或许还能玩儿玩儿全节点,一般人就算了。
但是,增加区块链上的交易吞吐量来确定网络增加负载的成本,又会得出什么样的结果呢?
为了让比特币网络能够支持目标数量的每秒交易数(每日新增用户为 86400 个),可以计算出每个节点的磁盘吞吐量要求:

上面的公式显示了满足 SPV 客户端需求的全节点每秒磁盘读取吞吐量最小值。根据当前网络技术,以磁盘吞吐量做上限来推断满足要求的全节点运行成本。需要注意的是,运行节点的过程中肯定存在其他增加运行成本的因素,暂时不考虑这些。
假设:
根据statoshi.info上的数据,平均交易大小为 500 字节
SPV 用户每天交易一笔
SPV 客户端消耗的套接口数量为 4
每个全节点上SPV 客户端的可用套接口数量为 20
网络中SPV 客户端可用套接字的总数为 13.6万
RAID 0 配置:容量10TB,转速7200/S,成本400刀

如图所示,每秒处理交易数量不超过 100 的情况下,系统对于磁盘吞吐量的要求非常合理。 之后,为满足性能要求,就得购买多个磁盘组成磁盘阵列。
随每秒处理交易数持续增加,磁盘吞吐需求以及运行全节点成本将二次增加,很快就破产了。
对比下, Visa每秒大约处理 2000 笔交易,比特币系统中跟上SPV 客户端需求需要砸 20 万刀买硬盘。注意,图标中的全节点数量保持在8000, 实际的话,成本飙升的结果直接导致节点数量下降,那么,剩下的节点为维持吞吐要求,运行成本增加的速度会进一步上升。
接下来,抱团取暖似乎是全节点唯一的选择。

“如何避免比特币节点集中化”中讲到,比特币扩容之战中的一个根本性问题是节点的运行和维护成本。以上计算揭示了节点运行成本的复杂性,因为过程涉及各个变量,因此上述计算都以大部分变量为恒定值为前提,关注的只是硬盘吞吐量对节点运行成本的影响。
2016年有个简易(相对不严谨)民意调查显示,98%的节点运营成本不超过 100 美元/月,若增加比特币在线交易量增加一个数量级,大部分的全节点会消失,若增加两个数量级,至少消失90%的节点。
那么,又有多少人愿意打造成本高昂的磁盘阵列来运行全节点。SPV客户端数量是上去了,但是全节点数量少得可怜,有什么意义?
SPV的其他缺陷
对于不太要求安全与隐私的用户来说,SPV够用了。 但若比特币网络罗遍布SPV,也是有问题的。
SPV 的一些前提本身削弱了安全性和隐私性,好比:
SPV 客户端信任矿工能够正确验证并执行比特币规则; 客户端认为有最大累积工作量证明的区块链是有效链。
SPV 客户端认为全节点不会漏报。 虽说全节点不能捏造出不存在区块中的交易,但是能谎报包含在区块中的交易未发生。
SPV 客户端追求的是效率,所以只请求与自己相关的交易数据,那么这样会极大的曝露自己的隐私。
然后, BIP 37 方案的联合作者 Matt Corallo 还跳出来道歉,说:
当前系统中用户隐私最大的威胁就是BIP37的SPV 布隆过滤器,搞出这个烂摊子,对不住了各位。
BIP 37 方案中布隆过滤的 SPV 客户端几乎没有隐私可言,有人发现,只要给定一个公钥,就可以确定一个钱包中70%的地址。
虽然用户可以通过分配布隆过滤器在不同的节点上来解决隐私泄露的问题,但这也大大增加了网络全节点的负载,因此大大降低SPV 的扩展性。
直到今天,中本聪在比特币白皮书中描述的欺诈警报仍未实施。有研究表明,连轻量级的欺诈警报实施起来都非常困难。
例如,欺诈警报只有在真正获得欺诈证明所需数据的情况下才有作用,若没有矿工提供该数据,则无法实施欺诈警报,或许SPV 客户端并没有中本聪预想中的那么不安全。
从更高的层次来看,一个主要由 SPV 节点组成的系统将使得诸如改变比特币数量上限,甚至更改分布账这种协议变更更容易。全节点少意味着共识规则的执行呈现一种集中态势,那么共识变更遭遇的抵制也会相应的降低。不过多数人会认为这是个缺陷,而非特征。
可能的改进
理论上,SPV 的安全性和扩展性都可以通过欺诈证明、欺诈提示、输入证明和花费证明等多种方式得以改善,但目前这些方法都还处于概念阶段,对于实际应用方面并没有充足准备。
布隆过滤器承诺改善隐私泄露的状况,但是过滤器大小和误报之间如何平衡好可用性又是个问题。过滤的太粗,意味着下载过多假警报区块,过滤太细,那过滤器肯定大到SPV客户无法下载。
最近提出的紧凑型客户端过滤解决了隐私问题,但若出现与过滤结果不易匹配的情况,仍旧需要下载完整的区块链。
UTXO 承诺允许 SPV 客户端同步自己当前的 UTXO 集,不用全节点扫描整个区块链也能知道钱包的实时余额。就是说,提供UTXOs存在的证明。
要求 SPV 客户端提交工作量证明或微支付可以提防布隆过滤器受DoS 攻击,但是这两者都没有提出直截了当的解决方案。
有人指出,使用 BIP 70 方案的付款协议直接将付款人的 UTXO ID告知对方,这样对方可以直接向全节点请求相关的数据信息,相当于跳过了布隆过滤器,若愿意接受泄露隐私的风险,这种方法也是很高效的。
合适的扩容方案
若忽略增加块大小产生的其他一系列如:区块传播延迟、UTXO 集扩展、初始区块同步时间、安全性和隐私问题,那么从技术上来讲,比特币扩容满足十亿级别用户是可能的。 但前提是有人愿意投入大量资金和资源来开发并改进维持这个系统运行的基础设施和软件。
但是,比特币似乎不可能以这样的方式发展,因为现实中存在更加有效的扩容方式。其中最有效并且已经实施了的扩容方案是:整合集中 API 供应商。选择这种扩容方案,也意味着牺牲了一些去信任与隐私元素,好在此类方案中的交互涉及到一些能够淡化某些风险的合同协议。
例如闪电网络等去信任的第二层协议则提供了更为有效的扩容方案,大量的交易可以在主链之外进行。
虽然这种扩容方法在技术层面上比传统的集中式扩展更为复杂,并且还要克服一些独有的挑战,但是用于研究和开发这些路由协议的前期投资将会为系统带来巨大的长期收益,因为这些方案能够数量级减少整个网络负载。
当然,还有其他一些方案可以探索:
1. 使用Chaum代币,具有完美隐私性的中心化保管方案,例如 HashCash。
2. 中心化非保管零知识证明系统,例如 TumbleBit。
3. 联合(半信任多重签名)侧链。
4. 矿工担保(半信任)的驱动链
比特币扩容方案千姿百态,不变的是对安全性及隐私性的追求,对此必须有耐心且以长远的眼光来思考这些问题。
Could SPV Support a Billion Bitcoin Users? Sizing up a Scaling Claim - CoinDeskwww.coindesk.com

网友评论