首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >永恒中的跨合约调用

永恒中的跨合约调用
EN

Stack Overflow用户
提问于 2021-04-29 20:38:10
回答 2查看 35关注 0票数 3

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

EN

回答 2

Stack Overflow用户

发布于 2021-05-01 04:02:31

要从另一个合同发出合同呼叫,您需要:

使用要调用的合约(即MyRemoteContract): )的您感兴趣的入口点,

  1. 将在调用者合约上创建一个接口

合约MyRemoteContract =入口点my_remote_entrypoint:(int) => bool入口点another_remote_entrypoint:(address,int) => bool

  1. 管理您的调用者合同中的其他合同(即:将其保持在您的状态)

合同MyCallerContract =记录状态={ some_field : address,remote_contract_instance : MyRemoteContract }

  1. 最后,在进行初始化时,可以通过参数发送远程协定地址,以便在调用者协定

上实例化

状态有状态入口点初始化( remote_contract_instance_param : MyRemoteContract):

={ remote_contract_instance = remote_contract_instance_param }

  1. 当你给这个合同打电话时,你需要告诉他地址(ct_....)已部署的contract

实例的

从现在起,

  1. 拥有您的合同将能够调用您在接口上获得的任何远程入口点。

有状态入口点try_remote_call(值: int) =state.token.my_remote_entrypoint(值)

另外请注意,当您的远程约定使用Call.caller时要小心,因为它不是实际的地址,而是作为调用者的约定地址。

票数 1
EN

Stack Overflow用户

发布于 2021-05-20 12:28:46

若要调用另一个约定,可以部署第一个约定,然后将相同的参数传递到调用的方法中

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

https://stackoverflow.com/questions/67317548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档