欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當(dāng)前位置:主頁(yè) > 區(qū)塊鏈 > 區(qū)塊鏈技術(shù) > 理解ERC-20 token合約

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

2021-12-09 10:34:11 | 來(lái)源: | 作者:佚名
這篇文章主要介紹了以太坊科普:理解ERC-20 token合約的相關(guān)資料,希望這篇關(guān)于理解ERC-20 token合約的文章,能夠幫助各位朋友對(duì)以太坊有個(gè)更加深入的了解。

ETH(Ethereum)以太坊錢(qián)包基本概念介紹:http://www.dbjr.com.cn/blockchain/801260.html

這篇文章會(huì)簡(jiǎn)單介紹各種符合ERC-20標(biāo)準(zhǔn)的token,解釋ERC-20的特征和功能,以供讀者了解什么是token合約,以及開(kāi)發(fā)者應(yīng)該如何使用該標(biāo)準(zhǔn)。

ERC-20最初作為一種嘗試,旨在為以太坊(Ethereum)上的token合約提供一個(gè)特征與接口的共同標(biāo)準(zhǔn),并且,它現(xiàn)在已經(jīng)被證明是非常成功的了。ERC-20有很多好處,包括允許錢(qián)包顯示數(shù)以百計(jì)不同token的賬戶余額;創(chuàng)建一個(gè)交易工具,只需提供token合約的地址就可以將更多token列入表中。創(chuàng)建ERC-20兼容token的好處很多,以至于在今天,很少有其他token合約用其他方式創(chuàng)建。

Token合約是什么?

現(xiàn)在仍存在著大量關(guān)于“token合約到底是什么”的爭(zhēng)論。本質(zhì)上來(lái)說(shuō),一個(gè)token合約就是一個(gè)包含了一個(gè)對(duì)賬戶地址及其余額的映射的智能合約(Smart Contract)。賬戶余額表示一種由合約創(chuàng)建者定義的值:一個(gè)token合約也許使用余額來(lái)表示物理對(duì)象,或是表示另一種貨幣價(jià)值,還可以表示持有人的名譽(yù)。余額的單位通常被稱為token。

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

當(dāng)token從一個(gè)賬戶被轉(zhuǎn)移到另一個(gè)賬戶的時(shí)候,token合約更新兩個(gè)賬戶的余額。比如,一筆從 0x2299…3ab7 到 0x1f59…3492 的10個(gè)token的轉(zhuǎn)賬將導(dǎo)致余額列表如下圖所示進(jìn)行更新:

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

如果該token合約允許的話,變更一種token的總供給可能有兩種辦法。token的總供給可以通過(guò)鑄造新token來(lái)增加。舉個(gè)例子,鑄造出100個(gè)token到地址 0x4ba5…ae22 將導(dǎo)致余額如下圖所示進(jìn)行更新:

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

token的總供給也可以通過(guò)“銷毀”現(xiàn)有的token來(lái)減少。比如, 0x4919…413d 銷毀了50個(gè)token,這將導(dǎo)致余額如下圖所示更新:

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

銷毀token的另一種方式是將token發(fā)送到一個(gè)未創(chuàng)建私鑰的地址,通常來(lái)說(shuō)就是0地址。這會(huì)使得這些token不可用,在這方面,它與銷毀token有同樣的效果,但并沒(méi)有減少token的總數(shù)。比如, 0x93f1…1b09 用此種方式銷毀了50個(gè)token將導(dǎo)致如下圖所示的余額:

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

簡(jiǎn)單的token合約在一個(gè)從地址到余額的映射中保存上述信息。當(dāng)更多復(fù)雜的情景出現(xiàn)時(shí),比如發(fā)放股息,替代性結(jié)構(gòu)或者增補(bǔ)性結(jié)構(gòu)常常要變得更強(qiáng)悍。但是,不管那些操作上的細(xì)節(jié)的話,對(duì)外部可見(jiàn)的token余額總是像上面的圖示那樣的。

一個(gè)ERC-20 token合約的定義

一個(gè)ERC-20 合約是通過(guò)合約的地址以及它可用的token總供給來(lái)定義的,但它通常還提供一些非必須的東西,也是為用戶提供更多細(xì)節(jié)。它們包括該token的名字、標(biāo)志、小數(shù)位。這些中的每一個(gè)都會(huì)包括在下面的細(xì)節(jié)中。

在深入到細(xì)節(jié)之前,理解這件事情是重要的:token合約沒(méi)有一個(gè)中心化的登記處,因此無(wú)法保證特定名字和符號(hào)的唯一性。一旦你已經(jīng)創(chuàng)建了一個(gè)token合約,你應(yīng)該請(qǐng)求將它加入公共站點(diǎn),比如:Etherscan,MyEtherWallet 以及 CoinMarketCap。當(dāng)然,確保符合網(wǎng)站上的說(shuō)明可以最大化你的申請(qǐng)被接受的機(jī)會(huì)。

