+
80
-

什么是ERC20协议?什么是token、代币?

什么是ERC20协议?什么是token、代币?


网友回复

+
0
-

什么是 ERC20

ERC-20 标准是在2015年11月份推出的,使用这种规则的代币,表现出一种通用的和可预测的方式。 简单地说,任何 ERC-20 标准的代币都能立即兼容以太坊钱包(几乎所有支持以太币的钱包,包括Jaxx、MEW、imToken等,也支持 erc-20的代币),由于交易所已经知道这些代币是如何操作的,它们可以很容易地整合这些代币。这就意味着,在很多情况下,这些代币都是可以立即进行交易的。

也可以把ERC20简单理解成以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议。遵守这些协议的代币我们可以认为是标准化的代币,而标准化带来的好处是兼容性好。这些标准化的代币可以被各种以太坊钱包支持,用于不同的平台和项目。

说白了,你要是想在以太坊上发行代币融资,必须要遵守ERC20标准。

代币(Token)是区块链中定义价值的方式,用于标定金融或数字资产。在以太坊上,代币使用相同的标准,这样代币之间的兑换和DAPP支持就会变得容易。

ERC20的标准接口是这样的:
contract ERC20 {
function name() constant returns (string name)
function symbol() constant returns (string symbol)
function decimals() constant returns (uint8 decimals)
function totalSupply() constant returns (uint totalSupply);
function balanceOf(address _owner) constant returns (uint balance);
function transfer(address _to, uint _value) returns (bool success);
function transferFrom(address _from, address _to, uint _value) returns (bool success);
function approve(address _spender, uint _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint remaining);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}

下面对上面的内容做一个简单的解释: name 返回ERC20代币的名字,例如”My test token”。 symbol 返回代币的简称,例如:MTT,这个也是我们一般在代币交易所看到的名字。 decimals 返回token使用的小数点后几位。比如如果设置为3,就是支持0.001表示。 totalSupply 返回token的总供应量 balanceOf 返回某个地址(账户)的账户余额 transfer 从代币合约的调用者地址上转移_value的数量token到的地址_to,并且必须触发Transfer事件。 transferFrom 从地址_from发送数量为_value的token到地址_to,必须触发Transfer事件。transferFrom方法用于允许合同代理某人转移token。条件是from账户必须经过了approve。这个后面会举例说明。 approve 允许_spender多次取回您的帐户,最高达_value金额。 如果再次调用此函数,它将以_value覆盖当前的余量。 allowance 返回_spender仍然被允许从_owner提取的金额。 后面三个方法不好理解,这里还需要补充说明一下: approve是授权第三方(比如某个服务合约)从发送者账户转移代币,然后通过 transferFrom() 函数来执行具体的转移操作。 举例说明,如果账户A有1000个ETH,想允许B账户随意调用他的100个ETH,过程如下:

1. A账户按照以下形式调用approve函数approve(B,100)

2. B账户想用这100个ETH中的10个ETH给C账户,调用transferFrom(A, C, 10)

3. 调用allowance(A, B)可以查看B账户还能够调用A账户多少个token

但是ERC20标准有个问题,将令牌直接发送给令牌的智能合同将导致资金损失。这是因为一个令牌的合同只会跟踪和分配资金。

例如,当您从钱包中向另一个用户发送令牌时,该钱包将调用令牌的合约来更新数据库。所以如果您试图将令牌直接传输到令牌的合约中,那么由于该令牌的合约无法响应,所以金钱就“丢失”了。 ERC20标准无法通过接收方合同处理传入的交易。这是该令牌存在的最大问题,也是开发者一直希望改进的地方。ERC20令牌无法将令牌发送给一个与这些令牌不兼容的契约,也正因为这样,部分资金存在丢失的风险。 于被发送到“错误”的合同上,大约价值40万美元的ERC20令牌被困,这对整个以太坊生态系统而言是一个巨大的威胁。幸运的是,ERC223令牌可以解决这一难题,前提是该令牌能够获得批准并被引入。 ERC233的出现

ERC223要解决的首要问题是什么?

自从引入ERC20令牌标准以来,几乎所有的基于以太坊的令牌都成功的接受了这个新标准。然而其自身的缺点需要及时解决,这便是ERC223令牌诞生的原因。 防止丢失

ERC223令牌标准将向现有的ERC20标准引入一个新功能,以防止意外转移的发生。ERC223令牌标准可以防止令牌在以太坊网络上丢失。 困难的转换

假设 ERC223 令牌标准能够取代ERC20成为新的标准,现有令牌的发行方需要做一些艰难的决定。因为,从现实情况来看,不管用何种方式,从ERC20转换到ERC223是不可能的,同样的,所有ERC20令牌都需要在ERC223标准下重新部署。这也意味着任何交易平台的上市都需要更新他们的信息和地址。这是一个艰苦的过程,这也就意味着,在未来很少有现有的令牌被有效地转换为ERC223。 正如Alex van de Sande在Reddit上指出的那样,“更方便”的过程可能是创建新的令牌,它们是通过持有旧令牌的合同支持的。这可能是大多数项目最合理的选择,但只有时间才能确定哪些选项将被实施。

我知道答案,我要回答