Como criar e implementar tokens ERC-20 na blockchain Ethereum

Tudo o que você deve saber sobre tokens ERC no Ethereum - AAX Academy

Como criar e implementar Fichas ERC-20 na blockchain Ethereum. No atual ritmo de desenvolvimento, o blockchain está gradualmente conquistando o mundo. Bitcoin, o mais popular criptomoedas, é o produto da primeira e mais conhecida tecnologia blockchain do mundo. Ethereum é um subproduto do blockchain e nasceu quando o Bitcoin começou a prosperar.

éter

Embora o Bitcoin tenha apenas se tornado uma moeda, o Ethereum foi ainda mais longe com sua visão de fornecer máquinas virtuais (EVMs) e contratos inteligentes que permitem aos usuários criar tokens na rede.

Os tokens podem representar dinheiro, ouro, bilhetes de loteria… você pode desenvolver todos os tipos de tokens no blockchain Ethereum, mas este tutorial se concentrará na criação e implantação de tokens ERC-20.

Antes de criar um token, você deve ter pelo menos um conhecimento básico da tecnologia blockchain, da linguagem de solidez e de como o Ethereum funciona.

O que é blockchain e método Como funciona o Tech & Data Studio:

Resumindo, blockchain é um registro de transações em um livro-razão ou banco de dados distribuído para muitos participantes da rede. Este livro contém um registro das transações realizadas na rede.

Uma transação é o ato de transferir uma moeda ou valor específico de um usuário para outro na rede. Suponha que Alice transmita 30BLC para Bob. Esta transação é criptografada por um nó específico na rede e registrada no razão geral.

Este nó envia a transação para outros nós da rede, ou seja, ele propaga a transação para a rede. Outros nós recebem a transação, revisam-na usando o método padrão e, em seguida, adicionam-na ao razão.

Os nós da rede recebem a transação recém-transmitida na rede e então adicionam a transação ao razão. Cada nó da rede possui ou possui uma cópia do razão. Isso resulta no caráter descentralizado do blockchain.

A palavra “blockchain” deriva do fato de que as transações ou registros dentro de um livro-razão estão vinculados para formar uma cadeia. Como todos sabemos, a transação representa a troca de moeda entre duas partes no nó, que pode ser representada em JSON da seguinte forma:

{
  "para": "0xalice",
  "a partir de": "0xbob",
  "montante": "30BLC"
}

Este é um simples registro ou transação. Bob transferiu 30BLC para Alice.

Esta transação é registrada em um bloco escrito usando o seguinte formato de dados JSON:

[
  {
    "para": "0xalice",
    "a partir de": "0xbob",
    "montante": "30BLC"
  }
]

Um bloco é como uma sequência que contém muitos objetos de transação. Este bloco pode, portanto, conter diversas transações:

[
  {
    "para": "0xalice",
    "a partir de": "0xbob",
    "montante": "30BLC"
  },
  {
    "para": "0xtheresa",
    "a partir de": "0xarinze",
    "montante": "5BLC"
  }
]

Você pode ver a localização do bloco ao qual a transação será adicionada. As cadeias são compostas de blocos interligados. Cada blockchain começa com um bloco Genesis, que o criador adiciona e distribui para a rede.

Cada bloco também possui um hash criptográfico que atua como um identificador exclusivo na rede. Não existem dois blocos com o mesmo hash.

Quando um bloco é verificado pelos nós e adicionado à rede, ele possui um ponteiro para o hash do último bloco da rede.

[
  {
    "cerquilha": "0x0",
    "anteriorHash": "",
    "txns": [
      {
        "para": "0xalice",
        "a partir de": "0xbob",
        "montante": "30BLC"
      },
      {
        "cerquilha": "0x1",
        "anteriorHash": "0x0",
        "para": "0xtheresa",
        "a partir de": "0xarinze",
        "montante": "5BLC"
      }
    ]
  },
  {
    "cerquilha": "0x1",
    "anteriorHash": "0x0",
    "txns": [
      {
        "para": "0xalice",
        "a partir de": "0xbob",
        "montante": "30BLC"
      },
      {
        "para": "0xtheresa",
        "a partir de": "0xarinze",
        "montante": "5BLC"
      }
    ]
  }
]

O primeiro bloco com hash 0x0 é o bloco original. O próximo bloco com hash 0x1 possui um prevHash que aponta para 0x0, ou seja, para o primeiro bloco da rede.