Token合約的名字乃是該token合約應(yīng)該被知道的完整名稱,比如“My Token”。名字的長(zhǎng)度沒(méi)有限制,但完整名稱在一些錢(qián)包應(yīng)用中更容易顯示不完全,所以,最好讓名字短一點(diǎn)。

Token合約的標(biāo)志乃是該token合約應(yīng)該被知道的符號(hào),比如“MYT”。廣義上,它是股票代碼的對(duì)應(yīng)物,而且,雖然沒(méi)有嚴(yán)格的長(zhǎng)度限制,但它在長(zhǎng)度上常常是3或4個(gè)字母。

小數(shù)位常常是混淆的來(lái)源,但經(jīng)過(guò)合理的解釋這是非常容易理解的。小數(shù)位意味著一個(gè)token的可切分性,從0個(gè)小數(shù)位(即完全不可切分)到18位小數(shù)(幾乎是連續(xù)的),如果需要,可以有更多的小數(shù)位。從技術(shù)上來(lái)說(shuō),小數(shù)位的意義在于顯示token價(jià)值在屏幕上的時(shí)候小數(shù)點(diǎn)后面跟著的位數(shù)。小數(shù)位存在的理由是以太坊并不處理有小數(shù)的數(shù)字,只顯示整數(shù)的數(shù)字價(jià)值??紤]下面兩個(gè)例子:

第一個(gè)例子是LicenseToken,一個(gè)為給定軟件產(chǎn)品顯示軟件許可分配的token合約;持有一個(gè)LicenseToken,使用者就可以使用該軟件。而持有小于1個(gè)的LicenseToken則沒(méi)有任何意義,所以token創(chuàng)建者將小數(shù)位設(shè)為0。一些LicenseToken的持有人賬戶余額如下。

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

可以看到,在這里有100份許可,主要被一個(gè)賬戶所持有。當(dāng)用戶購(gòu)買(mǎi)一份許可的時(shí)候,一個(gè)token將從持有賬戶轉(zhuǎn)賬到購(gòu)買(mǎi)者賬戶。而許可驗(yàn)證者可以查看一個(gè)特定的賬戶是否真的持有一個(gè)LicenseToken,然后做出相應(yīng)的行動(dòng)。

第二個(gè)例子是GoldToken,一個(gè)表示物理黃金所有權(quán)的token合約。合約創(chuàng)建者希望每單位表示1千克黃金的單位,但同樣希望允許用戶以克的級(jí)別(但不能更低)持有和交易黃金。因?yàn)橐蕴徊⒉恢С中?shù)因此1個(gè)token必須表示1克黃金,以及,為了向外界表示1000克作為單一的1Kg單位,小數(shù)位要設(shè)置成3(因?yàn)?10^3 克也就是1千克黃金才是token合約創(chuàng)建者希望顯示為1token的單位)。一些GoldToken的持有者可以用圖像表示在下方。

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

在這里你可以看到總共有50Kg的黃金被表示出來(lái)(每token 1克乘以50,000個(gè)token)。

但是,如果小數(shù)位被設(shè)成3,用戶的情形就會(huì)像下面這樣:

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

可以看到,將小數(shù)位設(shè)置成3在字面上就意味著在顯示GoldToken余額的時(shí)候,應(yīng)該有3位數(shù)跟在小數(shù)點(diǎn)后面。

小數(shù)位經(jīng)常被稱為是一個(gè)人性化的元素,因?yàn)樗试Stoken合約定義他們希望余額怎樣顯示給用戶。GoldToken并不在內(nèi)部處理小數(shù)位,也從不將小數(shù)位用在它自己的計(jì)算中因?yàn)橐磺卸际怯每藖?lái)計(jì)算的,但它允許用戶使用黃金的共通單位(千克)而不是在合約中使用的單位(克)。

正如在上述GoldToken中顯示的,可切分性的觀念允許token合約顯示非常小的小數(shù)值,并且token也常常把小數(shù)位設(shè)成18,以給予token一個(gè)近乎連續(xù)的價(jià)值范圍。

總結(jié)一下,在決定要取幾個(gè)小數(shù)位時(shí),下述規(guī)則是應(yīng)該被遵循的:

token合約表示的是一個(gè)不可切分的物體嗎?(如果是)那么將小數(shù)位設(shè)為0

token合約表示的是一個(gè)有特定小數(shù)位的物體嗎?那么將小數(shù)位設(shè)置到那個(gè)數(shù)字

如果上述兩者都不是,請(qǐng)?jiān)O(shè)置小數(shù)位為18

