This is a hardhat and smart contract practice. I wrote a ERC20 contract, ERC721 NFT contract and a nft vendor contract which receives the erc20 token in exchange of the nfts. Implemented: ERC20,ERC721,Access Control(Ownable) Deploy script contains deployment and etherscan verifycation. Testing script contains throuout uint test that tested three contracts' functionality. Three contract was deployed and verified at rinkeby testnet. Deployed Token contract at: 0xB8f35667895B75dAC2f43EDE28Be6a9c83bEbc2e Deployed NFT contract at: 0xdF470F4Ecb0346B78D5704054E5EF809E7bE7769 Deployed Store contract at: 0x0F0AFb07873d599139adc3829C91F2cf59702426