2022以太坊科普:理解ERC-20 token合约

当前位置:首页 > 币圈百科 > 2022以太坊科普:理解ERC-20 token合约

2022以太坊科普:理解ERC-20 token合约

2022-09-22币圈百科554

ETH(以太坊)以太坊钱包基本概念介绍:https://www.jb51.net/blockchain/801260.html

本文将简要介绍各种符合ERC-20标准的代币,并讲解ERC-20的特性和功能,让读者了解什么是代币契约,开发者应该如何使用。

ERC-20最初是作为一种尝试,为以太坊上的令牌合约提供一个通用的特性和接口标准,现在已经被证明是非常成功的。ERC-20有许多好处,包括允许钱包显示数百种不同代币的账户余额;创建一个交易工具,只需提供代币合约的地址就可以在表中列出更多的代币。创建ERC-20兼容令牌有如此多的好处,以至于今天,很少有其他令牌合约是以其他方式创建的。

什么是

Token契约?

关于“到底什么是代币合同”的争论还是很多的。本质上,令牌合约是一个智能合约,它包括帐户地址及其余额的映射。余额代表由合同创建者定义的值:代币合同可以使用余额来代表实物、另一个货币值或持有者的声誉。余额的单位通常称为代币。

以太坊科普:理解ERC-20 token合约

当代币从一个账户转移到另一个账户时,代币契约更新两个账户的余额。例如,将10个令牌从0x2299…3ab7转移到0x1f59…3492,将导致余额列表更新,如下图所示:

以太坊科普:理解ERC-20 token合约

如果令牌合同允许,可能有两种方法可以改变令牌的总供应量。可以通过铸造新的代币来增加代币的总供应量。例如,向地址0x4ba5…ae22铸造100个令牌将导致余额被更新,如下图所示:

以太坊科普:理解ERC-20 token合约

令牌的总供应量也可以通过“销毁”现有令牌来减少。例如,0x4919…413d销毁了50个令牌,会导致余额更新如下图所示:

以太坊科普:理解ERC-20 token合约销毁令牌的另一种方法是将令牌发送到一个没有创建私钥的地址,通常是0地址。这将使这些令牌无法使用。在这方面,它具有与销毁令牌相同的效果,但并不减少令牌的总数。比如0x93f1…1b09用这种方式销毁50个令牌,会产生如下图所示的余额:

一个简单的令牌契约将上述信息保存在一个从地址到余额的映射中。当更复杂的情况出现时,如支付股息,替代结构或补充结构往往会变得更强。然而,不管操作细节如何,外部可见的令牌余额总是如上图所示。以太坊科普:理解ERC-20 token合约ERC-20令牌合约的定义

ERC-20合约是由合约的地址和它可用的令牌的总供应量来定义的,但它通常也会为用户提供一些不必要的东西和更多的细节。它们包括令牌的名称、徽标和小数位数。这些都将包含在下面的细节中。

在深入细节之前,有必要了解这件事:令牌契约没有集中的注册中心,因此无法保证特定名称和符号的唯一性。一旦您创建了令牌合同,您应该请求将其添加到公共网站,如Etherscan、MyEtherWallet和CoinMarketCap。当然,确保你遵循网站上的说明可以最大化你的申请被接受的机会。

代币合同的名称是应该知道的代币合同的完整名称,如“我的代币”。名字的长度没有限制,但是全名在一些钱包应用中更容易显示不完整,所以名字还是短一点比较好。

代币合同的符号是代币合同应当为人所知的符号,如“MYT”。广义来说就是股票代码的对应物,虽然没有严格的长度限制,但长度往往是3或4个字母。

小数位往往是混乱的来源,但是经过合理的解释后就非常好理解了。 十进制数字表示令牌的可分性,范围从0个十进制数字(即完全不可分)到18个十进制数字(几乎连续)。如果需要,可以有更多的小数位数。从技术上讲,小数位的意义是屏幕上显示代币值时小数点后的位数。小数位之所以存在,是因为以太坊不处理带小数的数字,只显示整数的数值。考虑下面两个例子:

第一个例子是Licensetoken,一个令牌契约,显示给定软件产品的软件许可证的分发情况;有了LicenseToken,用户就可以使用软件了。持有少于一个LicenseToken是没有意义的,因此令牌的创建者将小数位设置为0。一些LicenseToken持有者的帐户余额如下。

如你所见,这里有100个许可证,主要由一个账户持有。当用户购买许可证时,令牌将从持有帐户转移到购买者帐户。许可证验证器可以检查特定帐户是否真正持有LicenseToken,然后采取相应的行动。以太坊科普:理解ERC-20 token合约

第二个例子是Goldtoken,一个代表实物黄金所有权的代币合约。合约创建者希望每个单位代表1kg黄金的单位,但也希望允许用户以克(但不能更低)持有和交易黄金。因为以太坊不支持小数,所以一个代币必须代表一克黄金,而为了向外界表示1000克为单个1kg单位,小数位数要设置为3(因为10 ^ 3克,也就是1Kg黄金,是代币契约的创建者想要显示为一个代币的单位)。一些金权持有者可以用下面的图片来表示。

