मुख्य सामग्री पर जाएं

हार्डहैट के साथ स्मार्ट कॉन्ट्रैक्ट कैसे बनाएं और तैनात करें

को अपडेट
26 नवंबर, 2025

पढ़ने में 6 मिनट लगेंगे

अवलोकन

हार्डहैट जैसे एथेरियम डेवलपमेंट एनवायरनमेंट स्मार्ट कॉन्ट्रैक्ट्स और एथेरियम नोड्स के साथ काम करना आसान बनाते हैं। ये स्मार्ट कॉन्ट्रैक्ट्स को आसानी से लिखने, टेस्ट करने और डिप्लॉय करने के लिए कई टूल उपलब्ध कराते हैं। इस गाइड में, हम एक हेलो वर्ल्ड स्मार्ट कॉन्ट्रैक्ट बनाएंगे और हार्डहैट और क्विकनोड का उपयोग करके इसे सेपोलिया टेस्टनेट पर डिप्लॉय करेंगे।

आवश्यक शर्तें


  • क्विकनोड खाता ( यहाँ निःशुल्क खाता बनाएँ)
  • एक EVM-संगत वॉलेट (उदाहरण के लिए, MetaMask )
  • Node.js इंस्टॉल हो गया है
  • हेलमेट लगा दिया गया है (हम गाइड के दौरान इसके बारे में भी बताएंगे)
  • CLI/टर्मिनल विंडो
  • कोड या टेक्स्ट एडिटर (जैसे, VSCode)
  • सेपोलिया टेस्टनेट पर ईटीएच (आप क्विकनोड मल्टी-चेन फाउसेट का उपयोग करके कुछ ईटीएच मुफ्त में प्राप्त कर सकते हैं)

हार्डहैट क्या है?

हार्डहैट एक डेवलपमेंट एनवायरनमेंट है जो डेवलपर्स को अपने एथेरियम एप्लिकेशन को कंपाइल, डिप्लॉय, टेस्ट और डीबग करने में मदद करता है। इसमें सबसे साफ-सुथरा और विस्तृत डॉक्यूमेंटेशन उपलब्ध है। हार्डहैट डीबगिंग के लिए जावास्क्रिप्ट की तरह console.log() फंक्शनैलिटी भी प्रदान करता है। हार्डहैट में कई प्लगइन्स भी हैं, जो इसकी कार्यक्षमता को और बढ़ाते हैं।

हार्डहैट और अन्य निर्भरताओं को स्थापित करना

हम npm का उपयोग करके Hardhat को इंस्टॉल करेंगे, जो node.js के साथ आता है। 

सबसे पहले, एक नई प्रोजेक्ट डायरेक्टरी बनाएं और उसमें जाएं। आप चाहें तो यहां अपने नाम भी इस्तेमाल कर सकते हैं:

mkdir HardhatTutorial
सीडी हार्डहैट ट्यूटोरियल

अपने प्रोजेक्ट डायरेक्टरी में टर्मिनल/सीएमडी खोलें और निम्नलिखित कमांड टाइप करें।

npm init --y
एनपीएम इंस्टाल--सेव-देव हार्डहैट

अब जब हमने Hardhat इंस्टॉल कर लिया है, तो चलिए एक नया Hardhat प्रोजेक्ट शुरू करते हैं। इसके लिए हम npx का उपयोग करेंगे। npx, node.js एक्जीक्यूटेबल फ़ाइलों को प्रोसेस करने में मदद करता है। 

npx हार्डहैट आरंभ

आपके सामने एक CLI हार्डहैट इंटरफ़ेस खुलेगा। "Create an empty hardhat.config.js" चुनें और एंटर दबाएँ।

हार्डहैट आरंभीकरण

अब, हार्डहैट के साथ काम करने के लिए आवश्यक अन्य निर्भरताओं को स्थापित करते हैं।

एनपीएम इंस्टाल--सेव-देव @नोमिकलैब्स/हार्डहैट-इथर ईथर @नोमिकलैब्स/हार्डहैट-वफ़ल एथेरियम-वफ़ल चाय

हमें अनुबंधों के लिए स्वचालित परीक्षण लिखने के लिए इन निर्भरताओं की आवश्यकता है।

npm का उपयोग करके पैकेज इंस्टॉल करते समय सबसे आम समस्या `node-gyp` में आंतरिक खराबी हो सकती है। आप यहां दिए गए निर्देशों का पालन करके node-gyp इंस्टॉल कर सकते हैं।

