Vault 是什么?
Vault 是一种基于 Algorand 的加密货币系统设计,可以帮助参与者将存储和节点启动成本降至最低。Vault 的设计是基于 Algorand 的权益证明共识协议(POS),并结合多种技术来实现其目标。首先,Vault 将交易的存储与账户余额的存储解耦,这使得 Vault 可以删除旧帐户的状态。其次,Vault 允许在参与者之间进行状态分片(sharding),并可同时保障安全性。最后,Vault 引入了标记证书的概念,使新客户可以在权益证明(POS)系统中不必验证每个块也可以做到安全有效的网络启动。通过对 Vault 的原型实现进行实验,结果显示在下载包含5亿笔交易的账本时,Vault 的设计将作为完整客户端加入网络时的带宽成本大幅降低:与比特币相比降低了99.7%,与以太坊相比降低了90.5%。
Vault 解决了什么问题?
区块链技术可实现去中心化的电子支付和智能合约等应用。但是,要支持大量用户和交易,将需要使用解决两个关键的问题:存储(每个参与者需要存储多少数据)和节点启动(每个参与者必须下载多少数据才能作为加入网络)。例如,截至2018年1月,在比特币中,希望加入网络并验证其收到正确状态的新客户端必须下载约150GB数据。
存储和节点启动成本是相关的,因为在去中心化设计中,现有节点必须存储足够的状态以帮助新节点加入系统。
由于种种挑战的存在,设计一种存储和节点启动成本与用户和交易数量成比例的加密货币非常困难的。
首先,加密货币必须防止“双花”攻击,也就是说,防止用户花费同一笔钱进行两次或多次相同的交易。通常,通过跟踪过去的交易可以实现防止双花,但是这种做法并不具有良好的可扩展性。例如,比特币会存储所有过去的交易,但并不能做到存储成本随交易数量的线性增长。再举一个例子,以太坊并不存储所有交易,而是跟踪从指定账户发出的最后一笔交易的序号(nonce)。即使该账户没有余额也会被存储。这种方案依然导致成本与旧账户的数量无法呈线性增长,并且当智能合约无意间创建了许多零余额账户时,以太坊就出现了存储爆炸的问题。我们研究了了以太坊区块链的状态,发现38%的以太坊账户的余额为零。
其次,区块链会依赖于节点参与者来检查交易的有效性。这要求节点本地保存了足够的状态来验证这些交易。存储所有账户余额可以使节点验证任何交易,但随着账户数量的增加相应的存储空间也在不断增加;若是选择不存储所有账户余额,则能够审查某笔交易的节点会变得更少。
第三,基于权益证明的区块链系统,比如 Algorand,可以提供很高的交易吞吐量。但是,这类系统的难点在于一个新节点加入时需要下载大量的数据。想要证明对一个新用户证明某个区块的有效性,就需要向他们证明该区块之前的所有区块也同样有效。
最后,将存储状态和验证未来状态的工作委托给一个固定的委员会可以降低存储和启动成本。但是,采用这种方法的现有系统依赖于被敌手已知的长期存在的委员会。所以这使得该敌手可以攻击委员会成员(例如通过贿赂等),从而导致安全性下降。
Vault 是如何工作的?
首先,Vault 将账户余额的存储与识别双花交易的部分解耦。每个 Vault 交易只在有限的时间范围内有效,这会使用交易在区块链中的位置来表示。这样,Vault 节点就可以仅跟踪最近出现的块中的交易,而不必存储历史交易。另一方面,账户余额状态将不再与过去的交易相关联,可以安全地删除掉零余额账户。
其次,Vault 使用了一种自适应的分片方案,该方案结合了三个属性:(1)允许跨节点的账户状态分片,每个节点不需要存储所有账户的状态;(2)允许所有的节点使用默克尔树来存储余额相关信息,从而对所有的交易进行验证;(3)自适应地缓存默克尔树的上层,以便传输 Merkle 证明的带宽成本随账户数量成对数增长。
最后,Vault 引入了盖章证书(stamping certificate)来减少向相新用户证明区块有效性的成本。这里选择对于区块链的活性参数进行了一些权衡。盖章证书建立在现有 Algorand 证书的基础上,虽然其能够成功选出一个委员会来执行共识的概率要小一些(因此在许多情况下,Vault 无法找到足够的参与者来构建有效的证书),但是它需要更少的参与者来形成证书,这就大大减小了人数规模,却同时保留了相同的安全性(即对手破坏系统的可能性仍然可以忽略不计)。建立额外的盖章证书使我们能够放宽盖章的活性,而又不影响交易确认的活性。Vault 的盖章证书的生成方式使新节点可以在一个验证步骤中跳过许多区块。
我们对 Vault 方案进行了原型设计和基准测试,重点是节点启动和存储。评估显示,当账户创建和节点流失率与以太坊实际观察到的相匹配时,5亿笔交易的 Vault 的存储和节点启动成本为477MB。与以太坊和比特币等现有系统相比,在提高吞吐量和降低成本上是一个巨大的突破。同样的5亿笔交易,以太坊和比特币将分别需要 5GB 和 143GB。
关于 Vault 的完整信息可以参考论文:
https://algorandcom.cdn.prismic.io/algorandcom%2F5392df3a-6dda-41f4-a6ea-3330c2be0634_vault.pdf