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

IP归属:四川

摘要

简查看验证者选择工具(详情请参见:

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进行。
  • 动态编解码器和运行时兼容性:DApp适应运行时变化并验证与当前运行时的兼容性。
  • 为未来升级做准备: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生态研究院
收藏
举报
Polkadot生态研究院
累计发布内容96篇 累计总热度10万+

陀螺科技现已开放专栏入驻,详情请见入驻指南: https://www.tuoluo.cn/article/detail-27547.html

Polkadot生态研究院专栏: https://www.tuoluo.cn/columns/author1810696/

本文网址: https://www.tuoluo.cn/article/detail-10111461.html

免责声明:
1、本文版权归原作者所有,仅代表作者本人观点,不代表陀螺科技观点或立场。
2、如发现文章、图片等侵权行为,侵权责任将由作者本人承担。

相关文章