主页 > 最新imtoken官网下载 > 以太坊(Ethereum) ERC20代币(Token)标准

以太坊(Ethereum) ERC20代币(Token)标准

最新imtoken官网下载 2024-01-26 05:14:05

在区块链2.0时代,以太坊的特点之一就是允许大家通过智能合约在平台上创建各种DApp应用。 最熟悉的应用之一是 Token 代币。 理解 Token 令牌的概念很简单。 例如,当你去游乐园时,你需要先用现金兑换游乐场的游戏币,然后才能使用这些游戏币使用各种设施。 同理,在区块链的世界里,要想使用各种区块链服务,就必须获得各种Token,才能获得服务的使用权,这使得Token成为一种价值传递的手段。 中等的。 也就是说,Token在某种程度上被视为一种货币,一种无形的货币——虚拟货币。 目前,市场上存在着大量的各种虚拟货币。 这类虚拟货币没有自己独立的区块链,而是依托于以太坊区块链并在其上运行。 当然,创建虚拟货币的方法有很多种。 比如比特币、Zcash等都有自己的链,都在自己的链上运行自己的虚拟货币。 这并不意味着必须使用智能合约。 而部署在以太坊上的称为虚拟货币。

Token是以太坊上智能合约的应用之一。 在创建Token和编写智能合约时,为了具备作为货币的必要特性,它必须具备交易处理、账户余额记录、兑换等货币“必备”功能,而智能合约部署后,如我们都知道,根据区块链的特性,是不能再修改的。 如果其中存在任何漏洞或错误,将对整个应用程序造成不可逆转的缺陷和灾难性损失。 准备度和安全性也相当高。 另外,在没有标准(协议)的情况下,各个Token智能合约的内容可以完全不同。 此类 Token 之间的数据不能轻易交换,彼此形成“隔离”。 但是,如果有一个规范、模板或指南,告诉你如何标准化和安全地编写一个应该具有各种属性的智能合约作为“货币”,并且还可以使各种 Token 的智能合约能够相互通信。 那会怎样? 因此,方便和美观,以太坊社区提出了一个协议(标准),称为 ERC20。

ERC20

ERC全称Ethereum Request for Comments,20为代号。

当你想创建一个 Token 时以太坊链可以转erc20吗,ERC20 是一个协议(标准),可以指导你如何编写具有“货币”特性的智能合约。 此外,它也可以看作是快速构建Token的“模板”。 那么“重新发明轮子”就节省了很多时间。

它定义了智能合约中的必备条件

6个函数(functions)包括totalSupply、balanceOf、allowance、transfer、approve、transferFrom。

2个事件(events)包括Transfer和Approval。

以太坊(Ethereum)ERC20 代币(Token)标准(图1)

先看看这两个函数。 有些函数在最后声明常量,这意味着这个函数是“只读的”,不会被修改为智能合约的状态。 因此,常量的声明意味着没有必要去读这个类型的函数。 消耗气体。 反之,如果其他函数后面没有声明常量,则表示将修改为智能合约的状态。 因此,需要消耗Gas。 请链上矿工帮你验证“区块”。

另外两个事件只是用来记录重要事件,比如Token之间的转账记录,不会影响智能合约的运行,在一般系统中可以看作是日志。

以太坊(Ethereum)ERC20 代币(Token)标准(图2)

一开始需要设置ERC20

代币名称(name);

Token代号(symbol):Token的缩写,一般设置为3~4个字母,如ETH。

Token支持小数:Token代币可以支持的最小单位,通常设置为18,也就是说Token最多可以有18位小数。

以太坊(Ethereum)ERC20 代币(Token)标准(图3)

为了更好的理解ERC20,我们用一个官方的例子来解释一下

映射(地址=> uint256)余额

balances是指账户上Token的余额,以映射的形式存储,如“账户地址:代币数量”。 如果外界需要查询某个账户地址上的余额,只需要使用这个映射来查询即可。 知道 Token 的数量简单明了。

允许映射(地址 => 映射(地址 => uint256))