Dessa forma, cada novo bloco inserido na rede aponta primeiro para o bloco adjacente mais novo. Isso cria uma “cadeia” no blockchain.

O que é ethereum

Ethereum é uma blockchain com sua própria moeda digital chamada ETH. Assim como outros blockchains, as transações são armazenadas em um livro-razão.

O que diferencia o Ethereum de outros blockchains é a sua flexibilidade. Embora muitas plataformas blockchain suportem apenas transferências de dinheiro, o Ethereum permite que todos os dados sejam transferidos através do blockchain e que as taxas sejam pagas em ETH.

Como o Ethereum funciona?

Conforme mencionado acima, podemos transferir quaisquer dados na blockchain Ethereum e pagar taxas na ETH.

Assim como a transação BLC no exemplo acima, o blockchain Ethereum suporta transações ETH. Suponha que Alice transfira 1 ETH para Bob. Esta transação é validada pelos nós da rede e adicionada ao bloco da blockchain.

Além disso, Ethereum possui mineração, o que exige trabalho para obter ETH. Esta tarefa envolve resolver um cálculo difícil, tentando muitas maneiras diferentes até encontrar a resposta correta. Qualquer nó da rede pode participar. Um nó que resolve o cálculo com sucesso é recompensado com uma certa quantidade de ETH. A dificuldade do cálculo aumenta quanto mais as transações são reduzidas.

Sempre que uma transação é acionada na blockchain Ethereum, um nó de mineração na rede cunha essa transação. O remetente da transação deve concordar em pagar uma determinada quantia de ETH a este nó. Isso é conhecido como preço do gás.

O que é um contrato inteligente?

Um contrato inteligente é uma ferramenta que contém código executado na blockchain Ethereum. Os contratos inteligentes são escritos na linguagem Solidity e compilados em código ABI. Este código ABI é fornecido na blockchain Ethereum. O contrato inteligente pega o endereço externo do remetente e o mistura com um nonce (número único) para formar um endereço no blockchain Ethereum.

Os contratos inteligentes permitem a criação de contratos digitais. Assim como os contratos reais, os contratos digitais ajudam a estabelecer uma transação entre duas ou mais partes dentro da blockchain Ethereum.

Um contrato inteligente é um tipo de conta no Ethereum, o que significa que não é controlado pelo usuário e pode enviar transações no blockchain. Por se tratar de uma conta, o contrato inteligente possui saldo e contém o código EVM.

O que são tokens ERC-20?
Tutorial de token ERC20 | Topal

A Ethereum Virtual Machine (EVM) é uma máquina virtual que executa código Solidity ABI compilado. Os contratos inteligentes no Ethereum tornaram-se o padrão global para a criação de uma variedade de tokens. Esses padrões são conhecidos como padrão Ethereum Request for Comment (ERC).

Ethereum tem muitos omissão, mas os mais comumente usados ​​e amplamente utilizados são ERC-20 e ERC-721. ERC-20 é usado para geração de tokens, enquanto ERC-721 é usado para desenvolvimento de NFT.

ERC-20 é o padrão proposto por Fabian Vogelsteller, um contrato inteligente que contém diversas APIs. ERC20 é um conjunto de regras que se aplica a todos os tokens que escolhem o padrão ERC-20.

Conforme mencionado acima, o ERC-20 pode ser usado para criar moedas virtuais como Bitcoin e ETH. Alguns dos tokens mais famosos criados de acordo com o padrão ERC-20 são Binance Coin (BNB) e Shiba Shabu (KOBE).

Os usuários podem enviar e receber tokens ERC-20. Esses tokens são fungíveis, o que significa que seu valor é o mesmo em qualquer lugar do blockchain.

seguir Blockchain.com, Carteiras e bolsas usam esse padrão para integrar vários tokens ERC-20 na plataforma e para facilitar sua troca e muitas outras criptomoedas.

Agora que entendemos o que é o padrão ERC-20, vamos dar uma olhada no conteúdo do token ERC-20.

Conteúdo do token ERC-20

O token ERC-20 contém os métodos e eventos que um token ERC-20 deve ter.

Os tokens ERC-20 devem ser capazes de:

  • Transferir tokens de uma conta para outra
  • Devolva o saldo da conta
  • Retorna o número total de tokens disponíveis em tokens
  • Transfira tokens para sua conta

