SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
21.11.2024

Aula 098: Escrevendo Migrations no Truffle

Nesta aula, vamos explorar como escrever migrations no Truffle, um framework de desenvolvimento popular para contratos inteligentes Ethereum. As migrations são essenciais para implantar contratos na blockchain e gerenciar suas atualizações. Ao final desta aula, você entenderá como criar, modificar e executar migrations para seus contratos inteligentes em Solidity.

O que são Migrations?

Migrations no Truffle são scripts que ajudam a implantar seus contratos inteligentes em uma rede Ethereum. Elas garantem que seus contratos sejam implantados na ordem correta e permitem gerenciar facilmente as alterações nos seus contratos ao longo do tempo. As migrations fornecem uma maneira de acompanhar quais contratos foram implantados e de atualizá-los ou reimplantá-los conforme necessário.

Configurando seu Projeto Truffle

Antes de escrevermos quaisquer migrations, vamos configurar um projeto Truffle simples. Se você ainda não fez isso, instale o Truffle globalmente usando npm:

npm install -g truffle

Em seguida, crie um novo diretório para o seu projeto:

mkdir MeuProjetoTruffle
cd MeuProjetoTruffle

Agora, inicialize um novo projeto Truffle:

truffle init

Este comando criará a seguinte estrutura de diretório:

MeuProjetoTruffle/
├── contratos/
├── migrations/
├── teste/
├── truffle-config.js

Escrevendo Sua Primeira Migration

No diretório migrations, você encontrará um arquivo chamado 1_initial_migration.js. Este arquivo contém uma migration padrão para o contrato Migrations, que é usado pelo Truffle para acompanhar quais migrations foram executadas.

Vamos criar um novo contrato inteligente chamado MeuContrato.sol no diretório contratos:

// contratos/MeuContrato.sol

pragma solidity ^0.8.0;

contract MeuContrato {
    string public nome;

    constructor(string memory _nome) {
        nome = _nome;
    }
}

Agora, precisamos escrever uma migration para implantar MeuContrato. Crie um novo arquivo de migration no diretório migrations chamado 2_deploy_meu_contrato.js:

// migrations/2_deploy_meu_contrato.js

const MeuContrato = artifacts.require("MeuContrato");

module.exports = function (deployer) {
    deployer.deploy(MeuContrato, "Olá, Truffle!");
};

Neste script de migration, estamos fazendo o seguinte:

  • Importando o artefato MeuContrato usando a função artifacts.require do Truffle.
  • Exportando uma função que recebe o deployer como argumento.
  • Usando deployer.deploy para implantar o contrato MeuContrato com o argumento do construtor "Olá, Truffle!".

Executando Migrations

Agora que escrevemos a migration, é hora de implantá-la na blockchain. Primeiro, certifique-se de que você tenha uma rede de desenvolvimento Ethereum local rodando. Você pode usar o Ganache, que pode ser instalado separadamente.

Se você estiver rodando o Ganache, certifique-se de que ele esteja aberto e escutando na porta padrão (7545). Agora, execute o seguinte comando no seu terminal:

truffle migrate

O Truffle irá compilar seus contratos e executar as migrations na ordem correta. Você deverá ver uma saída semelhante a esta:

Iniciando migrations...
======================
> Nome da rede:   'desenvolvimento'
> ID da rede:      5777
> Limite de gás do bloco: 6721975 (0x6691b8)

1_initial_migration.js
========================
   > Implantando Migrations...
   > Migrations: 0x1234567890abcdef1234567890abcdef12345678
   > Salvando migration na rede.
   > Salvando artefatos...
   > Migrations já foram executadas para esta rede.

2_deploy_meu_contrato.js
========================
   > Implantando MeuContrato...
   > MeuContrato: 0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef
   > Salvando migration na rede.
   > Salvando artefatos...
   > MeuContrato foi implantado com sucesso.

Modificando Migrations

Se você precisar alterar seu contrato, pode fazê-lo modificando o código do contrato inteligente. Vamos supor que queiramos mudar o construtor para aceitar um segundo parâmetro para o MeuContrato.

Atualize o arquivo MeuContrato.sol:

// contratos/MeuContrato.sol

pragma solidity ^0.8.0;

contract MeuContrato {
    string public nome;
    uint public numero;

    constructor(string memory _nome, uint _numero) {
        nome = _nome;
        numero = _numero;
    }
}

Você também precisará atualizar a migration para considerar esse novo parâmetro. Modifique o arquivo 2_deploy_meu_contrato.js:

// migrations/2_deploy_meu_contrato.js

const MeuContrato = artifacts.require("MeuContrato");

module.exports = function (deployer) {
    deployer.deploy(MeuContrato, "Olá, Truffle!", 42);
};

Depois de fazer essas alterações, você pode implantar as migrations novamente. No entanto, pode ser necessário redefinir as migrations se o contrato já tiver sido implantado para refletir as mudanças:

truffle migrate --reset

Conclusão

Nesta aula, você aprendeu como escrever migrations no Truffle para implantar contratos inteligentes em Solidity. Você pode criar scripts de migration para implantar, atualizar e gerenciar seus contratos na blockchain Ethereum. As migrations são uma parte crucial do processo de desenvolvimento, garantindo que seus contratos sejam implantados corretamente e que você possa mantê-los ao longo do tempo.

Sinta-se à vontade para experimentar criando contratos adicionais e seus respectivos scripts de migration. Bons códigos!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!