नोट : यदि आपको नोड-जीवाईपी की समस्या आती है, तो आपको अपने पायथन संस्करण को ऊपर दिए गए निर्देशों में सूचीबद्ध संगत संस्करणों में से किसी एक से मेल खाना होगा। 

एक और आम समस्या कैश का पुराना हो जाना है। अपने टर्मिनल में नीचे दिया गया कमांड टाइप करके अपना npm कैश साफ़ करें:

npm कैश साफ़ करें

अब, आइए अपने वॉलेट के लिए एक प्राइवेट की, गैस के लिए कुछ टेस्ट ETH और एक एथेरियम नोड प्राप्त करें; इन सभी की हमें अपने स्मार्ट कॉन्ट्रैक्ट को डिप्लॉय करने के लिए आवश्यकता होगी।

निजी कुंजी बनाना/प्राप्त करना

हमें अपने स्मार्ट कॉन्ट्रैक्ट को लागू करने के लिए भुगतान करने हेतु एक एथेरियम वॉलेट की आवश्यकता होगी।

एक बार आपका वॉलेट बन जाने और उसकी निजी कुंजी प्राप्त हो जाने के बाद, हम इसे अगले भाग में हार्डहैट कॉन्फ़िगरेशन फ़ाइल (जैसे, hardhat.config.js) में जोड़ देंगे।

आप जावास्क्रिप्ट , रूबी , पायथन , गो और पीएचपी में एक निजी कुंजी और एक एथेरियम पता उत्पन्न करने के लिए क्विकनोड गाइड का अनुसरण कर सकते हैं।

अपने मेटामास्क वॉलेट से निजी कुंजी प्राप्त करने के लिए, इन निर्देशों का पालन करें:


  • अपने ब्राउज़र पर MetaMask आइकन ( एक आकर्षक लोमड़ी का सिर) पर क्लिक करें। यदि यह दिखाई नहीं देता है, तो अपने ब्राउज़र के एक्सटेंशन पेज को देखें।
  • चिह्न पर क्लिक करें और फिर खाता विवरण पर क्लिक करें।
  • फिर, "निजी कुंजी दिखाएँ" पर क्लिक करें और निर्देशों का पालन करें।

मेटामास्क निजी कुंजी

निजी कुंजी को कॉपी करके सुरक्षित रख लें; हमें बाद के चरणों में इसकी आवश्यकता होगी।

निजी कुंजी जैसी संवेदनशील जानकारी को .env फ़ाइल में संग्रहीत करने और पर्यावरण चर का उपयोग करके इसे कॉन्फ़िगरेशन फ़ाइल में लाने या केवल विकास उद्देश्यों के लिए एक नया द्वितीयक मेटामास्क वॉलेट बनाने की सलाह दी जाती है।

टेस्टनेट ईटीएच प्राप्त करना

हम अपने कॉन्ट्रैक्ट को सेपोलिया टेस्टनेट पर तैनात करेंगे। शुरू करने के लिए, हमें अपने मेटामास्क वॉलेट में कुछ टेस्ट ETH की आवश्यकता होगी, जिसे हमने पिछले चरण में देखा था।

Quicknode मल्टी-चेन फाउसेट पर जाएं और अपना वॉलेट कनेक्ट करें या अपना वॉलेट एड्रेस पेस्ट करें। आपको एथेरियम चेन और सेपोलिया नेटवर्क का चयन करना होगा और फिर फंड के लिए अनुरोध करना होगा।

ध्यान दें: फाउसेट का उपयोग करने के लिए आपके पास कम से कम 0.001 ETH का एथेरियम मेननेट बैलेंस होना आवश्यक है।

क्विकनोड मल्टी-चेन फाउसेट

क्विकनोड एथेरियम एंडपॉइंट स्थापित करना

अपने कॉन्ट्रैक्ट को एथेरियम के सेपोलिया ब्लॉकचेन पर डिप्लॉय करने के लिए हमें एक एथेरियम सेपोलिया नोड की आवश्यकता होगी। इसके लिए हम लगभग किसी भी एथेरियम क्लाइंट का उपयोग कर सकते हैं, जैसे कि गेथ या ओपनएथेरियम (जिसे पहले पैरिटी के नाम से जाना जाता था)। चूंकि एक कॉन्ट्रैक्ट को डिप्लॉय करने के लिए यह प्रक्रिया थोड़ी जटिल है, इसलिए हम यहां एक निःशुल्क क्विकनोड खाता बनाएंगे और आसानी से एक एथेरियम एंडपॉइंट जेनरेट करेंगे। अपना निःशुल्क एथेरियम सेपोलिया एंडपॉइंट बनाने के बाद, अपने HTTP प्रोवाइडर URL को संभाल कर रखें, क्योंकि अगले सेक्शन में इसकी आवश्यकता होगी।

