{"id":13049,"date":"2023-03-20T21:24:54","date_gmt":"2023-03-20T17:54:54","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/"},"modified":"2023-03-20T21:24:54","modified_gmt":"2023-03-20T17:54:54","slug":"empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/","title":{"rendered":"\u062a\u0648\u0627\u0646\u0645\u0646\u062f\u0633\u0627\u0632\u06cc \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644: \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0641\u0646\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 NFT (\u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644) \u0628\u0631\u0627\u06cc \u06af\u0641\u062a\u0646 &#8220;\u0645\u062a\u0634\u06a9\u0631\u0645&#8221;"},"content":{"rendered":"<div data-article-id=\"1404478\" id=\"article-body\">\n<p><em>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0631\u0648\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0644\u06a9\u0633\u06cc\u0648\u0646 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 (\u06cc\u0627 NFT) \u062f\u0631 \u0627\u062a\u0631\u06cc\u0648\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Infura \u0648 Truffle \u0631\u0627 \u0637\u06cc \u06a9\u0646\u06cc\u0645.<\/em><\/p>\n<p><strong>\u0645\u0639\u0631\u0641\u06cc<\/strong><\/p>\n<p>\u0633\u0627\u0644\u200c\u0647\u0627\u0633\u062a \u06a9\u0647 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u062f\u0631 \u062f\u0633\u062a \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627 \u0628\u0648\u062f\u0647\u200c\u0627\u0646\u062f.  \u0627\u0632 \u0644\u062d\u0627\u0638 \u062a\u0627\u0631\u06cc\u062e\u06cc\u060c \u0627\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627 \u0646\u0647 \u062a\u0646\u0647\u0627 50 \u062f\u0631\u0635\u062f (\u06cc\u0627 \u0628\u06cc\u0634\u062a\u0631) \u0627\u0632 \u062f\u0631\u0622\u0645\u062f \u06cc\u06a9 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u06af\u0631\u0641\u062a\u0647\u200c\u0627\u0646\u062f\u060c \u0628\u0644\u06a9\u0647 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0628\u06cc\u0646 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0648 \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646\u0634\u0627\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u0642\u0641\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u0646\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0645\u062a\u0645\u0631\u06a9\u0632 \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0641\u0646 \u0647\u0627 \u0628\u062f\u0648\u0646 \u0648\u0627\u0633\u0637\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Infura\u060c Ethereum\/Smart Contracts\u060c \u0648 Next\u060c \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0646\u06a9\u0627\u062a\u06cc \u0631\u0627 \u0627\u0632 \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646 \u0628\u067e\u0630\u06cc\u0631\u0646\u062f \u0648 \u0633\u067e\u0633 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0622\u0646 \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646 NFT (\u062a\u0648\u06a9\u0646 \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u062a\u0639\u0648\u06cc\u0636) \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644\u06cc \u0634\u0645\u0627 \u067e\u0627\u062f\u0627\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u0645\u0639\u0627\u0645\u0644\u0647 \u0634\u0648\u062f\u060c \u0641\u0631\u0648\u062e\u062a\u0647 \u0634\u0648\u062f \u0648 \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u067e\u0627\u062f\u0627\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646 \u0648 \u062d\u0641\u0638 \u06a9\u0646\u062a\u0631\u0644 \u062f\u0631 \u062f\u0633\u062a \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0627\u0633\u062a!  \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u0633\u0627\u062e\u062a\u0646 \u06a9\u0646\u06cc\u0645. <\/p>\n<p><strong>\u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u0627 \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645<\/strong><\/p>\n<p>\u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u062f\u0648 \u0628\u062e\u0634 \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0628\u062e\u0634 \u0627\u0648\u0644\u060c \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0631\u0627 \u0637\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0647\u0648\u0634\u0645\u0646\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Solidity\u060c Infura \u0648 Truffle \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u0644\u06a9\u0633\u06cc\u0648\u0646 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644\u06cc \u0631\u0627 \u062f\u0631 \u0634\u0628\u06a9\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc Ethereum Blockchain Goerli \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.  (\u0645\u0627 \u0627\u0632 \u0634\u0628\u06a9\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0627\u06cc \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u062f\u0631 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f &#8211; \u0627\u0645\u0627 \u0648\u0642\u062a\u06cc \u0622\u0645\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f \u0645\u06cc \u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062f\u0631 \u0634\u0628\u06a9\u0647 \u0627\u0635\u0644\u06cc \u0645\u0633\u062a\u0642\u0631 \u06a9\u0631\u062f.)<\/p>\n<p>\u062f\u0631 \u0628\u062e\u0634 \u062f\u0648\u0645\u060c \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Next \u0631\u0627 \u06a9\u0647 \u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0645\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0627\u0631\u062f\u060c \u0645\u0633\u062a\u0642\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0627\u06cc\u0646 \u0628\u0647 \u0647\u0631 \u06a9\u0633\u06cc \u062f\u0631 \u062c\u0647\u0627\u0646 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062f\u0631 \u0627\u0632\u0627\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 &#8220;\u0645\u062a\u0634\u06a9\u0631\u0645&#8221; \u067e\u0648\u0644 (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u06cc\u0641 \u067e\u0648\u0644 MetaMask) \u0627\u0647\u062f\u0627 \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0628\u0627\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 NFT \u0645\u0627\u0646\u0646\u062f OpenSea \u062e\u0631\u06cc\u062f\u060c \u0641\u0631\u0648\u062e\u062a \u0648 \u0645\u0639\u0627\u0645\u0644\u0647 \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u0645\u0639\u0631\u0641\u06cc \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0641\u0627\u0647\u06cc\u0645 \u06cc\u0627 \u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 Solidity \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c ConsenSys \u0645\u062c\u0645\u0648\u0639\u0647 \u062e\u0648\u0628\u06cc \u0627\u0632 \u0622\u0645\u0648\u0632\u0634 \u0647\u0627\u06cc \u0645\u0628\u062a\u062f\u06cc \u062f\u0627\u0631\u062f.<\/p>\n<p><strong>\u0642\u0633\u0645\u062a 1: \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0647\u0648\u0634\u0645\u0646\u062f \u0628\u0627 Infura \u0648 Truffle \u0628\u0633\u0627\u0632\u06cc\u062f<\/strong><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_npm_%D9%88_Node_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 1: npm \u0648 Node \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%A8%D8%B1%D8%A7%DB%8C_%DB%8C%DA%A9_%D8%AD%D8%B3%D8%A7%D8%A8_Infura_%D8%AB%D8%A8%D8%AA_%D9%86%D8%A7%D9%85_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 2: \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 Infura \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%DB%8C%DA%A9_%DA%A9%DB%8C%D9%81_%D9%BE%D9%88%D9%84_%D8%B1%D9%85%D8%B2%D9%86%DA%AF%D8%A7%D8%B1%DB%8C_MetaMask_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_goerliETH_%D8%B1%D8%A7_%D8%A7%D8%B2_%DB%8C%DA%A9_%D8%B4%DB%8C%D8%B1_%D8%A2%D8%A8_%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 3: \u06cc\u06a9 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc MetaMask \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 goerliETH \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0634\u06cc\u0631 \u0622\u0628 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%DB%8C%DA%A9_%D9%BE%D8%B1%D9%88%DA%98%D9%87_Node_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_Dependencies_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 4: \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Node \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 Dependencies \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_NFT_%D8%AE%D9%88%D8%AF_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 5: \u0645\u062c\u0645\u0648\u0639\u0647 NFT \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_6_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Truffle_%D8%B1%D8%A7_%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_%DB%8C%DA%A9_%D9%81%D8%A7%DB%8C%D9%84_env_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 6: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Truffle \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 .env \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_7_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF_%D8%B1%D8%A7_%D9%85%D8%B3%D8%AA%D9%82%D8%B1_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 7: \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DA%A9%D8%AF_Boilerplate_%D8%B1%D8%A7_%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%87_%D9%88_Dependencies_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 1: \u06a9\u062f Boilerplate \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 Dependencies \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/empowering-digital-creators-a-technical-guide-on-how-to-create-an-nft-digital-collectible-to-say-thank-you-cd\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_npm_%D9%88_Node_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 1: npm \u0648 Node \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0627 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node \u0648 npm \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645.  \u0627\u06af\u0631 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u0646\u0635\u0628 \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ node -v\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062e\u0648\u0628 \u067e\u06cc\u0634 \u0628\u0631\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0634\u0645\u0627\u0631\u0647 \u0646\u0633\u062e\u0647 \u0628\u0631\u0627\u06cc node \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%A8%D8%B1%D8%A7%DB%8C_%DB%8C%DA%A9_%D8%AD%D8%B3%D8%A7%D8%A8_Infura_%D8%AB%D8%A8%D8%AA_%D9%86%D8%A7%D9%85_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 2: \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 Infura \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062e\u0648\u062f \u062f\u0631 \u0634\u0628\u06a9\u0647 Goerli (\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0627\u0635\u0644\u06cc)\u060c \u0628\u0647 \u06cc\u06a9 \u062d\u0633\u0627\u0628 Infura \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.  Infura \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc RPC \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0647 \u0646\u0648\u0628\u0647 \u062e\u0648\u062f \u0627\u0645\u06a9\u0627\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0631\u06cc\u0639\u060c \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0648 \u0622\u0633\u0627\u0646 \u0628\u0647 \u0628\u0644\u0627\u06a9 \u0686\u06cc\u0646 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0645\u0627 (\u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627\u060c \u0627\u062a\u0631\u06cc\u0648\u0645) \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u062f\u060c \u0628\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0628\u0631\u0648\u06cc\u062f \u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <em>\u06a9\u0644\u06cc\u062f \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/\u062a\u0648\u0627\u0646\u0645\u0646\u062f\u0633\u0627\u0632\u06cc-\u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646-\u062f\u06cc\u062c\u06cc\u062a\u0627\u0644-\u0631\u0627\u0647\u0646\u0645\u0627\u06cc-\u0641\u0646\u06cc-\u062f\u0631-\u0645\u0648\u0631\u062f-\u0646\u062d\u0648\u0647-\u0627\u06cc\u062c\u0627\u062f-\u06cc\u06a9.png\" alt=\"\" loading=\"lazy\" width=\"880\" height=\"484\" title=\"\"><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0628\u06a9\u0647\u060c \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <em>Web3 API<\/em> \u0648 \u0627\u0633\u0645\u0634 \u0631\u0627 \u0628\u06af\u0630\u0627\u0631 <em>\u0645\u062a\u0634\u06a9\u0631\u0645 NFT.<\/em><\/p>\n<p>\u067e\u0633 \u0627\u0632 \u06a9\u0644\u06cc\u06a9 \u0628\u0631 \u0631\u0648\u06cc <em>\u0627\u064a\u062c\u0627\u062f \u0643\u0631\u062f\u0646\u060c<\/em> Infura \u06cc\u06a9 \u06a9\u0644\u06cc\u062f API \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc RPC \u0631\u0627 \u0628\u0647 \u0627\u062a\u0631\u06cc\u0648\u0645\u060c L2 \u0648 L1\u0647\u0627\u06cc \u063a\u06cc\u0631 EVM (\u0648 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0622\u0646\u0647\u0627) \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc Ethereum Goerli RPC \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u0645.  \u0627\u06cc\u0646 URL \u0628\u0647 \u0634\u06a9\u0644 https:\/\/goerli.infura.io\/v3\/\u2190API KEY \u2192<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%DB%8C%DA%A9_%DA%A9%DB%8C%D9%81_%D9%BE%D9%88%D9%84_%D8%B1%D9%85%D8%B2%D9%86%DA%AF%D8%A7%D8%B1%DB%8C_MetaMask_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_goerliETH_%D8%B1%D8%A7_%D8%A7%D8%B2_%DB%8C%DA%A9_%D8%B4%DB%8C%D8%B1_%D8%A2%D8%A8_%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 3: \u06cc\u06a9 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc MetaMask \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 goerliETH \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0634\u06cc\u0631 \u0622\u0628 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062e\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u06a9\u06cc\u0641 \u067e\u0648\u0644\u06cc \u0628\u0627 \u0698\u062a\u0648\u0646 \u0647\u0627\u06cc \u06a9\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a \u0647\u0632\u06cc\u0646\u0647 \u0628\u0646\u0632\u06cc\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.  \u0627\u0632 \u06af\u0627\u0632 \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u062a\u0631\u0627\u06a9\u0646\u0634 \u062f\u0631 \u0627\u062a\u0631\u06cc\u0648\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f &#8211; \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0645\u0627 \u062f\u0631 \u0628\u0644\u0627\u06a9 \u0686\u06cc\u0646 \u0627\u0633\u062a.  \u062f\u0631 \u0634\u0628\u06a9\u0647 \u0627\u0635\u0644\u06cc\u060c \u0628\u0647 \u0627\u0631\u0632 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 ETH \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.  \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 goerliETH \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 &#8211; \u06a9\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0627\u0641\u0632\u0648\u0646\u0647 MetaMask \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u062f\u0642\u062a \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062c\u062f\u06cc\u062f \u062e\u0648\u062f \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.  MetaMask \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u0648 \u0622\u0633\u0627\u0646\u200c\u062a\u0631\u06cc\u0646 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u062e\u0648\u062f\u0633\u0631\u067e\u0631\u0633\u062a \u062f\u0631 \u062c\u0647\u0627\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u062e\u0634\u06cc \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u0628\u0647 \u0634\u0645\u0627 \u06cc\u06a9 \u06cc\u0627\u062f\u06af\u0627\u0631\u06cc 12 \u06a9\u0644\u0645\u0647 \u0627\u06cc \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u062a\u0627 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u0645\u0646 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f (\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc \u0628\u0631\u0627\u06cc \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062e\u0648\u062f).  \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0633\u062a\u06cc \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f.  \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u062a\u0639\u062f\u0627\u062f\u06cc \u062a\u0648\u06a9\u0646 \u062a\u0633\u062a goerliETH \u0631\u0627 \u0627\u0632 \u0634\u06cc\u0631 \u0622\u0628 Infura \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0642\u062f\u0627\u0631 \u06a9\u0645\u06cc \u0627\u0632 goerliETH \u0631\u0627 \u062f\u0631 \u06a9\u06cc\u0641 \u067e\u0648\u0644 MetaMask \u062e\u0648\u062f \u0647\u0646\u06af\u0627\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc Goerli \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1679334893_902_\u062a\u0648\u0627\u0646\u0645\u0646\u062f\u0633\u0627\u0632\u06cc-\u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646-\u062f\u06cc\u062c\u06cc\u062a\u0627\u0644-\u0631\u0627\u0647\u0646\u0645\u0627\u06cc-\u0641\u0646\u06cc-\u062f\u0631-\u0645\u0648\u0631\u062f-\u0646\u062d\u0648\u0647-\u0627\u06cc\u062c\u0627\u062f-\u06cc\u06a9.png\" alt=\"\" loading=\"lazy\" width=\"708\" height=\"1132\" title=\"\"><\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%DB%8C%DA%A9_%D9%BE%D8%B1%D9%88%DA%98%D9%87_Node_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_Dependencies_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 4: \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Node \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 Dependencies \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u06cc\u06a9 \u0645\u062e\u0632\u0646 \u067e\u0631\u0648\u0698\u0647 \u062e\u0627\u0644\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ mkdir ty-nft &amp;&amp; cd ty-nft\n$ npm init -y\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u0632 Truffle\u060c \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u06a9\u0644\u0627\u0633 \u062c\u0647\u0627\u0646\u06cc \u0648 \u0686\u0627\u0631\u0686\u0648\u0628 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0647\u0648\u0634\u0645\u0646\u062f EVM\u060c \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0647\u0648\u0634\u0645\u0646\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  Truffle \u0631\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ npm install \u2014save truffle\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Truffle \u0628\u062f\u0648\u0646 \u0627\u0633\u062a\u062e\u0648\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ npx truffle init\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ npx truffle test\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 Truffle \u0631\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645.  \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0633\u062a\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc OpenZeppelin \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645.  \u0627\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u0647 ERC-721 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0686\u0646\u062f \u0642\u0627\u0628\u0644\u06cc\u062a \u0645\u0641\u06cc\u062f \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f.  ERC-721 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a NFT \u0647\u0627 \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0627\u062a\u0631\u06cc\u0648\u0645 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ npm install @openzeppelin\/contracts\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 Truffle \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u0645 \u0627\u0632 \u06a9\u06cc\u0641 \u067e\u0648\u0644 MetaMask \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f\u060c \u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627 \u0631\u0627 \u0627\u0645\u0636\u0627 \u06a9\u0646\u062f \u0648 \u0647\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u06af\u0627\u0632 \u0631\u0627 \u0627\u0632 \u0637\u0631\u0641 \u0645\u0627 \u0628\u067e\u0631\u062f\u0627\u0632\u062f\u060c \u0628\u0647 \u0628\u0633\u062a\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. <em>\u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 hdwallet<\/em>.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0622\u0646 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ npm install @truffle\/hdwallet-provider\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062d\u0633\u0627\u0633 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc RPC\u060c \u0627\u0632 \u0628\u0633\u062a\u0647 dotenv \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ npm install dotenv\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_NFT_%D8%AE%D9%88%D8%AF_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 5: \u0645\u062c\u0645\u0648\u0639\u0647 NFT \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0647\u0648\u0634\u0645\u0646\u062f\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f NFT \u0645\u0627 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0645\u062e\u0632\u0646 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 VS Code).  \u062f\u0631 <code>contracts<\/code> \u067e\u0648\u0634\u0647\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>ThankYouNft.sol<\/code>.<\/p>\n<p>(\u062a\u0648\u062c\u0647 \u0633\u0631\u06cc\u0639 &#8211; ConsenSys\/Infura \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u06cc\u06a9 NFT API \u062c\u062f\u06cc\u062f \u0645\u0646\u062a\u0634\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f NFT \u0647\u0627 \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0634\u0648\u062f)<\/p>\n<p>\u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0642\u0631\u0627\u0631\u062f\u0627\u062f ERC-721 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<ol>\n<li>\u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 \u06cc\u06a9 NFT \u062f\u0631 \u0627\u0632\u0627\u06cc \u0645\u0628\u0644\u063a \u0627\u0647\u062f\u0627\u06cc\u06cc (\u0628\u06cc\u0634\u062a\u0631 \u06cc\u0627 \u0645\u0633\u0627\u0648\u06cc \u0627\u0632 \u062d\u062f\u0627\u0642\u0644 \u0645\u0639\u06cc\u0646) \u0628\u0631\u0634 \u062f\u0647\u062f.<\/li>\n<li>\u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0645\u0627\u0644\u06a9 (\u06cc\u0627 \u067e\u062f\u06cc\u062f\u0622\u0648\u0631\u0646\u062f\u0647) \u0628\u0631\u0627\u06cc \u0628\u0631\u062f\u0627\u0634\u062a \u067e\u0648\u0644\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0645\u06a9 \u0645\u0627\u0644\u06cc \u0628\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li>\u062a\u0635\u0648\u06cc\u0631 SVG \u0648 \u0627\u0628\u0631\u062f\u0627\u062f\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0645\u0647 NFT \u0647\u0627\u06cc \u0645\u062a\u0634\u06a9\u0631\u0645 \u06a9\u0647 \u062f\u0631 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/li>\n<\/ol>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f  <code>ThankYouNft.sol<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin\/contracts\/token\/ERC721\/ERC721.sol\";\nimport \"@openzeppelin\/contracts\/token\/ERC721\/extensions\/ERC721Enumerable.sol\";\nimport \"@openzeppelin\/contracts\/token\/ERC721\/extensions\/ERC721URIStorage.sol\";\nimport \"@openzeppelin\/contracts\/access\/Ownable.sol\";\nimport \"@openzeppelin\/contracts\/utils\/Counters.sol\";\nimport \"@openzeppelin\/contracts\/utils\/Base64.sol\";\nimport \"@openzeppelin\/contracts\/utils\/Strings.sol\";\n\n\ncontract ThankYouNft is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable {\n    using Counters for Counters.Counter;\n\n    Counters.Counter private _tokenIds;\n\n    \/\/ Define a Donation object\n    struct Donation {\n        uint id;\n        uint amount;\n        address donor;\n        string donorName;\n    }\n\n    Donation[] donations;\n\n    constructor() ERC721(\"Thank You NFT\", \"TYN\") {}\n\n    \/\/ Donate money and mint thank you NFT\n    function mintThankYou(string memory donorName) public payable {\n        require(msg.value &gt;= 0.001 ether, \"Smallest donation is 0.001 ETH\");\n\n        string memory metadata = generateMetadata(_tokenIds.current(), donorName);\n        donations.push(Donation(_tokenIds.current(), msg.value, msg.sender, donorName));\n        _mintSingleNft(metadata);\n    }\n\n    \/\/ Generate NFT metadata\n    function generateMetadata(uint tokenId, string memory donorName) public pure returns (string memory) {\n        string memory svg = string(abi.encodePacked(\n            \"&lt;svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" preserveAspectRatio='xMinyMin meet' viewBox='0 0 350 350'&gt;\",\n            \"&lt;style&gt;.base { fill: white; font-family: serif; font-size: 25px; }&lt;\/style&gt;\",\n            \"&lt;rect width=\"100%\" height=\"100%\" fill=\"orange\" \/&gt;\",\n            \"&lt;text x='50%' y='40%' class=\"base\" dominant-baseline=\"middle\" text-anchor=\"middle\"&gt;\",\n            \"&lt;tspan y='40%' x='50%'&gt;Thank You for Donating!&lt;\/tspan&gt;\",\n            \"&lt;tspan y='50%' x='50%'&gt;\",\n            donorName,\n            \"&lt;\/tspan&gt;&lt;\/text&gt;&lt;\/svg&gt;\"\n        ));\n\n        string memory json = Base64.encode(\n            bytes(\n                string(\n                    abi.encodePacked(\n                        '{\"name\": \"Thank You NFT #',\n                        Strings.toString(tokenId),\n                        '\", \"description\": \"A token of thanks for donating!\", \"image\": \"data:image\/svg+xml;base64,',\n                        Base64.encode(bytes(svg)),\n                        '\", \"attributes\": [{\"trait_type\": \"Donor\", \"value\": \"',\n                        donorName,\n                        '\"}]}'\n                    )\n                )\n            )\n        );\n\n        string memory metadata = string(\n            abi.encodePacked(\"data:application\/json;base64,\", json)\n        );\n\n        return metadata;\n    }\n\n    \/\/ Mint a single NFT with on-chain metadata\n    function _mintSingleNft(string memory _tokenURI) private {\n        uint newTokenID = _tokenIds.current();\n        _safeMint(msg.sender, newTokenID);\n        _setTokenURI(newTokenID, _tokenURI);\n        _tokenIds.increment();\n    }\n\n    \/\/ Get tokens of an owner\n    function tokensOfOwner(address _owner) external view returns (uint[] memory) {\n\n        uint tokenCount = balanceOf(_owner);\n        uint[] memory tokensId = new uint256[](tokenCount);\n\n        for (uint i = 0; i &lt; tokenCount; i++) {\n            tokensId[i] = tokenOfOwnerByIndex(_owner, i);\n        }\n        return tokensId;\n    }\n\n    \/\/ Withdraw ether donations made \n    function withdraw() public payable onlyOwner {\n        uint balance = address(this).balance;\n        require(balance &gt; 0, \"No ether left to withdraw\");\n\n        (bool success, ) = (msg.sender).call{value: balance}(\"\");\n        require(success, \"Transfer failed.\");\n    }\n\n    \/\/ The following functions are overrides required by Solidity.\n\n    function _beforeTokenTransfer(address from, address to, uint256 tokenId, uint256 batchSize)\n        internal\n        override(ERC721, ERC721Enumerable)\n    {\n        super._beforeTokenTransfer(from, to, tokenId, batchSize);\n    }\n\n    function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {\n        super._burn(tokenId);\n    }\n\n    function tokenURI(uint256 tokenId)\n        public\n        view\n        override(ERC721, ERC721URIStorage)\n        returns (string memory)\n    {\n        return super.tokenURI(tokenId);\n    }\n\n    function supportsInterface(bytes4 interfaceId)\n        public\n        view\n        override(ERC721, ERC721Enumerable)\n        returns (bool)\n    {\n        return super.supportsInterface(interfaceId);\n    }\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>npx truffle compile\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_6_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Truffle_%D8%B1%D8%A7_%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_%DB%8C%DA%A9_%D9%81%D8%A7%DB%8C%D9%84_env_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 6: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Truffle \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 .env \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 <code>.env<\/code> \u0648 \u0645\u0637\u0627\u0644\u0628 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>INFURA_API_KEY = \"https:\/\/goerli.infura.io\/v3\/&lt;Your-API-Key&gt;\"\nMNEMONIC = \"&lt;Your-MetaMask-Secret-Recovery-Phrase&gt;\"\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062e\u0648\u062f\u060c \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc Infura RPC \u0648 \u0634\u0628\u06a9\u0647 Goerli \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Truffle \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f <em>truffle.config.js<\/em> \u0628\u0627 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>require('dotenv').config();\nconst HDWalletProvider = require('@truffle\/hdwallet-provider');\nconst { INFURA_API_KEY, MNEMONIC } = process.env;\n\nmodule.exports = {\n  networks: {\n    development: {\n      host: \"127.0.0.1\",\n      port: 8545,\n      network_id: \"*\"\n    },\n    goerli: {\n      provider: () =&gt; new HDWalletProvider(MNEMONIC, INFURA_API_KEY),\n      network_id: '5',\n    }\n  }\n};\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_7_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF_%D8%B1%D8%A7_%D9%85%D8%B3%D8%AA%D9%82%D8%B1_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 7: \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u06a9\u0646\u0648\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u062a\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0628\u0644\u0627\u06a9 \u0686\u06cc\u0646 Goerli \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062f\u0631 <code>migrations<\/code> \u067e\u0648\u0634\u0647\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>1_deploy_contract.js<\/code> \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ Get instance of the NFT contract\nconst nftContract = artifacts.require(\"ThankYouNft\");\n\nmodule.exports = function (deployer) {\n    \/\/ Deploy the contract\n    deployer.deploy(nftContract);\n};\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0622\u0645\u0627\u062f\u0647 \u0627\u06cc\u0645!  \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0631\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>truffle migrate --network goerli\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062e\u0648\u0628 \u067e\u06cc\u0634 \u0628\u0631\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc (\u0634\u0627\u0645\u0644 \u0622\u062f\u0631\u0633 \u0642\u0631\u0627\u0631\u062f\u0627\u062f) \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Starting migrations...\n======================\n&gt; Network name:    'goerli'\n&gt; Network id:      5\n&gt; Block gas limit: 30000000 (0x1c9c380)\n\n\n1_deploy_contract.js\n====================\n\n   Deploying 'ThankYouNft'\n   -----------------------\n   &gt; transaction hash:    0x0a4fabe13a2c62e335486dc8359eecbe8b1432e5ab7a162e6bd9a167036cdcd4\n   &gt; Blocks: 2            Seconds: 33\n   &gt; contract address:    0x4EBC03568822c4Af39ca02002C3771Ae4e8bb3ED\n   &gt; block number:        8641567\n   &gt; block timestamp:     1678616928\n   &gt; account:             0xc361Fc33b99F88612257ac8cC2d852A5CEe0E217\n   &gt; balance:             0.734846151579135017\n   &gt; gas used:            4108239 (0x3eafcf)\n   &gt; gas price:           29.254126274 gwei\n   &gt; value sent:          0 ETH\n   &gt; total cost:          0.120182942469771486 ETH\n\n   &gt; Saving artifacts\n   -------------------------------------\n   &gt; Total cost:     0.120182942469771486 ETH\n\nSummary\n=======\n&gt; Total deployments:   1\n&gt; Final cost:          0.120182942469771486 ETH\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u062f\u0631\u0633 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 Goerli etherscan \u062c\u0633\u062a\u062c\u0648 \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u0646\u062f\u0647 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1679334893_979_\u062a\u0648\u0627\u0646\u0645\u0646\u062f\u0633\u0627\u0632\u06cc-\u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646-\u062f\u06cc\u062c\u06cc\u062a\u0627\u0644-\u0631\u0627\u0647\u0646\u0645\u0627\u06cc-\u0641\u0646\u06cc-\u062f\u0631-\u0645\u0648\u0631\u062f-\u0646\u062d\u0648\u0647-\u0627\u06cc\u062c\u0627\u062f-\u06cc\u06a9.png\" alt=\"\" loading=\"lazy\" width=\"880\" height=\"485\" title=\"\"><\/p>\n<p>\u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc \u06af\u0648\u06cc\u0645!  \u0634\u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0631\u0627 \u0628\u0627 \u06af\u0648\u0626\u0631\u0644\u06cc \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f. <\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 Next Frontend \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0647\u0631 \u06a9\u0633\u06cc \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u0622\u0646 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u062f <em>\u0646\u0639\u0646\u0627 \u0645\u062a\u0634\u06a9\u0631\u0645<\/em> \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u0646\u062f \u062a\u0627 \u06a9\u0645\u06a9 \u0645\u0627\u0644\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u0634\u0627\u0646 \u0628\u0631\u0634 \u062f\u0647\u0646\u062f.<\/p>\n<p><strong>\u0642\u0633\u0645\u062a 2: \u062c\u0628\u0647\u0647<\/strong><\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DA%A9%D8%AF_Boilerplate_%D8%B1%D8%A7_%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%87_%D9%88_Dependencies_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 1: \u06a9\u062f Boilerplate \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 Dependencies \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u06cc\u06a9 \u0645\u062e\u0632\u0646 \u062f\u06cc\u06af \u0628\u062e\u0627\u0631 \u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0634\u0645\u0627 \u062f\u0627\u0631\u06cc\u0645.  \u0627\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u062e\u0627\u0635\u06cc \u0645\u0627\u0646\u0646\u062f \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u062e\u0632\u0646 \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06cc\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f: https:\/\/github.com\/rounakbanik\/ty-nft-frontend<\/p>\n<p>\u0633\u067e\u0633 \u0645\u062e\u0632\u0646 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>npm install\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0646\u0635\u0628 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 Next \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 2: \u0641\u0627\u06cc\u0644 ABI \u0648 Constants \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0627\u06cc\u0646 \u0645\u062e\u0632\u0646 \u0631\u0627 \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <em>\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627<\/em><\/p>\n<p>\u0628\u0647 \u0645\u062e\u0632\u0646 \u0642\u0633\u0645\u062a 1 \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f <em>ThankYouNft.json<\/em> \u0641\u0627\u06cc\u0644 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 <em>\u0633\u0627\u062e\u062a\u0646<\/em> \u067e\u0648\u0634\u0647\u060c \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u0641\u0648\u0642 \u0627\u0644\u0630\u06a9\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f <em>\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627<\/em> \u067e\u0648\u0634\u0647  \u0627\u06cc\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f ABI (\u0627\u0633\u0627\u0633\u0627\u064b \u0631\u0627\u0628\u0637) \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u0648\u0627\u0628\u0639 \u0631\u0648\u06cc \u0622\u0646 \u0645\u0647\u0645 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <em>\u062f\u0627\u062f\u0647 \u0647\u0627<\/em> \u0648 \u062f\u0631 \u0622\u0646 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <em>\u062b\u0627\u0628\u062a \u0647\u0627.js<\/em> \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const apiKey = \"&lt;-- INFURA API KEY \u2013&gt;\";\nconst ownerAddress = \"&lt;-- Wallet address \u2013&gt;\";\nconst contractAddress = \"&lt;-- Address of deployed NFT contract from Part 1 \u2013&gt;\";\n\nexport { apiKey, ownerAddress, contractAddress }\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 3: \u0641\u0627\u06cc\u0644 index.js \u0631\u0627 \u067e\u0631 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0635\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 <em>index.js<\/em> \u0641\u0627\u06cc\u0644\u06cc \u06a9\u0647 \u0628\u0627\u0639\u062b \u0627\u06cc\u062c\u0627\u062f NFT \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u0646\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0641\u0631\u0645\u06cc \u0631\u0627 \u0628\u0628\u06cc\u0646\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0632 \u0622\u0646\u0647\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f \u0646\u0627\u0645 \u0648 \u0645\u0628\u0644\u063a \u06a9\u0645\u06a9 \u0645\u0627\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u0646\u062f.  \u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0647\u062f\u0627 \u0648 \u0646\u0639\u0646\u0627\u0639 NFT \u0631\u0627 \u0622\u063a\u0627\u0632 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ Standard Next and CSS imports\nimport Head from \"next\/head\";\nimport { Fragment, useState, useEffect } from \"react\";\nimport styles from \"..\/styles\/mainpage.module.css\";\nimport { useRouter } from \"next\/router\";\n\n\/\/ Imports from the constants.js file\nimport { apiKey, contractAddress } from \"@\/data\/constants\";\n\n\/\/ Wagmi import for connected wallet info\nimport { useAccount } from \"wagmi\";\n\n\/\/ Ethers for invoking functions on smart contract\nimport { ethers } from 'ethers';\n\n\/\/ Contract ABI import\nimport contract from '@\/contracts\/ThankYouNft.json';\n\n\/\/ Extract ABI from the ABI JSON file\nconst abi = contract.abi;\n\nexport default function Home() {\n\n  \/\/ Standard Next router definition\n  const router = useRouter();\n\n  \/\/ Get connected wallet address and connection status\n  const { address, isConnected } = useAccount();\n\n  \/\/ Donor name\n  const [donorName, setDonorName] = useState(null);\n\n  \/\/ Tip amount\n  const [amount, setAmount] = useState(null);\n\n  \/\/ Page mounting info to prevent hydration errors\n  const [hasMounted, setHasMounted] = useState(false);\n\n  \/\/ Minting state\n  const [isMinting, setIsMinting] = useState(false);\n\n  \/\/ Flag to check if minting has succeeded\n  const [success, setSuccess] = useState(false);\n\n  \/\/ Form error message\n  const [formError, setFormError] = useState(null);\n\n  \/\/ Mounting fix to avoid hydration errors\n  useEffect(() =&gt; {\n    setHasMounted(true);\n  }, []);\n\n  \/\/ Do not render until entire UI is mounted  \n  if (!hasMounted) return null;\n\n  \/\/ Redirect to Connect page if wallet is not connected\n  if (!isConnected) {\n    router.replace('\/connect');\n  }\n\n  \/\/ Handlers for form inputs\n  const amountHandler = (e) =&gt; {\n    setAmount(e.target.value);\n  }\n\n  const nameHandler = (e) =&gt; {\n    setDonorName(e.target.value);\n  }\n\n  \/\/ Mint function invoked when form is submitted\n  const mintNft = async (e) =&gt; {\n\n    e.preventDefault();\n    setFormError(false);\n\n    \/\/ Basic check for correctness of data\n    if (donorName.length === 0 || parseFloat(amount) &lt; 0.001) {\n      console.log(\"Incorrect form input\");\n      setFormError(true);\n      return;\n    }\n\n    try {\n\n      \/\/ Get MetaMask Ethereum instance\n      const { ethereum } = window;\n\n      if (ethereum) {\n\n        \/\/ Reset states\n        setIsMinting(true);\n        setFormError(false);\n        setSuccess(false);\n\n        \/\/ Define provider, signer, and an instance of the contract\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const nftContract = new ethers.Contract(contractAddress, abi, signer);\n\n        \/\/ Call the mint function\n        console.log(\"Initialize payment\");\n        let nftTxn = await nftContract.mintThankYou(\"Satoshi\", { value: ethers.utils.parseEther('0.001') });\n\n        console.log(\"Mining... please wait\");\n        await nftTxn.wait();\n\n        console.log(`Mined, see transaction: https:\/\/goerli.etherscan.io\/tx\/${nftTxn.hash}`);\n\n        \/\/ Set final states\n        setIsMinting(false);\n        setSuccess(true);\n        setDonorName(null);\n        setAmount(null)\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n\n    } catch (err) {\n\n      \/\/ Something wrong has happened. Set error and minting states\n      setIsMinting(false);\n      setFormError(true);\n      console.log(err);\n    }\n  }\n\n  return (\n    &lt;Fragment&gt;\n      &lt;Head&gt;\n        &lt;title&gt;Tip and Mint a Thank You NFT!&lt;\/title&gt;\n      &lt;\/Head&gt;\n\n      &lt;div className={styles.jumbotron}&gt;\n\n        &lt;h1&gt;Tip and Mint a Thank You NFT!&lt;\/h1&gt;\n\n        {\/* Main Form *\/}\n        &lt;form onSubmit={mintNft} className={styles.mint_form}&gt;\n          &lt;input type=\"text\" id=\"name\" name=\"name\" placeholder=\"Your Name\" onChange={nameHandler} value={donorName} \/&gt;\n          &lt;input type=\"number\" id=\"amount\" name=\"amount\" min={0.001} placeholder=\"Donation Amount in ETH (min 0.001 ETH)\" onChange={amountHandler} value={amount} step={0.001} \/&gt;\n          &lt;button type=\"submit\"&gt;\n            Tip\n          &lt;\/button&gt;\n        &lt;\/form&gt;\n\n        {\/* Helpful messages for end user to know what's going on *\/}\n        {isMinting &amp;&amp; &lt;p&gt;Your NFT is minting...&lt;\/p&gt;}\n        {success &amp;&amp; &lt;p&gt;Thank you for your donation! Check out your NFT on OpenSea!&lt;\/p&gt;}\n        {formError &amp;&amp; &lt;p&gt;Something went wrong! Try again.&lt;\/p&gt;}\n      &lt;\/div&gt;\n    &lt;\/Fragment&gt;\n  )\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0622\u0645\u0627\u062f\u0647 \u0627\u06cc\u0645!  \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627 \u062f\u0631 \u0644\u0648\u06a9\u0627\u0644 \u0647\u0627\u0633\u062a \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>npm run dev\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u06cc\u062f \u0648 \u0641\u0631\u0622\u06cc\u0646\u062f \u0636\u0631\u0628 \u06a9\u0631\u062f\u0646 \u0631\u0627 \u06a9\u0627\u0645\u0644 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1679334894_786_\u062a\u0648\u0627\u0646\u0645\u0646\u062f\u0633\u0627\u0632\u06cc-\u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646-\u062f\u06cc\u062c\u06cc\u062a\u0627\u0644-\u0631\u0627\u0647\u0646\u0645\u0627\u06cc-\u0641\u0646\u06cc-\u062f\u0631-\u0645\u0648\u0631\u062f-\u0646\u062d\u0648\u0647-\u0627\u06cc\u062c\u0627\u062f-\u06cc\u06a9.png\" alt=\"\" loading=\"lazy\" width=\"880\" height=\"496\" title=\"\"><\/p>\n<p>\u0634\u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 NFT \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f!  \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u062f\u0631\u0633 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u062e\u0648\u062f \u06cc\u0627 \u0622\u062f\u0631\u0633 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0631\u0627 \u062f\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 NFT OpenSea \u062c\u0633\u062a\u062c\u0648 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f NFT \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1679334894_161_\u062a\u0648\u0627\u0646\u0645\u0646\u062f\u0633\u0627\u0632\u06cc-\u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646-\u062f\u06cc\u062c\u06cc\u062a\u0627\u0644-\u0631\u0627\u0647\u0646\u0645\u0627\u06cc-\u0641\u0646\u06cc-\u062f\u0631-\u0645\u0648\u0631\u062f-\u0646\u062d\u0648\u0647-\u0627\u06cc\u062c\u0627\u062f-\u06cc\u06a9.png\" alt=\"\" loading=\"lazy\" width=\"880\" height=\"451\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  <strong>\u0646\u062a\u06cc\u062c\u0647<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 (NFT) \u067e\u062a\u0627\u0646\u0633\u06cc\u0644 \u0639\u0638\u06cc\u0645\u06cc \u0628\u0631\u0627\u06cc \u0645\u062a\u062d\u0648\u0644 \u06a9\u0631\u062f\u0646 \u0627\u0642\u062a\u0635\u0627\u062f \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u062f\u0627\u0631\u0646\u062f \u0648 \u0642\u062f\u0631\u062a \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u062f\u0633\u062a \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0648 \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. <\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 ConsenSys \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645 (Infura\u060c Truffle \u0648 MetaMask)\u060c \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0646\u06a9\u0627\u062a\u06cc \u0631\u0627 \u0627\u0632 \u0633\u0631\u0627\u0633\u0631 \u062c\u0647\u0627\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f\u060c \u0622\u0646 \u0645\u0628\u0627\u0644\u063a \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0632\u0645\u0627\u0646 \u0628\u0631\u062f\u0627\u0634\u062a \u06a9\u0646\u0646\u062f\u060c \u06a9\u0645\u06cc\u0633\u06cc\u0648\u0646 \u067e\u0631\u062f\u0627\u062e\u062a \u0646\u06a9\u0646\u0646\u062f\u060c \u0648 \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0645\u062a\u0635\u0644 \u06a9\u0646\u062f. \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0634\u0631\u0648\u0639 \u0628\u0648\u062f!  \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u062a\u0631\u06cc\u0648\u0645\u060c \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0647\u0648\u0634\u0645\u0646\u062f \u0648 \u062f\u0646\u06cc\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644\u06cc \u06a9\u0644\u06a9\u0633\u06cc\u0648\u0646\u06cc\/NFT \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0631\u0648\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0644\u06a9\u0633\u06cc\u0648\u0646 \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 (\u06cc\u0627 NFT) \u062f\u0631 \u0627\u062a\u0631\u06cc\u0648\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Infura \u0648 Truffle \u0631\u0627 \u0637\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0639\u0631\u0641\u06cc \u0633\u0627\u0644\u200c\u0647\u0627\u0633\u062a \u06a9\u0647 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u062f\u0631 \u062f\u0633\u062a \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627 \u0628\u0648\u062f\u0647\u200c\u0627\u0646\u062f. \u0627\u0632 \u0644\u062d\u0627\u0638 \u062a\u0627\u0631\u06cc\u062e\u06cc\u060c \u0627\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627 \u0646\u0647 \u062a\u0646\u0647\u0627 50 \u062f\u0631\u0635\u062f (\u06cc\u0627 \u0628\u06cc\u0634\u062a\u0631) \u0627\u0632 \u062f\u0631\u0622\u0645\u062f \u06cc\u06a9 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u06af\u0631\u0641\u062a\u0647\u200c\u0627\u0646\u062f\u060c \u0628\u0644\u06a9\u0647 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0628\u06cc\u0646 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u0648 \u0637\u0631\u0641\u062f\u0627\u0631\u0627\u0646\u0634\u0627\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u0642\u0641\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u0646\u062f. \u062f\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-13049","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/13049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=13049"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/13049\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=13049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=13049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=13049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}