WEB3DEV

Cover image for Implantar Contratos Inteligentes Ethereum no ecossistema Cosmos
Fatima Lima
Fatima Lima

Posted on

Implantar Contratos Inteligentes Ethereum no ecossistema Cosmos

Image description

Muitos de nós usamos sites como o Facebook para nos conectarmos com amigos e entes queridos, compartilhando momentos de nossas vidas on-line para que eles possam ver e responder. No entanto, o Facebook tem o controle exclusivo dos dados armazenados em seus servidores. Portanto, muitos usuários sentem que estão praticamente dando seus dados pessoais ao Facebook e o Facebook pode escolher editar, restringir ou apagar os dados que compartilham.

No entanto, a blockchain e a Web3 resolvem esses problemas por meio da descentralização, removendo efetivamente este poder dos governos e organizações, garantindo que a propriedade destes dados permaneça com os usuários.

Neste tutorial vamos explorar o SDK Cosmos, um framework de blockchain, e aprenderemos como implantar contratos inteligentes escritos para a blockchain Ethereum da blockchain Cosmos. Vamos começar!

  • Cosmos
  • Implantar contratos inteligentes no Cosmos
  • Criar um projeto Truffle
  • Criar um contrato inteligente Olá
  • Adicionar a configuração evmos
  • Compilar nosso contrato inteligente
  • Implantar nosso contrato intelignte

Cosmos

Cosmos é um SDK (N.T. kit de desenvolvimento de software) utilizado na construção de uma blockchain. Com o Cosmos, podemos escrever nossa blockchain personalizada, testar a blockchain em uma testnet (rede de teste), lançar a blockchain em uma mainnet e conectar a outras blockchains do Cosmos.

O Cosmos é código aberto, o que significa que o SDK é construído e mantido pela comunidade de desenvolvedores do Cosmos. Escrito na linguagem de programação Go, o Cosmos é modular, escalável e interoperável com outras blockchains Cosmos.

Implantar contratos inteligentes no Cosmos

Nesta seção, aprenderemos como implantar contratos inteligentes na blockchain do Cosmos, implantando na Evmos. Evmos é uma blockchain escalável construída utilizando o SDK Cosmos que funciona no mecanismo de consenso do Tendermint Core.

Evmos é compatível com EVM e Web3, possui transações rápidas e implementa o Tendermint Core. Escreveremos nosso contrato inteligente usando o Truffle, mas primeiro temos que instalar a ferramenta utilitária Truffle.

Criar um projeto Truffle

Instale a ferramenta Truffle executando o seguinte comando:

npm install -g truffle
Enter fullscreen mode Exit fullscreen mode

Para criar um novo projeto Truffle, execute o seguinte comando:

mkdir cosmoprj
cd cosmoprj
truffle init
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

Nosso projeto terá a seguinte estrutura:

cosmoprj/
├── /contracts
├─── /Migrations.sol
├── /migrations
├─── /1_initial_migration.js
├── /test
├── package.json
└── truffle-config.js

Enter fullscreen mode Exit fullscreen mode
  • migrations/: Contém nossos scripts de migração
  • contracts/: Contém nossos contratos inteligentes
  • package.json: Contém nossas dependências
  • truffle-config.js: Contém nossa configuração Truffle
  • test/: Contém nossos scripts de teste

Crie um contrato inteligente Hello

Vamos criar um contrato inteligente chamado Hello que imprimirá a mensagem Hello World. Execute o comando abaixo para criar um contrato de arquivo Hello:

truffle create contract Hello
Enter fullscreen mode Exit fullscreen mode

Agora, veremos um arquivo Hello.sol em nossa pasta contracts. Abra o arquivo e acrescente o seguinte código:

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;

contract Hello {
  function sayHello() public pure returns (string memory)  {
    return "Hello, world!";
  }
}
Enter fullscreen mode Exit fullscreen mode

Temos uma função chamada sayHello que retorna uma string. A palavra-chave public significa que essa função pode ser chamada por qualquer um e a palavra-chave pure significa que a função não modificará nenhum estado.

