Lição 3

Escrever um Contrato Inteligente Básico

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

Nesta secção, iremos discutir o processo de escrita de um contrato inteligente básico utilizando Solidity. Iremos abordar componentes essenciais como variáveis, funções e modificadores. Em seguida, iremos passar 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 no 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. São utilizadas 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 uma maior personalização e flexibilidade.
  • Modificadores: Os modificadores são únicos no Solidity e são usados para modificar o comportamento de uma função. Eles podem melhorar a legibilidade e a facilidade de gestão do código e podem ser usados para autenticar os valores recebidos ou executar condicionalmente uma função chamada.

Exemplo1: Implementação de 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.

Tipo de contrato TypeScript pragma solidez ^0.8.0;contrato SimpleToken {    // Declarar variáveis de estado    endereço público proprietário;    mapeamento(endereço => uint256) públicas saldos;    // Inicializar o contrato de token    construtor(uint256 ofertaInicial) {        proprietário = msg.sender;        saldos[proprietário] = ofertaInicial;    }    // Função para transferir tokens    função transferir(endereço para, uint256 montante) públicos {        exigir(saldos[msg.sender] >= montante, "Saldo insuficiente");        saldos[msg.sender] -= montante;        saldos[para] += montante;    }    // Função para verificar o saldo de token de uma conta    função saldoDe(endereço conta) públicos ver 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 tokens de todos os endereços, respetivamente.
  • A construtorfunção que define o fornecimento inicial de tokens e os atribui ao proprietário do contrato.
  • Um transferirfunção que permite aos utilizadores transferir tokens para outras contas. Ele utiliza o exigirdeclaração para garantir que o remetente tem tokens suficientes para transferir.
  • Um saldoDefunção que devolve o saldo do token de uma conta especificada.
  • Este contrato de token básico demonstra como utilizar variáveis, funções e modificadores em Solidity para criar um contrato inteligente simples e funcional.

Exemplo2: Implementação de um sistema de votação simples

Tipo de scriptpragma solidez ^0.8.0;contrato Sistema de Votação {    mapeamento (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    função voteForCandidate(bytes32 candidato) público {        exigir candidato válido(candidato), "Candidato inválido.");        votesReceived[candidato] += 1;    }    função totalVotesFor(bytes32 candidato) público view returns (uint256) {        exigir candidato válido(candidato), "Candidato inválido.");        return votesReceived[candidato];    }    função candidato válido(bytes32 candidato) público 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çãoo contrato permite aos usuários votar em um dos vários candidatos ligando para o votarNoCandidatofunção. O contrato mantém o controle do número de votos recebidos para cada candidato usando um votosRecebidosmapeamento, onde a chave é o nome do candidato e o valor é o número de votos. O lista de candidatosa variá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.

Destaque
Variáveis, funções e modificadores são componentes essenciais nos contratos inteligentes Solidity.
Solidity tem 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 facilidade de gestão do código.
O contrato SimpleToken permite aos utilizadores 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 transferência e balanceOf.
O contrato VotingSystem permite aos usuários votar em candidatos e rastrear contagens de votos.
O contrato VotingSystem mostra o uso de mapeamentos, arrays e funções como voteForCandidate, totalVotesFor e validCandidate.

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 3

Escrever um Contrato Inteligente Básico

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

Nesta secção, iremos discutir o processo de escrita de um contrato inteligente básico utilizando Solidity. Iremos abordar componentes essenciais como variáveis, funções e modificadores. Em seguida, iremos passar 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 no 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. São utilizadas 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 uma maior personalização e flexibilidade.
  • Modificadores: Os modificadores são únicos no Solidity e são usados para modificar o comportamento de uma função. Eles podem melhorar a legibilidade e a facilidade de gestão do código e podem ser usados para autenticar os valores recebidos ou executar condicionalmente uma função chamada.

Exemplo1: Implementação de 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.

Tipo de contrato TypeScript pragma solidez ^0.8.0;contrato SimpleToken {    // Declarar variáveis de estado    endereço público proprietário;    mapeamento(endereço => uint256) públicas saldos;    // Inicializar o contrato de token    construtor(uint256 ofertaInicial) {        proprietário = msg.sender;        saldos[proprietário] = ofertaInicial;    }    // Função para transferir tokens    função transferir(endereço para, uint256 montante) públicos {        exigir(saldos[msg.sender] >= montante, "Saldo insuficiente");        saldos[msg.sender] -= montante;        saldos[para] += montante;    }    // Função para verificar o saldo de token de uma conta    função saldoDe(endereço conta) públicos ver 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 tokens de todos os endereços, respetivamente.
  • A construtorfunção que define o fornecimento inicial de tokens e os atribui ao proprietário do contrato.
  • Um transferirfunção que permite aos utilizadores transferir tokens para outras contas. Ele utiliza o exigirdeclaração para garantir que o remetente tem tokens suficientes para transferir.
  • Um saldoDefunção que devolve o saldo do token de uma conta especificada.
  • Este contrato de token básico demonstra como utilizar variáveis, funções e modificadores em Solidity para criar um contrato inteligente simples e funcional.

Exemplo2: Implementação de um sistema de votação simples

Tipo de scriptpragma solidez ^0.8.0;contrato Sistema de Votação {    mapeamento (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    função voteForCandidate(bytes32 candidato) público {        exigir candidato válido(candidato), "Candidato inválido.");        votesReceived[candidato] += 1;    }    função totalVotesFor(bytes32 candidato) público view returns (uint256) {        exigir candidato válido(candidato), "Candidato inválido.");        return votesReceived[candidato];    }    função candidato válido(bytes32 candidato) público 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çãoo contrato permite aos usuários votar em um dos vários candidatos ligando para o votarNoCandidatofunção. O contrato mantém o controle do número de votos recebidos para cada candidato usando um votosRecebidosmapeamento, onde a chave é o nome do candidato e o valor é o número de votos. O lista de candidatosa variá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.

Destaque
Variáveis, funções e modificadores são componentes essenciais nos contratos inteligentes Solidity.
Solidity tem 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 facilidade de gestão do código.
O contrato SimpleToken permite aos utilizadores 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 transferência e balanceOf.
O contrato VotingSystem permite aos usuários votar em candidatos e rastrear contagens de votos.
O contrato VotingSystem mostra o uso de mapeamentos, arrays e funções como voteForCandidate, totalVotesFor e validCandidate.

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o 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, Thailand, 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.