Page cover

VISÃO GERAL DOS SMART CONTRACTS

Este repositório público contém os contratos inteligentes utilizados pela ASPPIBRA-DAO, implementados na Blockchain Binance Smart Chain sob o padrão BEP20. Os tokens são colateralizados em dólares americanos tokenizados pela empresa Tether, com o símbolo USDT, onde cada token USDT representa um dólar americano. Esta documentação técnica serve como um complemento ao tokenomics, proporcionando uma análise detalhada dos processos utilizados pela ASPPIBRA-DAO na construção de seu ecossistema, conhecido como Mundo Digital.

ABI, Endereço e Verificação

O ABI do contrato está disponível em ASPPBR.abi, representando a interface do contrato de implementação. A interação com o token ASPPBR é feita através do endereço do contrato. Para mais detalhes em tempo real e verificação do bytecode, consulte o link fornecido.

Interface Pública do Token ASPPBR

A interface pública do token ASPPBR segue o padrão BEP-20, conforme especificado pelo EIP-20.

  • nome()

  • símbolo()

  • decimais()

  • totalSuprimento()

  • balanceOf(endereço quem)

  • transferir (endereço para, valor uint256)

  • aprovar (endereço gastador, valor uint256)

  • subsídio (proprietário do endereço, gastador do endereço)

  • transferFrom(endereço de, endereço para, valor uint256)

E os eventos habituais.

  • Transferência de evento (endereço indexado de, endereço indexado para, valor uint256)

  • Aprovação do evento (proprietário indexado pelo endereço, gastador indexado pelo endereço, valor uint256)

A interação típica com o contrato usará transferência para mover o token como pagamento. Além disso, um padrão envolvendo approve e transferFrom pode ser usado para permitir outro endereço para mover tokens do seu endereço para terceiros sem a necessidade do intermediário para custodiar os tokens, como no protocolo 0x.

Aviso sobre ERC20 aprovar front-running

Existe uma pegadinha bem conhecida envolvendo o método ERC20 approve. O problema ocorre quando o proprietário decide alterar o subsídio de um gastador que já possui um subsídio. Se o gastador enviar um transferFrom transação no mesmo momento em que o proprietário envia a nova transação aprovada e o transferFrom do gastador passa primeiro, então o gastador pode usar o subsídio original, e também ser aprovado para o novo subsídio pretendido.

A mitigação recomendada nos casos em que o proprietário não confia no gastador é primeiro definir o subsídio para zero antes de defini-lo para um novo valor, verificando se o o subsídio não foi gasto antes do envio da nova transação de aprovação. Note-se, no entanto, que qualquer mudança de subsídio está sujeita a front-running, que é tão simples quanto observar o mempool para certas transações e, em seguida, oferecendo um preço de gás mais alto para obter outro transação extraída no blockchain mais rapidamente.

Verificação de bytecode

O contrato de proxy e os contratos de implementação são verificados no bscscan no seguinte link: Contrato Token:.

Contrato proxy: Em breve!!

Como o endereço de implementação no proxy é uma variável privada, verificar se este é o proxy que está sendo usado requer a leitura do contrato armazenamento diretamente. Isso pode ser feito usando um nó mainnet como infura, colando o endereço de rede em truffle-config.js e executando

truffle exec ./getImplementationAddress.js --network mainnet

Testes de contrato

Como primeiro passo, execute a configuração inicial

fazer configuração

Então, para executar os testes do contrato inteligente, em outro terminal, inicie o ganache-cli

fazer ganache

Em seguida, no terminal original onde foi realizada a configuração, execute

fazer contratos de teste

Você também pode executar make test-contracts-coverage para ver um relatório de cobertura.

Last updated