关于Web3的一些左思右想
2022-03-11 15:19

本文原文来源:https://mirror.xyz/suzuha.eth/vb5E5lhzmPTcpxOJcz6Q211TDgSvoFwDLA6JSM1V37Q

翻译:IPFS元宇宙社区


近几个月来,“web3”这个词的使用再次增多:一个模糊的词(喜欢或讨厌)突然成为区块链和分布式账本技术领域中许多创新的旗帜. 这个术语已经存在了一段时间(自 2014 年 Gavin Wood 最初创造它以来),但现在无论好坏,它似乎已经达到了临界质量。


随之而来的是大量的讨论和批评。话语领域似乎几乎完美地一分为二:首先,“区块链爱好者”,他们是一个广泛的群体,从教条的“月亮男孩”交易员到像 Dan Boneh 一样致力于相关核心技术的经验丰富的密码学家。另一方面,也有“不喜欢区块链的人”:像 Stephen Diehl(他本人实际上在私有区块链上工作)这样的人,他们总是产生高度反思、反动和不屑一顾的批评。


这些批评通常与区块链空间中实际发生的任何事情无关,并且不了解技术发展和文化愿景。这种分歧对新兴技术的健康极为有害:这些技术不会消失,所以如果你唯一的答案是不屑一顾和愤怒,你实际上只是放弃了决定这些技术在我们的应用中会是什么样子的权力。世界。这种话语模式创建了一个负和反馈循环,对所有人都有害。


最近,Moxie Marlinspike(以 sslstrip 和 Signal/TextSecure 闻名)发表了一篇题为“我对 web3 的第一印象”的博文。在其中,他详细介绍了他深入研究一些“web3”技术的经验:在以太坊上构建 NFT,并使用相关的客户端 RPC 与链进行交互。Moxie 指出了对当前状态的一些重要批评。以太坊生态系统,以及更广泛的 web3。这是一个非常有成效的批评,没有落入前面提到的反身性陷阱(“这都是一个庞氏骗局!”等)。

 

我想强调其中的一些批评,以及我认为社区可以关注它们并改善现状的方式。


关于客户端、服务器、全节点和用户惰性

Moxie 提出的主要观点之一:


人们不想运行自己的服务器,而且永远也不会。web1 的前提是互联网上的每个人都是内容的发布者和消费者,以及基础设施的发布者和消费者。


我们都有自己的 web 服务器和自己的网站,我们自己的邮件服务器用于我们自己的电子邮件,我们自己的手指服务器用于我们自己的状态消息,我们自己的负责服务器用于我们自己的角色生成。然而——我认为这一点再怎么强调都不过分——这不是人们想要的。人们不想运行自己的服务器。


即使是书呆子也不想在这一点上运行自己的服务器。即使是全职构建软件的组织,此时也不想运行自己的服务器。如果我希望我们了解这个世界有一件事,那就是人们不想运行自己的服务器。那些为你提供这些服务的公司是成功的,而那些根据这些网络的可能性迭代新功能的公司则更加成功。

 

这是一个重要的,我认为非常准确的观察。经验数据也证实了这一点。根据 ethernodes.org 的数据,目前以太坊全节点的数量约为 5500 个。如果 Twitter 上的每个以太坊书呆子都运行自己的以太坊节点,这个数字会高得多。

image.png


关于基础设施提供商

例如,无论是在移动设备上还是在 Web 上运行,像Autonomous ArtFirst Derivative这样的 dApp 都需要以某种方式与区块链交互——为了修改或呈现状态(集体生产的艺术品、它的编辑历史、 NFT 衍生品等)。但是,这实际上是不可能从客户端实现的,因为区块链不能存在于您的移动设备上(或者实际上不能存在于您的桌面浏览器中)。因此,唯一的选择是通过在某处服务器上远程运行的节点与区块链进行交互。


一个服务器!但是,众所周知,人们不想运行自己的服务器。碰巧的是,已经出现了一些公司,它们将 API 访问权出售给他们作为服务运行的以太坊节点,同时提供分析、他们在默认以太坊 API 之上构建的增强 API 以及对历史交易的访问权。听起来……很熟悉。在这一点上,基本上有两家公司。几乎所有 dApp 都使用InfuraAlchemy来与区块链交互。事实上,即使您将 MetaMask 之类的钱包连接到 dApp,并且 dApp 通过您的钱包与区块链交互,MetaMask 也只是在调用 Infura!


这些客户端 API 没有使用任何东西来验证区块链状态或响应的真实性。结果甚至没有签名。像 Autonomous Art 这样的应用程序说“嘿,这个智能合约上的这个视图函数的输出是什么”,Alchemy 或 Infura 用一个 JSON blob 响应,上面写着“这是输出”,然后应用程序渲染它。


