Como fazer um ICO Ethereum em 20 minutos

Deixamos aqui um tutorial sobre Como fazer um ICO Ethereum em 20 minutos para que entendam mais sobre esse processo de crowdfunding, sendo este uma tradução para ajudar a comunidade brasileira.

Iremos aqui advertir da mesma forma que o autor do post original que, não temos responsabilidade pelas ações de quem ler este conteúdo e replicar o mesmo, de forma que aqui está um conteúdo educacional. Fizemos o teste de todos os passos citados pelo autor a fim de avaliar se o tutorial chegaria realmente a cumprir o que prometia, e além de certificar os passos, mostrar aos nossos leitores que estamos publicando o que testamos efetivamente. O contrato criado não foi auditado, portanto para colocar o mesmo realmente como um ICO real deve admitir mais algumas etapas. Utilize a blockchain para resolver problemas reais. Um agradecimento ao Moritz Neto, que também faz parte da comunidade brasileira de Desenvolvedores Ethereum pelo ótimo material.

Para realizar este teste, o autor utilizou a Testnet Ethereum, e disponibilizou também uma faucet de ethereum testnet para os passos que virão a seguir.

Antes de começarmos então, precisamos seguir alguns passos para saber como fazer um ICO Ethereum:
  1. Endereço Ethereum myetherwallet: iremos utilizar endereços Ropsten da Testnet para não gastar ETH reais, cadastre-se então no link que deixamos e crie um endereço. A myetherwallet possui opção em PT-BR também. Para criar o endereço, clique no link, e configure conforme a figura abaixo:
    Criar ETH testnet
    Ao criar a senha, salve a mesma para o caso de precisar, e salve o arquivo que será oferecido também. Após isso aparecerá a tela a seguir:

    Ativação da wallet
    Após desbloquear a sua wallet, role a tela que verá seu Endereço Público para Ethereum na testnet, salve a sua chave privada em um arquivo também:

    Endereço PúblicoO nosso public address testnet ficou: 0x35Ea40DfE86b4Ab3cAF063465DAabE900A9B2046
  2. Faucet Ethereum TestNet: Para isso, o autor deixou uma opção de faucet que envia automaticamente Ethereum para o endereço que criamos acima. Utilize apenas uma vez essa opção, caso não dê certo nos avise nos comentários que buscamos atualizar o tutorial. Clique aqui e coloque o seu endereço ETH para receber alguns de teste.
    Utilizando a faucet ganhamos um ETH de acordo com a TXID aqui.
  3. Editor de texto (sugeridos Sublime ou Atom, do qual optamos pelo Sublime mesmo nos testes do Livecoins)
  4. Contrato Solidity (baixe/copie aqui), está no repositório Github criado pelo autor do post original e também por BokkyPooBah. Iremos editar o contrato para realizar o nosso teste conforme as etapas abaixo se seguirem.

Com todas as etapas acima seguidas, nós temos os pré requisitos básicos para iniciar o nosso ICO para teste. Começando então, abra o contrato Solidity que baixamos no editor de texto.

Lá encontrará nas linhas 3-15 os comentários sobre o contrato. Já na linha 4 temos o nome “// ‘bitfwd’ CROWDSALE token contract” do qual podemos renomear para qualquer um, no nosso teste colocamos como ‘livecoins’ CROWDSALE token contract.

Após isso, na Linha 6 aguarde para mudança nos passos que virão a seguir, somente quando o contrato estiver na Blockchain.

Na Linha 7 colocaremos o símbolo do nosso token, o nosso é LVC e na linha 9 o nome: livecoins Token.

Após o preenchimento destes detalhes, vamos a linha 102 e troque a escrita “bitfwdToken” por o nome que colocou, mais NÃO utilize espaços, o nosso ficará “livecoinsToken”. Repita o procedimento na linha 118. O mesmo na linha 120.

Na linha 119, altere o símbolo ‘FWD’ para o escolhido, no nosso caso ‘LVC’. Decimals na linha 121 permanece como 18. Na linha 122 definimos um parâmetro de ICO, como quando o bônus terminará? Na linha 123 quando as vendas do token irão se encerrar.

Já estamos aqui neste ponto quase finalizando a edição do contrato para este exemplo, então na linha 212 possui um comentário que devemos escrever a quantidade de tokens que serão distribuídos, fique a vontade para definir a quantidade de seu token.

Na linha 218 devemos definir o quanto as pessoas irão receber dentro do período de bônus, e na linha 220 o quanto receberão fora o período do bônus, no caso a linha 220 repete a informação da linha 212.

Nós daremos 700 LVC por 1 ETH, porém no período do bônus daremos 900 LVC por 1 ETH. O “msg.value” quer dizer o quanto de ETH que a pessoa enviou, ou seja, 1 ETH = 900 LVC no período de bônus, ou 700 LVC fora do período de bônus.

 

O nosso contrato está quase pronto, restam detalhes para finalizar o mesmo. Vamos testar no IDE do Solidity Ethereum o nosso código de contrato, portanto acesse o link: http://remix.ethereum.org/ e cole o código no caminho browser/ballot.sol (selecione o código lá existente, apague e cole o nosso de exemplo). Se algo neste passo aparecer vermelho, revise os passos anteriores pois algo saiu errado.

Quando terminar de colar o código, veja que no lado direito há um painel, e que a opção Compile no canto superior está marcada, o que indica que estamos com ela selecionada. Abaixo, com uma caixa de seleção logo escolha aí o seu token e ao lado há um botão Details, clique no mesmo. Ao fazer isso abrirá uma nova tela, procure nela a opção ByteCode e verá que tem um botão com a opção de copiar para a área de transferência, clique no mesmo.