Adicione a configuração Evmos

Agora, vamos implantar nosso contrato inteligente para a Testnet Evmos. A Evmos oferece muitos testnets que podemos usar, mas para este tutorial, usaremos a testnet Evmos Testnet. Vamos configurar esta testnet em nosso arquivo truffle-config.js:

const HDWalletProvider = require("@truffle/hdwallet-provider");

const mnemonic =
  "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat";

module.exports = {
  networks: {
    evmos: {
      provider: () =>
        new HDWalletProvider(mnemonic, "https://eth.bd.evmos.dev:8545"),
      network_id: 9000,
      chain_id: 9000,
    },
  },

  // Defina opções de mocha (framework para testes) padrão aqui, use repórteres especiais etc.
  mocha: {
    // timeout: 100000
  },

  // Configure seus compiladores
  compilers: {
    solc: {
      version: "0.8.13", // Fetch exact
    },
  },
};
Enter fullscreen mode Exit fullscreen mode

Solicitamos o pacote @truffle/hdwallet-provider, que nos permite conectar com a Evmos Testnet. O pacote @truffle/hdwallet-provider é também um provedor Web3 habilitado para carteira HD usado para assinar transações de endereços derivados de uma mnemônica de 12 palavras. A variável mnemonic é a mnemônica de 12 palavras que usamos para gerar nossa chave privada e a partir da qual nossos endereços são gerados.

Passamos "https://eth.bd.evmos.dev:8545" como a URL do provedor, que é a URL da Evmos Testnet.

A network_id é o ID da rede à qual estamos nos conectando e a chain_id é o ID da cadeia à qual estamos nos conectando. Usamos a propriedade solc para configurar o compilador Solidity; estamos usando a versão 0.8.13.

A seguir, vamos instalar o pacote @truffle/hdwallet-provider:

npm install --save @truffle/hdwallet-provider
Enter fullscreen mode Exit fullscreen mode

Compilando nosso contrato inteligente

Vamos compilar nosso contrato inteligente usando o comando truffle compile:

truffle compile
Enter fullscreen mode Exit fullscreen mode

Image description

Veremos que uma nova pasta build foi gerada, que contém o contrato inteligente compilado. O contrato inteligente compilado é armazenado na pasta build/contracts.

Na pasta, veremos Hello.jsone Migrations.json. Estes arquivos são o contrato inteligente compilado, e contêm a ABI e o bytecode do contrato inteligente.

Implante nosso contrato inteligente

Com isso concluído, podemos implantar nosso contrato inteligente. Usaremos o comando truffle migrate:

truffle migrate --network evmos
Enter fullscreen mode Exit fullscreen mode

O código acima irá implantar nosso contrato inteligente para a Evmos Testnet. Veja que usamos a bandeira --networkpara especificar a rede na qual queremos implantar, em nosso caso, a rede evmos. Veremos o seguinte em nosso console:

Image description

Image description

O número do nosso bloco é 805055, que é o número de bloco da transação que foi executada. Vamos usar este número de bloco para consultar o contrato inteligente.

Vamos ver este bloco no Evm Explorer https://evm.evmos.dev/blocks/805055:

Image description

Image description

Image description

Conclusão

Um benefício tanto do Cosmos quanto da Evmos é que ambos são compatíveis com a blockchain Ethereum. Podemos transportar nossos contratos inteligentes para a blockchain Cosmos e implantá-los para a Evmos Testnet facilmente sem nenhuma configuração.

Neste artigo, aprendemos o que é Cosmos e revisamos como criar um contrato inteligente usando Truffle. Finalmente, aprendemos como implantar nosso contrato inteligente para a Evmos Testnet. Espero que tenham gostado deste artigo. Feliz codificação!

Chidume Nnamdi (autor do artigo)

Sou um engenheiro de software com mais de seis anos de experiência. Já trabalhei com diferentes stacks, incluindo WAMP, MERN, e MEAN. Minha linguagem preferida é JavaScript; os frameworks são Angular e Node.js.

27 de maio de 2022

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

Top comments (0)