क्विकनोड सेपोलिया एंडपॉइंट का स्क्रीनशॉट

कॉन्फ़िगरेशन फ़ाइल सेट करना

hardhat.config.js फ़ाइल खोलें और उसमें निम्नलिखित कोड पेस्ट करें:

require("@nomiclabs/hardhat-waffle");

const endpointUrl = "ADD_YOUR_QUICKNODE_URL_HERE";
const privateKey = "ADD_YOUR_PRIVATE_KEY_HERE";

module.exports = {
solidity: "0.8.21",
networks: {
sepolia: {
url: endpointUrl,
accounts: [privateKey],
},
},
};

ADD_YOUR_PRIVATE_KEY_HERE को पिछले चरण में प्राप्त की गई निजी कुंजी से बदलें और ADD_YOUR_QUICKNODE_URL_HERE को पिछले चरण में प्राप्त किए गए HTTP नोड URL से बदलें, और फ़ाइल को सहेजें।

ऊपर दिए गए कोड की व्याख्या:

  • पंक्ति 1: हार्डहैट-वैफल पैकेज आयात करना।

  • पंक्ति 3-4: एंडपॉइंट यूआरएल और निजी कुंजी को परिभाषित करना।

  • पंक्ति 6-14: सॉलिडिटी संस्करण का उल्लेख करना और नेटवर्क सेपोलिया को परिभाषित करना।

अनुबंध बनाना

अब, हमारे अनुबंध के लिए, contracts नाम से एक नई डायरेक्टरी बनाएं और उसके अंदर HelloWorld.sol नाम की एक नई फाइल रखें।

mkdir contracts && echo > contracts/HelloWorld.sol

निम्नलिखित कोड को अपनी HelloWorld.sol Solidity फ़ाइल में कॉपी-पेस्ट करें:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HelloWorld {

string saySomething;

constructor() {
saySomething = "Hello World!";
}

function speak() public view returns(string memory) {
return saySomething;
}
}

ऊपर दिए गए कोड की व्याख्या:


  • पंक्ति 1: SPDX लाइसेंस प्रकार निर्दिष्ट करना, जो Solidity ^0.6.8 के बाद जोड़ा गया है। 

जब भी किसी स्मार्ट कॉन्ट्रैक्ट का सोर्स कोड सार्वजनिक किया जाता है, तो ये लाइसेंस कॉपीराइट संबंधी समस्याओं को हल करने/टालने में सहायक हो सकते हैं। यदि आप किसी लाइसेंस प्रकार का उल्लेख नहीं करना चाहते हैं, तो आप एक विशेष लाइसेंस "अनलाइसेंस्ड" का उपयोग कर सकते हैं या पूरे कमेंट को छोड़ सकते हैं (इससे कोई त्रुटि नहीं होगी, केवल एक चेतावनी दिखाई देगी)।

  • पंक्ति 2: सॉलिडिटी संस्करण की घोषणा।

  • पंक्ति 4: हमारे अनुबंध की शुरुआत नाम हैलो वर्ल्ड.

  • पंक्ति 6: एक चर बनाना कुछ कहो स्ट्रिंग प्रकार का।

  • पंक्ति 8-10: कंस्ट्रक्टर को आरंभ करना और स्ट्रिंग "हेलो वर्ल्ड!" को उसमें संग्रहित करना कुछ कहो चर।

  • पंक्ति 12-14: एक फ़ंक्शन बनाना जिसे कहा जाता है बोलना पब्लिक प्रकार का, जो उसमें संग्रहीत स्ट्रिंग लौटाएगा। कुछ कहो चर।

फ़ाइल को सेव करें और निम्नलिखित हार्डहैट कमांड का उपयोग करके कॉन्ट्रैक्ट को कंपाइल करें।

npx हार्डहैट संकलन

यदि आपका कॉन्ट्रैक्ट सफलतापूर्वक कंपाइल हो जाता है, तो आपको इस तरह का आउटपुट मिलेगा:

संकलन आउटपुट

हेलो वर्ल्ड स्मार्ट कॉन्ट्रैक्ट को तैनात करना

अब अपने कॉन्ट्रैक्ट को डिप्लॉय करने के लिए, आइए scripts नाम की एक नई डायरेक्टरी में deploy.js नाम की एक फ़ाइल बनाते हैं।