这里你可以看到总共有50Kg的黄金被表示出来(每枚代币1g乘以50,000枚代币)。以太坊科普:理解ERC-20 token合约2022蓑衣网小编

但是,如果将小数位设置为3,用户的情况将如下:

可以看出,将小数位设置为3,字面意思是显示金令牌余额时小数点后应该有3位数字。

以太坊科普:理解ERC-20 token合约小数位通常被称为人性化元素,因为它允许令牌合约定义他们希望如何向用户显示余额。GoldToken不在内部处理小数位数,也从不在自己的计算中使用小数位数,因为一切都是以克为单位计算的,但它允许用户使用黄金的常用单位(kg)而不是合同中使用的单位(g)。

如上述GoldToken所示,整除性的概念允许代币合约显示非常小的十进制值,代币往往将十进制值设置为18,以赋予代币近乎连续的取值范围。

综上所述,决定取多少位小数时应遵循以下规则:

代币契约是否代表不可分的客体?(如果是)那么将小数位设置为0

token contract是否表示具有特定小数位的对象?然后将小数位数设置为该数字

。如果以上两种情况都不成立,请将小数位数设置为18

。了解小数位数对合同创建的影响很重要。创建的令牌数应该等于令牌总数,并且要求是10位小数的倍数。在Goldtoken的例子中可以看到,代币创建者想要创建代币来表示50kg的黄金,但是因为有3个小数位,所以他们必须发行50,000个代币(5010 ^ 3)才能做到这一点。

总供应量是定义ERC-20代币合约的最后一个因素,正如我们提到的,它是唯一的强制参数。尽管ERC 20没有明确提到,但总供给的概念很简单:总供给等于所有余额的总和。总供应量在上面的例子中已经显示出来了,所以这里不需要赘述。

ERC-20代币合约的功能

ERC-20代币合约具有一系列功能,允许用户查找用户的余额,还允许在验证后将余额从一个帐户转移到另一个帐户。这些功能描述如下。

balance()函数提供了给定地址持有的令牌数。请记住,任何人都可以检查任何地址的余额,就像区块链上的所有数据都是公开的一样。

将令牌从一个地址发送到另一个地址有两种方式。transfer()函数可以直接将一些令牌从发送方传送到森林中的一个地址。请记住,人们不会检查接收地址,因此发送者有责任确保接收者按预期行事。

虽然使用transfer()将toke发送给另一个用户很棒,但是当toke要用于支付智能合约中的某个功能时,就不行了。这是因为,智能合约在运行时,它无法获得哪个地址被转移到哪里的详细信息,因此无法保证调用合约的用户已经支付了启动合约所需的资金量。

假设网络上部署了一个契约行为者。Doer有一个函数dosomething(),它需要10个Do标记才能运行。乔想打电话给dosomething(),他的账户里有50元代币。Joe如何支付Doer才能让后者成功运行dosomething()?

approve()和transferFrom()是两个等式,采用两步流程,可以解决上述问题。第一步,令牌持有者允许另一个地址(通常是智能合同)从本地传输最大特定数量的令牌,这称为allowence。令牌持有者使用approve()来提供此信息。

在上面的例子中,第二行显示地址为0x1f59…3492的Joe已经允许地址为0xd8f0…c028的Doer从Joe的账户中转出25个token。

以太坊科普:理解ERC-20 token合约一旦创建了许可证,作为合同操作的一部分,智能合同可以从用户配额中获取许可证号的令牌。继续这个例子。Joe现在可以调用dosomething(),dosomething()可以使用transferFrom()从Joe的账户中获取10个dotokens,然后开始它的工作。如果Joe的帐户中没有10个令牌,或者配额低于10个令牌,dosomething()将会崩溃。

allow()函数提供了允许从一个给定地址提取到另一个地址的令牌数。请记住,任何人都可以检查任何地址的余额,就像所有信息在区块链上都是公开的一样。知道配额是“软”的很重要,因为所有单个或累积的配额都可能超过一个地址的余额。在上表中,持有人0x2299…3ab7允许转出多达500个代币,但如上所示,他的余额只有90个代币。任何使用allowance()的合同在计算可用令牌数时都必须额外考虑用户的平衡。

ERC-20令牌合约中的事件

ERC-20定义了当合约采取相关行动时,必须触发两种类型的事件。第一种类型的事件是Transfer(),它发布令牌从一个地址传输到另一个地址的细节。第二种事件是Approval(),它发布将令牌从一个地址转移到另一个地址的细节。这些可用于跟踪地址余额和配额的变化,而无需查询区块链。

Casting token会发出一个以O地址为源的Transfer()事件。

当令牌被销毁时,不会发送任何事件。正因为如此,ERC-20令牌合约往往通过transfer()向地址0发送令牌来销毁令牌,而不是真正的销毁。

超越ERC-20

ERC-20为建立象征性契约提供了一个良好的基础,但它并非没有问题。ERC-223协议提供了额外的功能和安全措施,但它与ERC-20不兼容。Token contract的构造今天将继续遵循ERC-20,开发者应该遵循ERC-223协议并为其做出贡献。

以上是以太坊科普:了解ERC-20代币契约详情。更多了解ERC-20代币合同的信息,请关注coir.com其他相关文章!

2022以太坊科普:理解ERC-20 token合约 | 分享给朋友: