Projeto criado durante o treinamento Cripto Dev, com o objetivo de criar um MVP de uma vending machine onde possamos comprar e vender tokens com Ether. Utilizando Soliditiy
e todas as suas tecnologias para desenvolver um Smart Contract
e disponibilizá-las na rede Ethereum
.
No etherscan é possivel ver os contratos Scancoin e Scanswap na rede Ropsten Testnet.
Antes de começar a executar o projeto é necessário que você tenha o Node.js
instalado na sua máquina.
Clone o projeto e acesse a pasta do mesmo.
$ https://github.com/andersondantas81/gamacoin-cryptodev.git
$ cd gamacoin-cryptodev
Para iniciá-lo, siga os passos abaixo:
# Instalar as dependências
$ npm install
# Compilar os contratos
$ npx hardhat compile
# Executar os testes
$ npx hardhat test
Para implantar o contrato do scancoin deve ser passado o valor total de tokens (totalSupply
), o endereço que realizar a implantação será o proprietário do contrato.
Apenas o proprietário do contrato pode:
- Cunhar moedas;
- Queimar moedas (que estejam em sua posse);
- Mudar o estado do contrato;
- Finalizar o contrato;
As seguintes funçoes só pode ser executadas se o contrato estiver com o estado ativo:
transfer()
;transferFrom()
;mint()
;burn()
;
O contrato pode realizar as seguintes operações:
totalSupply()
: Verifica a quantidade máxima de tokens;balanceOf(account)
: Verifica saldo do endereço informado;transfer(recipient, amount)
: Realiza uma transferência do endereço conectado para o endereço informado com a quantidade de tokens informada;allowance(from, spender)
: Retorna o número restante de tokens quespender
poderão ser gastos em nome doowner
notransferFrom
;approve(spender, amount)
: Define um limite de tokens que pode ser transferidos;transferFrom(sender, recipient, amount)
: Realiza uma transferência uma quantidade de tokens defrom
parato
;increaseAllowance(spender, addedValue)
: Aumenta a quantiade permitida de transferência de tokens concedida aospender
;decreaseAllowance(spender, subtractedValue)
: Diminui a quantiade permitida de transferência de tokens concedida aospender
;state()
: Verifica o estado do contrato que pode ser:- 0: Paused
- 1: Active
- 2: Cancelled
mint(amount)
: Realiza a cunhagem da quantidade de tokens informada adicionando aototalsupply
;burn(amount)
: Realiza a queima da quantidade de tokens informada diminuindo dototalsupply
;setState(status)
: Altera o estado de acordo com o número informado;kill()
: Finaliza o contrato;
Para implantar o contrato scamswap deve ser passado o endereço do contrato scamcoin.
Apenas o proprietário do contrato pode:
- Finalizar o contrato;
- Definir o valor de venda do token;
- Definir o valor de compra do token;
- Reabastecer este contrato com mais ethers;
- Reabastecer este contrato com mais tokens;
- Retirar uma quantidade determinada de ethers deste contrato;
- Retirar todos os ethers deste contrato;
- Gerar o hash para finalizar o contrato;
- Obter o hash para finalizar o contrato;
O contrato pode realizar as seguintes operações:
restockEthers
: Reabastecer este contrato com mais ethers;restockTokens
: Reabastecer este contrato com mais tokens;sell
: Vende tokens por ethers;buy
: Compra tokens por ethers;withdrawEthers
: Retirar uma quantidade determinada de ethers deste contrato;withdrawAllEthers
: Retirar todos os ethers deste contrato;setSalesPrice
: Definir o valor de venda do token;setPurchasePrice
: Definir o valor de compra do token;setHashKill
: Gerar o hash para finalizar o contrato;getBalanceTokens
: Verifica saldo de tokens do contrato;getBalanceTokensForAddress
: Verifica saldo de tokens do endereço informado;getBalanceAddress
: Verifica saldo de ethers do endereço informado;getBalanceEthers
: Verifica saldo de ethers do contrato;getSalesPrice
: Verifica o valor de venda do token;getPurchasePrice
: Verifica o valor de compra do token;getHashKill
: Obter o hash para finalizar o contrato;kill
: Finaliza o contrato;
As seguintes ferramentas foram usadas na construção do projeto:
Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.