mkdir scripts && echo > scripts/deploy.js

निम्नलिखित कोड को कॉपी करके अपनी deploy.js फ़ाइल में पेस्ट करें:

async function main() {

const [deployer] = await ethers.getSigners();

console.log(
"Deploying contracts with the account:",
deployer.address
);

const HelloWorld = await ethers.getContractFactory("HelloWorld");
const contract = await HelloWorld.deploy();

console.log("Contract deployed at:", contract.address);

const saySomething = await contract.speak();

console.log("saySomething value:", saySomething);
}

main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});

ऊपर दिए गए कोड की व्याख्या।

  • पंक्ति 1: एक अतुल्यकालिक फ़ंक्शन शुरू करना जिसे कहा जाता है मुख्य.

  • पंक्ति 3: लेनदेन पर हस्ताक्षर करने के लिए एथेरियम पता प्राप्त करना और उसे परिनियोजनकर्ता पते में संग्रहीत करना। 

  • पंक्ति 5-8: कंसोल पर स्ट्रिंग के साथ एथेरियम पता प्रिंट करना।

  • पंक्ति 10: ethers.js विधि को कॉल करना कॉन्ट्रैक्टफैक्ट्रीयह खोज करेगा HelloWorld.sol फ़ाइल, और एक इंस्टेंस लौटाता है जिसका हम उपयोग कर सकते हैं कॉन्ट्रैक्टफैक्ट्री विधियों पर।

  • पंक्ति 11: डिप्लॉय को कॉल करना कॉन्ट्रैक्टफैक्ट्री अनुबंध को लागू करने के लिए। 

  • पंक्ति 13: तैनात अनुबंध का पता कंसोल पर प्रिंट करना।

  • पंक्ति 15: फ़ंक्शन को कॉल करना बोलना तैनात अनुबंध का।

  • पंक्ति 17: फ़ंक्शन के रिटर्न मान को प्रिंट करना बोलना कंसोल पर।

  • पंक्ति 20: फ़ंक्शन को कॉल करना मुख्य.

  • पंक्ति 21-24: त्रुटि की जाँच करना, त्रुटि होने पर उसे प्रिंट करना और प्रक्रिया से बाहर निकलना।

फाइल को सेव करें और कॉन्ट्रैक्ट को डिप्लॉय करने के लिए निम्नलिखित कमांड चलाएं।

npx hardhat run scripts/deploy.js --network sepolia

कॉन्ट्रैक्ट के सफल परिनियोजन पर, आपको एक आउटपुट दिखाई देगा जिसमें परिनियोजित कॉन्ट्रैक्ट का पता और स्पीक फ़ंक्शन का रिटर्न मान, यानी saySomething का मान शामिल होगा।

परिनियोजन आउटपुट

हम Sepolia Etherscan के सर्च बार में डिप्लॉय किए गए कॉन्ट्रैक्ट का पता कॉपी और पेस्ट करके डिप्लॉयमेंट की पुष्टि कर सकते हैं। इससे डिप्लॉय किए गए कॉन्ट्रैक्ट के बारे में जानकारी प्रदर्शित होगी।

ईथरस्कैन परिणाम

निष्कर्ष

लीजिए! अब आपने हार्डहैट के साथ स्मार्ट कॉन्ट्रैक्ट बनाने, कंपाइल करने और डिप्लॉय करने की बुनियादी बातें सीख ली हैं। लेकिन इतना ही नहीं – हार्डहैट आपके कोड को टेस्ट और डीबग करने के लिए भी टूल प्रदान करता है। अधिक जानकारी के लिए, हार्डहैट के आधिकारिक दस्तावेज़ देखें।

एथेरियम पर और अधिक लेख और गाइड के लिए हमारे न्यूज़लेटर को सब्सक्राइब करें। यदि आपके कोई प्रश्न हैं, तो बेझिझक हमारे समर्पित डिस्कोर्ड चैनल का उपयोग करें या नीचे दिए गए फ़ॉर्म का उपयोग करके प्रतिक्रिया दें। नवीनतम अपडेट के लिए हमें ट्विटर और हमारे टेलीग्राम घोषणा चैनल पर फ़ॉलो करें।

हमें आपकी प्रतिक्रिया बहुत पसंद है!

अगर आपके पास कोई सुझाव या नए विषयों के लिए कोई अनुरोध हो तो हमें जरूर बताएं । हमें आपसे सुनना अच्छा लगेगा।

इस गाइड को साझा करें