ERC 223
ERC 223标准由u / Dexaran提出。这是一个令牌标准,使令牌交易所能够像以太币交易所一样精确地进行。 ERC223使用时机照料(考虑一次交易)来防止令牌在未处理的交易中丢失。这项增强的标准通过使传递函数对无效的交易所造成重大错误并放弃交易所,从而避免了资产损失,从而消除了ERC20的基本错误。简而言之,ERC 223围绕安全性。
ERC223揭示的ERC20令牌标准问题:
随附的内容描述了令牌合约和与确定的令牌一起工作的合约的标准容量,可以实现以防止意外地将令牌发送到合约并影响令牌交易所以进行以太交易所。
ERC20令牌标准正在提示最终客户现金不幸。原则上的问题是没有可能处理通过ERC20代币的交易所容量执行的接近ERC20交易所。
如果您发送100 ETH到一个不建议与Ether一起使用的协议上的机会,到那时,它将关闭交易,不会有任何麻烦。您很有可能会将100个ERC20令牌发送到预计无法与ERC20令牌一起使用的协议中,届时,由于它无法感知即将到来的交易所,因此不会取消令牌。结果,您的代币将停滞在协议余额上。
下面介绍了令牌合约和使用指定令牌的合约可以实现的标准功能,这些功能可以防止将令牌意外发送到合约,并使令牌交易的行为类似于以太交易。
ERC20令牌标准正在导致最终用户金钱损失。主要问题是无法处理通过ERC20令牌的传递功能执行的传入ERC20交易。
如果您将100 ETH发送给不打算与Ether一起使用的合约,则它将拒绝交易,并且不会发生任何不良情况。如果您将100个ERC20令牌发送给不打算与ERC20令牌一起使用的合约,则它不会拒绝令牌,因为它无法识别传入的交易。结果,您的代币将卡在合约余额中。
当前丢失了多少ERC20代币(2017年12月27日):
- QTUM,损失1,204,273美元。在Etherscan上观看
- EOS,损失1,015,131美元。在Etherscan上观看
- GNT,损失249,627美元。在Etherscan上观看
- STORJ,输了$217,477。在Etherscan上观看
- Tronix,损失201,232美元。在Etherscan上观看
- DGD,损失151,826美元。在Etherscan上观看
- OMG,损失了149,941美元。在Etherscan上观看
ERC 223将解决的ERC20的另一个缺点:
- 缺乏转移处理的可能性。
- 代币丢失。
- 代币交易应符合以太坊的统一思想。当用户想要转移令牌时,他应该始终调用转移。用户是存入合约还是发送至外部拥有的帐户都没有关系。
这些将使合约能够处理传入的令牌交易,并防止意外接收的令牌被合约接受(并停留在合约的余额上)。
例如:去中心化交易所将不再需要用户先致电批准然后致电存款(这是内部调用transferFrom来撤回已批准的令牌)。代币交易将根据交易合约自动进行。
这里最重要的是在执行合约交易时调用tokenFallback。
规格
代币
适用于代币的合约
方法
注意:重要的一点是,如果合约开发人员希望其合约使用指定的令牌,则必须实现tokenFallback。
如果接收方未实现tokenFallback函数,则该合约不适用于令牌,则交易必须失败,并且不会传输任何令牌。当尝试将以太币发送到未实现应支付function()的合约时,以太币交易失败。
设计ERC223令牌标准的原因。
这是ERC223解决的ERC20令牌标准问题的描述:
ERC20令牌标准正在导致最终用户金钱损失。主要问题是无法处理通过ERC20令牌的传递功能执行的传入ERC20交易。
如果您将100 ETH发送给不打算与Ether一起使用的合约,则它将拒绝交易,并且不会发生任何不良情况。如果您将100个ERC20令牌发送给不打算与ERC20令牌一起使用的合约,则它不会拒绝令牌,因为它无法识别传入的交易。结果,您的代币将卡在合约余额中。
ERC223的功能
- totalSupply:函数totalSupply()常量返回(uint256 totalSupply)
获取总代币供应
- 名称:函数名称()常量返回(字符串_name)
获取令牌的名称
- 符号:函数symbol()常量返回(bytes32 _symbol)
获取令牌的符号
- 小数:函数小数()常量返回(uint8 _decimals)
获取令牌的小数
- balanceOf:函数balanceOf(address _owner)常量返回(uint256 balance)
获取另一个地址为_owner的帐户的余额
- transfer(address,uint):函数transfer(地址_to,uint _value)返回(布尔)
- transfer(地址,uint,字节):函数transfer(地址_to,uint _value,字节_data)返回(布尔)
有人要转让令牌时始终调用的函数。
由于ERC20传递函数没有字节参数,因此出于向后兼容的原因而需要。如果_to是合约,则此函数必须传送令牌并在_to中调用函数tokenFallback(address,uint256,bytes)。如果没有在_to(接收者合约)中实现tokenFallback函数,则事务必须失败,并且不应该进行令牌传输。如果_to是外部拥有的地址,则必须发送事务而不尝试在_to中执行tokenFallback。
_data可以附加到此令牌交易中,并将永久保留在区块链中(需要更多的天然气)。 _data可以为空。
注意:检查_to是合约还是地址的推荐方法是汇编_to的代码。如果_to中没有代码,则为外部地址,否则为合约。
大事记
- 传递:
事件传输(地址从_from索引的地址,从_to索引的地址,uint256 _value的索引,字节_data的索引)
- 令牌传输时触发。
- 代币使用合约
函数tokenFallback(地址_from,uint _value,字节_data)
当令牌持有者发送令牌时,从令牌合约中调用的一种处理令牌转移的功能。 _from是令牌发送方的地址,_value是传入令牌的数量,_data是与以太交易的msg.data类似的附加数据。类似地,它与以太交易的后备功能类似,但不返回任何内容。
注意:msg.sender将是tokenFallback函数内部的令牌合约。过滤发送哪些令牌(通过令牌合约地址)可能很重要。令牌发送者(发起令牌交易的人)将是_tokenFallback函数中的_from。
ERC 223的优点:
-
处理智能合约中的传入交易
ERC223提供了一种一致的方式来处理智能合约中的传入令牌交易,从而使开发人员能够创建更多创新的协议。
-
提高安全性
由于ERC 223使开发人员明确处理传入交易,因此可以保护消费者避免将令牌发送到不支持令牌的智能合约。到目前为止,此问题已导致超过40万美元的各种代币损失得不可挽回。对于ERC223,此问题已过去。
- 较低的费用
ERC20规定了一种提取资金的拉动机制,尤其是在处理智能合约时。这意味着您必须支付两次汽油费:第一次批准交易,第二次实际收到资金。 ERC223无需处理这个难题就可以处理交易,因此您只需支付一次费用。
缺点和风险:
- ERC-223目前只是提案,而不是标准。因此,没有任何与此标准一起部署的引人注目的ICO令牌。
- 此外,我尚未从研究中发现的任何生产令牌中都实现了该功能。
- 交易所可能需要做一些修改才能支持这种令牌。有一些选项可能尚未为某些交易所做好准备。
ERC 223职位最早出现在Nvest Labs。