Mist II - 书呆子的复仇

  • tjayrush
  • 发布于 2025-01-06 14:12
  • 阅读 47

本文回顾了以太坊早期浏览器Mist的失败,分析了其存在的问题,例如启动速度慢和数据访问能力弱。文章提出了改进方案,即保持节点持续同步,并引入Khedra组件,将节点转化为功能完善的本地优先应用服务器数据库,从而实现去中心化应用的愿景。

Mist II — 书呆子的复仇

正如它过去的样子,正如它可能的样子,正如它未来可能的样子

我第一次听说 Ethereum 是在 2015 年末。几周后,我听说了 Mist 浏览器 [ 1, 2]。

真是个噩梦。

幸运的是,那时我已经深陷其中,愿意忍受任何痛苦来使用“可编程区块链”。一年前,我读过关于比特币的文章以及关于“抽象出可编程性”的讨论,因此 Ethereum 非常有意义。

但不合理的是,为什么我必须经历如此多的痛苦才能使用它。

脑海中浮现出那句老话“我们还处于早期阶段”。但是,我的意思是,我们到底能有多早?

这就像进入伊甸园,却被标语牌拦住,上面写着“施工期间,请原谅我们的外观”。我就像,“上帝,这里发生了什么?你的花园太糟糕了。”

Ethereum 上的 Mist(通往 Ethereum 伊甸园的入口)“太早了”

Mist 可以做得更好吗?现在重新复活 Mist 是否为时已晚?

过去的样子,可能的样子,未来的样子

本文展示了三个时序图,并对每个图进行了简短的描述。这些图分别名为“Mist 过去的样子”、“Mist 本应的样子”和“Mist II:书呆子的复仇”。

我们讨论了(除其他因素外)最终导致 Mist 死亡的两个主要问题。我们认为,Mist 的死亡预示着构建真正去中心化和真正私有应用程序的死亡。但现在还为时不晚。

两个问题是什么?

我们认为 Mist 至少存在两个从一开始就注定失败的问题:

  1. Mist 会在其初始化期间启动 Ethereum 节点软件 (Geth)。这是一个可以理解但最终很糟糕的选择。最终用户必须等待节点软件完成同步才能使用该应用。随着区块变得越来越复杂,这种延迟会加剧。
  2. Mist 依赖于节点的 RPC 端点来访问区块链数据。由于一个简单的事实,RPC 不足以服务于应用程序:它不是数据库。正如我六年来一直说的那样,“RPC 太烂了”。它无法充分服务于“真实”的应用程序。RPC 索引日志主题,但不应该索引这些。它应该索引我们称之为地址外观的东西。(这个问题在Unchained Index Specification中得到了充分解释。)

还存在其他问题,例如安全问题以及缺乏用于构建桌面应用程序的 Electron 的合适替代方案,但以上两个是主要面向用户的问题。(我们已经使用“ Wails”(一种有效且易于使用的 Electron 替代方案)来构建 TrueBlocks Browse。去看看。)

在本文的其余部分中,我们将描述三个时序图,显示 Mist 如何工作、它本来可以如何工作以及如果重新构想它可能会如何工作。

Mist 过去的样子

我们的第一个图显示了 Mist 如何工作的一种风格化(可能略有不准确——已经有一段时间了)的视图。请参阅下面的编号注释,它们与图像中的黑色圆圈相对应。

  1. 用户在其机器上本地启动 Mist。
  2. 在内部,Mist 启动一个本地节点 (Geth)。由于该节点没有持续运行,因此它必须赶上链的头部。根据时间长短,可能需要几分钟到几小时才能赶上。
  3. 由于节点需要时间同步,Mist 必须等待“看到”最新的块和/或与任何智能合约交互。
  4. 一旦节点同步,下一个问题就会显现出来。然而,这个问题很微妙,并且“在系统内部”,因此很难看到。这个问题可以总结如下:“RPC 不是数据库。”RPC 过去(现在仍然)不充当适当的数据库。它没有索引(除了日志主题,我们认为这不足)。这种不足的证据随处可见:(a) 必须使用区块浏览器来查看个人的交易历史记录(不是非许可的,不是私有的)。(b) 必须使用 Dune 或“付费”分析来了解正在发生的事情(不是不可审查的速率受限缓慢成本高昂)。隐私是不存在的(如果你使用远程服务,他们就知道你是谁)。你今天使用的几乎每个 dApp 要么是贫血的,要么是侵犯 Web 2.0 隐私的噩梦。将你使用的任何 dApp 与 Microsoft Word 或 Excel 等“真实”应用程序进行比较。dApp 是无关紧要的,或者只是 Web 2.0 网站。这是因为 RPC 没有适当的索引。
  5. 当用户关闭 Mist 时,该节点将关闭;因此,链的头部未被维护。

