Web3 और DApp विकास की मूल बातें · पाठ

कॉन्ट्रैक्ट कंपाइल करना

बिल्ड आर्टिफ़ैक्ट

पाठ 2, कुल 4 में से13 चरण

कॉन्ट्रैक्ट कंपाइल करना, CoddyKit पर Web3 और DApp विकास की मूल बातें का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Web3 और DApp विकास की मूल बातें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Web3 और DApp विकास की मूल बातें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

कंपाइल क्यों करें

Solidity स्रोत कोड सीधे EVM पर नहीं चल सकता। कंपाइलर .sol फ़ाइलों को बाइटकोड और एक ABI में बदलता है, जिनका उपयोग टूल और क्लाइंट करते हैं।

  • बाइटकोड — ऑन-चेन डिप्लॉय किए जाने वाले निम्न-स्तरीय निर्देश।
  • ABI — फ़ंक्शन और इवेंट का वर्णन करने वाला JSON इंटरफ़ेस।

कंपाइल टास्क

Hardhat एक ही कमांड से contracts/ के अंतर्गत मौजूद हर कॉन्ट्रैक्ट को कंपाइल करता है:

npx hardhat compile

Hardhat उपयुक्त solc संस्करण अपने-आप डाउनलोड करता है, इसलिए आपको कंपाइलर को मैन्युअली इंस्टॉल करने की आवश्यकता नहीं है।

npx hardhat compile

Solidity संस्करण चुनना

कंपाइलर संस्करण hardhat.config.js में सेट किया जाता है और आपके कॉन्ट्रैक्ट में मौजूद pragma के अनुरूप होना चाहिए:

module.exports = { solidity: "0.8.24", };

यदि आपके कॉन्ट्रैक्ट में pragma solidity ^0.8.24; लिखा है, तो कॉन्फ़िगर किया गया संस्करण संगत होना चाहिए, अन्यथा कंपाइलेशन विफल हो जाता है।

module.exports = {
  solidity: "0.8.24",
};

बिल्ड आर्टिफैक्ट

कंपाइल करने के बाद Hardhat आउटपुट को artifacts/ फ़ोल्डर में लिखता है। हर कॉन्ट्रैक्ट को एक JSON फ़ाइल मिलती है, जिसमें ये शामिल होते हैं:

  • abi — एप्लिकेशन बाइनरी इंटरफ़ेस।
  • bytecode — डिप्लॉयमेंट बाइटकोड।
  • deployedBytecode — रनटाइम बाइटकोड।

ethers.js आपके कॉन्ट्रैक्ट के साथ इंटरैक्ट करने के लिए इन्हीं आर्टिफैक्ट को लोड करता है।

कैश फ़ोल्डर

Hardhat क्या बदला है, इसका रिकॉर्ड रखने के लिए cache/ फ़ोल्डर बनाए रखता है। अगली बार कंपाइल करने पर केवल बदली हुई फ़ाइलों को दोबारा कंपाइल किया जाता है।

यह क्रमिक कंपाइलेशन बड़े प्रोजेक्ट को तेज़ी से बिल्ड करने में सहायता करता है। यदि कुछ पुराना प्रतीत हो, तो आप नया बिल्ड बलपूर्वक बना सकते हैं।

बिल्ड साफ़ करना

कैश की गई और जनरेट की गई फ़ाइलें हटाने के लिए clean टास्क चलाएँ:

npx hardhat clean

यह artifacts/ और cache/ को हटा देता है। जब आपको लगे कि कोई पुराना आर्टिफैक्ट असामान्य व्यवहार का कारण बन रहा है, तब इसका उपयोग करें और फिर दोबारा कंपाइल करें।

npx hardhat clean

कंपाइलर ऑप्टिमाइज़र

ऑप्टिमाइज़र गैस लागत और बाइटकोड का आकार कम करता है। इसे कॉन्फ़िगरेशन में सक्षम करें:

module.exports = { solidity: { version: "0.8.24", settings: { optimizer: { enabled: true, runs: 200 }, }, }, };

अधिक runs मान बार-बार होने वाले कॉल के लिए अनुकूलित करता है; कम मान डिप्लॉयमेंट के आकार के लिए अनुकूलित करता है।

module.exports = {
  solidity: {
    version: "0.8.24",
    settings: {
      optimizer: { enabled: true, runs: 200 },
    },
  },
};

एकाधिक कंपाइलर संस्करण

