在Aptos移动文档中,它解释了如何与已公开"entry functions“(.In hello_blockchain示例,使用set_message )的智能契约进行交互。
移动模块公开访问点,也称为入口函数。这些访问点可以通过事务调用。CLI允许无缝访问这些访问点。示例移动模块hello_blockchain公开接受字符串的set_message条目函数。这可以通过CLI调用:
但是,对于如何查询get_message函数没有任何解释,据我所知,该函数类似于一个读函数。
此外,对于如何使用Python查询读/写函数没有任何解释。
两个问题:
发布于 2022-10-27 12:25:12
如果要读取帐户上的资源,则应向API提交读取请求。例如,使用curl:
curl https://fullnode.mainnet.aptoslabs.com/v1/accounts/<addr>/resource/<resource>
这方面的一个具体例子:
curl https://fullnode.mainnet.aptoslabs.com/v1/accounts/0x00ffe770ccae2e373bc1f217585a1f97b5fa003cc169a27e1b4d6bfc8d3b243b/resource/0x3::token::TokenStore
这相当于:
在account
0x00ffe770ccae2e373bc1f217585a1f97b5fa003cc169a27e1b4d6bfc8d3b243b
上读取资源0x3::token::TokenStore
。
在Python中,您将执行如下操作:
client.account_resource(
"0x00ffe770ccae2e373bc1f217585a1f97b5fa003cc169a27e1b4d6bfc8d3b243b",
"0x3::token::TokenStore",
)
get_message
函数在hello_blockchain示例中有些误导(我们可以改进这一点)。但是有一个提示,请注意只有entry
函数可以通过外部调用运行(例如,使用aptos move run
命令)。所有其他函数只能从移动模块中调用。
更清楚的是:为了从Aptos块链读取,您必须向read端点发出请求,而不是在Move模块中“读取函数”。
有关更多信息,请查看这些文档:https://aptos.dev/tutorials/your-first-transaction。
发布于 2022-11-17 10:20:52
看来你在找视图函数。目前,无法从移动模块查询读取函数。
在Aptos repo:https://github.com/aptos-labs/aptos-core/issues/4915上有一个开放的Github特性请求。
发布于 2022-12-02 20:56:18
为了模拟Aptos上的只读函数,我们最近构建了一个工具:https://github.com/sentioxyz/sentio-composer。如果在您的模块中定义了一个视图函数,不管它是否是一个入口函数,您都可以使用这个工具调用它,并使用真正的链上数据。
例如,要查看帐户的余额,可以使用CLI工具模拟balance函数:
# 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/
https://stackoverflow.com/questions/74133381
复制相似问题