早在 2016 年或 2017 年,Mist 这样运行是有原因的(担心该节点会压垮用户的机器),但我们认为这不再是真的。我们知道这一点是因为我们已经在我们自己的笔记本电脑上看到了 Erigon 节点运行。你不相信我?这是证明

Mist 失败的最紧迫的原因是其启动时间极慢且数据访问贫乏。必须不断同步节点,并且 RPC 必须是实际的数据库。

Mist 本应的样子

Mist 本可以做的一件简单的事情是将 Geth 节点作为服务安装。其他桌面应用程序(例如 Docker 或 1-Password)也可以这样做。

我将这种类型的应用程序称为“长时间运行的进程”,因为它在机器启动时启动并运行直到机器关闭。其他人称其为“守护进程”或“服务”。这是软件保持与不断传入的数据同步的_必须_工作的方式。

以下时序图显示了 Mist 可能的工作方式以及它如何解决这两个问题中的第一个问题。请注意下图中的黑色圆圈。它们与后面的编号注释相对应。

  1. 在这个设想的 Mist 版本中,节点在机器启动时启动。这样,节点保持同步。这解决了原始 Mist 必须等到节点同步才能开始的问题。
  2. 该节点始终保持与链头同步。在 2016 年和 2017 年,这可能是一个问题,但随着最近像 Apple M4 这样的芯片(以及一个大的硬盘驱动器——我们的有 8TB)的出现,这不再是一个问题。虽然我们不再这样做,但我们过去曾在我们的 M1 笔记本电脑上运行 Erigon 节点,而没有产生不良副作用。你不相信我?这是证明
  3. 如果该节点一直在运行,Mist 将立即启动——无需等待——就像你使用过的其他每个应用程序一样。
  4. Mist 仍然会受到“RPC 不是数据库”问题的困扰。每个应用程序(假设人们构建的应用程序比 Mist 更多)都必须提取它感兴趣的链数据,缓存过去提取的结果,并以某种方式快速地将数据传递给应用程序。换句话说,每个应用程序都必须实现一个抓取器/索引器/监视器。预测下图,对_节点内部_更好的索引/缓存层的需求显而易见。
  5. 在这种_设想的_版本中,当 Mist 关闭时,该节点保持运行;因此,该节点始终保持最新状态。

Mist II — 书呆子的复仇

为什么 Mist 如此重要?为什么直接针对点对点数据网络运行本地优先软件很重要?有什么大不了的?

直接、不受限制、无需许可地访问区块链数据至关重要,原因有很多:速度详细程度18 位小数的精度没有“提供商”因此没有审查完美的隐私以及接近零成本。这些事情是 Ethereum 精神的核心。在当前系统中,这些事情都不可用。通过 Web 2.0 数据提供商(包括远程访问 RPC)访问数据会破坏我们所说的非常重视的每件事。

另一个关键方面(至少对我而言)是,去中心化的区块链网络应该从 Web 2.0 生态系统的强大势力中“夺取”权力。(这些势力永远不会将权力还给我们,因为我们只是客气地要求他们——我们必须在未经允许的情况下“夺取”回来,而无需请求)。这就是构建比特币的书呆子所做的事情。他们从强者手中夺取了权力。

这不是 Ethereum 今天的工作方式。

如果你愿意,你可以对自己撒谎,但我们正在构建的系统不是无需许可的。如果人们不运行本地节点和使用无需许可的本地应用程序,则该系统不是去中心化的。该系统不快。它不便宜(它可能是免费的,但你要通过侵犯隐私来支付)。而且——在我看来——它也不有趣。

