Este repo se creó para el workshop de Solidity para la comunidad de Roschain. La intención del workshop es que sea 100% práctico.
En contracts van a encontrar 2 smart contracts que funcionan pero estan incompletos, y en tests algunos tests para los smart contracts con los que vamos a trabajar, alguno de los test fallan y otros ni siquiera están escritos.
A partir de los tests vamos a tener que trabajar en los contratos para cumplir con los requerimientos que se plantean.
Es un token ERC721 (NFT)
- Solo el contrato
ZxRosChainMinter
deberia poder llamar a la funciónmint
- La cantidad de
ZxRosChainNFT
s debería estar limitada a un cierto número
Es el contrato con el que deberían interactuar los usuario que participan del mint de ZxRosChainNFT
- Debería emitir un error particular si se intenta llamar a la función
mint
sin que haya un token configurado - El NFT minteado debería ser transferido al address que llama a la función
mint
- Solo debería permitir mintear 1 NFT por address
- Solo un grupo de addresses habilitadas deberían poder mintear un NFT
Los contratos de este repo tienen varios problemas de seguridad que no se tuvieron en cuenta a la hora de escribirlos para que sean simples ayuden a resolver los problemas que se plantearon. De ninguna manera se pueden considerar aptos para ser usados en un proyecto real.
The following prerequisites are required:
npm install -g npm@latest
Before running any command, make sure to install dependencies:
npm i
Compile the smart contracts with Hardhat:
npm run compile
Run unit tests:
npm run test
Run unit tests coverage:
npm run coverage
Run unit tests with gas report:
npm run gas-report
Run typescript and solidity linters:
npm run lint
Create .env
file and complete the variables:
cp .env.example .env
Deploy contracts:
npm run deploy:goerli
Verify contracts:
npm run verify:goerli