Move.

帖子

分享您的知识。

Steven.
Nov 16, 2023
专家问答

如何获得 0x2 Move 软件包中移动模块的完整列表?

除了0x2已知的 Move 模块(如 ''、'、' pay``pay_sui``transfer和 ')之外,我怎样才能获得软件包中可以发送 SUI 的模块的完整列表sui?我最初检查了 explorer.sui.io 平台并使用了这个provider.getNormalizedMoveModulesByPackage('0x2')方法,但我发现了差异,例如 transfer_objectMove 模块没有出现在资源管理器和方法提供的列表中. 另外,provider.getEvents由于开发网络上的稳定性问题,我很难正确使用过滤事件,导致频繁超时. 有人能指导我使用正确的方法来获取这些信息并更有效地处理事件过滤吗?

  • Move Module
1
2
分享
评论
.

答案

2
Jeremy.
Nov 16 2023, 13:50

要更有效地筛选事件,可以将 “与” 过滤器与 EventQuery 一起使用. 正确的语法可能看起来像这样(尽管在 TypeScript 中确切的语法可能会有所不同):

And({
    MoveModule: { package: '0x2', module: 'pay' },
    Any[{ EventType: 'MoveEvent' }, { EventType: 'CoinBalanceChange' }]
})

请注意EventQuery,其EventFilter用途不同. EventQuery与该sui_getEvents方法一起使用来查询存储在数据库中的事件,而EventFilter用于 Sui 中的实时事件订阅. 到目前为止,EventQuery不支持像 Any/和/或这样的组合器. 在 Sui 生态系统中处理事件查询和过滤器时,请务必牢记这一区别. 此外,计划将来将这些功能移至索引器.

0
评论
.
Steven.
Nov 16 2023, 13:53

如你所述,要获取 0x2 包中可以发送 SUI 的模块的完整列表,你通常会使用 provider.getNormalizedMoveModulesByPackage ('0x2') 方法. 但是,您已经注意到资源管理器提供的列表与该方法之间存在差异. 这可能是因为资源管理器和提供者可能并不总是同步的,尤其是在频繁更改的开发网络环境中.

不幸的是,如果没有有关 SUI 框架及其 API 的更多信息,就很难提供更具体的解决方案. 但是,以下是一些一般性建议:

检查更新:确保浏览器和提供商都是最新的. 如果资源管理器提供更准确的模块列表,则可能是因为它有更新的信息. 失败时重试:如果你在调用 provider.getEvents 时经常遇到超时问题,你可以实现重试机制. 这将涉及捕获超时错误并在放弃之前重试一定次数的请求. 更有效地筛选事件:为了更有效地筛选事件,你可以尝试缩小过滤器的参数范围. 例如,您可以按事件类型、区块号或交易哈希进行过滤. 这可能有助于减少需要处理的事件数量并避免超时. 查阅文档:如果仍然遇到问题,应查阅 SUI 文档或联系 SUI 社区寻求帮助. 他们也许能够提供更具体的建议或解决方案. 至于与 “transfer_object” 模块的差异,这个模块可能是另一个包的一部分,或者它可能不包含在0x2包的公共API中. 你可以尝试通过检查 0x2 包的源代码或询问 SUI 社区来验证这一点.

请记住,SUI 框架仍在开发中,其 API 可能会随着时间的推移而发生变化. 因此,及时了解最新的更改和更新非常重要.

请注意,这些是一般性建议,实际的解决方案可能取决于您的应用程序的特定要求以及 SUI 框架及其 API 的特定行为.

0
评论
.

你知道答案吗?

请登录并分享。

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148帖子231答案
Sui.X.Peera.

赚取你的 1000 Sui 份额

获取声誉积分,并因帮助 Sui 社区成长而获得奖励。

奖励活动七月