WEB3DEV

Cover image for sbt-ethereum - Uma ferramenta para interagir com a blockchain da Ethereum por meio da linha de comando
Dimitris Carvalho Calixto
Dimitris Carvalho Calixto

Posted on

sbt-ethereum - Uma ferramenta para interagir com a blockchain da Ethereum por meio da linha de comando

Forma simples e elegante de desenvolver/implantar contratos inteligentes e muito mais!

Hoje, vamos falar sobre uma incrível ferramenta de desenvolvimento Ethereum, que mudará sua vida como desenvolvedor Ethereum para sempre 😎

O sbt é uma ferramenta de compilação de código aberto para projetos Scala e Java, semelhante ao Maven e ao Ant do Java.

sbt-ethereum

O sbt-ethereum é uma ferramenta incrível para que desenvolvedores e amadores comecem a desenvolver em Ethereum em minutos.

O sbt-ethereum tem os seguintes objetivos:

  • Uma plataforma interativa baseada em texto com a qual os "amadores" - pessoas que não são programadores, mas que estão dispostas a dedicar um pouco de tempo para aprender - podem interagir com a Ethereum (e outras blockchains compatíveis) e fazer isso com muito poder e sofisticação.
  • Uma ferramenta de publicação para aplicativos de contrato inteligente da Ethereum, pois os repositórios sbt-ethereum se esforçam para serem portáteis e para permitir a implantação de novas instâncias de contrato inteligente e a interação conveniente com contratos inteligentes já implantados.
  • Para aqueles que são (ou desejam se tornar!) programadores, um ambiente de desenvolvimento avançado para contratos inteligentes da Ethereum
  • Uma ferramenta de integração que facilita o desenvolvimento de bibliotecas e aplicativos Scala de alto desempenho que interagem com os contratos inteligentes da Ethereum.

Se você for um desenvolvedor iniciante, o principal atrito ocorre durante a configuração do novo projeto/tecnologia. O sbt reduz o atrito e ensina como trabalhar com o blockchain da Ethereum usando a interface de linha de comando (CLI).

Linha de comando? Não é difícil?

Não, o sbt mantém as coisas básicas e gerencia muitas coisas nos bastidores para manter a simplicidade.

O que o sbt-ethereum oferece?

  • Funcionalidade de carteira
  • Funcionalidade de desenvolvimento de contratos inteligentes
  • Interações com a blockchain Ethereum
  • Suporte ENS
  • Integração com Etherscan

Sim! Tudo o que foi dito acima pode ser feito por meio da linha de comando. Agora vamos ver o sbt-ethereum em ação.

Instalação

Usaremos o Ubuntu (se você estiver usando o Windows, siga estas instruções).

Clone este repositório do GitHub:


git clone https://github.com/swaldman/eth-command-line.git --branch 0.1.10

Enter fullscreen mode Exit fullscreen mode

Agora, entre no diretório:


$ cd eth-command-line

Enter fullscreen mode Exit fullscreen mode

Se você escrever ls, poderá ver os arquivos abaixo:


$ ls

LICENSE      README.md    build.sbt    project       sbtw

Enter fullscreen mode Exit fullscreen mode

Aqui, o sbtw é um script de wrapper que instalará o sbt.


$ ./sbtw

Enter fullscreen mode Exit fullscreen mode

Como o sbt-ethereum é uma ferramenta interativa, durante a instalação, ele fará algumas perguntas para configurar sua carteira. Você também pode configurar uma carteira mais tarde, mas, por enquanto, você verá perguntas como 👇


There are no wallets in the sbt-ethereum keystore. Would you like to generate one? [y/n] y

Would you like the new address '0x1144f4f7aad0c463c667e0f8d73fc13f1e7e86a2' to be the default sender on chain with ID 1? [y/n] y

Enter fullscreen mode Exit fullscreen mode

Executando comandos no sbt-ethereum

