Recentemente escrevi um tutorial onde ensinei como criar seu primeiro Smart Contract usando a linguagem Solidity e o editor online Remix, você confere este tutorial neste link. Uma coisa que não ensinei na ocasião é que é extremamente importante é o processo de deploy do seu smart contract na blockchain e este é o objetivo do tutorial de hoje.
O processo de fazer deploy consiste da compilação do seu contrato em bytescodes que possam ser interpretados pela EVM (Ethereum Virtual Machine) e envio esses bytecodes para um provedor distribuir aos nós da rede. O processo de compilação eu mostrei juntamente no tutorial anterior, até a parte de testarmos se deu tudo certo e um deploy fake em uma VM do próprio Remix. Agora, para enviar a um provider de blockchain existem várias formas mas a que escolhi para este tutorial aqui é usando a carteira de criptomoedas MetaMask.
Se preferir, ao invés de ler este tutorial você pode assistir a este vídeo.
#1 – Preparando a Carteira
Já falei extensivamente da MetaMask e também ensinei como criar uma gratuitamente neste tutorial aqui então vou partir do pressuposto que você já possui uma no seu browser. Se tiver dificuldade no processo, confere o vídeo abaixo.
A MetaMask não é um provider, ela é uma carteira, mas funciona conectada a um provider da Infura (ambas são da mesma empresa, ConsenSys). Usaremos a MetaMask para o pagamento da taxa de rede (gas fee) necessária ao deploy e envio dos bytecodes para o provider dela, que distribuirá nosso código pela rede.
Outro ponto importante a considerar é em qual rede você fará o seu deploy. Eu usarei aqui a testnet Sepolia pois como é apenas um contrato para fins didáticos não faz sentido gastar moedas reais em uma rede real com ele. Sendo assim, recomendo que configure a rede de teste Sepolia ativando-a e selecionando-a no menu superior esquerdo pois é muito útil não apenas para este tutorial como para outras atividades usando a carteira.
Certifique-se de deixar a rede de testes selecionada como principal na sua MetaMask para que nosso desenvolvimento seja realizado em cima dela a fim de não gastarmos fundos com os testes. Basta deixar ela aparecendo no topo da sua carteira e em seguida copie o endereço da sua carteira de testes, que fica logo abaixo do nome da sua conta, como na imagem abaixo (clique no endereço para copiar).
Agora, antes de sairmos fazendo deploy, nosso próximo passo é adicionarmos fundos para os testes. Você pode fazê-lo usando qualquer um dos faucets oficiais da Sepolia. Qualquer um deles vai te fornecer frações de Sepolia ETH, moeda que precisaremos ter para pagar as taxas das transações, como no caso da transação de deploy. Note que você só pode fazer isso uma vez a cada 24h e que esse saldo é completamente fake, só funciona na testnet Sepolia, não pode ser transacionado nas exchanges e não pode ser sacado mas pode ser transferido entre carteiras de teste, que é o que faremos aqui.
Se você for aluno de meus cursos de programação web3/blockchain, pode usar este meu faucet aqui.
Agora com saldo na carteira e ela apontada para a testnet Sepolia, podemos avançar para o deploy em si.
#2 – Fazendo o Deploy
Uma vez que sua carteira esteja devidamente configurada no seu browser, volte ao Remix para fazermos o deploy, fica na mesma aba que você fazia o deploy fake anteriormente (Deploy & Run Transactions).
Nesta tela, escolha o environment “Injected Provider” que provavelmente já deve ter detectado uma MetaMask no seu browser e que quando você selecionar ele vai disparar um aviso à MetaMask solicitando permissão para conexão, que você deve fornecer. Se você fornecer a permissão corretamente vai aparecer o endereço da sua carteira no campo “account” do deploy, como abaixo.
Caso o Remix não detecte a sua MetaMask na opção “Injected Provider” será necessário reiniciar o navegador, apenas certifique-se de salvar o seu contrato antes, para evitar qualquer perda de dados.
Selecione o contrato a ser feito deploy e clique no botão amarelo escuro para que o mesmo aconteça. Neste momento uma transação irá ser iniciada para envio dos bytescodes do contrato compilado à blockchain e como em toda transação, você deverá pagar as taxas de rede usando o saldo da sua MetaMask que vai lhe informar desta cobrança, estimar o valor e lhe solicitar a confirmação, como na imagem abaixo.
Você confirmando, os bytescodes do contrato compilado serão enviados para registro junto da transação, o que costuma ocorrer em poucos segundos. Para conferir basta você pegar o hash que vai receber (fica na lista de deploys, logo abaixo do botão marrom) e ir conferir no site da EtherScan, lembrando que como é um teste, deve usar o explorador de blocos da testenet que fica neste endereço. Colando o endereço/hash do seu contrato você verá se o deploy dele já foi finalizado e todos os detalhes das transações que já aconteceram com esse contrato, como abaixo (a imagem é de outra rede, mas os sites são todos iguais).
Quando a transação de deploy estiver marcada como concluída/bem sucedida o seu contrato já está disponível na blockchain, ou seja, pode ser usado normal e publicamente por qualquer pessoa que possua o endereço dele, invocando todas as funções e propriedades públicas do mesmo.
#3 – Testando o Contrato
Depois que você faz o deploy na blockchain o contrato pode ser testado em produção e uma das maneiras mais simples de fazer isso é pelo próprio site da EtherScan. Para fazer isso primeiro você terá de publicar também o código-fonte do contrato, para que ele seja verificado e possa ser testado online, o que você faz na aba Contract da tela de detalhes do contrato (mesma tela que mandei o print acima).
Clique no link “Verify and Publish”, preencha o formulário que vai abrir informando o tipo de compilador (Solidity Single File), a versão que você usou e a sua licença de código para, na tela seguinte, você informa todo o código fonte do seu contrato (copie do arquivo .sol e cole diretamente aqui) e clica em “Verify and Publish”.
Tudo estando certo a sua aba Contract da tela do contrato agora irá lhe fornecer as opções de “Read Contract” e “Write Contract”, respectivamente as operações públicas possíveis de leitura e de escrita, este último incorrendo em taxas de rede (gas fee). Atenção ao link de Reset no canto direito, ele é importante para atualizar a página pois ela não o faz automaticamente.
Para as operações de escrita você precisará pagar as taxas de rede e para isso precisará de uma carteira, certo? O site BSC Scan também se integra com a MetaMask, basta clicar no link “Connect to Web3” que fica com uma bolinha vermelha na esquerda, até que a conexão seja feita e você autorize o dapp BSC Scan na sua carteira quando solicitado.
Você então pode usar os botões azuis fornecidos para invocar as propriedades e funções públicas do contrato, fazendo seus testes em produção. Mais tarde, você pode fazer testes usando algum dapp criado por você, como os que eu ensino a criar neste tutorial aqui pegando o ABI gerado tanto no Remix quanto no EtherScan.
Espero que tenha gostado do tutorial, qualquer dúvida deixe nos comentários!
Quer fazer um tutorial mais avançado de programação de Smart Contracts? Dá uma olhada neste de HardHat e Node.js.
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.
Boa noite !!!
Primeiro gostaria muito de te PARABENIZAR pela clareza, didática e gentileza !!! Ganhou um fã !!!
Vou procurar o seu canal no youtube e me inscrever nele.
Eu fiz o contrato hello world, compilei no remix, testei no remix e fiz o deploy na BSC de teste.
Quando eu fui verificar, ele dá um erro de compilação e diz que esta diferente do bytecode.
Ja fiz a mesma operação 3 vezes e o erro é o mesmo … não da erro nenhum no remix e funciona tudo perfeitamente.
O que será que esta acontecendo?
Compiler debug log:
Error! Unable to generate Contract ByteCode and ABI
Found the following ContractName(s) in source code : Hellow
But we were unable to locate a matching bytecode (err_code_2)
For troubleshooting, you can try compiling your source code with the Remix – Solidity IDE and check for exceptions
Compiler Version: v0.8.19+commit.7dd6d404
Optimization Enabled: False
Runs: 200
ByteCode (what we are looking for):
60806040526040518060400160405280601a81526020017f6d6575207072696d6569726f20636f6e747261746f20212121210000000000008152506000908051906020019061004f929190610062565b5034801561005c57600080fd5b50610166565b82805461006e90610105565b90600052602060002090601f01602090048101928261009057600085556100d7565b82601f106100a957805160ff19168380011785556100d7565b828001600101855582156100d7579182015b828111156100d65782518255916020019190600101906100bb565b5b5090506100e491906100e8565b5090565b5b808211156101015760008160009055506001016100e9565b5090565b6000600282049050600182168061011d57607f821691505b6020821081141561013157610130610137565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6102e9806101756000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806319ff1d211461003b578063e21f37ce14610059575b600080fd5b610043610077565b60405161005091906101d0565b60405180910390f35b610061610109565b60405161006e91906101d0565b60405180910390f35b60606000805461008690610241565b80601f01602080910402602001604051908101604052809291908181526020018280546100b290610241565b80156100ff5780601f106100d4576101008083540402835291602001916100ff565b820191906000526020600020905b8154815290600101906020018083116100e257829003601f168201915b5050505050905090565b6000805461011690610241565b80601f016020809104026020016040519081016040528092919081815260200182805461014290610241565b801561018f5780601f106101645761010080835404028352916020019161018f565b820191906000526020600020905b81548152906001019060200180831161017257829003601f168201915b505050505081565b60006101a2826101f2565b6101ac81856101fd565b93506101bc81856020860161020e565b6101c5816102a2565b840191505092915050565b600060208201905081810360008301526101ea8184610197565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561022c578082015181840152602081019050610211565b8381111561023b576000848401525b50505050565b6000600282049050600182168061025957607f821691505b6020821081141561026d5761026c610273565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f830116905091905056fea26469706673582212208e65eeadd13d482b80d11a7798c97c4b644ae3ccfd9e2728a46e905f9a50ed7c64736f6c63430008070033
– vs what we got –
We tried looking for a match from the list of compiled contract bytecode outputs (as listed below), but was unable to find an exact match.
1) Hellow
60806040526040518060400160405280601a81526020017f6d6575207072696d6569726f20636f6e747261746f20212121210000000000008152506000908161004891906102ab565b5034801561005557600080fd5b5061037d565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806100dc57607f821691505b6020821081036100ef576100ee610095565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261011a565b610161868361011a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101a86101a361019e84610179565b610183565b610179565b9050919050565b6000819050919050565b6101c28361018d565b6101d66101ce826101af565b848454610127565b825550505050565b600090565b6101eb6101de565b6101f68184846101b9565b505050565b5b8181101561021a5761020f6000826101e3565b6001810190506101fc565b5050565b601f82111561025f57610230816100f5565b6102398461010a565b81016020851015610248578190505b61025c6102548561010a565b8301826101fb565b50505b505050565b600082821c905092915050565b600061028260001984600802610264565b1980831691505092915050565b600061029b8383610271565b9150826002028217905092915050565b6102b48261005b565b67ffffffffffffffff8111156102cd576102cc610066565b5b6102d782546100c4565b6102e282828561021e565b600060209050601f8311600181146103155760008415610303578287015190505b61030d858261028f565b865550610375565b601f198416610323866100f5565b60005b8281101561034b57848901518255600182019150602085019450602081019050610326565b868310156103685784890151610364601f891682610271565b8355505b6001600288020188555050505b505050505050565b6102df8061038c6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806319ff1d211461003b578063e21f37ce14610059575b600080fd5b610043610077565b6040516100509190610227565b60405180910390f35b610061610109565b60405161006e9190610227565b60405180910390f35b60606000805461008690610278565b80601f01602080910402602001604051908101604052809291908181526020018280546100b290610278565b80156100ff5780601f106100d4576101008083540402835291602001916100ff565b820191906000526020600020905b8154815290600101906020018083116100e257829003601f168201915b5050505050905090565b6000805461011690610278565b80601f016020809104026020016040519081016040528092919081815260200182805461014290610278565b801561018f5780601f106101645761010080835404028352916020019161018f565b820191906000526020600020905b81548152906001019060200180831161017257829003601f168201915b505050505081565b600081519050919050565b600082825260208201905092915050565b60005b838110156101d15780820151818401526020810190506101b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006101f982610197565b61020381856101a2565b93506102138185602086016101b3565b61021c816101dd565b840191505092915050565b6000602082019050818103600083015261024181846101ee565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061029057607f821691505b6020821081036102a3576102a2610249565b5b5091905056fe{ipfs}64736f6c63430008130033
Alguns contratos eu também não consigo verificar manualmente, mas verificando via ferramentas como Truffle ou HardHat, funciona. Não sei dizer exatamente o motivo da sua recusa, mas pode ser alguma dependência externa, alguma coisa no constructor…Enfim, fica a dica de tentar usando as ferramentas que mencionei, tem tutorial aqui no blog.
Opa tudo bem ?
Eu tô achando que cair em um golpe pois entrei no YouTube fiz um procedimento de uma pessoa em dois contratos agora tentei recuperar meu saldo depois de 24horas e não voltou para meu metamask segue dois
0x043c3bc8d0c9052d9936e8e3d0b58279f96610a0e0f438ab589ca85dd9786913
Esse acima coloquei 0.635538114 BNB⬆️
0x81b605bee1fbbed19e8c0709e71d9f101474d653fcd17c4533dce15830da9cf1
Esse acima coloquei 1 BNB⬆️
contratos abaixo, será q vc pode me ajudar ?
Será q eu perdi meu saldo ?
Por favor me ajude não posso perder esse capital .
Pode ser que tenha caído em um golpe sim, recomendo que tente conversar com a pessoa que disse para fazer o procedimento pois somente ela poderá lhe ajudar (se for idônea). Caso ela não te ajude, será impossível recuperar os fundos pois as transações na blockchain são irreversíveis.
Olá ,
Como faz para por um logo no token?
https://ethereum.stackexchange.com/questions/138593/how-do-i-set-an-image-for-erc20-tokens-on-etherscan