如何使用Python建立ERC20 | 區塊鏈研究實驗室

買賣虛擬貨幣
什麼是ERC20令牌?
ERC20的意思是“以太坊請求註釋20”。徵求意見是社會團體進行同行評審的一種方式。以太坊透過讓人們創造想法並讓其他人對它們進行評論來改善生態系統。
ERC20,是由Fabian Vogelsteller和Vitalik Buterin建立的第20個以太坊評論請求。
該評論請求為在以太坊平臺上建立“令牌”提供了一種方法,該令牌是所有令牌遵循的標準,因此平臺和工程師可以輕鬆使用它們,而無需重做。
ERC20中的每一個都遵循相同的模式,並且具有執行基本相同功能的相同功能列表。他們之中有一些是:
  • transfer:在所有者之間轉移令牌。
  • balanceOf:如何檢視一個地址有多少令牌。
  • transferFrom:允許非所有者將令牌從一個地址移動到另一個地址。
  • approve:批准合同以呼叫該transferFrom功能。
它們是一種合約,跟蹤區塊鏈上每個地址具有多少個價值單位,


ERC20又代表代幣的智慧合約。

例子


ERC20令牌的一些示例是LINK,AAVE,USDT和DAI。您會注意到,某些令牌(例如LINK令牌)實際上是ERC20的更高階形式。LINK,尤其是ERC677,它增加了一些額外的功能與工作的預言,但它仍然是向後相容ERC20s並擁有其所有功能。
另一個流行的令牌標準是ERC777,它在ERC20上進行了一些不錯的生活質量改進,並且與ERC20向後相容。

為什麼要製造ERC20?


ERC20的作用以及他們的目的是什麼?

1.治理

治理令牌是允許使用者在協議的未來中投票和持有股份的令牌。治理令牌的一些示例是UNI,AAVE和CRV。令牌可以“放入”平臺中,並用於投票和提議新的方向以供協議收聽。

2.保護網路

通常,網路或協議採用多塊鏈,並且協議的整體安全性不應與單個基礎區塊鏈聯絡在一起。協議通常需要使用對協議更有意義的基礎資產進行商業交易。它將資產與與網路無關的其他資產的市場波動性分開。
如果它是基礎鏈,那麼如果基礎市場波動變得更糟,則網路的安全性可能會降低。

3.合成資產和穩定幣

如果您有某種形式的價格資訊,則可以透過某種抵押支援輕鬆地製造合成資產。這是獲得和交易不在區塊鏈生態系統中的資產的好方法。這正是Synthetix協議的工作原理,將Chainlink的價格資訊與SNX抵押的抵押品相結合,使DeFi(去中心化金融)投資者能夠接觸到傳統金融世界。
同理,穩定幣也是合成資產,只是它們代表美元等“穩定”資產。Tether,USDC和Dai是穩定幣的示例。

4.其他

當提出關於製作ERC20代幣的想法時,創意是您的唯一限制。我們已經看到了一些協議,這些協議使用ERC20作為基礎抵押資產進行抵押,提供獎勵以鼓勵使用協議(請參閱收益農業),圍繞代幣創造經濟等等。

如何建立一個ERC20?

讓我們從克隆此示例儲存庫並安裝eth-brownie開始,我們假設您已經安裝了Python,Brownie是致力於簡化智慧合約部署的Python框架。
    gitclone https://github.com/PatrickAlphaC/erc20-browniecderc20-browniepipinstall eth-brownie
    contracts資料夾中有兩個合同:
    • EasyToken.sol
    • TokenERC20.sol

    這TokenERC20是一個示例,我們可以自己編寫整個合同,因為我們要做的就是確保實現適當的功能。
    另外,更簡單的方法是使用OpenZeppelin軟體包。這樣可以抽象出大多數功能,並允許我們使用Solidity的繼承關係來使我們的合同“繼承”我們需要實現的所有功能!我們要做的就是給令牌命名,符號和初始供應。
      pragma solidity ^0.6.0;import"@openzeppelin/contracts/token/ERC20/ERC20.sol";contract EasyToken is ERC20 {constructor() public ERC20("EasyToken", "EzT") { _mint(msg.sender, 1000000000000000000000000); }}
      在此示例中,我們EasyToken用符號象徵令牌,EzT初始供應量為100
      萬。
      您可能會問,為什麼它不是的最初供應1000000000000000000000000。
      好吧,Solidity不適用於小數,因此我們實際上將18
      個額外
      的零指定為小數,因此我們可以與令牌的小數部分進行互動。
      一旦建立了令牌合約,我們就可以建立一個指令碼將其部署到區塊鏈中:
        from brownie import accounts, config, EasyToken, EasyTokenfrom scripts.helpful_scripts import get_accountdefmain(): account = get_account() erc20 = EasyToken.deploy({"from": account})

        Brownie允許我們取消合同本身,我們可以在主合同中呼叫該函式:

          EasyToken.deploy({"from": account})
          這會將其部署到任何與Brownie連線的區塊鏈上。您會注意到,對於每筆交易,我們還需要account與之關聯。我們account從get_account職能中得到了回報。我們現在可以忽略這一點。

          部署到區塊鏈


          預設情況下,此軟體包設定為部署到本地ganache區塊鏈,
          您將需要兩個環境變數:
            export WEB3_INFURA_PROJECT_ID='aaa5aa5a5a5a55555aaa555a5a5555a`# export PRIVATE_KEY='asdfasdfasdfasdfasdfasdfasdfas'
            您WEB3_INFURA_PROJECT_ID是Infura中的專案ID 。Infura是我們連線到區塊鏈的一種方式,並且具有免費層供我們使用。您還需要將自己設定PRIVATE_KEY為環境變數。您可以從MetaMask中獲取私鑰。
            設定您的MetaMask

            您可以透過從MetaMask匯出私鑰並將其新增0x到開頭來獲取私鑰。
            設定環境變數後,您還需要獲取一些Testnet Kovan ETH。
            然後,您可以執行deploy指令碼:
              brownie run scripts/2_deploy_easy_token.sol
              您將看到類似以下的輸出:
                Running'scripts/2_deploy_easy_token.py::main'...Transactionsent: 0x223af315917c07956243ed0915a3b142a5697ad6e497adeae3e3ad886f37b37aGasprice: 3.0 gwei Gas limit: 792680 Nonce: 3653EasyToken.constructorconfirmed - Block: 24760550 Gas used: 720619 (90.91%)EasyTokendeployed at: 0x8922C8e8534e10A0B42c072eA0e94A80Cb2E0985
                然後,我們可以獲取該地址並將其放入Kovan Etherscan,您將在其中看到您的令牌!
                您要做的最後一件事就是獲取該地址並將其新增到您的MetaMask中。您可以單擊MetaMask中的“新增令牌”按鈕,轉到custom token,然後在Kovan網路上新增您的合同地址,您應該在那裡看到令牌。
                恭喜你!您已經部署了第一個ERC20令牌!
                需要加入區塊鏈技術交流群嗎,請掃描下方二維碼,助手將邀請您進群。

                作者:鏈三豐,來源:區塊鏈研究實驗室

                免責聲明:

                1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
                2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
                3. 鏈報僅提供相關項目信息,不構成任何投資建議

                推荐阅读

                ;