Lição 3

Escrevendo um Contrato Inteligente Básico

Variáveis, funções e modificadores são componentes essenciais em contratos inteligentes Solidity. Solidity tem dois tipos de variáveis: variáveis de estado e variáveis locais.

Nesta seção, discutiremos o processo de escrever um contrato inteligente básico usando Solidity. Abordaremos componentes essenciais como variáveis, funções e modificadores. Em seguida, passaremos por um exemplo de implementação de um contrato de token simples.

Variáveis, funções e modificadores

  • Variáveis: Em Solidity, existem dois tipos de variáveis – variáveis de estado e variáveis locais. As variáveis de estado são armazenadas permanentemente na blockchain, enquanto as variáveis locais são temporárias e existem apenas dentro do escopo de uma função.- Funções: As funções são os blocos de construção dos contratos inteligentes. Elas são usadas para realizar tarefas específicas, como criar transações e executar lógica personalizada. As funções podem ter parâmetros de entrada e valores de retorno, permitindo maior personalização e flexibilidade.- Modificadores: Modificadores são exclusivos do Solidity e são usados para modificar o comportamento de uma função. Eles podem melhorar a legibilidade e a gerenciabilidade do código e podem ser usados para autenticar valores recebidos ou executar condicionalmente uma função chamada.Exemplo1: Implementando um contrato de token simples

Vamos criar um contrato de token simples usando Solidity. Este contrato permitirá aos usuários transferir tokens entre contas e verificar o saldo do token de qualquer conta.

pragma solidity ^0.8.0;contrato SimpleToken {    // Declare variáveis de estado    endereço público do proprietário;    mapeando(endereço => uint256) saldos públicos;    // Inicializa o contrato de token    constructor(uint256 ofertaInicial) {        owner = msg.sender;        saldos[proprietário] = ofertaInicial;    }    // Função para transferir tokens    função transfer(address para, uint256 quantidade) público {        require(saldos[msg.sender] >= quantidade, "Saldo insuficiente");        saldos[msg.sender] -= quantidade;        saldos[para] += quantidade;    }    // Função para verificar o saldo do token de uma conta    função balanceOf(endereço da conta) público visualização retorna (uint256) {        return saldos[conta];    }}
```Neste contrato, temos:

- Variáveis de estado`proprietário`e`saldos`para armazenar o endereço do proprietário do contrato e os saldos de token de todos os endereços, respectivamente.- A `construtor`função que define o fornecimento inicial de tokens e os atribui ao proprietário do contrato.- Um `transferir`função que permite aos usuários transferir tokens para outras contas. Ele usa o `exigir`declaração para garantir que o remetente tenha tokens suficientes para transferir.- A `saldoDe`função que retorna o saldo do token de uma conta especificada.- Este contrato básico de token demonstra como usar variáveis, funções e modificadores em Solidity para criar um contrato inteligente simples e funcional.**Exemplo 2: Implementando um sistema de votação simples**

pragma solidity ^0.8.0;contrato SistemaDeVotacao { mapeando (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function votarNoCandidato(bytes32 candidato) public { require(candidatoValido(candidato), "Candidato inválido."); votesReceived[candidato] += 1; } function totalDeVotosPara(bytes32 candidato) public view returns (uint256) { require(candidatoValido(candidato), "Candidato inválido."); return votesReceived[candidato]; } function candidatoValido(bytes32 candidato) public view returns (bool) { for (uint256 i = 0; i Destaques Variáveis, funções e modificadores são componentes essenciais nos contratos inteligentes Solidity. Solidity possui dois tipos de variáveis: variáveis de estado e variáveis locais. As funções são usadas para realizar tarefas e podem ter parâmetros de entrada e valores de retorno. Os modificadores são usados para modificar o comportamento de uma função e melhorar a legibilidade e a gerenciabilidade do código. O contrato SimpleToken permite aos usuários transferir tokens e verificar saldos de tokens. O contrato SimpleToken demonstra o uso de variáveis de estado, uma função construtora e funções como transferir e balanceOf. O contrato VotingSystem permite que os usuários votem em candidatos e acompanhem a contagem de votos. O contrato VotingSystem demonstra o uso de mapeamentos, arrays e funções como voteForCandidate, totalVotesFor e validCandidate.

Isenção de responsabilidade

* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.

* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.