作者:moxie
翻译:MetaCat
排版:MetaCat
图片来源:https://unsplash.com/photos/snowfield-with-dried-trees-uYHYGgvkz_Y
尽管我自认为是一名密码学家,但我对“加密”(crypto)却并不特别感兴趣。我不记得自己是否真的说过“滚出我的地盘”这句话,但与其点击最新的 NFT 发布信息,我更倾向于浏览那些怀旧风的 “佩珀里奇农场记得” (Pepperidge Farm Remembers)味儿的梗图,感叹“crypto”过去意味着“密码学”(cryptography)的美好时光。
另外,坦白讲,我并不认同那种将生活的方方面面都转移到一个工具化经济中的代际兴奋感。
即便仅从技术层面来看,我也还没能成为一名信徒。因此,鉴于最近对所谓 Web3 的广泛关注,我决定更深入地探索这个领域的一些发展,看看自己是否错过了什么。
Web3 是一个相对模糊的术语,这使得严格评估 Web3 的目标变得困难。但总体的观点(https://a16zcrypto.com/posts/article/why-web3-matters/)似乎是,Web1 是去中心化的,Web2 将一切都集中到平台上,而 Web3 将再次去中心化。Web3 应该能够在去中心化的基础上为我们提供与 Web2 相同的丰富体验。
首先,弄清楚为什么会出现中心化平台是件好事,在我看来,解释非常简单:
1. 人们不想运行自己的服务器,也永远不想运行。Web1 的前提是互联网上的每个人都是内容的生产者和消费者,也是基础设施的生产者和消费者。我们都有自己的网络服务器,有自己的网站,有自己的邮件服务器,有自己的状态消息服务器,有自己的 chargen 服务器,有自己的字符生成服务器。然而,我认为这再怎么强调也不为过:这不是人们想要的。人们不想运行自己的服务器。
即使是极客们,现在也不想自己运行服务器。即使是全职开发软件的组织,现在也不愿意自己运行服务器。如果有一件事可以总结我们对世界的认知,那就是:人们不想自己运行服务器。那些提供服务器托管服务的公司因此获得了成功,而那些基于这些网络的可能性不断迭代新功能的公司则更加成功。
2. 协议的演进速度远远慢于平台(https://signal.org/blog/the-ecosystem-is-moving/)。经过 30 多年,电子邮件仍然未实现加密;而与此同时,WhatsApp 在一年内就从未加密转向了全面的端到端加密。人们仍在尝试标准化通过 IRC 可靠地共享视频;而 Slack 可让你根据自己的脸部创建自定义反应表情符号。
这并不是资金问题。如果某样东西是真正去中心化的,那么改变它会变得非常困难,往往会停滞不前。而这对技术来说是个问题,因为生态系统的其他部分正在快速发展,如果跟不上步伐,就会失败。有整整一个平行产业专注于定义和改进像敏捷开发(Agile)这样的方法论,试图找出如何组织庞大的团队以尽可能快速地行动,因为这至关重要。
当技术本身更倾向于停滞而非发展时,这就是一个问题。一个被验证成功的做法是,将一个停滞在90年代的协议中心化,然后快速迭代。
但 Web3 想要与众不同,让我们来看看。为了快速了解这个领域并更好地理解未来可能的发展,我决定构建几个 dApp 并创建一个 NFT。
制作一些去中心化应用程序
为了感受 Web3 世界,我制作了一个名为 Autonomous Art(https://autonomous.graphics/) 的 dApp ,任何人都可以通过为 NFT 做出视觉贡献来铸造代币。随着时间的推移,做出视觉贡献的成本会增加,贡献者支付的铸币资金会分配给所有之前的艺术家(将这种财务结构可视化为类似金字塔的形状)。在撰写本文时,已经投入了超过 38,000 美元来创作这件集体艺术作品。
我还制作了一个名为 First Derivative(https://firstderivative.market/) 的 dApp,它允许你创建、发现和交换追踪基础 NFT 的 NFT 衍生品,类似于跟踪基础资产的金融衍生品😉。
两者都让我感受到了这个领域的运作方式。需要明确的是,这些应用程序本身并没有什么特别“分布式”的东西:它们只是普通的 React 网站。“分布式”是指状态以及更新状态的逻辑/权限所在的位置:在区块链上,而不是在“中心化”数据库中。
加密领域让我感到奇怪的一件事就是,缺乏对客户端/服务器界面的关注。当人们谈论区块链时,他们会谈论分布式信任、无领导共识以及所有运作机制,但往往掩盖了客户端最终无法参与这些机制的现实。所有网络图都是服务器的,信任模型是在服务器之间,一切都与服务器有关。区块链旨在成为一个对等网络,但并非设计成让你的移动设备或浏览器真正成为这些对等网络之一。
随着向移动端的范式迁移,我们现在生活在一个由客户端和服务器组成的世界里,前者完全无法替代后者:这些问题对我来说比以往任何时候都重要。与此同时,以太坊实际上将服务器称为“客户端”,因此甚至没有一个词来描述必须存在的实际的、不可信的客户端/服务器接口,而且也没有意识到如果成功,最终客户端的数量将比服务器多出数十亿个(!)。
例如,无论是在移动设备还是 Web 上运行,像 Autonomous Art或 First Derivative这样的 dApp都需要以某种方式与区块链交互,以便修改或呈现状态(集体创作的艺术作品、其编辑历史、NFT 衍生品等)。不过,这实际上不可能从客户端执行,因为区块链无法存在于你的移动设备上(或实际上存在于你的桌面浏览器中)。因此,唯一的选择是通过在某个服务器上远程运行的节点与区块链交互。
服务器!!!但是,众所周知,人们不想运行自己的服务器。碰巧的是,一些公司已经出现,它们出售他们作为服务运行的以太坊节点的 API 访问权限,同时提供分析、在默认以太坊 API 之上构建的增强 API 以及对历史交易的访问权限。这听起来……很熟悉。目前,基本上有两家公司。几乎所有 dApp 都使用Infura或Alchemy与区块链进行交互。事实上,即使你将像 MetaMask 这样的钱包连接到 dApp,并且 dApp 通过你的钱包与区块链交互,MetaMask 也只是在调用 Infura!
这些客户端 API 不使用任何东西来验证区块链状态或响应的真实性。结果甚至没有签名。像 Autonomous Art 这样的应用程序会说“嘿,这个智能合约上这个视图函数的输出是什么”,Alchemy 或 Infura 会用 JSON blob 响应“这是输出”,然后应用程序会呈现它。
这让我很惊讶。人们投入了大量的工作、精力和时间来创建一个免信任的分布式共识机制,但几乎所有希望访问它的客户端都只是简单地信任这两家公司的输出,而无需进行任何进一步的验证。这似乎也不是最好的隐私情况。想象一下,每次你在 Chrome 中与网站互动时,你的请求都会先发送到 Google,然后再路由到目的地并返回。这就是以太坊今天的状况。所有写入流量显然已经在区块链上公开,但这些公司还可以查看几乎所有 dApp 中几乎所有用户的几乎所有读取请求。
区块链的支持者可能会说,如果出现这种类型的中心化平台,那也没什么,因为区块链上可以查看状态,因此如果这些平台行为不当,客户可以简单地转移到其他地方。然而,我认为这是对平台发展动态的一种非常粗浅的看法。
让我给你举个例子。
制作 NFT
我还想创建一种更传统的 NFT。大多数人在想到 NFT 时都会想到图像和数字艺术,但 NFT 通常不会将数据存储在链上。对于大多数图像的大多数 NFT 来说,这太昂贵了。
NFT 并不将数据存储在链上,而是包含一个指向数据的 URL。该标准让我感到惊讶的是,URL 上的数据没有哈希承诺。纵观流行市场上许多以数十、数百或数百万美元出售的 NFT,该 URL 通常只是指向某个地方运行 Apache 的 VPS。任何有权访问该机器的人、任何将来购买该域名的人或任何破坏该机器的人都可以随时将 NFT 的图像、标题、描述等更改为他们想要的任何内容(无论他们是否“拥有”该代币)。NFT 规范中没有任何内容告诉你图像“应该”是什么,甚至允许你确认某些东西是否是“正确”的图像。
因此,作为一个实验,我制作了一个会根据查看者而变化的 NFT,因为提供图像的 Web 服务器可以根据请求者的 IP 或用户代理选择提供不同的图像。例如,它在 OpenSea 上看起来是这样的,在 Rarible 上看起来是另一种样子,但当你从加密钱包购买并查看它时,它总是会显示为一个大 💩 表情符号。你出价的不是你得到的。这个 NFT 没有什么不寻常的,而是 NFT 规范的构建方式。许多价格最高的 NFT 随时可能变成 💩 表情符号;我只是明确表示了这一点。
几天后,没有任何警告或解释,我制作的 NFT 就从 OpenSea(一个 NFT 市场)中被删除了:
删除表明我违反了某些服务条款,但在阅读条款后,我没有看到任何禁止根据查看位置而变化的 NFT 的条款,而我公开地这样描述它。
不过,我发现最有趣的是,在 OpenSea 删除了我的 NFT 后,它也不再出现在我设备上的任何加密钱包中。但是,这是 Web3,这怎么可能呢?
MetaMask、Rainbow 等加密钱包是“非托管”的(密钥保存在客户端),但它与我上面的 dApp 有同样的问题:钱包必须在移动设备或浏览器中运行。与此同时,以太坊和其他区块链的设计理念是它是一个对等网络,但并没有设计成让你的移动设备或浏览器真正成为这些对等网络之一。
像 MetaMask 这样的钱包需要做一些基本的事情,比如显示你的余额、最近的交易和 NFT,以及更复杂的事情,比如构建交易、与智能合约交互等。简而言之,MetaMask 需要与区块链交互,但区块链的构建方式使得像 MetaMask 这样的客户端无法与其交互。因此,就像我的 dApp 一样,MetaMask 通过向在这个领域整合的三家公司发出 API 调用来实现这一点。
例如,MetaMask 通过对 etherscan 进行 API 调用来显示你最近的交易:
GET https://api.etherscan.io/api?module=account&address=0x0208376c899fdaEbA530570c008C4323803AA9E8&offset=40&order=desc&action=txlist&tag=latest&page=1 HTTP/2.0
…通过向 Infura 发出 API 调用来显示你的帐户余额:
POST https://mainnet.infura.io/v3/d039103314584a379e33c21fbe89b6cb HTTP/2.0
{
"id": 2628746552039525,
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": [
"0x0208376c899fdaEbA530570c008C4323803AA9E8",
"latest"
]
}
…通过向 OpenSea 发出 API 调用来显示你的 NFT:
GET https://api.opensea.io/api/v1/assets?owner=0x0208376c899fdaEbA530570c008C4323803AA9E8&offset=0&limit=50 HTTP/2.0
同样,就像我的 dApp 一样,这些响应没有经过某种方式的身份验证。它们甚至没有签名,因此你以后无法证明它们在撒谎。它会对你钱包中的所有账户重复使用相同的连接、TLS 会话票证等,因此如果你在钱包中管理多个账户以保持某种身份分离,这些公司就会知道它们是关联的。
MetaMask 实际上并没有做太多事情,它只是对这些集中式 API 提供的数据的视图。这不是 MetaMask 特有的问题:他们还有其他选择吗?Rainbow 等的设置方式完全相同。(有趣的是,Rainbow 拥有他们自己的数据,用于他们正在钱包中构建的社交功能:社交图谱、展示等,并且选择在 Firebase 而不是区块链上构建所有这些。)
所有这些意味着,如果你的 NFT 从 OpenSea 中移除,它也会从你的钱包中消失。从功能上讲,我的 NFT 是否永久地存在于区块链的某个地方并不重要,因为钱包(以及生态系统中越来越多的其他东西)只是使用 OpenSea API 来显示 NFT,而对于查询我的地址拥有的 NFT,它开始返回 304 No Content!
重塑这个世界
考虑到 Web1 变成 Web2 的历史,我觉得 Web3 奇怪的是,像以太坊这样的技术在构建时就带有许多与 Web1 相同的隐含特征。为了使这些技术可用,该领域正在围绕平台进行整合。再次强调。人们将为你运行服务器,并迭代出现的新功能。Infura、OpenSea、Coinbase、Etherscan。
同样,Web3 协议的发展也很缓慢。在构建 First Derivative 时,如果能将衍生品的铸造价格定为标的价值的百分比,那就太好了。这些数据不在链上,但它在 OpenSea 会提供给你的 API 中。人们对 NFT 版税感到兴奋,因为它们可以让创作者受益,但 ERC-721 中没有规定版税,现在改变它已经太晚了,所以 OpenSea 有自己的配置版税的方式,这种方式存在于 Web2 空间中。在中心化平台上快速迭代已经超越了分布式协议,并将控制权整合到平台中。
考虑到这些动态,我认为我们已经处于这样的境地:你的加密钱包对 NFT 的看法就是 OpenSea 对 NFT 的看法,这并不奇怪。我认为我们不应该对 OpenSea 不是一个可以取代的纯粹“观点”感到惊讶,因为它一直在忙于迭代平台,超越严格遵循不可能/难以改变的标准所能达到的范围。
我认为这与电子邮件的情况非常相似。我可以运行自己的邮件服务器,但从功能上讲,它对隐私、抗审查或控制无关紧要,因为 GMail 无论如何都会出现在我发送或接收的每封电子邮件的另一端。一旦分布式生态系统为了方便而围绕一个平台中心化,它就会变成两全其美的结果:中心化控制,但仍然足够分散,以至于随着时间的推移而陷入困境。我可以建立自己的 NFT 市场,但如果 OpenSea 调解人们使用的钱包(以及生态系统中的所有其他应用程序)中所有 NFT 的视图,它就不会提供任何额外的控制。
这不是对 OpenSea 的抱怨,也不是对他们所建立的东西的指责。恰恰相反,他们在尝试构建一个可行的东西。我认为我们应该预期这种平台整合会发生,并且鉴于这种情况的必然性,我们应该设计出能在这种组织方式下为我们提供所需功能的系统。然而,我的感觉和担忧是,Web3 社区期望的结果与我们目前所看到的有所不同。
现在还为时过早
“还处于早期阶段”是我在 Web3 领域看到的最常见说法,尤其是在讨论类似问题时。从某种意义上来说,加密货币未能突破相对初步的工程阶段,正是让人们能够将这一时期视为“早期阶段”的原因,因为客观上,它已经存在了十年或更长时间。
然而,即使这只是一个开始(而且很有可能就是!),我也不确定我们是否应该认为这是安慰。我认为事实可能恰恰相反;我们似乎应该注意到,从一开始,这些技术就倾向于通过平台进行集中化,以便实现它们,这对生态系统的速度几乎没有负面影响,而且大多数参与者甚至不知道或不关心它正在发生。这可能表明,去中心化本身实际上对下游的大多数人来说并不具有直接的实际或紧迫性,人们想要的唯一去中心化程度是某物存在所需的最低程度,如果没有非常有意识地考虑到这一点,随着时间的推移,这些力量将使我们离理想结果越来越远,而不是更接近理想结果。
但你无法阻止淘金热
仔细想想,如果所有 Web3 部分都消失了,OpenSea 实际上会“更好”得多。它会更快、更便宜,而且更容易使用。例如,要接受对我的 NFT 的出价,我将不得不支付超过 80 到 150 美元以上的以太坊 gas 费。这为所有出价设置了一个人为的门槛,否则你会因为接受低于 gas 费的出价而亏损。信用卡支付费用通常让人感觉很贵,但与此相比却很便宜。如果人们想要公开交易、报价、出价等记录来验证他们的会计记录,OpenSea 甚至可以发布一个简单的透明日志。
然而,如果他们建立了一个名义上不基于加密货币的图像买卖平台,我认为它不会流行起来。不是因为它不是分布式的,因为我们已经看到,让它发挥作用所需的很多东西已经不是分布式的。我认为它不会流行,因为这是一场淘金热。人们通过加密货币投机赚钱,这些人有兴趣以支持他们的投资同时提供额外回报的方式,来花费这些加密货币,因此这定义了财富转移市场的背景。
排在队伍末端、倒卖 NFT 的人从根本上并不关心分布式信任模型或支付机制,但他们关心钱在哪里。因此,钱吸引人们进入 OpenSea,他们通过构建一个在 Web2 空间中迭代底层 Web3 协议的平台来改善体验,他们最终提供了通过 OpenSea 本身而不是通过你自己的智能合约来“铸造” NFT 的能力,最终这一切都为 Coinbase 打开了大门,通过你的借记卡,他们自己的平台提供对经过验证的 NFT 市场的访问。这为 Coinbase 通过 Coinbase 持有的暗池自己管理代币打开了大门,这有助于消除交易费用,并使得完全避免与智能合约交互成为可能。最终,所有 Web3 部分都消失了,你有一个用借记卡买卖 JPEGS 的网站。由于市场动态,该项目无法以 Web2 平台的形式开始,但同样的市场动态和中心化的基本力量可能会促使它最终走向那里。
在堆栈的末端,NFT 艺术家对这种进展感到兴奋,因为这意味着对他们的艺术有更多的投机 / 投资,但如果 Web3 的目的是为了避免 Web2 的陷阱,那么我们应该担心,这已经是这些应该提供不同未来的新协议的自然趋势。
我认为这些市场力量可能会持续下去,在我看来,它持续多久的问题在于,大量积累的加密货币最终是处于引擎内部还是漏水桶中。如果流经 NFT 的资金最终被引导回加密空间,它可能会永远加速下去(无论它是否只是 Web2x2)。如果它大量涌出,那么这将是一个昙花一现。就我个人而言,我认为目前已经赚了足够多的钱,有足够的水龙头来维持它的发展,这不会只是一个昙花一现。如果是这样的话,似乎值得考虑如何避免 Web3 成为 Web2x2(Web2 但隐私性更低)。
创造力可能还不够
我只是初涉 Web3 领域。然而,通过这些小型项目来看,我很容易明白为什么这么多人认为 Web3 生态系统如此美好。我不认为它会让我们摆脱中心化平台,我不认为它会从根本上改变我们与技术的关系,我认为隐私问题已经低于互联网的标准(这是一个相当低的标准!),但我也理解为什么像我这样的极客会兴奋地为它构建。至少,这是极客层面的新事物:它为创造力/探索创造了空间,让人想起早期的互联网时代。具有讽刺意味的是,部分创造力可能源于使 Web3 如此笨重的限制。我希望我们看到的创造力和探索将产生积极的结果,但我不确定这是否足以阻止互联网的所有相同动态再次展开。
如果我们确实想改变我们与技术的关系,我认为我们必须有意识地这样做。我的基本想法大致如下:
1. 我们应该接受这样一个前提,即人们不会通过设计无需分布式基础设施即可分配信任的系统来运行自己的服务器。这意味着架构可以预期并接受相对集中的客户端/服务器关系的必然结果,但使用加密技术(而不是基础设施)来分配信任。尽管 Web3 是建立在“加密”之上的,但令我感到惊讶的是,它似乎很少涉及加密技术!
2. 我们应该努力减轻开发软件的负担。目前,软件项目需要大量的人力。即使是相对简单的应用程序也需要一群人每天坐在电脑前八小时,日复一日,永无止境。情况并非总是如此,曾经有一段时间,50 个人从事一个软件项目并不被认为是一个“小团队”。只要软件需要如此协调一致的精力和如此多高度专业化的人力关注,我认为它就会倾向于服务于每天坐在那个房间里的人的利益,而不是我们可能认为的更广泛的目标。我认为改变我们与技术的关系可能需要让软件更容易创建,但在我的一生中,我看到了相反的情况。不幸的是,我认为分布式系统往往会加剧这种趋势,使事情变得更复杂、更困难,而不是更简单、更轻松。
GM!