---
title: "अपना पहला स्मार्ट अनुबंध तैनात करना"
description: "इथेरियम टेस्ट नेटवर्क पर अपना पहला स्मार्ट अनुबंध तैनात करने का परिचय"
author: "jdourlens"
tags: ["स्मार्ट अनुबंध", "Remix", "Solidity", "तैनात करना"]
skill: beginner
breadcrumb: "पहला अनुबंध तैनात करें"
lang: hi
published: 2020-04-03
source: EthereumDev
sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---

मुझे लगता है कि आप भी इथेरियम ब्लॉकचेन पर अपना पहला [स्मार्ट अनुबंध](/developers/docs/smart-contracts/) [तैनात करने](/developers/docs/smart-contracts/deploying/) और उसके साथ इंटरैक्ट करने के लिए हमारी तरह ही उत्साहित हैं।

चिंता न करें, क्योंकि यह हमारा पहला स्मार्ट अनुबंध है, हम इसे एक [लोकल टेस्ट नेटवर्क](/developers/docs/networks/) पर तैनात करेंगे ताकि इसे तैनात करने में आपका कोई खर्च न लगे और आप इसके साथ जितना चाहें उतना खेल सकें।

## अपना अनुबंध लिखना {#writing-our-contract}

पहला कदम [Remix पर जाना](https://remix.ethereum.org/) और एक नई फ़ाइल बनाना है। Remix इंटरफ़ेस के ऊपरी बाएँ हिस्से पर एक नई फ़ाइल जोड़ें और अपना मनचाहा फ़ाइल नाम दर्ज करें।

![Adding a new file in the Remix interface](./remix.png)

नई फ़ाइल में, हम निम्नलिखित कोड पेस्ट करेंगे।

```solidity
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.17;

contract Counter {

    // गिनती की संख्या रखने के लिए unsigned int प्रकार का सार्वजनिक चर
    uint256 public count = 0;

    // फ़ंक्शन जो हमारे काउंटर को बढ़ाता है
    function increment() public {
        count += 1;
    }

    // गिनती का मान प्राप्त करने के लिए अनावश्यक गेटर
    function getCount() public view returns (uint256) {
        return count;
    }

}
```

यदि आप प्रोग्रामिंग से परिचित हैं तो आप आसानी से अनुमान लगा सकते हैं कि यह प्रोग्राम क्या करता है। यहाँ पंक्ति दर पंक्ति स्पष्टीकरण दिया गया है:

- पंक्ति 4: हम `Counter` नाम से एक अनुबंध परिभाषित करते हैं।
- पंक्ति 7: हमारा अनुबंध `count` नाम का एक अनसाइंड इंटीजर (unsigned integer) स्टोर करता है जो 0 से शुरू होता है।
- पंक्ति 10: पहला फ़ंक्शन अनुबंध की स्थिति को संशोधित करेगा और हमारे वेरिएबल `count` को `increment()` करेगा।
- पंक्ति 15: दूसरा फ़ंक्शन केवल एक गेटर (getter) है ताकि स्मार्ट अनुबंध के बाहर `count` वेरिएबल का मान पढ़ा जा सके। ध्यान दें कि, चूँकि हमने अपने `count` वेरिएबल को पब्लिक (public) के रूप में परिभाषित किया है, इसलिए यह आवश्यक नहीं है लेकिन इसे एक उदाहरण के रूप में दिखाया गया है।

हमारे पहले सरल स्मार्ट अनुबंध के लिए बस इतना ही। जैसा कि आप जानते होंगे, यह Java या C++ जैसी OOP (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) भाषाओं की एक क्लास (class) जैसा दिखता है। अब हमारे अनुबंध के साथ खेलने का समय आ गया है।

## अपना अनुबंध तैनात करना {#deploying-our-contract}

चूँकि हमने अपना पहला स्मार्ट अनुबंध लिख लिया है, अब हम इसके साथ खेलने के लिए इसे ब्लॉकचेन पर तैनात करेंगे।

[ब्लॉकचेन पर स्मार्ट अनुबंध तैनात करना](/developers/docs/smart-contracts/deploying/) वास्तव में बिना किसी प्राप्तकर्ता को निर्दिष्ट किए संकलित (compiled) स्मार्ट अनुबंध के कोड वाले लेन-देन को भेजना है।

हम सबसे पहले बाईं ओर संकलन (compile) आइकन पर क्लिक करके [अनुबंध को संकलित (compile)](/developers/docs/smart-contracts/compiling/) करेंगे:

![The compile icon in the Remix toolbar](./remix-compile-button.png)

फिर संकलन (compile) बटन पर क्लिक करें:

![The compile button in the Remix solidity compiler](./remix-compile.png)

आप "Auto compile" विकल्प का चयन कर सकते हैं ताकि जब भी आप टेक्स्ट एडिटर पर सामग्री सहेजें तो अनुबंध हमेशा संकलित हो जाए।

फिर "deploy and run transactions" स्क्रीन पर जाएँ:

![The deploy icon in the Remix toolbar](./remix-deploy.png)

एक बार जब आप "deploy and run transactions" स्क्रीन पर आ जाएँ, तो दोबारा जाँच लें कि आपके अनुबंध का नाम दिखाई दे रहा है और Deploy पर क्लिक करें। जैसा कि आप पृष्ठ के शीर्ष पर देख सकते हैं, वर्तमान वातावरण "JavaScript VM" है जिसका अर्थ है कि हम अपने स्मार्ट अनुबंध को एक लोकल टेस्ट ब्लॉकचेन पर तैनात करेंगे और उसके साथ इंटरैक्ट करेंगे ताकि हम तेज़ी से और बिना किसी शुल्क के परीक्षण कर सकें।

![The deploy button in the Remix solidity compiler](./remix-deploy-button.png)

एक बार जब आप "Deploy" बटन पर क्लिक कर देते हैं, तो आप देखेंगे कि आपका अनुबंध नीचे दिखाई दे रहा है। इसे विस्तारित करने के लिए बाईं ओर के तीर पर क्लिक करें ताकि हम अपने अनुबंध की सामग्री देख सकें। यह हमारा वेरिएबल `counter`, हमारा `increment()` फ़ंक्शन और गेटर `getCounter()` है।

यदि आप `count` या `getCount` बटन पर क्लिक करते हैं, तो यह वास्तव में अनुबंध के `count` वेरिएबल की सामग्री को प्राप्त करेगा और इसे प्रदर्शित करेगा। चूँकि हमने अभी तक `increment` फ़ंक्शन को कॉल नहीं किया है, इसलिए इसे 0 प्रदर्शित करना चाहिए।

![The function button in the Remix solidity compiler](./remix-function-button.png)

आइए अब बटन पर क्लिक करके `increment` फ़ंक्शन को कॉल करें। आप देखेंगे कि किए गए लेन-देन के लॉग विंडो के नीचे दिखाई दे रहे हैं। आप देखेंगे कि जब आप `increment` बटन के बजाय डेटा प्राप्त करने के लिए बटन दबाते हैं तो लॉग अलग होते हैं। ऐसा इसलिए है क्योंकि ब्लॉकचेन पर डेटा पढ़ने के लिए किसी लेन-देन (लिखने) या शुल्क की आवश्यकता नहीं होती है। क्योंकि केवल ब्लॉकचेन की स्थिति को संशोधित करने के लिए लेन-देन करने की आवश्यकता होती है:

![A log of transactions](./transaction-log.png)

इंक्रीमेंट (increment) बटन दबाने के बाद जो हमारे `increment()` फ़ंक्शन को कॉल करने के लिए एक लेन-देन उत्पन्न करेगा, यदि हम वापस count या getCount बटन पर क्लिक करते हैं तो हम अपने स्मार्ट अनुबंध की नई अद्यतन स्थिति को पढ़ेंगे जिसमें count वेरिएबल 0 से बड़ा होगा।

![Newly updated state of the smart contract](./updated-state.png)

अगले ट्यूटोरियल में, हम कवर करेंगे कि [आप अपने स्मार्ट अनुबंधों में घटनाएँ कैसे जोड़ सकते हैं](/developers/tutorials/logging-events-smart-contracts/)। घटनाओं को लॉग करना आपके स्मार्ट अनुबंध को डीबग करने और यह समझने का एक सुविधाजनक तरीका है कि फ़ंक्शन को कॉल करते समय क्या हो रहा है।