Neutrino:一种保护轻钱包隐私的协议

蓬蒿人
蓬蒿人 得得号

Jan 30, 2019 分享区块链硬核知识。

摘要: 闪电网络最近非常火,毫无疑问这是一个令人兴奋的发展成果,遗憾的是用户目前必须运行一个完整的节点才能进行交易。本文将介绍一种新的协议——Neutrino,用于轻客户端获取所需资源,在保护隐私的同时无需信任中心服务器。

作者/Jimmy Song

来源/bitcoinmagazine

翻译/蓬蒿人

历史小课堂

在2008年所撰写的原始白皮书中,中本聪描述了一种称为SPV(Simplified Payment Verification,即简化支付验证)的东西。SPV是关于轻节点在无需下载、验证或存储整个区块链的情况下即可验证支付的方式。这应该是轻钱包的基础,遗憾的是,最初的比特币核心软件没有实施简化支付验证,因此轻客户端无法以隐私保护的方式访问进行SPV所需的数据。

2013年,比特币核心加入BIP0037,使SPV成为可能。BIP0037创建了网络命令,使轻节点可以进行简化支付验证。轻节点现在可以请求在特定块中发生特定事物的证明。这样,轻节点就无需信任服务器,但实际上可以验证提供给它们的数据。

为此,轻客户端为服务器提供了一个过滤器。然后,服务器对新块中的所有交易运行过滤器,并将这些交易连同它们在区块中的证明报告给客户端。然后,客户端验证这些证明并查看交易,以确定其中是否有属于钱包的交易。

不幸的是,BIP0037存在一些缺点。它被认为是难以实施的,而且大多数轻钱包选择使用其它东西。例如,Electrum钱包使用自己的专有协议,而不是隐私保护。Mycelium钱包调用Mycelium公司运行的服务器。此外,还有拒绝服务向量(通过运行大量过滤器)来利用响应BIP0037请求的服务器。

此外,BIP0037在隐私方面也没有人们想象的那么强大。事实证明,通过寻找特定的模式,服务器可以知道很多关于轻钱包的信息。比如:账户余额,交易对象,甚至是交易内容。

因此,尽管BIP0037自2013年起就出现在核心软件中,但它在很大程度上已经被废弃了。

什么是Neutrino

Neutrino是一种验证支付的协议,大部分工作都是在客户端完成。现在同一个块中的所有交易(从技术上讲,ScriptPubKeys对应除OP_RETURN输出之外的每个输入和输出)都被压缩并发送到客户端,而不是由服务器为客户端过滤交易。现在,客户端需要确定是否有任何交易是它所处理的。如果任何交易都与钱包有关,那么客户端将请求整个区块来验证交易。

普通区块的大小约为1.4MB,但通过压缩(技术上,将每个ScriptPubKey哈希到64位),每个区块可以产生大约20KB的超压缩数据。由于此超压缩块对每个轻客户端都是相同的,因此消除了服务器的拒绝服务漏洞。这也意味着服务器除了想要查看的区块外,不会获得关于轻客户端的任何特殊信息,也就是隐私泄露要少得多

多方权衡

当然,除了增加隐私,我们也需要权衡其他一些东西。首先,有更多的数据被来回发送。虽然带宽从1.4MB到20KB降低了很多,但BIP0037可以降更多,因为对于钱包参与交易的块,服务器只传输大约3KB的数据;而对于没有交易的块,只传输80字节的数据。假设每天有一笔交易,那么对BIP0037来说,每个块大约有100字节,这意味着从带宽的角度来说Neutrino成本更高。

此外,客户端还需要进行额外的验证,以证明服务器发送的数据是真实的。

在查找钱包参与的交易时保护隐私。通常,这些都是钱包收款时的交易。然而对于汇款,Neutrino并没有真正帮助,而且仍然有很多隐私问题(尽管Tor和 Dandelion可以提供帮助)。

最后,为了促进Neutrino,可能需要对每个区块的coinbase交易作出新的承诺,这需要进行软分叉。

对你意味着什么

事实证明,Neutrino不仅对比特币钱包有用,对闪电也很有用。目前很难设置闪电节点,部分原因是你必须运行一个需要很长时间才能同步的完整节点。Neutrino在btcd中可用,但在比特币核心中还不可用,所以在比特币核心软件使用Neutrino之前,轻钱包将很难找到节点来获取数据。正因如此,Wasabi不得不使用类似的超压缩块数据来制作自己的服务器。

一旦Neutrino进入比特币核心,闪电钱包就可以更轻松地作为轻客户端运行,届时你的比特币钱包在保护隐私方面将更有效。这并不意味着你将完全匿名,特别是通过链式分析,但你可以获得目前完整节点享有的大部分隐私,而无需存储、传输或验证整个区块链。

隐私泄露最终是安全泄漏,因为有关您的信息可能会被用来对付您。

与使用Neutrino协议的钱包进行交易,意味着你的比特币交易,无论是在链上还是在闪电网络上,都不太容易泄漏信息。

结论

Neutrino是一项早就应该使用的技术。大多数使用轻节点软件的人都必须在某种程度上信任外部组织,这不是密码朋克的理想选择。通过使用Neutrino,钱包开发人员现在可以创建无需信任服务器的、真正独立的钱包。

(作者:蓬蒿人,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 蓬蒿人 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信