我不熟悉ERC-20和坚固。当我想到一些想法时,我有两个问题可能是天真的。
假设我正在开发两个硬币A和B。
发布于 2019-11-08 20:55:36
虽然两个问题看起来很相似,但答案却大不相同。
对于第二个问题,答案肯定是肯定的。管理令牌A的契约知道这些令牌的所有传输。因此,A的契约可以检测到有人将令牌A转移到它,并且在我们的情况下,可以做一些响应,转移令牌B。
对于第二个问题,答案并不那么简单。与以太不同的是,当ERC-20令牌被传输到合同地址时,合同的代码不会被调用,因此合同不能立即响应传输。尽管有几种方式,契约如何接收令牌并对这些传入的令牌传输做出某种反应。
最常见的方法是使用批准/转移模式:
transfer函数直接发送令牌。相反,他允许A的契约通过调用B的契约上的approve函数并传递A契约地址和令牌数量作为参数来获取他的B令牌。此时令牌尚未被转移,但是A的合同才有资格获得这些令牌。transferFrom来获取B令牌。实际上,即使合同A将由合同B管理的令牌交换为由合同C管理的令牌,即合同A根本不管理任何令牌,而只是交换它们,这种方法也是有效的。
另一种方法是在B令牌的契约中实现ERC-223 API。该标准定义了智能契约如何被告知传入令牌传输的标准方式。它要求接受方合同,在我们的情况下,履行职能的A合同,并签署如下:
function tokenFallback(address _from, uint _value, bytes _data)每次将符合ERC-223的令牌传输到实现此函数的契约时,都会调用此函数。在函数接收方契约中,可能会做一些有用的事情,例如向_from地址发送一些其他令牌。
发布于 2018-04-05 05:23:16
好的。基本上,您需要的是一个标准的ERC20令牌,它有一些额外的特性:
1)以某种方式购买令牌
2)当用户从合同A购买代币时,合同还通知合同B修改用户余额。还有各种检查,以确保这两个操作都是有效的。
您不需要任何额外的“发送”令牌--它们只是合同中的余额。
https://ethereum.stackexchange.com/questions/44814
复制相似问题