构建Ergo:SPV安全性
2020年5月1日

在加密世界中,安全性和便利性之间常常存在紧张关系。如果我们希望这些技术被广泛使用,这种权衡是不可接受的。以下是Ergo如何解决一个常见且非常重要的问题。
我们都知道,使用比特币或任何加密货币的最安全方式是下载区块链的副本并自己运行一个完整节点。这样,每当你或其他人进行交易时,你的客户端会检查区块链以确保其有效性。你不必信任其他人。
一个完整的比特币节点检查区块链中的所有区块(使用头部)并确保没有欺诈交易。这是一种非常安全的使用加密货币的方式——但存在一个问题。它需要大量的带宽、存储和处理能力。这种商品硬件很昂贵,并且使用完整节点来验证和进行交易在任何情况下都不适合移动设备。对于比特币尤其如此,因为区块链已经超过270 GB且还在增加。
SPV
简化支付验证(SPV)旨在解决这个问题,如比特币白皮书中所述:
- 可以在不运行完整网络节点的情况下验证支付。用户只需保留最长工作量证明链的区块头副本,他可以通过查询网络节点直到确信自己拥有最长链,并获取将交易链接到其时间戳所在区块的Merkle分支。他无法自己检查交易,但通过将其链接到链中的某个位置,他可以看到网络节点已接受该交易,并且在其之后添加的区块进一步确认网络已接受该交易。
中本聪指出,这并不是一个完美的解决方案,容易受到攻击者控制网络并欺骗SPV用户的威胁。
此外,虽然SPV模式旨在用于资源有限的设备,但即使这种“轻量级”方法也并不总是可行。以太坊的头部总共约为5 GB需要下载。因此,以太坊移动客户端不验证链的有效性,因此不得不盲目信任第三方。
有提议通过仅检查少量随机头部而不是所有头部来减少SPV模式的要求。但要安全地做到这一点是很困难的。
高效SPV
研究和开发安全协议以允许高效SPV客户端已经花费了数年时间。两个最著名和最可靠的协议是NiPoPoWs和FlyClient。
Ergo实现了NiPoPoWs,或非交互式工作量证明的证明。这项技术可以在这个专门的网站上全面探索:https://nipopows.com:
-
非交互式工作量证明(NIPoPoWs)是短小的独立字符串,计算机程序可以检查这些字符串以验证在基于工作量证明的区块链上发生了某个事件,而无需连接到区块链网络并下载所有区块头。举例来说,这些证明可以说明某个加密货币支付已完成。
-
NIPoPoWs允许创建非常高效的移动钱包。SPV钱包与完整节点相比已经非常轻量,因为它们只需要下载区块头,而不是整个区块链。NIPoPoW钱包只需下载大约250个区块头的少量样本,而SPV客户端需要下载50万个区块头。所需的样本会变化,但随着区块链逐年增长,其大小不会大幅增加,即使在数十年的数据积累之后也是如此。
这使我们能够构建一个只需下载约__100KB__区块头的移动SPV客户端。
一个具有SPV安全性的超级高效Ergo钱包正在开发中,敬请关注更多更新!
Share post




















