自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Python創(chuàng)建ERC20

開發(fā) 后端
ERC20的意思是“以太坊請(qǐng)求注釋20”。征求意見是社會(huì)團(tuán)體進(jìn)行同行評(píng)審的一種方式。以太坊通過讓人們創(chuàng)造想法并讓其他人對(duì)它們進(jìn)行評(píng)論來改善生態(tài)系統(tǒng)。

[[398796]]

本文轉(zhuǎn)載自微信公眾號(hào)「區(qū)塊鏈研究實(shí)驗(yàn)室」,作者鏈三豐。轉(zhuǎn)載本文請(qǐng)聯(lián)系區(qū)塊鏈研究實(shí)驗(yàn)室公眾號(hào)。

什么是ERC20令牌?

ERC20的意思是“以太坊請(qǐng)求注釋20”。征求意見是社會(huì)團(tuán)體進(jìn)行同行評(píng)審的一種方式。以太坊通過讓人們創(chuàng)造想法并讓其他人對(duì)它們進(jìn)行評(píng)論來改善生態(tài)系統(tǒng)。

ERC20,是由Fabian Vogelsteller和Vitalik Buterin創(chuàng)建的第20個(gè)以太坊評(píng)論請(qǐng)求。

該評(píng)論請(qǐng)求為在以太坊平臺(tái)上創(chuàng)建“令牌”提供了一種方法,該令牌是所有令牌遵循的標(biāo)準(zhǔn),因此平臺(tái)和工程師可以輕松使用它們,而無需重做。

ERC20中的每一個(gè)都遵循相同的模式,并且具有執(zhí)行基本相同功能的相同功能列表。他們之中有一些是:

  • transfer:在所有者之間轉(zhuǎn)移令牌。
  • balanceOf:如何查看一個(gè)地址有多少令牌。
  • transferFrom:允許非所有者將令牌從一個(gè)地址移動(dòng)到另一個(gè)地址。
  • approve:批準(zhǔn)合同以調(diào)用該transferFrom功能。

它們是一種合約,跟蹤區(qū)塊鏈上每個(gè)地址具有多少個(gè)價(jià)值單位,同時(shí)ERC20又代表代幣的智能合約。

例子

ERC20令牌的一些示例是LINK,AAVE,USDT和DAI。您會(huì)注意到,某些令牌(例如LINK令牌)實(shí)際上是ERC20的更高級(jí)形式。LINK,尤其是ERC677,它增加了一些額外的功能與工作的預(yù)言,但它仍然是向后兼容ERC20s并擁有其所有功能。

另一個(gè)流行的令牌標(biāo)準(zhǔn)是ERC777,它在ERC20上進(jìn)行了一些不錯(cuò)的生活質(zhì)量改進(jìn),并且與ERC20向后兼容。

為什么要制造ERC20?

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

1.治理

治理令牌是允許用戶在協(xié)議的未來中投票和持有股份的令牌。治理令牌的一些示例是UNI,AAVE和CRV。令牌可以“放入”平臺(tái)中,并用于投票和提議新的方向以供協(xié)議收聽。

2.保護(hù)網(wǎng)絡(luò)

通常,網(wǎng)絡(luò)或協(xié)議采用多塊鏈,并且協(xié)議的整體安全性不應(yīng)與單個(gè)基礎(chǔ)區(qū)塊鏈聯(lián)系在一起。協(xié)議通常需要使用對(duì)協(xié)議更有意義的基礎(chǔ)資產(chǎn)進(jìn)行商業(yè)交易。它將資產(chǎn)與與網(wǎng)絡(luò)無關(guān)的其他資產(chǎn)的市場(chǎng)波動(dòng)性分開。

如果它是基礎(chǔ)鏈,那么如果基礎(chǔ)市場(chǎng)波動(dòng)變得更糟,則網(wǎng)絡(luò)的安全性可能會(huì)降低。

3.合成資產(chǎn)和穩(wěn)定幣

如果您有某種形式的價(jià)格信息,則可以通過某種抵押支持輕松地制造合成資產(chǎn)。這是獲得和交易不在區(qū)塊鏈生態(tài)系統(tǒng)中的資產(chǎn)的好方法。這正是Synthetix協(xié)議的工作原理,將Chainlink的價(jià)格信息與SNX抵押的抵押品相結(jié)合,使DeFi(去中心化金融)投資者能夠接觸到傳統(tǒng)金融世界。

同理,穩(wěn)定幣也是合成資產(chǎn),只是它們代表美元等“穩(wěn)定”資產(chǎn)。Tether,USDC和Dai是穩(wěn)定幣的示例。

4.其他

當(dāng)提出關(guān)于制作ERC20代幣的想法時(shí),創(chuàng)意是您的唯一限制。我們已經(jīng)看到了一些協(xié)議,這些協(xié)議使用ERC20作為基礎(chǔ)抵押資產(chǎn)進(jìn)行抵押,提供獎(jiǎng)勵(lì)以鼓勵(lì)使用協(xié)議(請(qǐng)參閱收益農(nóng)業(yè)),圍繞代幣創(chuàng)造經(jīng)濟(jì)等等。

如何創(chuàng)建一個(gè)ERC20?

讓我們從克隆此示例存儲(chǔ)庫并安裝eth-brownie開始,我們假設(shè)您已經(jīng)安裝了Python,Brownie是致力于簡化智能合約部署的Python框架。

  1. git clone https://github.com/PatrickAlphaC/erc20-brownie 
  2. cd erc20-brownie 
  3. pip install eth-brownie 

contracts文件夾中有兩個(gè)合同:

  • EasyToken.sol
  • TokenERC20.sol