重要的是要知道小數(shù)位對(duì)合約創(chuàng)建的影響。被創(chuàng)建的Token數(shù)量應(yīng)該等于token的全部數(shù)量,要求是10^小數(shù)位的倍數(shù)。正如在GoldToken例子中可以看到的,token創(chuàng)建者希望創(chuàng)建token來(lái)表示50千克的黃金,但因?yàn)?位小數(shù),他們必須發(fā)行50,000 token(50×10^3)來(lái)做成這件事。

總供給是定義一個(gè)ERC-20 token合約的最后一個(gè)東西,并且,正如我們提到過(guò)的,它是唯一的強(qiáng)制參數(shù)。雖然在ERC-20說(shuō)明書(shū)中并沒(méi)有明確提到,但總供給的概念是簡(jiǎn)單的:總供給等于所有余額的和。上面的例子中一直顯示著總供給,所以這里就無(wú)需贅述了。

一個(gè)ERC-20 token合約的功能

ERC-20 token合約擁有一系列的功能,允許用戶發(fā)現(xiàn)用戶的余額,也允許余額經(jīng)過(guò)驗(yàn)證從一個(gè)賬戶轉(zhuǎn)賬到另一個(gè)賬戶。下面來(lái)描述一下這些功能。

balance()函數(shù)提供了被一個(gè)給定地址持有的token的數(shù)量。記住,任何人都可以查到任何地址的余額,正如所有數(shù)據(jù)在區(qū)塊鏈上都是公開(kāi)的。

從一個(gè)地址發(fā)送token到另一個(gè)地址有兩種辦法。tranfer()函數(shù)可以從信息發(fā)送者那里直接轉(zhuǎn)一些token到林一個(gè)地址。記住,人們不會(huì)查驗(yàn)接收地址,因此確保接收者按預(yù)期的方式行動(dòng)是發(fā)送者的責(zé)任。

雖然用transfer()來(lái)發(fā)送toke給另一個(gè)用戶是很棒的,但當(dāng)token要被用來(lái)為一個(gè)智能合約中的函數(shù)進(jìn)行支付的時(shí)候,它就起不了作用了。這是因?yàn)椋?dāng)智能合約運(yùn)行的時(shí)候,它沒(méi)辦法獲得哪個(gè)地址轉(zhuǎn)賬到哪里的細(xì)節(jié),因此也就無(wú)法保證調(diào)用這個(gè)合約的用戶已經(jīng)支付了啟動(dòng)合約要求數(shù)量的資金。

想象一下,有一個(gè)合約Doer被部署在網(wǎng)絡(luò)上。Doer擁有一個(gè)函數(shù)dosomething(),它要求10 Do token來(lái)運(yùn)行。Joe希望調(diào)用dosomething(),也有50Do token在他的賬戶上。Joe怎樣能夠支付給Doer以致后者可以成功運(yùn)行dosomething()呢?

approve()和transferFrom()是兩個(gè)方程,它們使用一個(gè)兩步過(guò)程,可以解決上面的問(wèn)題。第一步,一個(gè)token持有者給另一個(gè)地址(常常是一個(gè)智能合約)批準(zhǔn)從本地轉(zhuǎn)出一個(gè)最大特定數(shù)量的token,也就是所謂的配額(allowence)。Token持有者使用approve()來(lái)提供這些信息。

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

在上述例子中,第二行顯示,地址為 0x1f59…3492 的Joe已經(jīng)允許地址為 0xd8f0…c028 的Doer從Joe的賬戶中轉(zhuǎn)出25個(gè)token。

一旦一個(gè)許可被創(chuàng)建,智能合約就可以從一個(gè)用戶的配額中占用許可數(shù)量的token,作為該合約運(yùn)行的一部分。繼續(xù)這個(gè)例子。Joe現(xiàn)在可以調(diào)用dosomething(),而dosomething()可以使用transferFrom()以從Joe的賬戶中獲得10個(gè)Do token, 然后開(kāi)始它的工作。如果Joe的賬戶上沒(méi)有10個(gè)token,或者配額低于10個(gè)token,dosomething()就會(huì)當(dāng)機(jī)。

allowance()函數(shù)提供了允許從一個(gè)給定地址提取到另一個(gè)給定地址的token的數(shù)量。記住,任何人都可以查到任何地址的余額,正如所有信息在區(qū)塊鏈上都是公開(kāi)的。重要的是知道,配額是“軟性”的,因?yàn)樗袉为?dú)的或者累積的配額可以超過(guò)一個(gè)地址的余額。在上面展示的表格中,持有者 0x2299…3ab7 許可了最高500個(gè)token的轉(zhuǎn)出,但他的余額,如上所示,只有90個(gè)token。任何使用allowance()的合約,在計(jì)算可用的token數(shù)量的時(shí)候,都必須額外考慮用戶的余額。

一個(gè)ERC-20 token合約中的事件