这让我很惊讶。创建一个去信任的分布式共识机制已经投入了大量的工作、精力和时间,但几乎所有希望访问它的客户都是通过简单地信任这两家公司的输出来实现的,而无需任何进一步的验证。这似乎也不是最好的隐私情况。想象一下,如果每次您在 Chrome 中与网站交互时,您的请求首先发送到 Google,然后再路由到目的地并返回。这就是今天以太坊的情况。所有写入流量显然已经在区块链上公开,但这些公司还可以查看几乎所有 dApp 中几乎所有用户的几乎所有读取请求。

 

这凸显了当前 dApp 构建方式中的一个关键基础设施漏洞。我敦促 web3/crypto 的人们注意这部分批评。这是至关重要的。这感觉类似于 Moxie 指出 HTTPS 连接可以降级为 HTTP:一种已被开发者社区接受的系统性风险,但没有向用户充分解释,这实际上是一种系统性不可接受的风险。解决这个问题非常重要(而且,好消息是我们已经有了这样做的工具)。


关于 NFT 元数据和用户通信

这篇文章中突出的另一个批评是围绕 NFT 展开的。具体来说,旨在表示某些图像内容的 NFT(如臭名昭著的 Apes)。

 

NFT 不是将数据存储在链上,而是包含一个指向数据的 URL。这些标准让我感到惊讶的是,位于 URL 的数据没有散列承诺。看看流行市场上以数十、数百或数百万美元出售的许多 NFT,该 URL 通常只是指向某个运行 Apache 的 VPS。任何有权访问该机器的人、将来购买该域名的任何人或任何破坏该机器的人都可以随时将 NFT 的图像、标题、描述等更改为他们想要的任何内容(无论是否不是他们“拥有”令牌)。NFT 规范中没有任何内容告诉您图像“应该”是什么,甚至不允许您确认某物是否是“正确”图像。


所以作为一个实验,我做了一个 NFT,它会根据谁在看它,因为提供图像的 Web 服务器可以根据请求者的 IP 或用户代理选择提供不同的图像。例如,它在 OpenSea 上看起来是一种方式,在 Rarible 上看起来是另一种方式,但是当你购买它并从你的加密钱包中查看它时,它总是会显示为一个大的 💩 表情符号。你出价的不是你得到的。这个 NFT 没有什么不寻常的,这就是 NFT 规范的构建方式。许多价格最高的 NFT 随时可能变成💩表情符号;我只是说清楚了。


这是另一个重要的批评。虽然这个元数据字段确实可以包含内容寻址的数据块(如Skynet链接或 IPFS 链接),但事实是在许多情况下它不包含. 这很糟糕。它不仅代表了未能构建默认为正常默认值的良好工具(如内容寻址数据),还代表钱包技术和基础设施未能与用户沟通他们控制的链上元数据的内容。


前进的道路:基础设施提供商

当 Moxie 在 2009 年披露 SSLStrip 时,它强调了 TLS 部署方式中的一些关键基础设施疏忽。这些本身不是协议漏洞,而是通过利用用户的期望在实践中破坏 TLS 的一种方式。将 https 链接降级为 http 时,典型用户绝对没有理由认为出现任何问题。是的,这不是 ECDH 或 RSA 的中断,但无论如何它实际上是 TLS 的完全中断。后来开发了 HTTP 严格传输安全,并成功解决了这种情况。


我对文章中指出的问题也有类似的看法。虽然您确实可以运行自己的节点,但如果您的基础设施提供商审查您,您可以检查和更改您的数据,并且您可以安全地铸造 NFT,但通常部署的软件通常无法为用户提供足够的默认保护案子。


那么,这将把我们留在哪里?我们应该强迫用户进入“山人幻想”吗?正如 Moxie 提到的,区块链太大而无法安装在您的移动设备上。我们应该建立更多的基础设施提供商吗?我们的 HTTP 严格传输安全性是什么?


如果我们接受(我认为我们应该)Moxie 的观点,即在一般情况下用户不会运行节点,那么我们将面临以下基础设施提供商的现存问题:

基础设施提供商可以就区块链状态向用户撒谎,而用户的客户端将无法辨别他们被骗了。

基础设施提供商可以监视他们的用户,记录他们的链接地址、交易或 NFT 活动,

我将描述两种方法,在短期内,只需最少的研发,就可以安全地解决这两个问题。

状态验证:轻客户端

image.png

区块链社区已经知道这个解决方案已经有一段时间了。轻客户端可用于跟踪区块头、验证状态承诺并验证从基础设施提供商发送的状态片段的包含证明。轻客户端可以轻松地在廉价的商品设备(如手机)上运行,并且需要最少的存储、带宽和计算成本。

 