O sbt-ethereum busca a simplicidade e fornece comandos fáceis de ler. Por exemplo, ele usa ethAddressAlias em vez de algo como etaa, eta. Isso faz com que os comandos sejam maiores e difíceis de digitar, e é por isso que o sbt oferece suporte à funcionalidade de completar automaticamente por guias. Você pode conferir a lista completa de comandos do sbt aqui.

Fazendo backups

Suas carteiras e aliases de endereço, bem como outras informações, como seu histórico de transações, compilações de contratos inteligentes e ABIs de contratos com os quais você interage, são armazenados na "shoebox" (caixa de sapato) do sbt-ethereum, a qual você deve adquirir o hábito de fazer backup. Portanto, usando o comando ethShoeboxBackup (que não recebe argumentos).

O comando é interativo. Ele solicitará um diretório no qual gostaríamos de armazenar os backups (que serão mantidos - na shoebox! - para reutilização futura opcional). Forneça um diretório adequado ao seu sistema. Talvez você queira fazer o backup em um pen drive ou disco externo para que, se algo acontecer com o disco rígido do seu computador, você tenha uma cópia em outro lugar.

Podemos restaurar nossa shoebox, se algo ruim acontecer, a partir do arquivo gerado usando o ethShoeboxRestore.

Conecte seu QuikNode ao sbt-ethereum

Podemos conectar nosso nó Ethereum ao sbt-ethereum (o sbt pode ter um nó ETH padrão que você pode usar para testes, mas a documentação recomenda o uso de um nó pessoal para garantir a confiabilidade e o desempenho).

Inscreva-se no QuikNode se quiser ter a melhor e mais rápida experiência de interação com um nó da Ethereum.

Lembre-se de que você pode usar TAB para completar seus comandos. Vamos nos conectar ao nosso nó Ethereum (mascarei meu URL QuikNode Web3, você pode obter o seu aqui).


