VISÃO GERAL DOS SMART CONTRACTS
Last updated
Last updated
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.
O ABI do contrato está disponível em , 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.
A interface pública do token ASPPBR segue o padrão BEP-20, conforme especificado pelo .
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.
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
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.
O contrato de proxy e os contratos de implementação são verificados no bscscan no seguinte link: .