首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将我自己的ERC20令牌交换给USDC和back合同

将我自己的ERC20令牌交换给USDC和back合同
EN

Ethereum用户
提问于 2021-09-29 08:52:54
回答 2查看 712关注 0票数 1

我想在我自己的ERC20和USDC之间创建一个非常简单的交换。

我正在用Vyper和Python编写这些代码。

我设想这种工作的一种方式是监视区块链上的USDC传输事件,然后根据是否有人想要使用USDC来购买或出售我的ERC20令牌来创建和燃烧我的ERC20令牌的离链程序。

我所设想的机制如下:

接收USDC发送我的ERC20令牌(有人购买我的令牌)

USDC传输事件将有一个to:我的合同地址。然后,我的离链侦听器将创建我的ERC20令牌,并将其发送到发送USDC到我的合同的from: address。

问题1:

  • 如果我的合同收到了USDC,它如何才能获得这些资金?怎么能把它们送到另一个钱包里。我想确保发送到合同的任何USDC都是容易访问的。Vyper上的示例代码会很棒。

接收ERC20令牌发送USDC (有人出售我的令牌以换取USDC)

我将有一个方法,它会烧掉我的ERC20令牌并发出一个特殊事件(让我们称之为SELL2USDC)。

问题2:我如何将USDC从我的合同发送到第三方地址?Vyper代码样本会很棒的。

问题3:在发送USDC之前,我的合同是否需要有USDC余额?如果还不够呢?我猜合同会恢复,交易也会失败。

EN

回答 2

Ethereum用户

发布于 2021-09-29 09:16:55

我无法帮助您实现Vyper/Python,但我认为更好的解决方案是将整个工作流保持在链上。当用户想要将USDC替换为您的ERC20令牌时,您可以调用USDC合同中的审批/TransferFrom函数将这些令牌传输到您的智能契约,一旦完成了这些任务,您就可以创建令牌并将令牌发送给用户。不需要脱链代码(因此更安全)。

如果您希望您的契约中的USDC是可访问的,则始终可以实现一个仅限管理的“撤回”函数,该函数将允许您将令牌发送到任何其他地址。您还可以编程地确定合同将如何处理USDC (例如,通过Aave借出)。

关于你的第三个问题是的。如果要确保用户可以随意来回交换,则必须始终确保您的合同有足够的USDC余额来支持未完成的ERC20。否则事务将失败。

票数 1
EN

Ethereum用户

发布于 2021-10-01 20:42:55

对未来自我的注意:

这似乎与当前的任务极为相关:

https://github.com/curvefi/curve-contract-polygon/blob/master/contracts/burners/BTCBurner.vy

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

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

复制
相关文章

相似问题

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