这就是为什么我呼吁复活 Mist。这是“书呆子的复仇”。我们必须在他们再次夺取权力之前,从强者手中“夺取”权力。

Mist(即 dApp)未来可能的工作方式

最终图仅展示了 Mist(或任何去中心化桌面应用程序)可能工作的一种愿景。

我们引入了一个名为 Khedra(发音为“kay-drah”)的新组件,它是一个独立的“守护进程”,但它可以作为可选的守护进程组件合并到节点软件中。

Khedra(这是其名称背后的历史)解决了上述两个问题中的第二个问题。Khedra 将节点变成一个适当的数据库。它通过提供一个索引、缓存和监视层来扩展节点,该层与节点软件并行运行。

Unchained Index 和 Khedra 在许多地方都得到了很好的解释 [ 1, 2, 3]。我们不会在这里深入探讨。

我们的最终图

对于此最终图,下面的带编号的注释与此图中的黑色圆圈相对应。

如果我们想要 dApp 这样做,它们可以如何工作的一个神话般的“伊甸园”

  1. Ethereum 节点和 Khedra 都在机器启动时启动。它们充当长时间运行的守护进程,持续同步链(在节点的情况下)以及索引和监视数据(在 Khedra 的情况下)。这两个进程都会保持其各自的数据库处于最新状态。
  2. 关于索引和监视之间区别的简要说明:“索引”是指构建 Unchained Index 并将其共享到 IPFS 和智能合约。这在这里有非常详细的描述。“监视”意味着最终用户——你——提供一个要“监视”的地址列表。你的地址。你感兴趣的智能合约。这使缓存保持最小化。这就是为什么我们的系统仍然可以在笔记本电脑上工作(并且可以非常详细,因此,非常准确)。与区块浏览器不同,Khedra 不会提取整个区块链——它只会提取你告诉它提取的那些地址。而且……那些地址历史记录会被持续缓存,从而使你在查询它们时速度非常快,并且可以供你的 dApp 使用。
  3. 当 Mist(或任何本地桌面 dApp)启动时,无需等待——与你使用过的每个应用程序(Mist I 除外)相同。显然。
  4. 通过 KhedraTrueBlocks SDK,你的本地优先桌面应用程序可以将节点视为按 Ethereum 地址索引的实际数据库。Khedra(和 SDK)为任何地址提供极快的交易历史记录(如果该地址被监视)。其他可用数据包括按区块或期间的余额历史记录、按区块或期间的对账单、超过 35,000 个已命名的地址、ABI 文件(从受信任的来源下载)、Unchained Index 清单、索引块和 Bloom 过滤器。Khedra 将以前贫血的节点 RPC 转换为功能齐全的本地优先应用程序服务器数据库。
  5. 你的应用程序仍然可以访问 RPC 来完成你的应用程序以前完成的任何任务,包括与链交互以发送交易、签署消息或执行其他任何操作。这里没有变化。
  6. 当你的应用程序关闭时,节点和 Khedra 继续运行并维护链的索引和头部。

结论

Mist 的基本假设是,去中心化的本地应用程序必须运行本地节点,这是完全正确的。如果没有本地节点,你的应用程序不可能去中心化

Mist 的实现失败了,因为伊甸园正在建设中。必须将节点作为长时间运行的进程运行。必须对节点上的数据进行索引——最小化,以便它继续在小型机器上运行。应仅监视和缓存最终用户直接感兴趣的地址。

现在应该重新审视我们生活在人间天堂的愿望了。你想住在伊甸园吗?我想。

如果我们想要它,我们就可以拥有它——我们所要做的就是以这种方式构建它——以这种方式夺取它——有目的地。

欢迎你的支持

TrueBlocks 的资金来自个人资金和 Ethereum 基金会的赠款(2018 年、2022 年、2024 年)、Optimism Retro PGF(2022 年、2023 年)、Moloch DAO(2021 年)、Filecoin/IPFS(2021 年)、Consensys(2019 年)以及我们可爱的 GitCoin 捐赠者。

如果你喜欢这篇文章并希望支持我们的工作,请使用 ETH 或任何代币捐赠给我们的 GitCoin 赠款。如果你是 Optimism 徽章持有人,请在未来的 Retro 轮中投票支持我们的项目。或者直接向我们的 trueblocks.eth 或 0xf503017d7baf7fbc0fff7492b751025c6a78179b 发送小费。