यदि अलग-अलग कॉन्ट्रैक्ट को अलग Solidity संस्करण चाहिए, तो कई कंपाइलर सूचीबद्ध करें:

module.exports = { solidity: { compilers: [ { version: "0.8.24" }, { version: "0.7.6" }, ], }, };

Hardhat हर फ़ाइल के pragma के आधार पर उसके लिए संगत कंपाइलर चुनता है।

module.exports = {
  solidity: {
    compilers: [
      { version: "0.8.24" },
      { version: "0.7.6" },
    ],
  },
};

कंपाइलर चेतावनियाँ पढ़ना

कंपाइलर त्रुटियों (जो बिल्ड रोक देती हैं) और चेतावनियों (जो बिल्ड नहीं रोकतीं) की सूचना देता है। सामान्य चेतावनियों में ये शामिल हैं:

  • उपयोग न किए गए स्थानीय वैरिएबल।
  • छिपी हुई घोषणाएँ।
  • वे फ़ंक्शन जिन्हें view या pure के रूप में चिह्नित किया जा सकता है।

चेतावनियों को गंभीरता से लें — वे अक्सर वास्तविक बग का संकेत देती हैं।

बाद में ABI का उपयोग करना

कंपाइल हो जाने के बाद, किसी कॉन्ट्रैक्ट से जुड़ने के लिए आप स्क्रिप्ट या टेस्ट में आर्टिफैक्ट इम्पोर्ट करते हैं:

const artifact = require("./artifacts/contracts/Greeter.sol/Greeter.json"); console.log(artifact.abi);

ethers.js जैसे टूल इस ABI का उपयोग कॉल को सही ढंग से एन्कोड और डीकोड करने के लिए करते हैं।

const artifact = require("./artifacts/contracts/Greeter.sol/Greeter.json");
console.log(artifact.abi);

दोबारा कंपाइलेशन बलपूर्वक करना

डिफ़ॉल्ट रूप से Hardhat उन फ़ाइलों को छोड़ देता है जिनमें कोई बदलाव नहीं हुआ है। साफ़ किए बिना सब कुछ दोबारा बिल्ड करने के लिए force फ़्लैग दें:

npx hardhat compile --force

कंपाइलर सेटिंग बदलने के बाद यह उपयोगी होता है, क्योंकि क्रमिक कैश स्वयं उस बदलाव को पहचान नहीं सकता।

npx hardhat compile --force

त्वरित जाँच

Hardhat में कंपाइलेशन की अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा कि Hardhat कॉन्ट्रैक्ट को कैसे कंपाइल करता है।

  • npx hardhat compile सभी कॉन्ट्रैक्ट को बिल्ड करता है और उपयुक्त solc डाउनलोड करता है।
  • आर्टिफैक्ट (ABI + बाइटकोड) artifacts/ में रखे जाते हैं; क्रमिक बिल्ड cache/ का उपयोग करते हैं।
  • npx hardhat clean पुराने आउटपुट को हटा देता है।
  • ऑप्टिमाइज़र और कई कंपाइलर संस्करण hardhat.config.js में कॉन्फ़िगर किए जाते हैं।
  • चेतावनियों को हमेशा ठीक करें — वे अक्सर बग उजागर करती हैं।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Web3 और DApp विकास की मूल बातें सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
29
पाठ
105

अक्सर पूछे जाने वाले प्रश्न

क्या “कॉन्ट्रैक्ट कंपाइल करना” पाठ निःशुल्क है?

हाँ — Web3 और DApp विकास की मूल बातें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कॉन्ट्रैक्ट कंपाइल करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Web3 और DApp विकास की मूल बातें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कॉन्ट्रैक्ट कंपाइल करना” में मैं क्या सीखूँगा?

बिल्ड आर्टिफ़ैक्ट आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Web3 और DApp विकास की मूल बातें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Web3 और DApp विकास की मूल बातें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Web3 और DApp विकास की मूल बातें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“कॉन्ट्रैक्ट कंपाइल करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Web3 और DApp विकास की मूल बातें पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Web3 और DApp विकास की मूल बातें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Hardhat सेटअप
  2. कॉन्ट्रैक्ट कंपाइल करना
  3. स्क्रिप्ट और कार्य
  4. स्थानीय नेटवर्क और फ़ोर्किंग
← Web3 और DApp विकास की मूल बातें पर वापस जाएँ