首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于ERC-20令牌交换

关于ERC-20令牌交换
EN

Ethereum用户
提问于 2018-04-05 04:44:44
回答 2查看 80关注 0票数 0

我不熟悉ERC-20和坚固。当我想到一些想法时,我有两个问题可能是天真的。

假设我正在开发两个硬币A和B。

  1. 在A的合同中,当它收到一些B的令牌时,它能自动发送一些A的令牌吗?
  2. 在A的合同中,当它收到A的一些令牌时,它能自动发送一些B的令牌吗?
EN

回答 2

Ethereum用户

发布于 2019-11-08 20:55:36

虽然两个问题看起来很相似,但答案却大不相同。

对于第二个问题,答案肯定是肯定的。管理令牌A的契约知道这些令牌的所有传输。因此,A的契约可以检测到有人将令牌A转移到它,并且在我们的情况下,可以做一些响应,转移令牌B。

对于第二个问题,答案并不那么简单。与以太不同的是,当ERC-20令牌被传输到合同地址时,合同的代码不会被调用,因此合同不能立即响应传输。尽管有几种方式,契约如何接收令牌并对这些传入的令牌传输做出某种反应。

最常见的方法是使用批准/转移模式:

  1. 希望将B令牌发送到A的合同并交换A令牌的用户,不会通过transfer函数直接发送令牌。相反,他允许A的契约通过调用B的契约上的approve函数并传递A契约地址和令牌数量作为参数来获取他的B令牌。此时令牌尚未被转移,但是A的合同才有资格获得这些令牌。
  2. 然后,用户调用A合同上的一些函数,要求该合同接收他的令牌。
  3. 然后A的合同通过在B的合同上调用transferFrom来获取B令牌。
  4. 最后,A的契约将一个令牌发送给用户。

实际上,即使合同A将由合同B管理的令牌交换为由合同C管理的令牌,即合同A根本不管理任何令牌,而只是交换它们,这种方法也是有效的。

另一种方法是在B令牌的契约中实现ERC-223 API。该标准定义了智能契约如何被告知传入令牌传输的标准方式。它要求接受方合同,在我们的情况下,履行职能的A合同,并签署如下:

代码语言:javascript
复制
function tokenFallback(address _from, uint _value, bytes _data)

每次将符合ERC-223的令牌传输到实现此函数的契约时,都会调用此函数。在函数接收方契约中,可能会做一些有用的事情,例如向_from地址发送一些其他令牌。

票数 1
EN

Ethereum用户

发布于 2018-04-05 05:23:16

好的。基本上,您需要的是一个标准的ERC20令牌,它有一些额外的特性:

1)以某种方式购买令牌

2)当用户从合同A购买代币时,合同还通知合同B修改用户余额。还有各种检查,以确保这两个操作都是有效的。

您不需要任何额外的“发送”令牌--它们只是合同中的余额。

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

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

复制
相关文章

相似问题

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