附录

我已经与许多人讨论过复活 Mist 的想法。这些对话是粗略的、不频繁的且记录不完整。我们邀请你加入我们。下面(和上面)是一些……非常粗略的……编辑得很糟糕的……语无伦次的想法。这是一个开始,无论好坏,你都必须从某个地方开始。

在下文中,我们假设有一种双管齐下的方法——一种是“朝着节点方向”开发,这意味着它试图改进或扩展 RPC。另一种是朝着用户方向发展,这意味着必须鼓励用户、开发人员和社区更深入地思考像 Mist 这样的想法。

朝着节点方向

  • Ethereum 节点软件缺少索引——它应该从一开始就包含在 RPC 中。
  • TrueBlocks 通过 Unchained Index,通过添加 chifra scrapechifra exportchifra list 和其他工具来解决“缺少索引”的问题。
  • Unchained Index 已完全指定、健壮、快速,并包括如何构建索引器/抓取器的详细描述。
  • Khedra 是一个独立的 GoLang 包,除其他外,它实现了构建 Unchained Index、监视地址和其他东西的守护进程。** ](https://github.com/TrueBlocks/trueblocks-core) 和 深度文档
  • Khedra 已经可以作为桌面上的独立命令行应用程序运行。使用你系统的现有系统来运行服务或守护进程,将其变成一个长时间运行的进程。
  • Khedra 可以很容易地制成一个 docker 镜像,该镜像可以与节点一起运行。docker 版本可以用来制作 dAppNode 包。
  • 数据分片和共享是专门设计到 Khedra 和 Unchained Index 中的。共享只是通过使用来实现的。
  • Unchained Index 自然会被分片……但是……用户无需知道这一点。

朝着用户方向

  • 我们工作的最终最终动机是让更多的人运行本地优先的桌面应用程序。
  • 用户被以下方面吸引:

便利性——本地优先的 dApp 必须易于安装、运行和维护,

速度——本地优先的应用程序可以比 Web 应用程序快 100 倍,

准确性——这种速度允许更深入的数据提取,从而允许每 12 秒进行 18 位小数的对账,

隐私——没有第三方 API 来窥探你的钱包。

  • 如果开发人员不开发,用户就不会出现:

重点——通往用户的道路是通过开发人员,

解决方案——通过 Unchained Index 和 TrueBlocks-Core(一个有据可查的 SDK)提高 RPC 的功能和 UX,增加了构建新应用程序的机会。

  • 如果没有易于遵循的示例,开发人员就不会构建:

trueblocks-browse——是使用我们的 SDK、Khedra 和 Unchained Index 的本地优先 dApp 的一个示例。

示例和教程——包括 视频教程 可用,

■ 自动代码生成有助于生成健壮、有据可查的代码

  • 自动代码生成允许:

■ 在整个项目中保持一致、有据可查的代码,

■ 以其他语言创建 SDK(我们已经有实验性的 Python 和 Typescript SDK)。

协作

  • 与他人合作是先决条件。通过以下方式促进参与:

■ 制作潜在 dApp 的“愿望清单”(Dao 管理器、Staking 管理器等)

■ 直接资助“本地优先”的开发人员

■ 为“本地优先”的开发人员提供赠款

■ 赞助黑客马拉松奖品

  • 潜在合作伙伴:

■ EF (Buidl-Guidl, Portal Network, Sourcify)

■ Rotki

■ Rick Dudley

■ Pocket Network

■ Otterscan — Willian

■ 节点软件团队:Erigon (GoLang), Geth (GoLang), Reth (可扩展)

  • 潜在的 L2 合作伙伴:

■ 二层网络与一层网络一样(如果不是更多)需要索引,

■ 如果有任何真正去中心化的未来的希望,任何此类索引都应标准化。

  • 其他潜在合作伙伴:

■ Uniswap — Ken Ng

■ Optimism (Test-In-Production)

■ 其他朋友:Giveth, Gitcoin, Hopr

/完毕

  • 原文链接: tjayrush.medium.com/mist...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
tjayrush
tjayrush
江湖只有他的大名,没有他的介绍。