Lesson 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 estadoproprietárioesaldospara armazenar o endereço do proprietário do contrato e os saldos de token de todos os endereços, respectivamente.
  • A construtorfunção que define o fornecimento inicial de tokens e os atribui ao proprietário do contrato.
  • Um transferirfunção que permite aos usuários transferir tokens para outras contas. Ele usa o exigirdeclaração para garantir que o remetente tenha tokens suficientes para transferir.
  • A saldoDefunçã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 < candidateList.length; i++) {            if (candidateList[i] == candidato) {                return true;            }        }        return false;    }}

Neste exemplo, o Sistema de Votaçãocontrato permite que os usuários votem em um dos vários candidatos chamando ovotarNoCandidatofunção. O contrato mantém o controle do número de votos recebidos para cada candidato usando um votos recebidosmapeamento, onde a chave é o nome do candidato e o valor é o número de votos. lista de candidatosvariável armazena a lista de candidatos válidos. O totalVotesFora função pode ser chamada para verificar o número de votos que um candidato específico recebeu e o candidato válidoA função verifica se um candidato é válido. Este é um exemplo simples de como o Solidity pode ser usado para construir aplicações descentralizadas com lógica complexa.

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.

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 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 estadoproprietárioesaldospara armazenar o endereço do proprietário do contrato e os saldos de token de todos os endereços, respectivamente.
  • A construtorfunção que define o fornecimento inicial de tokens e os atribui ao proprietário do contrato.
  • Um transferirfunção que permite aos usuários transferir tokens para outras contas. Ele usa o exigirdeclaração para garantir que o remetente tenha tokens suficientes para transferir.
  • A saldoDefunçã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 < candidateList.length; i++) {            if (candidateList[i] == candidato) {                return true;            }        }        return false;    }}

Neste exemplo, o Sistema de Votaçãocontrato permite que os usuários votem em um dos vários candidatos chamando ovotarNoCandidatofunção. O contrato mantém o controle do número de votos recebidos para cada candidato usando um votos recebidosmapeamento, onde a chave é o nome do candidato e o valor é o número de votos. lista de candidatosvariável armazena a lista de candidatos válidos. O totalVotesFora função pode ser chamada para verificar o número de votos que um candidato específico recebeu e o candidato válidoA função verifica se um candidato é válido. Este é um exemplo simples de como o Solidity pode ser usado para construir aplicações descentralizadas com lógica complexa.

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.

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.