---
title: "तुमचे पहिले स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करणे"
description: "इथेरियम टेस्ट नेटवर्कवर तुमचे पहिले स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करण्यासाठी एक परिचय"
author: "jdourlens"
tags: ["स्मार्ट कॉन्ट्रॅक्ट्स", "Remix", "Solidity", "प्रस्थापित करणे"]
skill: beginner
breadcrumb: "पहिले कॉन्ट्रॅक्ट प्रस्थापित करा"
lang: mr
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: पहिले फंक्शन कॉन्ट्रॅक्टची स्थिती (state) बदलेल आणि आपल्या `count` व्हेरिएबलला `increment()` करेल.
- ओळ 15: दुसरे फंक्शन फक्त एक गेटर (getter) आहे जेणेकरून स्मार्ट कॉन्ट्रॅक्टच्या बाहेर `count` व्हेरिएबलचे मूल्य वाचता येईल. लक्षात घ्या की, आपण आपले `count` व्हेरिएबल पब्लिक (public) म्हणून परिभाषित केल्यामुळे हे आवश्यक नाही परंतु एक उदाहरण म्हणून दर्शविले आहे.

आपल्या पहिल्या साध्या स्मार्ट कॉन्ट्रॅक्टसाठी एवढेच. तुम्हाला माहीत असेलच की, हे Java किंवा C++ सारख्या OOP (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) भाषांमधील क्लाससारखे दिसते. आता आपल्या कॉन्ट्रॅक्टसोबत प्रयोग करण्याची वेळ आली आहे.

## आपले कॉन्ट्रॅक्ट प्रस्थापित करणे {#deploying-our-contract}

आपण आपले अगदी पहिले स्मार्ट कॉन्ट्रॅक्ट लिहिल्यामुळे, आता आपण त्याच्यासोबत प्रयोग करण्यासाठी ते ब्लॉकचेनवर प्रस्थापित करू.

[ब्लॉकचेनवर स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करणे](/developers/docs/smart-contracts/deploying/) म्हणजे प्रत्यक्षात कोणताही प्राप्तकर्ता निर्दिष्ट न करता संकलित (compiled) स्मार्ट कॉन्ट्रॅक्टचा कोड असलेला व्यवहार पाठवणे होय.

आपण प्रथम डाव्या बाजूला असलेल्या कंपाईल आयकॉनवर क्लिक करून [कॉन्ट्रॅक्ट कंपाईल करू](/developers/docs/smart-contracts/compiling/):

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

त्यानंतर कंपाईल बटणावर क्लिक करा:

![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` फंक्शन कॉल करूया. तुम्हाला विंडोच्या तळाशी केलेल्या व्यवहारांच्या नोंदी (logs) दिसतील. तुम्हाला दिसेल की जेव्हा तुम्ही `increment` बटणाऐवजी डेटा प्राप्त करण्यासाठी बटण दाबता तेव्हा नोंदी वेगळ्या असतात. याचे कारण असे की ब्लॉकचेनवरील डेटा वाचण्यासाठी कोणत्याही व्यवहारांची (लिहिण्याची) किंवा शुल्काची आवश्यकता नसते. कारण केवळ ब्लॉकचेनची स्थिती (state) बदलण्यासाठी व्यवहार करणे आवश्यक असते:

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

इन्क्रिमेंट (increment) बटण दाबल्यानंतर जे आपल्या `increment()` फंक्शनला कॉल करण्यासाठी एक व्यवहार तयार करेल, जर आपण पुन्हा count किंवा getCount बटणांवर क्लिक केले तर आपण आपल्या स्मार्ट कॉन्ट्रॅक्टची नवीन अपडेट केलेली स्थिती वाचू ज्यामध्ये count व्हेरिएबल 0 पेक्षा मोठे असेल.

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

पुढील ट्युटोरिअलमध्ये, आपण [तुमच्या स्मार्ट कॉन्ट्रॅक्ट्समध्ये घटना (events) कशा जोडू शकता](/developers/tutorials/logging-events-smart-contracts/) हे पाहू. घटनांची नोंद करणे (Logging events) हा तुमच्या स्मार्ट कॉन्ट्रॅक्टला डीबग करण्याचा आणि फंक्शन कॉल करताना काय होत आहे हे समजून घेण्याचा एक सोयीस्कर मार्ग आहे.