轻客户端是一个概念上经过充分探索的领域,可以追溯到原始比特币白皮书中的“简化支付验证”,并且通常在比特币生态系统中实施。Tendermint存在成熟  轻客户端,其在IBC 协议中的使用已得到证明,该协议跨链传输数百万美元的价值,并需要轻客户端的完整性保护和身份验证。以太坊生态系统也存在类似的轻客户端工作,尽管它们没有部署到像 Metamask 这样的普通最终用户钱包中。


为面向用户的钱包采用轻客户端,如 Rainbow、Metamask 等,将通过强大的密码学解决第一点。在轻客户端模型中,基础设施提供商不能再对区块链状态撒谎。


隐私:消息检测

对于第二点,我们有几个选择。一种是让基础设施提供商使用某种安全飞地(如 SGX,用于 Signal 中的某些功能)来处理传入的用户对当前链状态的查询。假设新交所没有被破解,用户的隐私应该得到维护。但是,SGX 经常 出现 故障,并且这种方法可能会出现数据流问题(例如聚合访问模式泄漏)。


另一种方法是使用密码术在与用户状态无关的较大状态片段集合内混淆用户状态片段。最近形成了一种称为模糊消息检测的方法。这个问题与许多保护隐私的加密货币网络有关,但可以推广到允许用户向他们的基础设施提供商隐藏他们的状态片段,而不依赖于像 SGX 这样的任何受信任的硬件。Penumbra是计划基于这种方法构建轻客户端基础架构的链的一个示例。


带有消息检测和轻客户端验证

通过轻客户端验证,基础设施不再谎报在最近状态中包含特定状态片段。通过消息检测,用户可以针对基础设施提供商保护他们的隐私。与运行完整节点相比,这对基础设施提供商的信任有何影响?


这是一个大大改善的情况,并且本身可以通过SiaCelestia中使用的加密经济数据可用性游戏来解决。


前进之路:NFT 元数据

image.png


Moxie 提出的另一点是,NFT 元数据通常对于用户期望它有用的东西实际上并没有用,我相信我们在短期内有一些选择。


首先,我们应该有更好的透明度工具,以便用户了解他们正在购买或铸造的 NFT 的元数据内容。像 OpenSea 这样的平台和像 Rainbow 和 Metamask 这样的钱包应该可以看到这些 NFT 的元数据,并且应该有一种标准的方法来验证 JPEG NFT 是否真的包含其 JPEG 的哈希(无论该哈希是 IPFS 链接还是天网链接,或其他东西)。


其次,如果 NFT 旨在成为某种图像,我们应该教育用户和开发人员在他们的元数据中包含一些内容寻址哈希的重要性。


第三,钱包软件应该能够验证 NFT 中的 JPEG 校验和,并在数据可用性提供者返回的数据不匹配时抛出错误。校验和本身将受到轻客户端授予的完整性保护的保护。

 

第四,我们应该使用加密经济激励的数据可用性提供者。IPFS 是一个开始,但它实际上并没有提供加密经济数据的可用性:它依赖于固定供应商来乐观地固定数据。另一方面, SkynetArweave使用强大的加密经济游戏来激励数据可用性,使用与 IPFS 类似的内容寻址系统,并在今天发挥作用。


这里可能有一些有趣的标准工作来指定特定的“ERC721-JPEG”格式,它更好地支持这种类型的不可延展的 NFT 图像编码。


更远的未来:zk-SNARKs

在过去的几年里,zk-SNARKs 一直是区块链相关研究的重要支柱。区块链技术最初是 1980 年代后期的学术密码学概念,由于 zkSNARK 和相关证明系统在隐私、可扩展性等方面的潜在应用,它重新引起了人们的兴趣。


image.png

使用 zk-SNARKs,商品设备实际上可以验证整个链状态,包括每个状态转换的语义。Mina现在使用这种架构,并使用递归 zk-SNARK 实现了大约 22kb 的状态大小。像这样的架构可以扮演与轻客户端类似的安全角色,并具有允许日常用户在其商品设备上运行完全验证节点的额外好处。


类似地,zk-SNARKs 可用于证明与 NFT 元数据相关的计算事实。


总体思路


总的来说,我真的很喜欢 Moxie 的帖子。我认为它很好地突出了基础设施构建中的一些重要问题(也许是不情愿的)所谓的“web3”。我希望社区能够建设性地接受批评,从而构建更安全、更可靠、更少中心化和更少信任的基础设施。看到一个有节制的、准确的、非双曲线的对空间的批评是非常令人耳目一新的,多年来这引起了很多错误的或不诚实的批评。我希望我们看到对这些技术的更富有成效的批评,这些技术有助于我们所有人建立一个更美好的世界。



声明:本文由入驻IPFS元宇宙社区的作者撰写,观点仅代表作者本人,不代表IPFS元宇宙社区的立场。

全部评论