Questa repository contiene un progetto di esempio full stack per una dApp chiamata Heroes Factory. Il frontend è gestito con React ed ethers.js. Lo smart contract è scritto in Solidity. Le fasi di compilazione, testing e deploy sono gestite con hardhat. N.B. lo scopo della repository è quello di offrire un esempio a chi vuole avvicinarsi allo sviluppo sul web3. Non ha un reale utilizzo.
Il contratto, a partire da un nome, genera un eroe con delle statistiche casuali:
- forza (strength): da 1 a 20
- intelligenza (intelligence): da 1 a 20
- destrezza (dexterity): da 1 a 20
npx hardhat nodegenera un server con un nodo eth in locale con 10 account di test (ognuno con 10.000 ether) e le chiavi private per importare un account su Metamask- Importare uno di questi account di test (sfruttando la chiave privata) su Metamask
npx hardhat compileper compilare lo smart contractnpx hardhat run scripts/deploy.js --network localhostper effettuare il deploy del contratto sul network locale (o su qualsiasi altro network che abbiamo scelto)- Il risultato sarà l’indirizzo del nostro smart contract
Contract deployed to: indirizzo
L’indirizzo generato va inserito in
App.jsnel metodoinitConnection npm run startper avviare il progetto React
npx create-react-app nome-appper creare il progetto React- Entriamo nella cartella appena creata
npx hardhatper configurare il progetto (scegliere la prima opzione)- Installiamo le dipendenze
npm i ethers hardhat @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers - Configuriamo il file
hardhat.config.jscome segueL’aggiunta dimodule.exports = { solidity: "0.8.9", paths: { artifacts: "./src/artifacts", }, networks: { hardhat: { chainId: 1337, }, }, };pathsserve per il frontend, perché React non ha accesso al di fuori della cartella src. Il networkhardhatinvece è il network locale con l’id per usare Metamask. - Viene generato un json dentro src/artifacts/contracts/HeroesFactory.sol/ che contiene l’ABI dello smart contract
npx hardhat nodegenera un server con un nodo eth in locale con 10 account di test (ognuno con 10.000 ether) e le chiavi private per importare un account su Metamask- Importare uno di questi account di test (sfruttando la chiave privata) su Metamask
npx hardhat compileper compilare lo smart contractnpx hardhat run scripts/deploy.js --network localhostper effettuare il deploy del contratto sul network locale (o su qualsiasi altro network che abbiamo scelto)- Il risultato sarà l’indirizzo del nostro smart contract
Contract deployed to: indirizzo
L’indirizzo generato va inserito in
App.jsnel metodoinitConnection npm run startper avviare il progetto React