# 解析——什么是错误发送救星 ERC223

By [加密劲旅——葛见圣](https://paragraph.com/@btcus) · 2022-03-24

---

**ERC223**是一种代币标准，基于该标准发行的代币允许在发送到不匹配的合约地址时并不会锁定也不会接收代币，而是原路返还，以实现对用户资产的保护功能。原因是基于ERC223的合约接口中加入了一个叫做“tokenfallback”的功能,允许当发生代币错误发送至不正确地方时，代币会原路返回账户，这样的功能和ETH在以太坊网络上的转账一样，不会被错误的合约地址锁定资产，大大降低代币丢失可能性。

无论是新韭菜还是老韭菜，想必都见到过：请勿直接将代币提现至合约地址，这样的一句话，很多人刚开始玩，对于以太坊上的ERC20代币合约地址和个人地址有时候分不清，出现了许多将代币提现到合约地址的情况，这种情况，造成了数以千万计的数字资产损失，这对标榜去中心化、安全、自我控制的区块链技术龙头老二Ethereum 网络来讲是非常严重的短板。

![](https://storage.googleapis.com/papyrus_images/350abe43cfaeb0ca764fccf701a08f59b86a4f948cf935fff414137c690fbe12.jpg)

部分被锁定在合约中的代币资产

![](https://storage.googleapis.com/papyrus_images/a9a86fb44b6f073bbe435cedc236b2bb484360f9c518edc16fb00350c401f161.jpg)

某玩家错误将自己的link 代币发送至别的合约地址，无法取回

这样的情况在币圈常常发生，尤其是刚入门的小白，非常容易弄混合约地址和自己钱包地址，常常将本应填自己钱包地址的空格填成了代币合约地址，而且合约地址和钱包地址几乎无异，交易所无法分辨。

![](https://storage.googleapis.com/papyrus_images/82412caaf3d810c9f2c618bac9552f5221970d75817c2bd2a4784842a7fc6e59.jpg)

看起来几乎无异

针对这个问题，ERC20常常为人诟病，当然也有许多开发者提出了对该问题的解决方案,比较知名的有ERC223,ERC777,ERC827等等，今天我们要讲的就是ERC223。

**ERC223**由EthereumCommonwealth 、 Callisto network创始人，以太坊、以太经典开发者Dexaran2017年3月5日提出。

![](https://storage.googleapis.com/papyrus_images/a4fceb77e720d30434f9b568f2b20af7cab7800e6f117a211c70428cb112c009.jpg)

一般情况下如果你向一个与ETH 无关的合约地址发送1个ETH，那么这一个ETH 不会真正发送出去，它最终会退回原账户，如果是发送1个ERC20 token到一个无关的合约地址，该合约地址会拒收该token，而且该token将会被锁定在此合约中，并且无法退回,因为ERC20代币合约中不具有正确处理错误发送的功能，所以当有错误发送的代币进入合约中时，这些代币将会被锁定，且无法取出。但是基于**ERC223**标准发行的代币允许在不小心发送到不匹配的合约地址时并不会接收或者锁定，而是原路返还代币或者直接交易失败，以实现对用户资产的保护功能。原因是基于ERC223的合约接口中加入了一个叫做“tokenfallback”的功能,允许当发生代币错误发送至不正确地方时，代币会原路返回账户，这样的功能和ETH在以太坊网络上的转账一样，不会被错误的合约地址锁定资产，大大降低代币丢失可能性。

**ERC223主要特点如下**：

1.**避免错误发送损失**：遵循ERC223的代币在不小心发送给合约地址等不正确的地址的时候交易会失败或者会原路返回，避免损失。因为ERC20给接收地址发送时使用的是transfer 功能，但是与合约地址交互时使用的是approve和transferFrom ，当误将合约地址当做接收地址，使用transfer功能时，合约不会有正确反应，从而导致代币锁定。而ERC223则是将两种功能同一化，都使用transfer，当ERC223代币合约调用transfer 发送一笔交易时，如果接收方是ERC223代币地址，那么交易会正常执行，如果发现接收方是一个ERC223合约地址，那么合约就会执行一个tokenFallback的功能，将代币返回发送者地址，如果接收方并非ERC223代币或者ERC223地址的话，交易就会失败，代币无法发出。

2\*\*.减少合约交互过程中所需手续费，减少区块膨胀：\*\*ERC223与智能合约交互的过程中不像ERC20一样，需要approve`及transferFrom` 功能，而是和普通的发送代币一样仅使用的是`transfer`功能，这样的话就会减少一半gasfee的使用。，同时因为少了一个步骤，能够减少区块膨胀。

3.\*\*类似以太坊原生代币ETH交易机制：\*\*很大程度上其ERC223代币使用过程是类似ETH币的使用的，因为ETH的合约中也有一个叫做`fallback`的功能，能够避免ETH 发送至错误的合约地址。

4.\*\*完全向后兼容：\*\*ERC223标准完全向后ERC20标准，意味着支持ERC20的功能、智能合约以及服务也同样能够支持ERC223标准。

ERCC223可能不会是最佳的解决方案，但是属于类似方案中优秀者，目前以太坊上的依然存在很多问题影响实际应用，同样也有许多开发者、团队在提出优秀的解决方案，总之，拥有繁荣的开发者生态，以太坊永远不愁解决方案，也不愁前程，这也是ETH呼声一度能够盖过BTC的底气所在。

_以上内容仅供分享，不做投资意见_

本文内容如有不正确之处，敬请指出。

更多内容分享：

---

*Originally published on [加密劲旅——葛见圣](https://paragraph.com/@btcus/erc223)*
