区块链学习笔记@产品

自由码客|区块链学习之了解ERC20 token 开始创建你的代

2018-04-05  本文已影响175人  自由码客

       我们都听说过ERC20 token,token是什么呢

        erc20 token 是存在于以太坊平台上的,以太坊包含一个能够存储交易的区块链和能够运行智能合约的虚拟机,erc20 token 存在于以太坊区块链,token并不是独立的,受益于以太坊技术,他们是依靠以太坊区块链和平台的。

        以太坊本身的货币是Ether,但是除了Ether,以太坊还支持其他的token,并且能让这些token像货币一样工作,除此之外,token还能用来代表公司的股份,忠实度,金券等等。

        我们来看看token是如何存在的,token可以由智能合约来创建,智能合约不止负责token的创建,而且负责管理交易和跟踪token所有者的余额。要获得代币,你需要发送一定量的Ether给智能合约,然后智能合约会给你相应价值的代币。所以要创建你自己的代币(token),你需要创建一个智能合约,该智能合约要有创建代币,交易代币以及跟踪用余额的方法。这听起来很简单,但这是风险很高的,智能合约一旦部署,就不能再被更改,所以,如果你在你的智能合约中引入了错误,你将无法修复。这可能是灾难性的,如果你的智能合约中存在让用户丢失代币,或者代币被窃取的风险,后果将不堪设想。

        然后就是互操作性的问题,每一种代币可以和其他的代币完全不同,所以如果你想让你的代币上到交易所,交易所必须定制代码来实现与你的智能合约通信,来实现用户对于代币的交易,同样的问题存在于钱包的开发当中。要支持数百种代币(token)是非常复杂和耗时的。

        所以,社区提出了ERC20标准,ERC代表 “Ethereum Request for Comments”,20是分配的数字。这个提议定义了token的一些基础结构,你可以讲ERC20作为指导标准来创建你自己的代币(token)。ERC20定义了智能合约应该执行的6个强制功能以及3个可选功能。

        开始创建你的代币,你可以选择给你的代币一个名字,一个符号,你还可以控制指定它支持多少个小数,这决定了你的代币的最小细分单位

        然后是强制性函数,首先是totalSupply来定义你的代币的发行总量,当达到这个总量后,智能合约将拒绝创建新的代币。接下来是“balanceOf”方法,这个方法来返回指定地址上的代币余额。然后是“transfer”方法,从发行总量中将指定的代币发送给用户。还有“transferFrom”方法,用来实现用户和用户之间打代币转移。最后是“approve”和“allowance”方法,“approve”方法验证发行总量来决定智能合约是否可以向用户提供指定数量的代币,而“allowance”方法类似,只是它是检测一个指定用户的是否有足够的余额来发送代币给其他用户。如果你接触过面向对象编程,你可以将ERC20类比接口来理解。如果你要想使你的代币成为ERC20代币,那么你的智能合约必须实现这6种方法。

        在ERC20标准提出之前,每个想要创建代币的人都必须重新造轮子,这就导致,每种代币合约都或多或少存在差异,那么钱包和交易所就必须针对每种代币来实现代码,从而支持每种代币的交易。

        但使用ERC20,交易所和钱包只需要实现一次代码就可以,这就是为什么交易所能迅速的为一种新的代币提供支持,甚至他们都不需要做任何更新。

        开发自己的代币是非常简单的,几乎不费什么力气,目前,Etherscan网站上有36,000+的已知ERC20代币,仅2017年就有数百亿美元通过ICO模式进行筹集。但这些代币并不都是干净的,有些人会滥用代币,许多人被骗购买毫无价值的代币。

        ERC20是促进代币(TOKEN)发展的一个很好的标准,但ERC20并不完美,这是是一条准则,人们可以按照喜欢的方式额外的实现所需的方法,这导致了很多问题。比如,要买一些代币,你就要发送一些Ether到代币的合约,但有些人会错误的发送其他的ERC20代币,如果合约的设计没有考虑到这一点,那么就会导致这些代币丢失。

        为了解决这些问题,社区正在努力的扩展ERC20标准,也就是ERC223标准,新的标准会提示代币创建者这些风险,并提供一些解决办法。

「自由码客:程序员区块链社区www.codingfly.com」

上一篇下一篇

猜你喜欢

热点阅读