{"id":26848246,"url":"https://github.com/0xpolarzero/full-blockchain-solidity-course-js","last_synced_at":"2025-05-01T02:23:55.919Z","repository":{"id":60214612,"uuid":"540406093","full_name":"0xpolarzero/full-blockchain-solidity-course-js","owner":"0xpolarzero","description":"Everything related to my progress through the Full Blockchain, Solidity \u0026 Full-Stack Web3 development with JavaScript by Patrick Collins.","archived":false,"fork":false,"pushed_at":"2023-02-16T09:03:14.000Z","size":116777,"stargazers_count":20,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T20:53:24.617Z","etag":null,"topics":["aave","alchemy","blockchain","chainlink","chainlink-oracle","ethereum","ethersjs","ganache","hardhat","ipfs","javascript","mocha-chai","moralis","nextjs","nodejs","react","smart-contracts","solidity","thegraph","web3"],"latest_commit_sha":null,"homepage":"https://nextjs-nft-marketplace-thegraph-murex.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xpolarzero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-23T11:22:39.000Z","updated_at":"2025-03-07T08:13:27.000Z","dependencies_parsed_at":"2023-01-20T02:30:41.902Z","dependency_job_id":null,"html_url":"https://github.com/0xpolarzero/full-blockchain-solidity-course-js","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xpolarzero%2Ffull-blockchain-solidity-course-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xpolarzero%2Ffull-blockchain-solidity-course-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xpolarzero%2Ffull-blockchain-solidity-course-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xpolarzero%2Ffull-blockchain-solidity-course-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xpolarzero","download_url":"https://codeload.github.com/0xpolarzero/full-blockchain-solidity-course-js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251811506,"owners_count":21647720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aave","alchemy","blockchain","chainlink","chainlink-oracle","ethereum","ethersjs","ganache","hardhat","ipfs","javascript","mocha-chai","moralis","nextjs","nodejs","react","smart-contracts","solidity","thegraph","web3"],"created_at":"2025-03-30T20:53:52.791Z","updated_at":"2025-05-01T02:23:55.898Z","avatar_url":"https://github.com/0xpolarzero.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js\"\u003e\n    \u003cimg src=\"images/blockchain.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch2 align=\"center\"\u003eFull Blockchain, Solidity \u0026 Full-Stack Web3 development with JavaScript \u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Everything related to my progress through \u003ca href=\"https://youtu.be/gyMwXuJrbJQ\"\u003ethis course from Patrick Collins\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://youtu.be/gyMwXuJrbJQ\"\u003e\u003cstrong\u003eGo to the video »\u003c/strong\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#testing\"\u003eTrying out / testing\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#lessons\"\u003eLessons\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#mission-00\"\u003eMission 00: Remix \u0026 Solidity Basics\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-01\"\u003eMission 01: Ethers - Simple Storage\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-02\"\u003eMission 02: Hardhat - Simple Storage\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-03\"\u003eMission 03: Hardhat - Fund Me\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-04\"\u003eMission 04: HTML - Fund Me\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-05\"\u003eMission 05: Hardhat - Lottery Smart Contract\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-06\"\u003eMission 06: Next.js Front End - Lottery Smart Contract\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-07\"\u003eMission 07: Hardhat - ERC20 Token\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-08\"\u003eMission 08: DeFi\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-09\"\u003eMission 09: NFT - IPFS, fully on-chain, randomized, dynamic...\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-10\"\u003eMission 10: Hardhat - NFT Marketplace\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-11\"\u003eMission 11: Next.js \u0026 Moralis - NFT Marketplace\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-12\"\u003eMission 12: Next.js \u0026 TheGraph - NFT Marketplace\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-13\"\u003eMission 13: Hardhat - Upgrades\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-14\"\u003eMission 14: Hardhat - DAOs\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mission-15\"\u003eMission 15: Hardhat - Security \u0026 Auditing\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n# About The Project\n\nWhile following this course, I frequently pushed my progress to GitHub, to keep track of it. The purpose of this resource is to document this growth, providing details at each step of the journey about the mission achieved, and the new skills acquired. Enjoy the glow up!\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"images/ethereum.svg\" alt=\"Solidity\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/javascript.svg\" alt=\"JavaScript\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/hardhat.svg\" alt=\"Hardhat\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/ethers.svg\" alt=\"EthersJS\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/ganache.svg\" alt=\"Ganache\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/remix.png\" alt=\"Remix\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/rainbow.png\" alt=\"Rainbow\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/wagmi.png\" alt=\"Wagmi\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/thegraph.svg\" alt=\"TheGraph\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/apollographql.svg\" alt=\"ApolloGraphQL\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/chainlink.png\" alt=\"Chainlink\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/moralis.png\" alt=\"Moralis\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/alchemy.png\" alt=\"Alchemy\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/aave.png\" alt=\"Aave\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/ipfs.svg\" alt=\"IPFS\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/react.svg\" alt=\"ReactJS\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/nextjs.svg\" alt=\"NextJS\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/nodejs.svg\" alt=\"NodeJS\" width=\"60\" height=\"60\"\u003e\n\u003cimg src=\"images/mocha.svg\" alt=\"Remix\" width=\"60\" height=\"60\"\u003e\n\n\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n\u003c!----\u003e\u003ca id=\"testing\"\u003e\u003c/a\u003e\n\n# Trying out / testing\n\n\u003cp\u003eTo get a local copy up and running follow these simple example steps.\u003c/p\u003e\n\u003cp\u003eYou will need to install either \u003cstrong\u003enpm\u003c/strong\u003e or \u003cstrong\u003eyarn\u003c/strong\u003e to run the commands, and \u003cstrong\u003egit\u003c/strong\u003e to clone the repository.\u003c/p\u003e\n\n## Installation\n\n1. Clone the repo:\n   ```sh\n   git clone https://github.com/0xpolarzero/full-blockchain-solidity-course-js.git\n   ```\n2. Navigate into a subdirectory:\n   ```sh\n   cd name-of-the-subdirectory\n   ```\n3. Install NPM packages using `yarn` or `npm install`.\n\n## Usage\n\nDeploy:\n\n```sh\nyarn hardhat deploy\n```\n\nRun tests:\n\n```sh\nyarn hardhat test\n```\n\nTest coverage:\n\n```sh\nyarn hardhat coverage\n```\n\n# Lessons\n\n\u003c!-- MISSION 00 --\u003e\n\n## \u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/00-remix-solidity-basics/contracts\" id=\"mission-00\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2000%20-%20Remix%20\u0026%20Solidity%20Basics%20(Lessons%202,%203,%204)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Writing a basic smart contract with Solidity\n- Compiling \u0026 Deploying the contract (VM or testnet)\n- Interacting between contracts\n- Interacting with the contract after it's deployed\n- Using Chainlink for price feeds\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![Remix]](https://remix.ethereum.org/)\n[![Chainlink]](https://chain.link/)\n\n#\n\n\u003c!-- MISSION 01 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/01-ethers-simple-storage\" id=\"mission-01\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2001%20-%20Ethers%20●%20Simple%20Storage%20(Lesson%205)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Working in a local environment\n- Using Ganache to simulate a blockchain\n- Using Ethers.js to interact with a contract\n- Private key management, key encryption\n- Using Alchemy RPC \u0026 Dashboard\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Ganache]](https://trufflesuite.com/ganache/)\n[![EthersJS]](https://docs.ethers.io/v5/)\n[![NodeJS]](https://nodejs.org/)\n[![Alchemy]](https://www.alchemy.com/)\n\n#\n\n\u003c!-- MISSION 02 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/02-hardhat-simple-storage\" id=\"mission-02\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2002%20-%20Hardhat%20●%20Simple%20Storage%20(Lesson%206)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Using the Hardhat framework\n  - Deploying contracts\n  - Using networks (Hardhat node, testnet)\n  - Verifying a contract with Etherscan\n  - Interacting with contracts\n  - Custom tasks \u0026 scripts\n  - Testing with Mocha \u0026 Chai, tracking Solidity coverage\n  - Using the gas reporter\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n\n#\n\n\u003c!-- MISSION 03 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/03-hardhat-fund-me\" id=\"mission-03\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2003%20-%20Hardhat%20●%20Fund%20Me%20(Lesson%207)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Deploying multiple/selected contracts with Hardhat\n- Mocking a Chainlink price feed for testing\n- Unit \u0026 Staging tests\n- Interacting with storage in Solidity\n- Gas optimization, using storage, immutable \u0026 constant variables\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n[![Chainlink]](https://chain.link/)\n\n#\n\n\u003c!-- MISSION 04 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/04-html-fund-me\" id=\"mission-04\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2004%20-%20HTML%20●%20Fund%20Me%20(Lesson%208)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Implement a minimalistic Front End for the FundMe contract\n- Using Ethers.js to interact with MetaMask\n- Listening for events \u0026 transactions with `Promise` and `provider.once`\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![EthersJS]](https://docs.ethers.io/v5/)\n\n#\n\n\u003c!-- MISSION 05 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/05-hardhat-smartcontract-lottery\" id=\"mission-05\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2005%20-%20Hardhat%20●%20Lottery%20Smart%20Contract%20(Lesson%209)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Write a provably fair raffle system using RNG with \u003ca href=\"https://docs.chain.link/docs/vrf/v2/introduction/\"\u003eChainlink VRF\u003c/a\u003e \u0026 \u003ca href=\"https://docs.chain.link/docs/chainlink-automation/introduction/\"\u003eChainlink Keepers\u003c/a\u003e\n- Using \u0026 testing Solidity Events\n- Using `evm_increaseTime` \u0026 `evm_mine` with Hardhat, special methods\n- More in depth staging tests\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n[![Chainlink]](https://chain.link/)\n\n#\n\n\u003c!-- MISSION 06 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/06-nextjs-smartcontract-lottery\" id=\"mission-06\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2006%20-%20Next.js%20●%20Lottery%20Smart%20Contract%20Front%20End%20(Lesson%2010)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Using Next.js to build a Front End for the lottery smart contract\n- Using Moralis \u0026 React hooks to pass data/events through components\n- Writing to/reading local storage to keep track of wallets connected\n- Using web3uikit to connect a wallet to the provider \u0026 dispatch notifications about transactions\n- Basic styling with TailwindCSS\n- Hosting the website on IPFS\n  - Directly pinning the website to a node\n  - Using Fleek to host on IPFS \u0026 Filecoin\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![ReactJS]](https://reactjs.org/)\n[![NextJS]](https://nextjs.org/)\n[![Moralis]](https://moralis.io/)\n[![IPFS]](https://ipfs.tech/)\n\n#\n\n\u003c!-- MISSION 07 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/07-hardhat-erc20\" id=\"mission-07\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2007%20-%20Hardhat%20●%20ERC20%20Token%20(Lesson%2012)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Creating an ERC20 Token with the basic requirements\n- Using Openzeppelin to create the token\n- Usual unit testing for the inherited functions\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n\n#\n\n\u003c!-- MISSION 08 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/08-defi\" id=\"mission-08\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2008%20-%20DeFi%20(Lesson%2013)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Using scripts for borrowing \u0026 lending with Aave\n  - Using the wETH token contract to exchange ETH for wETH\n  - Depositing wETH into Aave\n  - Borrowing DAI from Aave\n  - Repaying DAI to Aave\n- Forking mainnet with Hardhat\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n[![Aave]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n\n#\n\n\u003c!-- MISSION 09 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/09-hardhat-nft\" id=\"mission-09\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2009%20-%20NFT%20●%20IPFS,%20fully%20on%20chain,%20randomized,%20dynamic...%20(Lesson%2014)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Deploying an ERC721 token \u0026 hosting the image on IPFS\n- Getting the data to be pinned with Pinata \u0026 upload the images URIs\n- Using Chainlink VRF to issue a verifiable random rarity when the NFT is minted\n- Deploy a smart contract to dynamically generate the NFT URI, based on on-chain price feeds\n- Base64 Encoding/Decoding\n- EVM opcodes, encoding \u0026 calling functions directly from contract\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n[![Chainlink]](https://chain.link/)\n[![Pinata]](https://www.pinata.cloud/)\n\n#\n\n\u003c!-- MISSION 10 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/10-hardhat-nft-marketplace\" id=\"mission-10\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2010%20-%20Hardhat%20●%20NFT%20Marketplace%20(Lesson%2015)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Creating a marketplace for NFTs based on the ERC721 standard\n- Pull over push considerations, reentrancy attacks\n- Advanced events \u0026 modifiers, security improvements\n- Writing various scripts to interact with the contract\n\n### Bonus achievements\n\n- Deploying the marketplace \u0026 NFT contracts to Polygon (Mumbai) \u0026 Arbitrum (Goerli) (cf. Mission 12)\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n[![Chai]](https://www.chaijs.com/)\n[![Mocha]](https://mochajs.org/)\n\n#\n\n\u003c!-- MISSION 11 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/11-nextjs-nft-marketplace-moralis\" id=\"mission-11\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2011%20-%20Next.js%20\u0026%20Moralis%20●%20NFT%20Marketplace%20(Lesson%2015)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Connecting Moralis to a local hardhat node\n- Using Moralis CLI \u0026 Cloud fonctions, triggers \u0026 hooks\n- Moralis queries, fetching URIs \u0026 rendering the NFT images\n- Building a front end for buying, listing (updating, canceling) NFTs \u0026 witdrawing funds\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![ReactJS]](https://reactjs.org/)\n[![NextJS]](https://nextjs.org/)\n[![Moralis]](https://moralis.io/)\n\n#\n\n\u003c!-- MISSION 12 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/12a-nextjs-nft-marketplace-thegraph\" id=\"mission-12\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2012%20-%20Next.js%20\u0026%20TheGraph%20●%20NFT%20Marketplace%20(Lesson%2015)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Building a subgraph to index the marketplace contract events (The Graph Studio)\n- Using The Graph CLI to deploy the subgraph\n- Querying the subgraph with GraphQL \u0026 Apollo client\n- Hosting the Marketplace:\n  - Fleek (IPFS): https://calm-forest-4357.on.fleek.co/\n  - Vercel: https://nextjs-nft-marketplace-thegraph-murex.vercel.app/\n\n### Bonus achievements\n\n- Using Rainbowkit \u0026 Wagmi to interact with the blockchain (Wallet connection \u0026 transactions with the smart contract)\n- Displaying 3 different marketplace listing pages for the chains it's deployed on (Polygon, Arbitrum \u0026 Ethereum testnets)\n- Deploying 3 different subgraphs with The Graph Studio \u0026 Hosted Services on these 3 networks\n- Handling notifications: success, error \u0026 displaying pending transactions with React-Toastify\n- Building a minting page for the NFT that can be listed\n- Customizing the UI \u0026 UX\n- Using Antd Design for various components (Modal, Button, Input) \u0026 Skeleton for loading cards\n- Listings filtering (All \u0026 Owned by the user)\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![ReactJS]](https://reactjs.org/)\n[![NextJS]](https://nextjs.org/)\n[![Rainbow]](https://www.rainbowkit.com/)\n[![Wagmi]](https://wagmi.sh/)\n[![TheGraph]](https://thegraph.com/en/)\n[![ApolloGraphQL]](https://www.apollographql.com/)\n[![GraphQL]](https://graphql.org/)\n[![Antd]](https://ant.design/)\n\n#\n\n\u003c!-- MISSION 13 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/13-hardhat-upgrades\" id=\"mission-13\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2013%20-%20Hardhat%20●%20Upgrades%20(Lesson%2016)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Overview of the different ways to upgrade a contract (directly through parameters, social migration, proxy)\n- Manually upgrading a contract with Hardhat\n- Using the OpenZeppelin Upgrades plugin to deploy \u0026 upgrade a smart contract\n- Proxies \u0026 Implementations, `delegatecall`, storage \u0026 function selector clashes\n- Proxy patterns: Transparent, Upgradeable (UUPS), Diamond\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n\n#\n\n\u003c!-- MISSION 14 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/14-hardhat-daos-typescript\" id=\"mission-14\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2014%20-%20Hardhat%20●%20DAOs%20(Lesson%2017)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Building a fully on-chain DAO with a governance token (ERC20) \u0026 a voting contract (ERC20)\n- The Compound Governance model \u0026 OpenZeppelin Contract Wizard:\n  - Governance token \u0026 Proxy contract\n  - The Implementation\n  - A `TimeLock` contract to hold the Governance contract for a certain amount of time\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![TypeScript]](https://www.typescriptlang.org/)\n[![Hardhat]](https://hardhat.org/)\n\n#\n\n\u003c!-- MISSION 15 --\u003e\n\n\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js/tree/main/15-hardhat-security-auditing\" id=\"mission-15\"\u003e\u003cimg src=\"https://shields.io/badge/Mission%2015%20-%20Hardhat%20●%20Security%20\u0026%20Auditing%20(Lesson%2018)-742EC0?style=for-the-badge\u0026logo=target\" height=\"35\" /\u003e\u003c/a\u003e\n\n### Achievements\n\n- Going through the usual auditing process\n- Running some preliminary tests with fast \u0026 slow tools\n  - Slither to expose major vulnerabilities (reentrancy, integer overflow...)\n  - Fuzzing with Echidna \u0026 using Docker to run a bundle of tools\n- Known attacks \u0026 best practices to avoid them\n\n### Skills\n\n[![Solidity]](https://soliditylang.org/)\n[![JavaScript]](https://developer.mozilla.org/fr/docs/Web/JavaScript)\n[![Hardhat]](https://hardhat.org/)\n\nIntroduced to security \u0026 auditing tools:\n\n[![OpenZeppelin]](https://openzeppelin.com/)\n[![Python]](https://www.python.org/)\n[![Docker]](https://www.docker.com/)\n[![Slither]](https://github.com/crytic/slither)\n[![Echnida]](https://github.com/crytic/echidna)\n\n# License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003c!----\u003e\u003ca id=\"contact\"\u003e\u003c/a\u003e\n\n# Contact - Social\n\n[![Website][website]](https://polarzero.xyz/)\n[![Twitter][twitter]](https://twitter.com/0xpolarzero/)\n[![LinkedIn][linkedin]](https://www.linkedin.com/in/antton-lepretre/)\n[![Hashnode][hashnode]](https://polarzero.hashnode.dev/) \u003cbr /\u003e\n[![0xpolarzero@gmail.com][email]](mailto:0xpolarzero@gmail.com)\n[![polarzero.eth][ethereum]](https://opensea.io/polarzero)\n\nProject Link: \u003cstrong\u003e\u003ca href=\"https://github.com/0xpolarzero/full-blockchain-solidity-course-js\"\u003ehttps://github.com/0xpolarzero/full-blockchain-solidity-course-js\u003c/a\u003e\u003c/strong\u003e\n\nA deep appreciation goes to Patrick Collins for this free and thorough course. Thank you!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[website]: https://img.shields.io/badge/website-000000?style=for-the-badge\u0026logo=About.me\u0026logoColor=white\n[twitter]: https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge\u0026logo=twitter\u0026logoColor=white\n[linkedin]: https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\n[hashnode]: https://img.shields.io/badge/Hashnode-2962FF?style=for-the-badge\u0026logo=hashnode\u0026logoColor=white\n[email]: https://img.shields.io/badge/0xpolarzero@gmail.com-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\n[ethereum]: https://img.shields.io/badge/polarzero.eth-3C3C3D?style=for-the-badge\u0026logo=Ethereum\u0026logoColor=white\n[solidity]: https://custom-icon-badges.demolab.com/badge/Solidity-3C3C3D?style=for-the-badge\u0026logo=solidity\u0026logoColor=white\n[remix]: https://custom-icon-badges.demolab.com/badge/Remix-222335?style=for-the-badge\u0026logo=remix-min\u0026logoColor=white\n[chainlink]: https://img.shields.io/badge/Chainlink-375BD2.svg?style=for-the-badge\u0026logo=Chainlink\u0026logoColor=white\n[javascript]: https://img.shields.io/badge/JavaScript-F7DF1E.svg?style=for-the-badge\u0026logo=JavaScript\u0026logoColor=black\n[nodejs]: https://img.shields.io/badge/Node.js-339933.svg?style=for-the-badge\u0026logo=nodedotjs\u0026logoColor=white\n[ganache]: https://custom-icon-badges.demolab.com/badge/Ganache-201F1E?style=for-the-badge\u0026logo=ganache\n[ethersjs]: https://custom-icon-badges.demolab.com/badge/Ethers.js-29349A?style=for-the-badge\u0026logo=ethers\u0026logoColor=white\n[alchemy]: https://custom-icon-badges.demolab.com/badge/Alchemy-2356D2?style=for-the-badge\u0026logo=alchemy\u0026logoColor=white\n[hardhat]: https://custom-icon-badges.demolab.com/badge/Hardhat-181A1F?style=for-the-badge\u0026logo=hardhat\n[chai]: https://img.shields.io/badge/Chai-A30701.svg?style=for-the-badge\u0026logo=Chai\u0026logoColor=white\n[mocha]: https://custom-icon-badges.demolab.com/badge/Mocha-87694D?style=for-the-badge\u0026logo=mocha\u0026logoColor=white\n[reactjs]: https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\n[nextjs]: https://img.shields.io/badge/next.js-000000?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\n[ipfs]: https://img.shields.io/badge/IPFS-0A1B2B?style=for-the-badge\u0026logo=ipfs\n[moralis]: https://custom-icon-badges.demolab.com/badge/Moralis-2559BB?style=for-the-badge\u0026logo=moralis\n[aave]: https://custom-icon-badges.demolab.com/badge/Aave-1C202F?style=for-the-badge\u0026logo=aave\n[pinata]: https://custom-icon-badges.demolab.com/badge/Pinata-350462?style=for-the-badge\u0026logo=pinata\n[rainbow]: https://custom-icon-badges.demolab.com/badge/Rainbowkit-032463?style=for-the-badge\u0026logo=rainbow\n[wagmi]: https://custom-icon-badges.demolab.com/badge/Wagmi-1C1B1B?style=for-the-badge\u0026logo=wagmi\n[antd]: https://img.shields.io/badge/Ant%20Design-0170FE.svg?style=for-the-badge\u0026logo=Ant-Design\u0026logoColor=white\n[thegraph]: https://custom-icon-badges.demolab.com/badge/TheGraph-0C0A1C?style=for-the-badge\u0026logo=thegraph\u0026logoColor=white\n[apollographql]: https://img.shields.io/badge/Apollo%20GraphQL-311C87.svg?style=for-the-badge\u0026logo=Apollo-GraphQL\u0026logoColor=white\n[graphql]: https://img.shields.io/badge/GraphQL-E10098.svg?style=for-the-badge\u0026logo=GraphQL\u0026logoColor=white\n[typescript]: https://img.shields.io/badge/TypeScript-007ACC.svg?style=for-the-badge\u0026logo=TypeScript\u0026logoColor=white\n[openzeppelin]: https://img.shields.io/badge/OpenZeppelin-4E5EE4.svg?style=for-the-badge\u0026logo=OpenZeppelin\u0026logoColor=white\n[python]: https://img.shields.io/badge/Python-3776AB.svg?style=for-the-badge\u0026logo=Python\u0026logoColor=white\n[docker]: https://img.shields.io/badge/Docker-2496ED.svg?style=for-the-badge\u0026logo=Docker\u0026logoColor=white\n[slither]: https://custom-icon-badges.demolab.com/badge/Slither-181B22?style=for-the-badge\u0026logo=slither\n[echnida]: https://custom-icon-badges.demolab.com/badge/Echnida-181B22?style=for-the-badge\u0026logo=echnida\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xpolarzero%2Ffull-blockchain-solidity-course-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xpolarzero%2Ffull-blockchain-solidity-course-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xpolarzero%2Ffull-blockchain-solidity-course-js/lists"}