首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Aptos Blockchain上的移动模块中定义和查询读取函数?

如何在Aptos Blockchain上的移动模块中定义和查询读取函数?
EN

Stack Overflow用户
提问于 2022-10-19 16:58:40
回答 3查看 251关注 0票数 3

在Aptos移动文档中,它解释了如何与已公开"entry functions“(.In hello_blockchain示例,使用set_message )的智能契约进行交互。

移动模块公开访问点,也称为入口函数。这些访问点可以通过事务调用。CLI允许无缝访问这些访问点。示例移动模块hello_blockchain公开接受字符串的set_message条目函数。这可以通过CLI调用:

但是,对于如何查询get_message函数没有任何解释,据我所知,该函数类似于一个读函数。

此外,对于如何使用Python查询读/写函数没有任何解释。

两个问题:

  1. 可以使用Python查询移动模块中的读/写函数吗?
  2. ,如何在移动模块中定义读函数?
EN

回答 3

Stack Overflow用户

发布于 2022-10-27 12:25:12

如果要读取帐户上的资源,则应向API提交读取请求。例如,使用curl:

代码语言:javascript
运行
AI代码解释
复制
curl https://fullnode.mainnet.aptoslabs.com/v1/accounts/<addr>/resource/<resource>

这方面的一个具体例子:

代码语言:javascript
运行
AI代码解释
复制
curl https://fullnode.mainnet.aptoslabs.com/v1/accounts/0x00ffe770ccae2e373bc1f217585a1f97b5fa003cc169a27e1b4d6bfc8d3b243b/resource/0x3::token::TokenStore

这相当于:

在account 0x00ffe770ccae2e373bc1f217585a1f97b5fa003cc169a27e1b4d6bfc8d3b243b上读取资源0x3::token::TokenStore

在Python中,您将执行如下操作:

代码语言:javascript
运行
AI代码解释
复制
client.account_resource(
    "0x00ffe770ccae2e373bc1f217585a1f97b5fa003cc169a27e1b4d6bfc8d3b243b",
    "0x3::token::TokenStore",
)

这使用了以下客户端方法:https://github.com/aptos-labs/aptos-core/blob/05d04ecc511f572380e1e8fe0bbc234f30645f0d/ecosystem/python/sdk/aptos_sdk/client.py#L63

get_message函数在hello_blockchain示例中有些误导(我们可以改进这一点)。但是有一个提示,请注意只有entry函数可以通过外部调用运行(例如,使用aptos move run命令)。所有其他函数只能从移动模块中调用。

更清楚的是:为了从Aptos块链读取,您必须向read端点发出请求,而不是在Move模块中“读取函数”。

有关更多信息,请查看这些文档:https://aptos.dev/tutorials/your-first-transaction

票数 4
EN

Stack Overflow用户

发布于 2022-11-17 10:20:52

看来你在找视图函数。目前,无法从移动模块查询读取函数。

在Aptos repo:https://github.com/aptos-labs/aptos-core/issues/4915上有一个开放的Github特性请求。

票数 0
EN

Stack Overflow用户

发布于 2022-12-02 20:56:18

为了模拟Aptos上的只读函数,我们最近构建了一个工具:https://github.com/sentioxyz/sentio-composer。如果在您的模块中定义了一个视图函数,不管它是否是一个入口函数,您都可以使用这个工具调用它,并使用真正的链上数据。

例如,要查看帐户的余额,可以使用CLI工具模拟balance函数:

代码语言:javascript
运行
AI代码解释
复制
# command
view-function \
--function-id 0x1::coin::balance \
--type-args 0x1::aptos_coin::AptosCoin \
--args 0x21ddba785f3ae9c6f03664ab07e9ad83595a0fa5ca556cec2b9d9e7100db0f07 \
--ledger-version 35842267 \
--network mainnet
# output
{
  "log_path": "",
  "return_values": [
    3120544100
  ]
}

快速网络演示:http://composer.sentio.xyz/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74133381

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文