gpt4 book ai didi

blockchain - Aeternity 中的跨合约调用

转载 作者:行者123 更新时间:2023-12-04 03:33:55 30 4
gpt4 key购买 nike

我正在查看 Sophia 文档 ( https://aeternity-sophia.readthedocs.io/en/latest/contracts/#calling-other-contracts ),但我不知道如何执行从一个 Sophia 合约到另一个 Sophia 合约的跨合约调用(从一个 Sophia 合约调用另一个合约函数)。我是否必须创建一个界面或类似的东西?

最佳答案

要从另一个合约调用合约,您需要:

  1. 在调用方合约上创建一个接口(interface),其中包含您对要调用的合约(即 MyRemoteContract)感兴趣的入口点:
contract MyRemoteContract =
entrypoint my_remote_entrypoint : (int) => bool
entrypoint another_remote_entrypoint : (address, int) => bool
  1. 管理调用者合约中的其他合约(即:将其保存在您的状态中)
contract MyCallerContract = 
record state = {
some_field : address,
remote_contract_instance : MyRemoteContract }
  1. 最后,当您进行初始化时,您可以通过参数发送您的远程合约地址以在您的调用者合约上实例化
stateful entrypoint init( remote_contract_instance_param : MyRemoteContract) : state = {
remote_contract_instance = remote_contract_instance_param }
  1. 调用此合约(调用者)时,您需要告诉他已部署合约实例的地址(ct_....)

  2. 从现在开始,您的合约将能够调用您在界面上获得的任何远程入口点。

stateful entrypoint try_remote_call(value: int) =
state.token.my_remote_entrypoint(value)

一些旁注,当您的远程合约使用 Call.caller 时要小心,因为它不是实际地址,而是作为调用者的合约地址。

关于blockchain - Aeternity 中的跨合约调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67317548/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com