ERC-20定義了在合約采取了相關(guān)行動(dòng)的時(shí)候,兩類事件是必須被觸發(fā)的。第一類事件是Transfer(),就是放出從一個(gè)地址轉(zhuǎn)移到另一個(gè)地址的token轉(zhuǎn)移的細(xì)節(jié)。第二類事件是Approval(),就是放出從一個(gè)地址許可轉(zhuǎn)移token到另一個(gè)地址的細(xì)節(jié)。這些可以被用來(lái)跟蹤地址余額和配額的變更,而無(wú)需查詢區(qū)塊鏈。

鑄造token會(huì)發(fā)出了一個(gè)帶有o地址的Transfer()事件作為源。

當(dāng)token被銷毀的時(shí)候,沒(méi)有事件會(huì)發(fā)出。因?yàn)檫@一點(diǎn),ERC-20 token 合約常常通過(guò)transfer()發(fā)送token到0地址來(lái)銷毀token,代替真正的銷毀。

超越ERC-20

ERC-20提供了一個(gè)良好的基礎(chǔ)來(lái)構(gòu)建token合約,但也并不是沒(méi)有問(wèn)題。ERC-223協(xié)議提供了額外的特性和安全措施,但與ERC-20并不兼容。Token合約的建構(gòu)在今天還要繼續(xù)遵循ERC-20,而開(kāi)發(fā)者應(yīng)該跟蹤 ERC-223協(xié)議,并為它做出貢獻(xiàn)。

以上就是以太坊科普:理解ERC-20 token合約的詳細(xì)內(nèi)容,更多關(guān)于理解ERC-20 token合約的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

免責(zé)聲明:本文只為提供市場(chǎng)訊息,所有內(nèi)容及觀點(diǎn)僅供參考,不構(gòu)成投資建議,不代表本站觀點(diǎn)和立場(chǎng)。投資者應(yīng)自行決策與交易,對(duì)投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!

你可能感興趣的文章

更多

熱門(mén)幣種

  • 幣名
    最新價(jià)格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 103277.26¥ 735106.88
    -2.41%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 3477.24¥ 24750.29
    -1.76%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.9997¥ 7.1156
    +0%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 2.4298¥ 17.2948
    -4.16%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 967.22¥ 6884.47
    -1.76%
  • solana SOL Solana

    SOL

    Solana

    $ 159.01¥ 1131.8
    -4.55%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1¥ 7.1178
    -0.01%
  • tron TRX 波場(chǎng)

    TRX

    波場(chǎng)

    $ 0.3004¥ 2.1381
    +1.9%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.1753¥ 1.2477
    -2.39%
  • cardano ADA 艾達(dá)幣

    ADA

    艾達(dá)幣

    $ 0.5699¥ 4.0564
    -2.66%

幣圈快訊

  • AMD預(yù)計(jì)2027年數(shù)據(jù)中心收入將達(dá)到“數(shù)百億美元”

    2025-11-12 02:48
    AMD預(yù)計(jì)2027年數(shù)據(jù)中心收入將達(dá)到“數(shù)百億美元”,預(yù)計(jì)整體數(shù)據(jù)中心年復(fù)合增長(zhǎng)率將超過(guò)60%,預(yù)計(jì)服務(wù)器CPU市場(chǎng)份額將超過(guò)50%,PC(個(gè)人電腦)市場(chǎng)的份額超過(guò)40%。
  • 若BTC突破108,439美元,主流CEX累計(jì)空單清算強(qiáng)度將達(dá)21.86億美元

    2025-11-12 02:30
    據(jù)Coinglass數(shù)據(jù)顯示,若BTC突破108,439美元,主流CEX累計(jì)空單清算強(qiáng)度將達(dá)21.86億美元。反之,若BTC跌破98,847美元,主流CEX累計(jì)多單清算強(qiáng)度將達(dá)10.49億美元。
  • 若ETH突破3,647美元,主流CEX累計(jì)空單清算強(qiáng)度將達(dá)12.48億美元

    2025-11-12 02:30
    據(jù)Coinglass數(shù)據(jù)顯示,若ETH突破3,647美元,主流CEX累計(jì)空單清算強(qiáng)度將達(dá)12.48億美元。反之,若ETH跌破3,312美元,主流CEX累計(jì)多單清算強(qiáng)度將達(dá)5.62億美元。
  • 道瓊斯指數(shù)上漲1%,標(biāo)普500指數(shù)漲0.14%

    2025-11-12 02:01
    道瓊斯指數(shù)上漲1%,標(biāo)普500指數(shù)現(xiàn)漲0.14%。
  • 過(guò)去1小時(shí)Binance凈流出5,290.7萬(wàn)USDT

    2025-11-12 01:43
    據(jù)Coinglass數(shù)據(jù)顯示,Binance在過(guò)去1小時(shí)內(nèi)凈流出5,290.7萬(wàn)USDT。
  • 查看更多