比特币网络如何在不损害安全的前提下有效地支持大量用户
扫描二维码
随时随地手机看文章
本月早些时候,一位开发者提出了一种新的比特币可伸缩性解决方案,它利用了零知识证明加密技术。
该可伸缩性方案结合了加密货币项目Coda和零知识证明中开发和实现的各个方面,从而支持一种创新类型的比特币客户端。运行此实现的客户端将能够在理论上实时同步和验证整个链,并且无论事务数量如何,数据大小都是恒定的,并且具有几乎即时速度的完全验证安全性。
此外,新提议无需对现有的比特币软件进行任何修改就可以实现,如果成功,将消除当前比特币社区普遍存在的许多规模问题。
一个快速入门
比特币规模之争一直是一个长篇大论、似乎永无休止的问题。有证据表明,中本聪甚至在推出比特币网络之前就提出了规模扩张的担忧。
2008年,当中本聪第一次向密码学邮件列表宣布他的项目时,一个叫James Donald的加拿大密码学朋克第一个评论并表达了他对中本聪提出的系统似乎规模不大的担忧。Donald对此的评论是:“我们非常、非常需要这样一个系统,但在我看来,你的提案似乎没有达到要求的规模。为了及时发现和拒绝双重支出事件,交易必须大部分实现,这要求每个对等点有大多数过去的交易数据,或最近发生的大多数过去的交易数据。如果数以亿计的人在做交易,那就需要很大的带宽——因为每个人都必须知道所有的信息或者至少是其中的很大一部分。
简而言之,这是今天关于可伸缩性争论的主要前提。当时,中本聪对Donald的回应是:“早在网络达到如此大的规模之前,用户就可以使用简化的支付验证来检查双重支出,这只需要拥有区块头链,即每天12kB左右。”
中本聪的反应被广泛引用作为证据,证明他相信链上扩展将是网络的一个可行的解决方案。
然而,尽管中本聪被认可了这种链上扩展模式,但该社区一直未能就该问题达成共识。因此硬分叉导致了替代币比特币的诞生。
链外伸缩解决方案需要权益信任,而链内解决方案则需要过多的空间,甚至可能是不可持续的空间。然而,如果有一种替代方案可以有效地扩大比特币网络,而不需要像现在这样改变底层代码,那会怎样呢?
如果有一种方法可以使完全验证链状态的过程比权益信任更有效,该怎么办?
Coda连接
要充分理解这个方案,首先要参考Coda项目。Coda是一个加密货币项目,目的是提供一个区块链,无论处理的事务数量或网络上的用户数量如何,区块链都保持不变。
Coda优先考虑去中心化和可伸缩性。由于其区块链的状态较小且恒定,因此支持大量客户机,并且可以在Coda区块链上运行验证节点。这也适用于通常存储容量非常小的移动客户机。
Coda协议声称“将整个区块链压缩成一个只有几条tweet大小的小快照”。协议通过使用递归的零知识证明来实现这一点。
零知识证明是一种支持隐私的加密工具。这与其他加密函数类似。但是,与它们的对等项不同的是,在零知识证明中,证明以及从函数生成的输出足以验证函数是真实执行的。
之所以用这种方式引用零知识证明,是因为验证者必须不能访问输入来量化函数的执行情况。此外,验证者不需要向运行该功能的人授予任何信任,因为该功能本身具有证明零知识证明的这种隐私增强功能使其在加密货币领域非常有价值,特别是对于以隐私为中心的项目。
零知识证明的一个有趣特性是它们可以实现任何功能。这包括验证其他零知识函数,甚至验证它们本身。
因此,使用递归的零知识证明,Coda区块链能够实现简洁的区块链。简洁的区块链是一种无论任何因素都能保持相同大小的区块链。在Coda协议中,同步区块链的节点也可以进行下载并验证区块链的完整版本。
即时同步完整的验证比特币节点
泰勒·史密斯发表的提案大量借鉴了《最后协议》。然而,史密斯建议建立一个覆盖协议,它运行在实际的比特币区块链之上,并融合了零知识证明。
建立第二层保护了久经考验的比特币网络的安全,但允许人们“通过零知识证明处理挖掘出的区块,制作和发布证据,实现比特币的过渡规则。”“简单地说,第二层网络将利用已经通过认证的块,这些块已经在比特币网络上达到最终状态,作为进一步达成共识的基础。”
史密斯将其解释为“客户机连接到这个网络,可以下载并验证最有效的状态哈希值,并拥有一个经过验证的状态哈希值,其完整性已得到验证。需要状态一致的一部分客户机可以从网络上的状态保持节点请求它。这个过程类似于标准的全节点同步。然而,在第二层,网络中计算的状态将通过递归零知识证明进行验证。
通过这个实现,客户机能够完全验证整个链状态,因为正如前面所讨论的,在这方面的同步指的是下载和验证整个链。此外,递归零知识证明是快速的,因此节点在几秒钟内就有了整个状态。为了更好地理解这个建议,可以把它看作是工作证明。
这个提议还处于构思阶段。但是,如果开发人员能够生成一个可行的概念验证,并将去中心化和安全性放在优先级之上,那么最终可能还是会很好的实现。