Usando Brownie, Python e Solidity, crie um token que possa ser visualizado, comprado e vendido na blockchain
Foto do autor.
O ecossistema Ethereum e blockchain como um todo fazem comércio usando tokens ERC20. Qualquer pessoa pode criar um token e usá-lo como uma criptomoeda. Vamos implantar um token ERC20 usando Python, Brownie, e Solidity neste tutorial. Você não precisa estar tão familiarizado com nada disso para este tutorial.
O que é um ERC20? O que é um token Ethereum?
ERC20 significa "Solicitação de Comentário Ethereum 20”( “Ethereum Request for Comment 20.” em inglês). Solicitação de Comentários é uma maneira que permite que os grupos sociais tenham idéias revisadas por pares. A Ethereum fez melhorias no ecossistema, fazendo com que as pessoas tenham idéias e que outras pessoas as comentem. Estes são ligeiramente diferentes das Propostas de Melhoria do Ethereum ( EIPs ) - em inglês : Ethereum Improvement Proposals . Há uma diferença entre os dois, mas às vezes você pode ver esses termos sendo usados de forma intercambiável.
Quando as pessoas se referem ao ERC20, estão se referindo ao 20º Pedido de Comentário do Ethereum, criado por Fabian Vogelsteller e Vitalik Buterin.
Esse pedido de comentário estabeleceu uma maneira de criar "tokens" na plataforma Ethereum — um padrão para todos os tokens a serem seguidos, para que possam ser facilmente usados por plataformas e engenheiros sem ter que refazer o trabalho.
Imagine se cada token tivesse sua própria função de transferir tokens de uma carteira para outra. Isso tornaria realmente difícil a criação de protocolos em torno desses tokens. Pense em partes intercambiáveis, mas para funções em Solidity.
Cada um desses ERC20s segue o mesmo padrão e tem a mesma lista de funções que fazem essencialmente a mesma coisa. Algumas delas são:
transfer
: Transfere um token entre proprietários.
balanceOf
: visualiza quanto do token um endereço possui.
transferFrom
: Permite que um não-proprietário mova tokens de um endereço para outro.
approve
: Aprova um contrato para chamar para a função transferFrom.
Na sua forma mais simples, eles são um contrato que acompanha quanto de alguma unidade de valor cada endereço na blockchain possui. Eles usam mappings
em Solidity para tornar isso possível.
Existe um TL; DR?
Sim. ERC20 são contratos inteligentes que representam tokens.
Quais são os exemplos?
Alguns exemplos de tokens ERC20 são LINK, AAVE, USDT e DAI. Você notará que alguns tokens como o LINK são formas mais avançadas do ERC20. O LINK, em particular, é um ERC677, que acrescenta algumas funcionalidades adicionais para trabalhar com oráculos, mas ainda é compatível com ERC20s e tem todas as suas funções.
Outro padrão popular de token é o ERC777, que inclui algumas melhorias de qualidade sobre o ERC20 e também é compatível com o ERC20.
Por que fazer ERC20s?
O que os ERC20s fazem? Qual é o propósito deles?
Imagens de clipart do Canva.
Os ERC20s podem ser usados por vários motivos diferentes. Aqui estão alguns dos mais populares.
1. Governança
Os tokens de governança são tokens que permitem aos usuários votarem e manterem uma participação no futuro de um protocolo. Alguns exemplos de tokens de governança são UNI, AAVE e CRV. Os tokens podem ser "acumulados" nas plataformas e usados para votar e propor novas direções para o protocolo ouvir.
2. Segurança de rede
Muitas vezes, uma rede ou protocolo passa por uma multi-blockchain - e a segurança do protocolo como um todo não deve estar vinculada a uma única blockchain subjacente. Os protocolos geralmente precisam se envolver no comércio com um ativo subjacente que faça mais sentido para o protocolo. Ele separa o ativo da volatilidade do mercado de algum outro ativo que não esteja relacionado à rede.
Se fosse a cadeia subjacente, a segurança da rede poderia ser reduzida se a volatilidade subjacente do mercado piorasse.
3. Ativos sintéticos e Stablecoins
Se você tem algum tipo de feed de preço, você pode facilmente fabricar ativos sintéticos com algum tipo de apoio colateral. Essa é uma ótima maneira de obter exposição e negociar ativos que não estão no ecossistema blockchain. É exatamente assim que o protocolo Synthetix funciona, combinando Feeds de preços Chainlink com SNX-staked para dar DeFi ( financiamento descentralizado ) exposição dos investidores ao mundo financeiro tradicional.
As “moedas stablecoin” no mesmo sentido também são ativos sintéticos, exceto que representam ativos "estáveis" como o dólar americano. Corda, USDC, e Dai são exemplos de stablecoins.
4. Qualquer outra coisa!
A criatividade é sua única limitação ao apresentar idéias sobre por que criar um token ERC20. Vimos protocolos que usam ERC20s para apostar como ativos colaterais subjacentes, recompensar como incentivo pelo uso de um protocolo (ver produção agrícola), criar uma economia em torno de um token e muito mais.
Como criar um ERC20
Vamos começar clonando este repositório de exemplo e instalando eth - brownie. Estamos assumindo que você tenha o Python instalado. Brownie é uma estrutura Python dedicada a facilitar a implantação de contratos inteligentes.
clone git [https://github.com/PatrickAlphaC/erc20-brownie](https://github.com/PatrickAlphaC/erc20-brownie)
cd erc20 - brownie
pip install et - brownie
Temos dois contratos na pasta contracts
:
O TokenERC20
é um exemplo de como poderíamos escrever todo o contrato, pois tudo o que precisamos fazer é garantir que implementemos as funções apropriadas.
Como alternativa, uma maneira mais fácil é usar o pacote OpenZeppelin. Isso abstrai a maioria das funções e nos permite usar a herança do Solidity para que nosso contrato "herde" todas as funções que precisamos implementar! Tudo o que precisamos fazer é dar ao token um nome, símbolo e suprimento inicial.
EasyToken.sol
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);
}
}
Neste exemplo, nomeamos o token EasyToken
com um símbolo de EzT
e um suprimento inicial de 1 milhão. Você pode estar se perguntando por que não é um suprimento inicial de 1000000000000000000000000
. Bem, o Solidity não funciona com decimais, então atribuímos 18 zeros adicionais como o decimal para que possamos interagir com partes fracionárias do token.
Depois que o contrato de token for criado, podemos criar um script para implantá-lo em uma blockchain:
from brownie import accounts, config, EasyToken, EasyToken
from scripts.helpful_scripts import get_account
def main():
account = get_account()
erc20 = EasyToken.deploy({"from": account})
Brownie nos permite retirar o contrato de si mesmo, e podemos simplesmente chamar a função em nosso contrato principal:
EasyToken.deploy ( { "from": account } )
Isso o implantará em qualquer blockchain ao qual Brownie esteja conectado. Você notará que, para cada transação, também precisamos ter um account
associado a ele. Temos o nosso account
da nossa função get_account
. Podemos ignorar isso por enquanto.
Deploy na blockchain
Este pacote é configurado por padrão para implantar em uma blockchain de ganache local. Você pode seguir o readme se quiser saber mais sobre como trabalhar localmente. Eu sugiro que você faça se você deseja se tornar um desenvolvedor solidity em tempo integral! Trabalhar com blockchains locais é muito mais rápido do que testar em uma Testnet o tempo todo!
Mostraremos como implantar no Kovan Testnet, pois isso permitirá que você "veja" os tokens no Etherscan. Você precisará de duas variáveis de ambiente:
export WEB3_INFURA_PROJECT_ID='aaa5aa5a5a5a55555aaa555a5a5555a`#
export PRIVATE_KEY='asdfasdfasdfasdfasdfasdfasdfas'
Seu WEB3_INFURA_PROJECT_ID
é o seu ID do projeto de Infura. O Infura é uma maneira de nos conectarmos a uma blockchain e possui um plano gratuito para usarmos. Você também desejará definir sua PRIVATE_KEY
como uma variável de ambiente. Você pode obter sua chave privada de sua MetaMask. Se você não possui a MetaMask, pode aprender a baixar e configurá-la neste vídeo:
Você pode obter sua chave privada exportando-a da MetaMask e adicionando uma 0x
no começo. Você pode aprender mais sobre variáveis de ambiente e como configurá-las post deste blog.
Depois de definir suas variáveis de ambiente, você também desejará obter algumas Testnet Kovan ETH. Então você pode executar o script deploy
:
brownie run scripts / 2_deploy_easy_token.sol
E você verá uma saída como esta:
Running 'scripts/2_deploy_easy_token.py::main'...
Transaction sent: 0x223af315917c07956243ed0915a3b142a5697ad6e497adeae3e3ad886f37b37a
Gas price: 3.0 gwei Gas limit: 792680 Nonce: 3653
EasyToken.constructor confirmed - Block: 24760550 Gas used: 720619 (90.91%)
EasyToken deployed at: 0x8922C8e8534e10A0B42c072eA0e94A80Cb2E0985
Podemos então pegar esse endereço e colocá-lo em Kovan Eterscan, e você verá seu token lá!
A última coisa que você deseja fazer é pegar esse endereço e adicioná-lo à sua MetaMask. Você pode pressionar o botão "adicionar token" na sua MetaMask, então vá para custom token
, e adicione seu endereço de contrato na rede Kovan e você verá seus tokens lá.
Parabéns! Você implantou seu primeiro token ERC20!
Este artigo foi escrito por Patrick Collins e traduzido por Adriano P. de Araujo. O original em inglês pode ser encontrado aqui.
Top comments (0)