Bitget App
Trade smarter
行情交易合约跟单策略理财Web3

官方论坛精选:改进波卡使用体验 -PAPI 即将到来

Polkadot生态研究院Polkadot生态研究院2024/02/05 06:37
作者:Polkadot生态研究院


波卡知识图谱是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,天是该栏目的第 124 期,本文主要介绍的是第一个使用 Polkadot-API 构建的轻客户端 DApp,以替代 Polkadot.JS,可以极大的提升用户体验



摘要


查看验证者选择工具(详情请参见: https://w3f.github.io/validator-selection-tool/),这是第一个使用 Polkadot-API(详情请参见: https://github.com/paritytech/polkadot-api)构建的轻客户端 DApp,基于@jonas 领导的获奖研究(详情请参见: https://twitter.com/GehrleinJonas/status/1731971892104311068)。如果你参与在波卡上验证者的提名,那么这个工具将改变游戏规则。请继续阅读,了解这一成就为何比最初看起来更有意义。


起源



大约 9 个月前,Web3 基金会的@jonas 在 Matrix 频道上寻求帮助,计划开发一款 DApp。目标是将他团队研究的结果转化为实际应用程序。我被这个项目的要点所吸引,于是热切地自告奋勇,但有一个条件:DApp 必须专门使用轻客户端。尽管@jonas 满怀激动,但还是谨慎地告诉我未来会面临巨大挑战,尤其是需要从区块链中获取大量数据。我们一致认为,如果我们能够在后台高效处理这些数据,同时允许用户专注于选择其验证者偏好,这将是可行的。
我们的计划就这样开始了,很幸运 Daniel Kalman 加入了我们,他在提升用户体验(UX)设计方面发挥了关键作用。除他之外,我们还得到了研究团队 Grzegorz Miebs 的宝贵支持。Grzegorz 在处理更为复杂的任务方面功不可没,他一丝不苟地开发和构建了必要的数据模型和文件,这个关键过程使得我们可以将这些组件无缝集成到 DApp 中。
面对艰难的数据收集任务,我尝试了许多策略。即使使用集中式 RPC 服务器也很有挑战性,但使用轻客户端则完全是另一种折磨,因为它存在几个问题:
1. 最初,在集中式 RPC 节点上使用 Polkadot JS(PJS)还能应付一些问题,但尝试在轻客户端提供程序(ScProvider)上复制这种方法却是一个死胡同。尽管我们尝试了自定义解决方案,但还是没有成功。
2. 我很好奇问题是否源自 PJS 不支持新的 JSON-RPC API,于是我转向了 CAPI。难过的是,CAPI 不仅与新的 JSON-RPC API 不兼容,而且即使使用集中式 RPC,也无法实现及时的数据收集。尽管我做了很多努力,也咨询了核心开发人员,但使用 CAPI 的可行解决方案仍然遥不可及。
3. 通过深入研究轻客户端的局限性,我发现了 smoldot1 中的一个 bug(详情请参见: https://github.com/smol-dot/smoldot/issues/692),阻碍了计算验证者投票所需的 Staking.Nominators 关键条目的下载。
4. 此外,smoldot 的最新 API 更新允许在 WebWorker 上运行,但尚未集成到@substrate/connect 包中,因此错过了潜在的改进。
5. 而@substrate/connect 扩展由于 smoldot 不再在后台 / 服务工作脚本中运行而表现不佳,使得这些工作变得更加复杂。
加上这些挑战,大约八个月前我们面临了一些困难,努力将“Validator Selector”DApp 作为轻客户端 MVP 提供。
以上这些各种各样的困难基本上就是我们八个月前的状态,当时我们正努力将"验证者选择器"DApp 作为轻客户端最小化可行产品 (MVP) 交付。


初版 MVP



尽管面临诸多挑战,我坚持使用轻客户端与 smoldot 创建一个真正的去中心化应用程序的决心没有动摇。为了证明这一可能性,我使用当时正在探索的实验性库 unstoppablejs 制定了一个临时解决方案。这种方法虽然更像是一种变通办法,但却证明了,只要有适当的工具,基于轻客户端的全功能 DApp 是可以实现的
我们的努力最终促成了这个 DApp 的一个不错 MVP,并且由@jonas 在 2023 年 Polkadot Decoded 大会上进行了展示(详情请参见: https://www.youtube.com/watch?v=RlYTtC7jIzI)。
这一成就意义重大,但我清楚地意识到,我们还远远没有为普通的 DApp 开发者提供制作真正去中心化 DApp 所需的工具。主要限制包括:
1. 由于 smoldot 中的错误,DApp 必须“作弊”以获取提名者列表,依赖于集中式 RPC 服务器。
2. 为了性能优化,我绕过了@substrate/connect 包,直接在我的自定义解决方案中将 smoldot 与 WebWorker 集成。
3. 该 DApp 尚未使用来自运行时的动态编解码器,这限制了它在检索存储项目时确定与当前运行时兼容的能力。
4. 应用程序尚未利用新的 JSON-RPC API。
5. 允许用户根据 DApp 的建议,创建一个 extrinsic 来更新他们的提名人,这一理想功能尚不可行。
6. 总体而言,整个收集验证者数据的整个过程都是一个临时解决方案,其目的更多是作为概念验证,而非最终产品
不过, 这一发展阶段为我们开发更完善、真正去中心化的 DApp 奠定了基础


如今



自 Decoded2023 大会以来,情况发生了巨大变化。活动结束后不久,Parity 给到我一个机会,带领一个包括@matias 和@ryan 在内的小而专注的团队。我们的任务雄心勃勃:开发一个以轻客户端为先的 PJS 替代方案。尽管这个机会令人激动,但也意味着我不得不暂停参与“验证者选择器”工具的开发。
我之前分享过关于我的团队在 Polkadot-API 方面取得的进展的更新(详情请参见: https://forum.polkadot.network/t/polkadot-api-2023-q4-update/5318)。不过,我也希望展示一些实实在在的东西,展示过去几个月我们取得的进展...
最近,我终于腾出时间将“验证者选择器”工具的最初的、有点“被遗忘”的 MVP 迁移到 Polkadot-API。就在几天前完成迁移,这次的结果令人振奋。 迁移的主要亮点包括:
简化代码库:从临时解决方案过渡到 Polkadot-API 使代码库更易于维护和理解,这一点可以从调整源代码的提交中得到证明(详情请参见: https://github.com/w3f/validator-selection-tool/commit/3c4c9b6162d0420be2cea176eb7772f7bd8e0201)(新增 166 条,删除 547 条)。
  • 真正的去中心化 :DApp 现在完全依赖轻客户端收集所有数据,消除了以前的临时解决方法。

  • 新的 JSON-RPC API 集成 :所有与轻客户端的交互现在都通过新的 JSON-RPC API 进行。

  • 动态编解码器和运行时兼容性 :D App 适应运行时变化并验证与当前运行时的兼容性。

  • 为未来升级做准备:DApp 可以为未来的运行时升级做好准备,就像我们一直做的那样(详情请参见:
https://github.com/w3f/validator-selection-tool/commit/3c4c9b6162d0420be2cea176eb7772f7bd8e0201#diff-f1c2d04782f90dd1c903bf15fd7991c1c40165f988fd6530adda49e6aa2e6bc6R7-R17),为 Identity pallet(目前在 Rococo 可用)的更新进入波卡中继链做好准备。这也使 DApp 目前与两个运行时兼容。
  • 增强的@substrate/connect 利用率:通过对@substrate/connect 的改进,现在可以与新的 WebWorker API 集成,即使在没有@substrate/connect 扩展的情况下,也能确保比过去更好的性能。

  • 卓越的开发体验和性能:类型系统和开发体验非常先进。软件包的大小非常紧凑,Lighthouse 性能分数前所未有,尤其是对于没有@substrate/connect 扩展的用户需要额外下载的情况下,这是一项显著的成就。

  • 易于功能集成:在同一个 DApp 中为用户添加更新验证者提名的新功能现在非常简单,我计划很快就实现这一功能。

Lighthouse 报告展示了这一显著的改进:
桌面报告(不含@substrate/connect 扩展):

移动报告(不含@substrate/connect 扩展名):

这次迁移到 Polkadot-API 不仅增强了 DApp,还帮助发现了 Polkadot-SDK 节点的 JSON-RPC 服务器实现中的一个 bug (详情请参见: https://github.com/paritytech/polkadot-sdk/issues/2992)。这一发现是在与集中式 RPC 服务器比较数据加载速度时偶然发现的,突显了我们新方法稳健性和可靠性。


尚待改进



然而,并非一切都完美,有几个方面仍需改进:
无扩展时的数据加载时间 :目前,当未安装@substrate/connect 扩展时,加载所有必要的数据以向用户呈现结果可能超过一分钟。实际上,如果用户完全参与了调查问题,这个时间段可能与他们的完成时间一致。不过,优化这一流程以提高效率的可能性还是很大的。
处理大量数据传输 :我们遇到一个意想不到挑战是,smoldot 在一条信息中为大约 50,000 名提名者提供数据。这种方法与预期的渐进式数据交付不同,会导致 DApp 在同步解码所有这些提名者时暂时冻结。为了解决这个问题,我们需要在 PAPI 中实现更为优雅的数据处理。此外,我们将与 smoldot 联系,讨论渐进式传递大数据集的可行性,以防止此类问题的发生。
更新验证者列表 :更新验证者列表的功能仍在开发中。尽管我已经在本地分支上开发了一个原型,但其用户体验目前尚不理想。我将会不断完善这个功能,一旦它达到我们的用户体验标准,我将立即用更好的版本更新 DApp。


未来可期



迄今为止,我们走过了一段非同寻常的旅程。我深信,我们正在通过这些开发工作创造出更好的成果。不过,我发现稳定这些 API 并提供全面的文档才是迫切需要。我们充满活力的社区有必要尽早有机会尝试这些工具。因此,我们在第一季度末的主要目标是发布@polkadot-api/client 的首个 Beta 版本。此版本将包含基本文档,使生态系统中的其他人能够开始探索和使用它。


请帮助我们推动这项工作



正如我在之前的更新中提到的,加速开发 Polkadot-API 的信心坚定不移。 这份信心促使我做出了一个重要的决定: 我将在本月底离开 Parity。 之后我将于与另一位优秀的开发人员 Victor Oliva 一起,专注于推进 Polkadot-API 的发展。 我们目前正在准备一份 OpenGov 提案,计划很快提交。 一旦提案准备就绪,我将在这里与大家分享。 你们的支持对我们来说至关重要 -- 因此,我恳请大家对提案投赞成票,以帮助我们维持并推进这项重要工作。

想参与到本文的讨论,欢迎到论坛中发表自己的意见: https://forum.polkadot.network/t/papi-is-coming-showcasing-the-validator-selector-tool-dapp/5756
关于如何参与到论坛的讨论中,请参看我们推出的波卡论坛使用指南: 《如何参与波卡的讨论:波卡官方论坛使用指南》







欢迎大家加入我们 Polkadot 生态研究院的电报:

https://t.me/polkadot_eri

欢迎大家访问波卡生态研究院的 Mirror 地址:
https://mirror.xyz/0x9A259b3a2316281Cc948cE2Cf1Ac610a79844f05




精选文章


平行线程  |  经济模型  | Slash  |  通货膨胀  |  NPoS | Web3 基金会
Staking
 |  Gavin Wood |  跨链  |  平行链  |  国库   Parity
DOT  |  Web3.0  |  网络效应  | Grant 指南
Statemint  |  区块链 SBP 计划  |  新计划
XCVM  |  BEEFY  |  XCM
Wasm


 


0

免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。

PoolX:质押赚新币
CEC、QTLX、GDV等热门新币火热进行中!
立即质押!

你也可能喜欢

鲍威尔兑现华尔街最想要的降息!但市场依旧疑虑重重

周三几乎所有主要资产都出现下跌,虽然跌幅并不大,但自2021年6月以来,美联储政策决议后市场从未出现过如此一致的回调。

Jin102024/09/20 20:09

美联储本次是“鹰派降息”?未来关键或在于鲍威尔会有多鸽!

花旗预计美联储将在11月再降息50个基点,并在12月降息25个基点。

Jin102024/09/20 20:09

美联储降息后,特朗普怒喷:这是在操控政治!

美联储的降息举措已经在两党之间产生巨大反响,哈里斯“点赞”,特朗普认为美联储居心叵测。

Jin102024/09/20 20:09

FBI:伊朗黑客一直在干预美国大选!

伊朗黑客据称窃取了特朗普的竞选材料,并发送给之前的拜登竞选团队。伊朗反驳:毫无根据!

Jin102024/09/20 20:09