WEB3DEV

Cover image for Como interagir com um Contrato Inteligente, quando ele não é verificado: Codificação de Hack Inteligente #1
Fatima Lima
Fatima Lima

Posted on

Como interagir com um Contrato Inteligente, quando ele não é verificado: Codificação de Hack Inteligente #1

Web3, Blockchain, Ethereum, estes são alguns dos tópicos mais quentes da tecnologia no momento. Portanto, não é de se admirar que tantas pessoas, inclusive eu, estejam tentando explorar esse campo. O fato de você estar lendo este artigo, significa que você também está neste campo.

Amador ou veterano, você vai ou já está codificando em Solidity, que pelo que entendo é uma linguagem de programação para criar contratos inteligentes.

Agora, o foco deste artigo não é ensinar nada a ninguém, básico ou complicado, sobre Solidity. Para isso, você já tem vários recursos por aí. Este artigo (ou, assim se espera, uma série de artigos) se concentrará nos hacks rápidos para brincar com contratos inteligentes. A ideia é compartilhar com você como fazer um trabalho de codificação mais inteligente, rápido e eficiente.

Hack Inteligente #01: Interagindo com contratos inteligentes usando o Remix

Presumo que você tenha ouvido e brincado com o Remix. Se ainda não, não tenha medo; de qualquer forma, eu o levarei através de algumas das coisas básicas. Se já teve contato com o Remix, então você já sabe que é um dos IDEs (Ambientes de Desenvolvimento Integrado) on-line de contratos inteligentes mais poderosos que lhe permitem codificar seus contratos inteligentes, compilá-los e implantá-los também.

Problema: Como interagir com um contrato inteligente não verificado

Vou demonstrar como você poderia usar o Remix para interagir com um Contrato Inteligente que é implantado em uma blockchain EVM, que não é verificada. A questão aqui é a seguinte: 👇

Image description

Como você notará, é um contrato inteligente na blockchain, mas não temos as funções padrão de leitura e escrita disponíveis no explorador, para que possamos interagir com o contrato.

Para o propósito desta demonstração, eu implantei um contrato para a rede de teste Ropsten 👉 aqui.

Como você pode ver, o explorador de blocos nos fornece algumas informações relevantes sobre nosso contrato implantado, mas como a ABI (Interface Binária de Aplicação) do contrato não foi submetida ao explorador de blocos (embora de propósito), não há como interagirmos com o contrato por meio do explorador. Portanto, de qualquer forma, mesmo que tenhamos o código fonte do contrato implantado, não podemos chamar suas funções ou interagir com ele ... .... ou podemos?

Image description

Solução: Remix, para o auxílio

Sim, isso pode ser feito usando o Remix. O Remix oferece uma grande variedade de recursos e pode até nos permitir interagir com contratos implantados.

Vamos ver como este hack funciona.

Passo 1: Obtendo acesso ao código fonte do contrato

Primeiro precisaríamos do código fonte do nosso contrato; para meu exemplo de contrato inteligente, ele pode ser encontrado: aqui.

Se você passar pelo código fonte, pode ver que é um contrato simples que mantém o controle dos pontos das casas de Hogwarts e também há alguma função para adicionar pontos às casas.

Passo 2: Importando no Remix

Agora abra o Remix em uma nova aba. Crie um novo arquivo dentro da pasta de contratos da interface Remix e a única coisa que você tem que fazer é importar o contrato desta forma:

import “https://github.com/UV-Labs/Tutorials/blob/main/ContractInteraction/Hogwarts.sol”;

Após a importação, seu arquivo deve ter este aspecto:

Image description

Como alternativa ao mencionado acima, você pode usar este link: 👉 🔗 para abrir diretamente o arquivo acima no IDE Remix.

Passo 3: Conectando-se ao contrato

  • Agora precisamos nos conectar ao contrato inteligente implantado. Para fazer isso, clique no ícone "Deploy and Run Transactions" no lado esquerdo da interface Remix. O último ícone no snapshot abaixo.

Image description

  • Em seguida, escolha o "environment" (ambiente) como "injected web3". Isto basicamente selecionará a rede à qual sua Metamask está conectada. Portanto, escolha a rede Ropsten em sua Metamask.
  • Agora tudo o que temos que fazer é copiar o endereço do contrato: 0xe33b254e1d91e9f2b8c0Bb04F555308E925C3Ce9 e colá-lo na seção “At Address” e depois clicar no botão “At Address”

Image description

  • Isto deve gerar uma nova entrada na seção de contratos implantados na parte inferior esquerda. Ao expandi-la devemos ser capazes de ver algo assim:

Image description

Voila 🎉🎊

Você observará as funções do nosso contrato. Como você pode ver, há quatro métodos de leitura para obter os pontos de cada casa de Hogwarts e também há quatro métodos de mudança de estado (um para cada casa) para adicionar 10 pontos à casa.

Agora você está pronto para brincar chamando esses métodos e talvez possa tentar adicionar mais pontos à sua casa favorita de Hogwarts 😉

Conclusão

Seguindo estas etapas, você pode interagir com qualquer contrato inteligente, se tiver seu endereço e código fonte. Uma coisa a ser observada é que você não pode acessar o contrato sem compilá-lo e depois mudá-lo para seu ambiente de implantação. Se você tentar colar diretamente o endereço do contrato, você encontrará o botão "At Address" desativado.

Solicitações

Todo o código acima está situado aqui: Link to GitHub. ☁️ 💻 🔗. Você é mais do que bem-vindo a usar a base de códigos existente. Dê-nos uma estrela 🙏 se você gostar do que estamos fazendo.

Este é meu primeiro artigo 🥇 no Medium. Se você gostou do meu trabalho, por favor aplauda e me siga como um sinal de incentivo.

Além disso, por favor, siga @uv_labs no Twitter e a publicação: https://medium.com/uv-labs, para manter a mim e a muitos dos meus colegas iniciantes encorajados.

Autores (aberto a comentários): 👇

Jagannatheshahi, sob alguma orientação de Amateur-Dev

Este artigo foi traduzido por Fátima Lima e seu original pode ser lido aqui.

Top comments (0)