Volte ao programa de texto que estamos editando o nosso contrato, copie o que colamos no início do mesmo. Haverá muito texto, mas o que é importante é a informação BYTECODE, que você reconhecerá como “object:” “Bytecode”. O bytecode é um monte de letras e números, portanto adicione nele “0x” no início e ficará “0xbytecode”. Ao realizar esses passos, copie o Bytecode para outro arquivo no editor de texto.

Agora voltemos a myetherwallet e lembre-se de no canto superior direito configurar a linguagem para PT-BR e também a rede para Ropsten, pois estamos trabalhando na testnet. Procure abaixo da opção da linguagem nas guias, a de nome Contrato, após isso Implantar Contrato.

Cole na caixa BYTECODE somente: 0x…… que criamos anteriormente. O GAS Limit deve se ajustar automaticamente. Nas opções mais abaixo na tela, escolha a sua chave privada, e coloque a que criamos anteriormente, após isso clique em Desbloqueie. Após isso, clique em Transação Assinada.

 

Ao clicar no Botão Implantar contrato então será exibida a seguinte mensagem, essa mensagem aparece bem rápido e já some o que é normal, eu dei print para mostrar aqui a mesma:

 

Acessei https://ropsten.etherscan.io/ e no canto superior direito colei o número de contrato Livecoins: 0x925fb2e972cdd0117289b1ab29b634b4111e8d17 (com esse número de contrato é possível saber quem criou o mesmo pela public key e a tx hash do mesmo).

Tx Hash do nosso contrato: 0x955595681eeb9f793b81949f41d3389a3f6784cf8444b185e4d65da0ca6bc34d

Agora vamos para mais algumas etapas para finalizar.

Vamos garantir que nosso contrato vá para a Blockchain, lembrando que ao colocar na Blockchain, para sempre ficará lá, portanto vamos procurar fazer o certo para gravar certo. Obviamente, este é um teste e se for realizar um ICO real procure alguém com experiência para não cometer erros com recursos reais.

Ao acessar o contrato (0x925fb2e972cdd0117289b1ab29b634b4111e8d17) com o link https://ropsten.etherscan.io/, iremos clicar na “Guia Overview”, e clicar no endereço do contrato. Após isso, na nova tela busque a opção “Code” e depois “Verify and Publish”.

 

Se está comigo a ansiedade já tomou conta para ter o seu primeiro ICO criado, e estamos quase lá. Preste atenção aos próximos passos para que tudo finalize da melhor forma possível. Lembrando que esse contrato entrará na Blockchain, para sempre ficará lá.

Verifique agora 5 etapas nesta tela:

1- Tenha certeza se o contrato é o mesmo que criamos no campo correspondente.

2- O nome do contrato deve bater com o que escrevemos no código, no nosso caso era “livecoinsToken“.

3- Para verificar a versão do compilador, volte a página do Remix onde pegou o Bytecode e olhe na URL que estará escrito a versão lá. O nosso foi: v0.4.24+commit.e67f0147.js

4- No campo “Optimization” escolha NÃO, pois não configuramos anteriormente.

5- No campo “Enter the Solidity Contract Code below” coloque o código que está no Remix, copie de lá e cole aqui. Vá na linha 6 e altere o contrato para o que criamos aqui.

Sem mais delongas, deixe os demais campos em branco e procure a opção Verify and Publish. Esse é o momento que esperávamos, cruze os dedos.

Se deu certo então comemore comigo, SEJA BEM VINDO AO CLUBE CYPHERPUNK:

Se alguma mensagem vermelha aparecer revise os passos e tente novamente.

Caraca, mas e agora o que faço com isso?

Simples, envie alguns Ethereum de sua wallet ropsten que criamos para o endereço do contrato e receba os tokens de volta na proporção que definiu no seu contrato.

O Ethereum Ropsten enviado irá para a wallet do dono do contrato, ou seja, a nossa mesmo.

Verifique o endereço Ethereum Ropsten da minha Wallet e veja meu saldo de Tokens:

  • LVC: 0x35Ea40DfE86b4Ab3cAF063465DAabE900A9B2046
  • TxHash: 0xf458db27b771ae18d1dd3092a889fa42754d8df2af3acedc63b8cbf75c9a1f4d

Lembrando, este é um teste, em uma rede de testes, aqui não foi gerado nenhum valor, utilize essa rede para testes a vontade, essa é a função dela mesmo. Para contratos reais na rede Main Ethereum contrate um profissional para não perder recursos.

Tenha responsabilidade com criar algum projeto, pense que essa tecnologia foi criada para resolver problemas e melhorar o mundo, faça sua parte. Não nos responsabilizamos com o seu uso com esse aprendizado, para o bem ou para o mal.

Este texto foi criado pelo autor Moritz Neto, em seu Medium, portanto o seguinte texto é uma tradução do conteúdo para ajudar a comunidade brasileira a entender mais sobre o tema.

De qualquer forma seguimos o tutorial para testar e trazer para vocês um caso real, no nosso caso houve algumas modificações que tivemos que fazer em pequenos códigos ao colocar no compilador, visto que o mesmo considerava algumas poucas partes do código como códigos que já não eram mais utilizados, agradeço ao Kirk que me ajudou com isso também, nosso dev das incríveis Calculadoras Cripto do Livecoins.

Esse post é uma tradução deste outro “Moritz NetoMedium“, para quem preferir ler em inglês.