Na verdade, se fosse escrito em Solidity, o ERC-20 ficaria assim:

função nome() público view Retorna (corda)

função símbolo() público view Retorna (corda)

função decimais() público view Retorna (uint8)

função fornecimento total() público view Retorna (uint256)

função equilíbrio de(endereço _proprietário) público view Retorna (saldo uint256)

função transferência(endereço _para, uint256 _valor) público Retorna (bool sucesso)

função transferir de(endereço _de, endereço _para, uint256 _valor) público Retorna (bool sucesso)

função aprovar(endereço _gastador, uint256 _valor) público Retorna (bool sucesso)

função abono(endereço _proprietário, endereço _gastador) público view Retorna (uint256 restante)

Um token ERC-20 pode ter os seguintes métodos:

  • nome – retorna o nome do token (por exemplo, Binance Coin)
  • símbolo – retorna o símbolo do token (por exemplo, BNB)
  • Casas Decimais – Retorna o número de casas decimais usadas pelo token
  • totalSupply – retorna todo o estoque inicial do token
  • balanceOf – retorna o saldo da conta
  • transferência – transfere uma certa quantidade de tokens para um endereço
  • transferFrom – transfere um certo número de tokens do endereço do destinatário para o endereço do destinatário
  • aprovar – retirar tokens até um certo número de tokens do endereço do proprietário
  • Isenção – retorna a quantidade de tokens que podem ser sacados da conta do proprietário

Os eventos também podem ser registrados no token para serem capturados a tempo quando um sinal for enviado. Os tokens ERC-20 têm os seguintes eventos:

Transferência de eventos (endereço indexado _from, endereço indexado _to, uint256 _value)

Aprovação de evento (endereço indexado _owner, endereço indexado _spender, uint256 _value)

  • Transferência – ativado ao transferir tokens
  • Aprovação – ativado quando a conta foi aprovada para receber um determinado número de tokens

Gerar token ERC 20

Para facilitar o entendimento nesta seção, o artigo mostra como escrever um token simples e chamá-lo de ND Coin.

// Identificador de licença SPDX: GPL-3.0
solidez pragmática >=0.7.0 <0.9.0;

contract NDCoinERC20 {

    evento Transferir entre Contas(endereço indexado da, endereço indexado a, uint tokens);
    evento Profissional(endereço indexado tokenOwner, endereço do gastador indexado, uint tokens);

    corda público nome constante = "Moeda ND";
    corda público símbolo constante = "NDN";
    uint8 público decimais constantes = 18;

    mapeamento(endereço => uint256) saldos;

    mapeamento(endereço => mapeamento (endereço => uint256)) permitidas;

    uint256 fornecimento total_;

    construtor(uint256 total) {
      fornecimento total_ = total;
      saldos[msg.transmissor] = fornecimento total_;
    }

    função fornecimento total() público view Retorna (uint256) {
      retorno fornecimento total_;
    }

    função equilíbrio de(proprietário do token de endereço) público view Retorna (uint) {
        retorno saldos[proprietário do token];
    }

    função transferência(receptor de endereço, uint numTokens) público Retorna (bool) {
        requerer(numTokens <= saldos[msg.transmissor]);
        saldos[msg.transmissor] -= numTokens;
        saldos[recebedor] += numTokens;
        emitir Transferir entre Contas(msg.transmissor, recebedor, numTokens);
        retorno verdadeiro;
    }

    função aprovar(endereço delegar, uint numTokens) público Retorna (bool) {
        permitido\[mensagem.remetente\][delegar] = numTokens;
        emitir Profissional(msg.transmissor, delegar, numTokens);
        retorno verdadeiro;
    }

    função abono(proprietário do endereço, endereço delegar) público view Retorna (uint) {
        retorno permitido\[proprietário\][delegar];
    }

    função transferir de(proprietário do endereço, endereço comprador, uint numTokens) público Retorna (bool) {
        requerer(numTokens <= saldos[proprietário]);
        requerer(numTokens <= permitido\[proprietário\][msg.transmissor]);

        saldos[proprietário] -= numTokens;
        permitido\[proprietário\][msg.transmissor] -= numTokens;
        saldos[comprador] += numTokens;
        emitir Transferir entre Contas(proprietário, comprador, numTokens);
        retorno verdadeiro;
    }
}

Como criar e implementar tokens ERC-20 na blockchain Ethereum

