首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用代理合同批准USDC支出

使用代理合同批准USDC支出
EN

Ethereum用户
提问于 2023-03-13 21:58:39
回答 1查看 137关注 0票数 2

我在仲裁Goerli网络上测试了我的代码,它起作用了,因为测试USDC合同是带有审批和传输功能的默认合同。

现在我想直播,我看到USDC (0xFF970A61A04b1cA14834A43A43f5dE4533eBDDB5CC8) ABI是不同的,因为它使用的是代理合同(0x1eFB3f88Bc88f03FD01804A5C53b7141bbEf5dED8)。

如何批准和转移USDC?我试图批准代理合同,但由于某种原因,转让失败了:

USDC = IERC20(0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8); USDC.transferFrom( msg.sender, address(this), _amount.mul(1e6) );

我把主要合同的转帐打给你。在有代理合同的情况下,批准支出和进行转移的正确方式是什么?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2023-03-13 22:08:33

有了代理合同,您就有了代理合同和实现合同。首先,你的术语有点混乱。

在这种情况下,代理合同为0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8。

执行合同为0x1eFB3f88Bc88f03FD1804A5C53b7141bbEf5dED8。

您将实现契约称为代理。代理是一种契约,它只是抓住逻辑来使用实现,非常小,并且使用delegateCall。

当您使用合同时,包括您批准的地址在内的所有内容都将传递给代理合同。代理是用delegateCall管理的,所以它们控制着所有的状态,如果您调用它,它们本质上就像合同一样运行。

对于这里的情况,您必须在代理合同(0xFF970A61A04b1cA14834A43f5dE4533eBD5CC8)上调用审批,然后调用代理合同上的传输。

当您有代理系统时,不要与实现契约交互。即使它没有恢复,它也没有做任何有用的事情。您所关心的所有状态都在代理合同中,您只应该与它交互。

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

https://ethereum.stackexchange.com/questions/147348

复制
相关文章

相似问题

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