Allowed是指允许其他账户地址使用的Token数量,同样以映射的形式存储。 不同的是,这是另一层“封装”,以双层映射的形式存储,如“账户地址A => 账户地址B => 代币数量”对应这种形式,即账户地址A允许账户地址B使用账户地址A指定数量的Token,有点像现实生活中的支票。

balanceOf(地址令牌所有者)

顾名思义,就是直接获取指定账户上的Token余额。

转移(地址,单位令牌)

使用该函数的账户地址作为msg.sender,减去指定数量的Tokens(令牌),将相应数量的Tokens(代币)添加到指定的账户地址(to),最后使用事件Transfer(msg.sender , to, tokens) 记录发送账户地址、指定账户地址和Token数量。

transferFrom(地址从,地址到,uint 令牌)

先从from的账户地址中减去指定数量的Tokens(代币),然后使用上面允许的msg.sender让from的账户地址减去指定数量的Tokens(代币),然后添加上传相应的Tokens(代币)个数,最后用事件Transfer(from, to, tokens)在Log中记录发送账户地址、指定账户地址、Tokens个数。

批准(地址消费者,uint 代币)

使用该函数的账户地址作为msg.sender,授权指定地址spender从msg.sender账户地址提现。 同样,最后使用Approval(msg.sender, spender, tokens) 记录msg.sender的账户地址,指定的账户地址,以及Token数量。

还有两个官方没有提到的函数示例,分别是:

总供应量()

代币发行总量,当达到代币发行上限时,智能合约将拒绝发行新的代币

津贴(地址令牌所有者,地址消费者)

检查 tokenOwner 钱包中仍可提取的 Token 数量

例子

再引用官方的例子:

代币余额

假设这个智能合约目前有两个地址拥有的 Token 如下:

余额[0x111111111111111111111111111111111111] = 100

余额[0x22222222222222222222222222222222222222] = 200

由于这个地址太长,我将其简化并设置为

答:0x1111111111111111111111111111111111111

B: 0x222222222222222222222222222222222222222

如果调用 balanceOf 函数,将返回以下信息:

tokenContract.balanceOf(A) 将返回 100

tokenContract.balanceOf(B) 将返回 200

转移代币余额

如果 A 想转 10 个代币给 B,调用

代币合约。 转移(B, 10)

将得到以下结果

余额[A] = 90

余额[B] = 210

批准并从令牌余额转移

如果 A 允许 B 自己转移 30 个代币,调用

代币合约。 批准(B, 30)

将得到以下结果

tokenContract.allowed[A][B] = 30

如果此时B想把A的20个代币转给自己,调用

代币合约。 转移自(A,B,20)

将得到以下结果

tokenContract.balances[A] = 70

tokenContract.balances[B] = 230

tokenContract.allowed[A][B] = 10

总结

写这篇文章的目的不仅仅是为了介绍ERC20协议(标准),也是为了让大家知道市场上有很多可疑的ICO。 利用现有的一些协议,比如ERC20,不需要太高深的技术,各种“空气币”、“山寨币”的发行,只要十几分钟,你信不信? 看看这个网站上总共有超过 36,000 个代币。 更有什者,还有一些TokenFactory网站,可以让普通人填写Token的名称、代码、数量等基本信息,然后自动生成智能合约。 甚至不需要写代码,直接发布到以太坊上即可。 ,所以发行新Token的门槛并不高,所以希望大家自己考虑一下那些ICO的真假,不是说所有的ICO都是这样,有一些好的ICO项目,但是大部分大家应该小心 ICO 项目。

当然,刀片有两个面。 ERC20大大简化和标准化了代币的发行。 您不需要“重新发明轮子”。 发行简单方便,只要符合标准就可以被很多交易所和钱包软件集成。 , 钱包软件直接进行交易。

最后再一次,写这篇文章的目的是希望大家能够明白以太坊链可以转erc20吗,发行代币可以很简单,所以奉劝大家在购买一些ICO项目的代币时要非常小心,要注意代币的性质。项目。