Tudo o que você deve saber sobre tokens ERC no Ethereum - AAX Academy

Como criar e implementar Fichas ERC-20 na blockchain Ethereum. No atual ritmo de desenvolvimento, o blockchain está gradualmente conquistando o mundo. Bitcoin, o mais popular criptomoedas, é o produto da primeira e mais conhecida tecnologia blockchain do mundo. Ethereum é um subproduto do blockchain e nasceu quando o Bitcoin começou a prosperar.

éter

Embora o Bitcoin tenha apenas se tornado uma moeda, o Ethereum foi ainda mais longe com sua visão de fornecer máquinas virtuais (EVMs) e contratos inteligentes que permitem aos usuários criar tokens na rede.

Os tokens podem representar dinheiro, ouro, bilhetes de loteria… você pode desenvolver todos os tipos de tokens no blockchain Ethereum, mas este tutorial se concentrará na criação e implantação de tokens ERC-20.

Antes de criar um token, você deve ter pelo menos um conhecimento básico da tecnologia blockchain, da linguagem de solidez e de como o Ethereum funciona.

O que é blockchain e método Como funciona o Tech & Data Studio:

Resumindo, blockchain é um registro de transações em um livro-razão ou banco de dados distribuído para muitos participantes da rede. Este livro contém um registro das transações realizadas na rede.

Uma transação é o ato de transferir uma moeda ou valor específico de um usuário para outro na rede. Suponha que Alice transmita 30BLC para Bob. Esta transação é criptografada por um nó específico na rede e registrada no razão geral.

Este nó envia a transação para outros nós da rede, ou seja, ele propaga a transação para a rede. Outros nós recebem a transação, revisam-na usando o método padrão e, em seguida, adicionam-na ao razão.

Os nós da rede recebem a transação recém-transmitida na rede e então adicionam a transação ao razão. Cada nó da rede possui ou possui uma cópia do razão. Isso resulta no caráter descentralizado do blockchain.

A palavra “blockchain” deriva do fato de que as transações ou registros dentro de um livro-razão estão vinculados para formar uma cadeia. Como todos sabemos, a transação representa a troca de moeda entre duas partes no nó, que pode ser representada em JSON da seguinte forma:

{
  "para": "0xalice",
  "a partir de": "0xbob",
  "montante": "30BLC"
}

Este é um simples registro ou transação. Bob transferiu 30BLC para Alice.

Esta transação é registrada em um bloco escrito usando o seguinte formato de dados JSON:

[
  {
    "para": "0xalice",
    "a partir de": "0xbob",
    "montante": "30BLC"
  }
]

Um bloco é como uma sequência que contém muitos objetos de transação. Este bloco pode, portanto, conter diversas transações:

[
  {
    "para": "0xalice",
    "a partir de": "0xbob",
    "montante": "30BLC"
  },
  {
    "para": "0xtheresa",
    "a partir de": "0xarinze",
    "montante": "5BLC"
  }
]

Você pode ver a localização do bloco ao qual a transação será adicionada. As cadeias são compostas de blocos interligados. Cada blockchain começa com um bloco Genesis, que o criador adiciona e distribui para a rede.

Cada bloco também possui um hash criptográfico que atua como um identificador exclusivo na rede. Não existem dois blocos com o mesmo hash.

Quando um bloco é verificado pelos nós e adicionado à rede, ele possui um ponteiro para o hash do último bloco da rede.

[
  {
    "cerquilha": "0x0",
    "anteriorHash": "",
    "txns": [
      {
        "para": "0xalice",
        "a partir de": "0xbob",
        "montante": "30BLC"
      },
      {
        "cerquilha": "0x1",
        "anteriorHash": "0x0",
        "para": "0xtheresa",
        "a partir de": "0xarinze",
        "montante": "5BLC"
      }
    ]
  },
  {
    "cerquilha": "0x1",
    "anteriorHash": "0x0",
    "txns": [
      {
        "para": "0xalice",
        "a partir de": "0xbob",
        "montante": "30BLC"
      },
      {
        "para": "0xtheresa",
        "a partir de": "0xarinze",
        "montante": "5BLC"
      }
    ]
  }
]

O primeiro bloco com hash 0x0 é o bloco original. O próximo bloco com hash 0x1 possui um prevHash que aponta para 0x0, ou seja, para o primeiro bloco da rede.