這TokenERC20是一個(gè)示例,我們可以自己編寫整個(gè)合同,因?yàn)槲覀円龅木褪谴_保實(shí)現(xiàn)適當(dāng)?shù)墓δ堋?/p>

另外,更簡單的方法是使用OpenZeppelin軟件包。這樣可以抽象出大多數(shù)功能,并允許我們使用Solidity的繼承關(guān)系來使我們的合同“繼承”我們需要實(shí)現(xiàn)的所有功能!我們要做的就是給令牌命名,符號(hào)和初始供應(yīng)。

  1. pragma solidity ^0.6.0; 
  2. import "@openzeppelin/contracts/token/ERC20/ERC20.sol"
  3. contract EasyToken is ERC20 { 
  4.     constructor() public ERC20("EasyToken""EzT") { 
  5.         _mint(msg.sender, 1000000000000000000000000); 
  6.     } 

在此示例中,我們EasyToken用符號(hào)象征令牌,EzT初始供應(yīng)量為100萬。您可能會(huì)問,為什么它不是的最初供應(yīng)1000000000000000000000000。好吧,Solidity不適用于小數(shù),因此我們實(shí)際上將18個(gè)額外的零指定為小數(shù),因此我們可以與令牌的小數(shù)部分進(jìn)行交互。

一旦創(chuàng)建了令牌合約,我們就可以創(chuàng)建一個(gè)腳本將其部署到區(qū)塊鏈中:

  1. from brownie import accounts, config, EasyToken, EasyToken 
  2. from scripts.helpful_scripts import get_account 
  3. def main(): 
  4.     account = get_account() 
  5.     erc20 = EasyToken.deploy({"from": account}) 

Brownie允許我們?nèi)∠贤旧恚覀兛梢栽谥骱贤姓{(diào)用該函數(shù):

  1. EasyToken.deploy({"from": account}) 

這會(huì)將其部署到任何與Brownie連接的區(qū)塊鏈上。您會(huì)注意到,對(duì)于每筆交易,我們還需要account與之關(guān)聯(lián)。我們account從get_account職能中得到了回報(bào)。我們現(xiàn)在可以忽略這一點(diǎn)。

部署到區(qū)塊鏈

默認(rèn)情況下,此軟件包設(shè)置為部署到本地ganache區(qū)塊鏈,您將需要兩個(gè)環(huán)境變量:

  1. export WEB3_INFURA_PROJECT_ID='aaa5aa5a5a5a55555aaa555a5a5555a`# export PRIVATE_KEY='asdfasdfasdfasdfasdfasdfasdfas' 

您WEB3_INFURA_PROJECT_ID是Infura中的項(xiàng)目ID 。Infura是我們連接到區(qū)塊鏈的一種方式,并且具有免費(fèi)層供我們使用。您還需要將自己設(shè)置PRIVATE_KEY為環(huán)境變量。您可以從MetaMask中獲取私鑰。

設(shè)置您的MetaMask

您可以通過從MetaMask導(dǎo)出私鑰并將其添加0x到開頭來獲取私鑰。

設(shè)置環(huán)境變量后,您還需要獲取一些Testnet Kovan ETH。

然后,您可以運(yùn)行deploy腳本:

  1. brownie run scripts/2_deploy_easy_token.sol 

您將看到類似以下的輸出:

  1. Running 'scripts/2_deploy_easy_token.py::main'... 
  2. Transaction sent: 0x223af315917c07956243ed0915a3b142a5697ad6e497adeae3e3ad886f37b37a 
  3.   Gas price: 3.0 gwei   Gas limit: 792680   Nonce: 3653 
  4.   EasyToken.constructor confirmed - Block: 24760550   Gas used: 720619 (90.91%) 
  5.   EasyToken deployed at: 0x8922C8e8534e10A0B42c072eA0e94A80Cb2E0985 

然后,我們可以獲取該地址并將其放入Kovan Etherscan,您將在其中看到您的令牌!

您要做的最后一件事就是獲取該地址并將其添加到您的MetaMask中。您可以單擊MetaMask中的“添加令牌”按鈕,轉(zhuǎn)到custom token,然后在Kovan網(wǎng)絡(luò)上添加您的合同地址,您應(yīng)該在那里看到令牌。

恭喜你!您已經(jīng)部署了第一個(gè)ERC20令牌!

 

責(zé)任編輯:武曉燕 來源: 區(qū)塊鏈研究實(shí)驗(yàn)室
相關(guān)推薦

2021-05-14 14:33:07

Python加密貨幣

2021-10-28 19:08:29

Python虛擬環(huán)境

2014-05-12 16:40:13

Linux命令快照

2023-05-19 08:00:00

ReactJSJavaScript蜘蛛圖

2020-11-12 18:57:14

摘要PythonNLP

2023-11-27 08:24:57

FormikReact

2011-05-24 10:24:29

創(chuàng)建與使用VMware

2009-08-06 16:44:03

C#創(chuàng)建WebServ

2010-02-03 10:45:33

2022-03-30 07:52:10

IDEAGitJava

2021-06-01 09:27:52

視頻動(dòng)畫Remotion

2013-01-14 11:33:00

IBMdW

2023-04-13 15:04:57

Java微服務(wù)架構(gòu)

2023-05-11 08:00:00

JavaScript柱狀圖

2017-05-16 11:14:00

VCHA集群負(fù)載

2010-06-01 09:18:46

SVN創(chuàng)建項(xiàng)目

2021-03-23 07:36:57

FlowIPFSNFT

2010-02-01 17:18:23

Python多線程環(huán)境

2010-10-21 16:59:37

SQL Server創(chuàng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)