sbt:eth-command-line> ethNodeUrlDefaultSet [https://xxxx-xxxx-xxxx.quiknode.io/uuid/token/](https://xxxx-xxxx-xxxx.quiknode.io/uuid/token/)

Enter fullscreen mode Exit fullscreen mode

Para verificar o URL do nó atual, vamos executar o comando para verificar o número do bloco mais recente:


sbt:eth-command-line> ethNodeBlockNumberPrint

Enter fullscreen mode Exit fullscreen mode

Você pode substituir ou alterar a configuração padrão do Nó sempre que desejar.

Para isso, o sbt fornece os seguintes comandos:

ethNodeBlockNumberPrint     ethNodeChainId              ethNodeChainIdDefaultDrop   ethNodeChainIdDefaultPrint  ethNodeChainIdDefaultSet     

ethNodeChainIdOverride      ethNodeChainIdOverrideDrop  ethNodeChainIdOverridePrint   ethNodeChainIdOverrideSet     ethNodeChainIdPrint          

ethNodeUrl                  ethNodeUrlDefaultDrop       ethNodeUrlDefaultPrint      ethNodeUrlDefaultSet        ethNodeUrlOverride           

ethNodeUrlOverrideDrop      ethNodeUrlOverridePrint     ethNodeUrlOverrideSet       ethNodeUrlPrint
Enter fullscreen mode Exit fullscreen mode

Usando o Alias

Todo mundo sabe que trabalhar com endereços pode ser problemático. Nós, seres humanos, não fomos projetados para trabalhar com valores hexadecimais (as máquinas, sim), portanto, lembrá-los ou até mesmo combiná-los corretamente pode ser difícil. É por isso que o sbt usa aliases para endereços. Ele já adicionou um alias para seu endereço padrão: para verificá-lo, execute o comando abaixo:


sbt:eth-command-line> ethAddressAliasList

Enter fullscreen mode Exit fullscreen mode

Você verá um "default-sender" na frente do seu endereço. Para adicionar um novo alias a um endereço ou a um alias existente, basta usar este comando:


ethAddressAliasSet new-name default-sender

Enter fullscreen mode Exit fullscreen mode

Para verificar um alias, você pode executar o ethAddressAliasList novamente.

Comandos da carteira

Para gerenciar carteiras, endereços e chaves, vamos verificar alguns comandos fornecidos pelo sbt.

Criar uma nova carteira


ethKeystoreWalletV3Create

Enter fullscreen mode Exit fullscreen mode

Esse comando cria uma nova carteira JSON eth-rpc "v3" que representa um endereço Ethereum e uma chave privada criptografada por senha no repositório de chaves "shoebox" do sbt-ethereum.

O comando ethKeystoreList exibe os endereços Ethereum no repositório de chaves "shoebox" do sbt-ethereum e todos os aliases associados a esses endereços.

Para verificar a chave privada de sua carteira, use o comando abaixo:


ethKeystorePrivateKeyReveal <hex address> or <alias-name>

Enter fullscreen mode Exit fullscreen mode

Importação de carteira

Há várias maneiras de importar uma carteira para o sbt. Vamos ver uma a uma:

  1. Uso de chaves privadas - você pode importar uma carteira para o sbt usando chaves privadas

ethKeystoreWalletV3FromPrivateKeyImport

  1. Usando o eth-rpc v3 JSON
>ethKeystoreWalletV3FromJsonImportV3 Wallet JSON: {"address":"d78fe1d978ad8cc5a94484725d059bec694f215e","crypto":{"mac":"98c53c7d05c7daeb1b8d2bef6af8643bf679a73a34d014f09a45f7035088f89b","kdf":"pbkdf2","cipherparams":{"iv":"70c4340f5305dca3fad9e54d47db4a2b"},"ciphertext":"9a2fc0212827877068d5a54f0ad64fab8767d52849535305e984682db25be23d","cipher":"aes-128-ctr","kdfparams":{"salt":"b9562670465f5ec13a4babe91aea6bd41d3400dfb0f97b1fb21617cbd62e9782","dklen":32,"c":262144,"prf":"hmac-sha256"}},"id":"f2f3bad7-4da0-424b-a363-fde7a6e3cb49","version":3}

[info] Imported JSON wallet for address '0xd78fe1d978ad8cc5a94484725d059bec694f215e', but have not validated it.

[info] Consider validating the JSON using 'ethKeystoreWalletV3Validate 0xd78fe1d978ad8cc5a94484725d059bec694f215e'.

[success] Total time: 3 s, completed Mar 16, 2019 12:35:14 AM

Enter fullscreen mode Exit fullscreen mode

Sempre valide sua carteira após a importação! Para validar a carteira, use o comando abaixo:


ethKeystoreWalletV3Validate <address-hex> or  <alias-name>

Enter fullscreen mode Exit fullscreen mode

Para imprimir o JSON da carteira (v3), execute o comando abaixo:


ethKeystoreWalletV3Print <address-hex> or <alias-name>

Enter fullscreen mode Exit fullscreen mode

Conclusão

O sbt oferece funcionalidades avançadas e vamos nos aprofundar mais nelas em artigos futuros. Podemos criar contratos inteligentes e também nomes ENS usando a ferramenta de linha de comando sbt. No próximo artigo, criaremos, implantaremos e leremos um contato inteligente usando o sbt-ethereum.

Leitura adicional:

Sobre a QuikNode

A QuikNode está construindo uma infraestrutura para dar suporte ao futuro da Web3. Desde 2017, trabalhamos com centenas de desenvolvedores e empresas, ajudando a dimensionar dApps e fornecendo nós Ethereum de alto desempenho. Estamos trabalhando em algo interessante nos últimos meses e lançaremos em breve, então assine nosso boletim informativo para obter mais atualizações!!! 😃

Artigo escrito por Gaurav Agrawal . A versão original pode ser encontrada aqui. Traduzido e adaptado por Dimitris Calixto.

Top comments (0)