Dessa forma, cada novo bloco inserido na rede aponta primeiro para o bloco adjacente mais novo. Isso cria uma “cadeia” no blockchain.

O que é ethereum

Ethereum é uma blockchain com sua própria moeda digital chamada ETH. Assim como outros blockchains, as transações são armazenadas em um livro-razão.

O que diferencia o Ethereum de outros blockchains é a sua flexibilidade. Embora muitas plataformas blockchain suportem apenas transferências de dinheiro, o Ethereum permite que todos os dados sejam transferidos através do blockchain e que as taxas sejam pagas em ETH.

Como o Ethereum funciona?

Conforme mencionado acima, podemos transferir quaisquer dados na blockchain Ethereum e pagar taxas na ETH.

Assim como a transação BLC no exemplo acima, o blockchain Ethereum suporta transações ETH. Suponha que Alice transfira 1 ETH para Bob. Esta transação é validada pelos nós da rede e adicionada ao bloco da blockchain.

Além disso, Ethereum possui mineração, o que exige trabalho para obter ETH. Esta tarefa envolve resolver um cálculo difícil, tentando muitas maneiras diferentes até encontrar a resposta correta. Qualquer nó da rede pode participar. Um nó que resolve o cálculo com sucesso é recompensado com uma certa quantidade de ETH. A dificuldade do cálculo aumenta quanto mais as transações são reduzidas.

Sempre que uma transação é acionada na blockchain Ethereum, um nó de mineração na rede cunha essa transação. O remetente da transação deve concordar em pagar uma determinada quantia de ETH a este nó. Isso é conhecido como preço do gás.

O que é um contrato inteligente?

Um contrato inteligente é uma ferramenta que contém código executado na blockchain Ethereum. Os contratos inteligentes são escritos na linguagem Solidity e compilados em código ABI. Este código ABI é fornecido na blockchain Ethereum. O contrato inteligente pega o endereço externo do remetente e o mistura com um nonce (número único) para formar um endereço no blockchain Ethereum.

Os contratos inteligentes permitem a criação de contratos digitais. Assim como os contratos reais, os contratos digitais ajudam a estabelecer uma transação entre duas ou mais partes dentro da blockchain Ethereum.

Um contrato inteligente é um tipo de conta no Ethereum, o que significa que não é controlado pelo usuário e pode enviar transações no blockchain. Por se tratar de uma conta, o contrato inteligente possui saldo e contém o código EVM.

O que são tokens ERC-20?
Tutorial de token ERC20 | Topal

A Ethereum Virtual Machine (EVM) é uma máquina virtual que executa código Solidity ABI compilado. Os contratos inteligentes no Ethereum tornaram-se o padrão global para a criação de uma variedade de tokens. Esses padrões são conhecidos como padrão Ethereum Request for Comment (ERC).

Ethereum tem muitos omissão, mas os mais comumente usados ​​e amplamente utilizados são ERC-20 e ERC-721. ERC-20 é usado para geração de tokens, enquanto ERC-721 é usado para desenvolvimento de NFT.

ERC-20 é o padrão proposto por Fabian Vogelsteller, um contrato inteligente que contém diversas APIs. ERC20 é um conjunto de regras que se aplica a todos os tokens que escolhem o padrão ERC-20.

Conforme mencionado acima, o ERC-20 pode ser usado para criar moedas virtuais como Bitcoin e ETH. Alguns dos tokens mais famosos criados de acordo com o padrão ERC-20 são Binance Coin (BNB) e Shiba Shabu (KOBE).

Os usuários podem enviar e receber tokens ERC-20. Esses tokens são fungíveis, o que significa que seu valor é o mesmo em qualquer lugar do blockchain.

seguir Blockchain.com, Carteiras e bolsas usam esse padrão para integrar vários tokens ERC-20 na plataforma e para facilitar sua troca e muitas outras criptomoedas.

Agora que entendemos o que é o padrão ERC-20, vamos dar uma olhada no conteúdo do token ERC-20.

Conteúdo do token ERC-20

O token ERC-20 contém os métodos e eventos que um token ERC-20 deve ter.

Os tokens ERC-20 devem ser capazes de:

  • Transferir tokens de uma conta para outra
  • Devolva o saldo da conta
  • Retorna o número total de tokens disponíveis em tokens
  • Transfira tokens para sua conta

