首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与公开部署的可升级的openzeppelin智能合同交互

与公开部署的可升级的openzeppelin智能合同交互
EN

Stack Overflow用户
提问于 2021-12-14 18:11:20
回答 2查看 364关注 0票数 0

我已经将一个智能契约部署到一个公共网络中,比如二进制智能链网络,它可以在bscscan这样的块链资源管理器上查看。

部署的smart合同是用Openzeppelin升级插件开发的,可以升级。

部署之后,我如何与智能契约交互,在不构建前端web3应用程序的情况下调用它上的公共方法?

通常,合同上的所有公共方法都在bscscan上公开,如所附图像所示,但是,由于Openzeppelin升级插件使用代理契约来管理升级,所以只有代理(manager)合同上的公共方法在bscscan上可见。

是否有任何dApps可以方便地与以这种方式部署的可升级合同进行通信,或者是否可以使用其他方法来促进与可升级合同的交互?

EN

回答 2

Stack Overflow用户

发布于 2021-12-14 19:28:30

假设在块链资源管理器上验证了实现契约,则可以使用Read as ProxyWrite as Proxy选项卡。

它们允许您使用实现契约的ABI与代理合同进行交互,就像您可以使用Read ContractWrite Contract选项卡与常规(非代理)合同进行交互一样。

票数 0
EN

Stack Overflow用户

发布于 2021-12-16 17:52:43

您可以在代理契约上调用逻辑契约的公共方法,而代理契约中没有该方法。然后,代理必须将调用重定向到其回退函数,该函数反过来委托/转发对的调用--注册的当前逻辑契约,后者针对存储在代理契约中的状态数据运行该方法的代码。(代理合同有效地从注册的当前逻辑契约中借用了给定方法的代码。)升级可升级合同时,代理管理器只需部署新合同,并将契约过度注册为当前逻辑契约的(当前逻辑契约),同时将状态数据存储在代理中。这里起作用的两个概念:

  1. 如果调用不存在的函数,则在契约上调用回退函数,
  2. 调用委托,它调用另一个逻辑契约的公共函数,从而使该函数工作于保存在代理中的状态数据,而不是逻辑契约中的状态数据。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70353676

复制
相关文章

相似问题

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