Na verdade, se fosse escrito em Solidity, o ERC-20 ficaria assim:

função nome() público view Retorna (corda)

função símbolo() público view Retorna (corda)

função decimais() público view Retorna (uint8)

função fornecimento total() público view Retorna (uint256)

função equilíbrio de(endereço _proprietário) público view Retorna (saldo uint256)

função transferência(endereço _para, uint256 _valor) público Retorna (bool sucesso)

função transferir de(endereço _de, endereço _para, uint256 _valor) público Retorna (bool sucesso)

função aprovar(endereço _gastador, uint256 _valor) público Retorna (bool sucesso)

função abono(endereço _proprietário, endereço _gastador) público view Retorna (uint256 restante)

Um token ERC-20 pode ter os seguintes métodos:

  • nome – retorna o nome do token (por exemplo, Binance Coin)
  • símbolo – retorna o símbolo do token (por exemplo, BNB)
  • Casas Decimais – Retorna o número de casas decimais usadas pelo token
  • totalSupply – retorna todo o estoque inicial do token
  • balanceOf – retorna o saldo da conta
  • transferência – transfere uma certa quantidade de tokens para um endereço
  • transferFrom – transfere um certo número de tokens do endereço do destinatário para o endereço do destinatário
  • aprovar – retirar tokens até um certo número de tokens do endereço do proprietário
  • Isenção – retorna a quantidade de tokens que podem ser sacados da conta do proprietário

Os eventos também podem ser registrados no token para serem capturados a tempo quando um sinal for enviado. Os tokens ERC-20 têm os seguintes eventos:

Transferência de eventos (endereço indexado _from, endereço indexado _to, uint256 _value)

Aprovação de evento (endereço indexado _owner, endereço indexado _spender, uint256 _value)

  • Transferência – ativado ao transferir tokens
  • Aprovação – ativado quando a conta foi aprovada para receber um determinado número de tokens

Gerar token ERC 20

Para facilitar o entendimento nesta seção, o artigo mostra como escrever um token simples e chamá-lo de ND Coin.

// Identificador de licença SPDX: GPL-3.0
solidez pragmática >=0.7.0 <0.9.0;

contract NDCoinERC20 {

    evento Transferir entre Contas(endereço indexado da, endereço indexado a, uint tokens);
    evento Profissional(endereço indexado tokenOwner, endereço do gastador indexado, uint tokens);

    corda público nome constante = "Moeda ND";
    corda público símbolo constante = "NDN";
    uint8 público decimais constantes = 18;

    mapeamento(endereço => uint256) saldos;

    mapeamento(endereço => mapeamento (endereço => uint256)) permitidas;

    uint256 fornecimento total_;

    construtor(uint256 total) {
      fornecimento total_ = total;
      saldos[msg.transmissor] = fornecimento total_;
    }

    função fornecimento total() público view Retorna (uint256) {
      retorno fornecimento total_;
    }

    função equilíbrio de(proprietário do token de endereço) público view Retorna (uint) {
        retorno saldos[proprietário do token];
    }

    função transferência(receptor de endereço, uint numTokens) público Retorna (bool) {
        requerer(numTokens <= saldos[msg.transmissor]);
        saldos[msg.transmissor] -= numTokens;
        saldos[recebedor] += numTokens;
        emitir Transferir entre Contas(msg.transmissor, recebedor, numTokens);
        retorno verdadeiro;
    }

    função aprovar(endereço delegar, uint numTokens) público Retorna (bool) {
        permitido\[mensagem.remetente\][delegar] = numTokens;
        emitir Profissional(msg.transmissor, delegar, numTokens);
        retorno verdadeiro;
    }

    função abono(proprietário do endereço, endereço delegar) público view Retorna (uint) {
        retorno permitido\[proprietário\][delegar];
    }

    função transferir de(proprietário do endereço, endereço comprador, uint numTokens) público Retorna (bool) {
        requerer(numTokens <= saldos[proprietário]);
        requerer(numTokens <= permitido\[proprietário\][msg.transmissor]);

        saldos[proprietário] -= numTokens;
        permitido\[proprietário\][msg.transmissor] -= numTokens;
        saldos[comprador] += numTokens;
        emitir Transferir entre Contas(proprietário, comprador, numTokens);
        retorno verdadeiro;
    }
}
Visitado 70 vezes, 2 visita(s) hoje

Deixe um comentário