मुख्य सामग्रीवर जा

नवशिक्यांसाठी Hello World स्मार्ट कॉन्ट्रॅक्ट

Solidity
Hardhat
Alchemy
स्मार्ट कॉन्ट्रॅक्ट्स
प्रस्थापित करणे
नवशिक्या
एलानएच
31 मार्च, 2021
12 मिनिटांचे वाचन

जर तुम्ही ब्लॉकचेन डेव्हलपमेंटमध्ये नवीन असाल आणि कुठून सुरुवात करावी हे तुम्हाला माहीत नसेल, किंवा तुम्हाला फक्त स्मार्ट कॉन्ट्रॅक्ट्स कसे प्रस्थापित करायचे आणि त्यांच्याशी संवाद कसा साधायचा हे समजून घ्यायचे असेल, तर हे मार्गदर्शक तुमच्यासाठी आहे. आम्ही व्हर्च्युअल वॉलेट मेटामास्क (नवीन टॅबमध्ये उघडते), Solidity (नवीन टॅबमध्ये उघडते), Hardhat (नवीन टॅबमध्ये उघडते), आणि Alchemy (नवीन टॅबमध्ये उघडते) वापरून Sepolia टेस्ट नेटवर्कवर एक साधे स्मार्ट कॉन्ट्रॅक्ट तयार करण्याच्या आणि प्रस्थापित करण्याच्या प्रक्रियेतून जाऊ (यापैकी कशाचाही अर्थ तुम्हाला अद्याप समजला नसेल तर काळजी करू नका, आम्ही ते स्पष्ट करू).

एकदा तुमचे कॉन्ट्रॅक्ट प्रस्थापित झाले की, तुम्ही त्यासाठी युजर इंटरफेस तयार करू शकता.

तुम्हाला कोणत्याही टप्प्यावर प्रश्न असल्यास Alchemy डिस्कॉर्ड् (नवीन टॅबमध्ये उघडते) मध्ये मोकळेपणाने संपर्क साधा!

पायरी 1: इथेरियम नेटवर्कशी कनेक्ट करा

इथेरियम चेनला विनंत्या करण्याचे अनेक मार्ग आहेत. साधेपणासाठी, आम्ही Alchemy वर एक मोफत खाते वापरू, जे एक ब्लॉकचेन डेव्हलपर प्लॅटफॉर्म आणि API आहे जे आम्हाला आमचे स्वतःचे नोड न चालवता इथेरियम चेनशी संवाद साधण्याची परवानगी देते. या प्लॅटफॉर्मवर मॉनिटरिंग आणि ॲनालिटिक्ससाठी डेव्हलपर टूल्स देखील आहेत ज्यांचा फायदा आम्ही या ट्युटोरिअलमध्ये आमच्या स्मार्ट कॉन्ट्रॅक्ट प्रस्थापनेमध्ये तांत्रिकदृष्ट्या काय चालले आहे हे समजून घेण्यासाठी घेऊ. जर तुमच्याकडे आधीपासून Alchemy खाते नसेल, तर तुम्ही येथे मोफत साइन अप करू शकता (नवीन टॅबमध्ये उघडते).

पायरी 2: तुमचे ॲप (आणि API की) तयार करा

एकदा तुम्ही Alchemy खाते तयार केले की, तुम्ही ॲप तयार करून API की जनरेट करू शकता. हे आम्हाला Sepolia टेस्ट नेटवर्कला विनंत्या करण्याची परवानगी देईल. जर तुम्हाला टेस्टनेट्सची माहिती नसेल, तर हे पेज तपासा.

  1. नॅव्हिगेशन बारमध्ये "Select an app" निवडून आणि "Create new app" वर क्लिक करून तुमच्या Alchemy डॅशबोर्डमधील "Create new app" पेजवर जा.

Hello world create app

  1. तुमच्या ॲपला “Hello World” नाव द्या, एक लहान वर्णन द्या, आणि एक युज केस निवडा, उदा., "Infra & Tooling." पुढे, "Ethereum" शोधा आणि नेटवर्क निवडा.

create app view hello world

  1. पुढे जाण्यासाठी "Next" वर क्लिक करा, नंतर “Create app” आणि झाले! तुमचे ॲप नॅव्हिगेशन बार ड्रॉपडाउन मेनूमध्ये दिसले पाहिजे, ज्यामध्ये कॉपी करण्यासाठी API की उपलब्ध असेल.

पायरी 3: इथेरियम खाते (पत्ता) तयार करा

व्यवहार पाठवण्यासाठी आणि प्राप्त करण्यासाठी आम्हाला इथेरियम खात्याची आवश्यकता आहे. या ट्युटोरिअलसाठी, आम्ही मेटामास्क वापरू, जे तुमच्या इथेरियम खाते पत्त्याचे व्यवस्थापन करण्यासाठी ब्राउझरमधील एक व्हर्च्युअल वॉलेट आहे. व्यवहारांबद्दल अधिक माहिती.

तुम्ही मेटामास्क डाउनलोड करू शकता आणि येथे (नवीन टॅबमध्ये उघडते) मोफत इथेरियम खाते तयार करू शकता. जेव्हा तुम्ही खाते तयार करत असाल, किंवा तुमच्याकडे आधीपासून खाते असेल, तेव्हा नेटवर्क ड्रॉपडाउन मेनू वापरून "Sepolia" टेस्ट नेटवर्कवर स्विच केल्याची खात्री करा (जेणेकरून आम्ही खऱ्या पैशांशी व्यवहार करत नाही).

जर तुम्हाला Sepolia सूचीबद्ध दिसत नसेल, तर वरच्या उजव्या कोपऱ्यातील मेनू उघडा, "Networks" निवडा, आणि नेटवर्क सूचीच्या तळाशी "Show test networks" टॉगल चालू करा (टेस्टनेट्स पाहण्यासाठी मेटामास्कचे मार्गदर्शक (नवीन टॅबमध्ये उघडते) पहा). त्यानंतर नेटवर्क निवड मेनूमध्ये "Sepolia" निवडा.

metamask sepolia example

पायरी 4: फॉसेटमधून इथर जोडा

आमचे स्मार्ट कॉन्ट्रॅक्ट टेस्ट नेटवर्कवर प्रस्थापित करण्यासाठी, आम्हाला काही बनावट ETH ची आवश्यकता असेल. Sepolia ETH मिळवण्यासाठी तुम्ही विविध फॉसेट्सची सूची पाहण्यासाठी Sepolia नेटवर्क तपशील वर जाऊ शकता. जर एक काम करत नसेल, तर दुसरा वापरून पहा कारण ते कधीकधी कोरडे पडू शकतात. काही फॉसेट्सचे पात्रतेचे नियम असतात; उदाहरणार्थ, Alchemy च्या Sepolia फॉसेटसाठी प्राप्तकर्त्याच्या पत्त्यावर इथरियम मेननेटवर किमान 0.001 ETH असणे आवश्यक आहे. नेटवर्क ट्रॅफिकमुळे तुमचे बनावट ETH प्राप्त होण्यास थोडा वेळ लागू शकतो. तुम्हाला लवकरच तुमच्या मेटामास्क खात्यात ETH दिसायला हवे!

पायरी 5: तुमची शिल्लक तपासा

आमची शिल्लक तिथे आहे हे पुन्हा तपासण्यासाठी, Alchemy चे कंपोझर टूल (नवीन टॅबमध्ये उघडते) वापरून eth_getBalance विनंती करूया. हे आमच्या वॉलेटमधील ETH ची रक्कम परत करेल. तुम्ही तुमचा मेटामास्क खाते पत्ता टाकल्यानंतर आणि “Send Request” वर क्लिक केल्यानंतर, तुम्हाला असा प्रतिसाद दिसेल:

{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }

टीप: हा निकाल Wei मध्ये आहे ETH मध्ये नाही. Wei हे इथरचे सर्वात लहान मूल्य म्हणून वापरले जाते. Wei मधून ETH मध्ये रूपांतरण असे आहे: 1 eth = 1018 Wei. त्यामुळे जर आपण 0x2B5E3AF16B1880000 चे दशांश मध्ये रूपांतर केले तर आपल्याला 5*10¹⁸ मिळते जे 5 ETH च्या बरोबरीचे आहे.

हुश्श! आमचे बनावट पैसे तिथे आहेत .

पायरी 6: आमचा प्रोजेक्ट इनिशियलाइझ करा

प्रथम, आम्हाला आमच्या प्रोजेक्टसाठी एक फोल्डर तयार करावे लागेल. तुमच्या कमांड लाइनवर जा आणि टाइप करा:

mkdir hello-world
cd hello-world

आता आम्ही आमच्या प्रोजेक्ट फोल्डरमध्ये आहोत, आम्ही प्रोजेक्ट इनिशियलाइझ करण्यासाठी npm init वापरू. जर तुमच्याकडे आधीपासून npm इन्स्टॉल केलेले नसेल, तर Node.js इन्स्टॉलेशन सूचनांचे (नवीन टॅबमध्ये उघडते) अनुसरण करा (आम्हाला या ट्युटोरिअलसाठी Node.js आणि npm ची आवश्यकता असेल).

npm init

तुम्ही इन्स्टॉलेशन प्रश्नांची उत्तरे कशी देता याने फारसा फरक पडत नाही, संदर्भासाठी आम्ही ते कसे केले ते येथे आहे:

package.json मंजूर करा. Hardhat 3, जे आम्ही पुढे इन्स्टॉल करू, फक्त ES मॉड्यूल प्रोजेक्ट्सना सपोर्ट करते, त्यामुळे प्रोजेक्टला तसे मार्क करा:

npm pkg set type=module

आणि आपण पुढे जाण्यासाठी तयार आहोत!

पायरी 7: Hardhat (नवीन टॅबमध्ये उघडते) डाउनलोड करा

Hardhat हे तुमचे इथेरियम सॉफ्टवेअर कंपाईल, प्रस्थापित, टेस्ट आणि डीबग करण्यासाठी एक डेव्हलपमेंट एन्व्हायरन्मेंट आहे. हे डेव्हलपर्सना स्मार्ट कॉन्ट्रॅक्ट्स आणि विकेंद्रित ॲप्लिकेशन्स (dapps) लाईव्ह चेनवर प्रस्थापित करण्यापूर्वी लोकली तयार करताना मदत करते.

Hardhat 3 साठी Node.js v22.13.0 किंवा त्यापुढील आवृत्ती आवश्यक आहे. आमच्या hello-world प्रोजेक्टमध्ये रन करा:

npm install --save-dev hardhat

इन्स्टॉलेशन सूचनांबद्दल (नवीन टॅबमध्ये उघडते) अधिक तपशीलांसाठी हे पेज तपासा.

पायरी 8: Hardhat प्रोजेक्ट तयार करा

npx hardhat --init रन केल्याने एक संपूर्ण सॅम्पल प्रोजेक्ट तयार होईल, परंतु या ट्युटोरिअलसाठी आम्ही गोष्टी हाताने सेट करू जेणेकरून तुम्ही प्रत्येक भाग पाहू शकाल. तुमच्या प्रोजेक्ट फोल्डरच्या रूटमध्ये, खालील मजकुरासह hardhat.config.js नावाची फाईल तयार करा:

import { defineConfig } from "hardhat/config"

export default defineConfig({
  solidity: "0.8.34",
})

येथे आम्ही आमच्या प्रोजेक्टसाठी सर्व सेटअप निर्दिष्ट करू (पायरी 13 वर). सध्या, हे फक्त Hardhat ला Solidity कंपायलरची कोणती आवृत्ती वापरायची हे सांगते.

पायरी 9: प्रोजेक्ट फोल्डर्स जोडा

आमचा प्रोजेक्ट व्यवस्थित ठेवण्यासाठी आम्ही दोन नवीन फोल्डर्स तयार करू. तुमच्या कमांड लाइनमध्ये तुमच्या प्रोजेक्टच्या रूट डिरेक्टरीवर जा आणि टाइप करा:

mkdir contracts
mkdir scripts
  • contracts/ येथे आम्ही आमची hello world स्मार्ट कॉन्ट्रॅक्ट कोड फाईल ठेवू
  • scripts/ येथे आम्ही आमचे कॉन्ट्रॅक्ट प्रस्थापित करण्यासाठी आणि त्याच्याशी संवाद साधण्यासाठी स्क्रिप्ट्स ठेवू

पायरी 10: आमचे कॉन्ट्रॅक्ट लिहा

तुम्ही स्वतःला विचारत असाल, आपण कोड कधी लिहिणार आहोत?? बरं, आपण इथे आहोत, पायरी 10 वर.

तुमच्या आवडत्या एडिटरमध्ये hello-world प्रोजेक्ट उघडा (आम्हाला VSCode (नवीन टॅबमध्ये उघडते) आवडते). स्मार्ट कॉन्ट्रॅक्ट्स Solidity नावाच्या भाषेत लिहिली जातात जी आम्ही आमचे HelloWorld.sol स्मार्ट कॉन्ट्रॅक्ट लिहिण्यासाठी वापरू.‌

  1. “contracts” फोल्डरवर जा आणि HelloWorld.sol नावाची नवीन फाईल तयार करा
  2. खाली इथेरियम फाउंडेशनचे एक सॅम्पल Hello World स्मार्ट कॉन्ट्रॅक्ट आहे जे आम्ही या ट्युटोरिअलसाठी वापरणार आहोत. खालील मजकूर कॉपी करा आणि तुमच्या HelloWorld.sol फाईलमध्ये पेस्ट करा, आणि हे कॉन्ट्रॅक्ट काय करते हे समजून घेण्यासाठी कमेंट्स नक्की वाचा:

हे एक अतिशय साधे स्मार्ट कॉन्ट्रॅक्ट आहे जे तयार केल्यावर एक संदेश स्टोअर करते आणि update फंक्शन कॉल करून अपडेट केले जाऊ शकते.

पायरी 11: मेटामास्क आणि Alchemy ला तुमच्या प्रोजेक्टशी कनेक्ट करा

आम्ही मेटामास्क वॉलेट, Alchemy खाते तयार केले आहे आणि आमचे स्मार्ट कॉन्ट्रॅक्ट लिहिले आहे, आता या तिन्हींना कनेक्ट करण्याची वेळ आली आहे.

तुमच्या व्हर्च्युअल वॉलेटमधून पाठवलेल्या प्रत्येक व्यवहारासाठी तुमच्या युनिक खाजगी की वापरून स्वाक्षरी आवश्यक असते. आमच्या प्रोग्रामला ही परवानगी देण्यासाठी, आम्ही आमची खाजगी की (आणि Alchemy API की) एका एन्व्हायरन्मेंट फाईलमध्ये सुरक्षितपणे स्टोअर करू शकतो.

व्यवहार पाठवण्याबद्दल अधिक जाणून घेण्यासाठी, व्यवहार डॉक्युमेंटेशन तपासा.

आमच्या प्रोजेक्टच्या रूट डिरेक्टरीमध्ये .env फाईल तयार करा, आणि त्यात तुमची मेटामास्क खाजगी की आणि HTTP Alchemy API URL जोडा.

get alchemy api key

Alchemy API URL कॉपी करा

तुमची .env अशी दिसली पाहिजे:

API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY="your-metamask-private-key"

यांना प्रत्यक्षात आमच्या कोडशी कनेक्ट करण्यासाठी, आम्ही पायरी 13 वर आमच्या hardhat.config.js फाईलमध्ये या व्हेरिएबल्सचा संदर्भ देऊ. Node.js स्वतःहून .env फाईल्स वाचू शकते, त्यामुळे इन्स्टॉल करण्यासाठी कोणतेही अतिरिक्त पॅकेज नाही.

.env कमिट करू नका! कृपया तुमची .env फाईल कधीही कोणाशीही शेअर किंवा उघड न करण्याची खात्री करा, कारण असे केल्याने तुम्ही तुमच्या सिक्रेट्सशी तडजोड करत आहात. जर तुम्ही व्हर्जन कंट्रोल वापरत असाल, तर तुमची .env एका gitignore फाईलमध्ये जोडा.

पायरी 12: Ethers.js इन्स्टॉल करा

Ethers.js ही एक लायब्ररी आहे जी प्रमाणित जेसॉन-आरपीसी पद्धतींना अधिक युजर फ्रेंडली पद्धतींसह रॅप करून इथेरियमशी संवाद साधणे आणि विनंत्या करणे सोपे करते.

Hardhat अतिरिक्त टूलिंग आणि विस्तारित कार्यक्षमतेसाठी प्लगइन्स (नवीन टॅबमध्ये उघडते) इंटिग्रेट करणे अतिशय सोपे करते. आम्ही कॉन्ट्रॅक्ट प्रस्थापनेसाठी Ethers प्लगइनचा (नवीन टॅबमध्ये उघडते) फायदा घेऊ (Ethers.js (नवीन टॅबमध्ये उघडते) मध्ये काही अतिशय स्वच्छ कॉन्ट्रॅक्ट प्रस्थापना पद्धती आहेत).

तुमच्या प्रोजेक्ट डिरेक्टरीमध्ये टाइप करा:

npm install --save-dev @nomicfoundation/hardhat-ethers ethers

आम्ही पुढील पायरीमध्ये आमच्या hardhat.config.js मध्ये प्लगइन देखील जोडू.

पायरी 13: hardhat.config.js अपडेट करा

आम्ही आतापर्यंत अनेक डिपेंडन्सीज आणि प्लगइन्स जोडले आहेत, आता आम्हाला hardhat.config.js अपडेट करण्याची आवश्यकता आहे जेणेकरून आमच्या प्रोजेक्टला त्या सर्वांबद्दल माहिती असेल.

तुमचे hardhat.config.js असे दिसण्यासाठी अपडेट करा:

configVariable Hardhat ला प्रत्येक मूल्य एन्व्हायरन्मेंट व्हेरिएबलमधून फक्त तेव्हाच वाचण्यास सांगते जेव्हा त्याची आवश्यकता असते, त्यामुळे compile सारख्या कमांड्स मूल्ये सेट होण्यापूर्वीच काम करतात. जर तुम्हाला तुमची खाजगी की प्लेन टेक्स्ट फाईलमध्ये ठेवायची नसेल, तर Hardhat एन्क्रिप्टेड कीस्टोअरमधून कॉन्फिगरेशन व्हेरिएबल्स (नवीन टॅबमध्ये उघडते) देखील वाचू शकते.

पायरी 14: आमचे कॉन्ट्रॅक्ट कंपाईल करा

आतापर्यंत सर्वकाही काम करत आहे याची खात्री करण्यासाठी, चला आमचे कॉन्ट्रॅक्ट कंपाईल करूया. compile टास्क हे अंगभूत hardhat टास्क्सपैकी एक आहे.

कमांड लाइनवरून रन करा:

npx hardhat compile

जेव्हा तुम्ही पहिल्यांदा कंपाईल करता, तेव्हा Hardhat Solidity कंपायलर डाउनलोड करते. त्यानंतर तुम्हाला Compiled 1 Solidity file with solc 0.8.34 असे काहीतरी दिसायला हवे. तसे नसल्यास, तुम्ही नेहमी Alchemy डिस्कॉर्ड् (नवीन टॅबमध्ये उघडते) मध्ये संदेश पाठवू शकता.

पायरी 15: आमची प्रस्थापना स्क्रिप्ट लिहा

आता आमचे कॉन्ट्रॅक्ट लिहिले गेले आहे आणि आमची कॉन्फिगरेशन फाईल तयार आहे, आता आमची कॉन्ट्रॅक्ट प्रस्थापना स्क्रिप्ट लिहिण्याची वेळ आली आहे.

scripts/ फोल्डरवर जा आणि deploy.js नावाची नवीन फाईल तयार करा, त्यात खालील मजकूर जोडा:

चला या कोडच्या प्रत्येक ओळीचे कार्य काय आहे ते पाहूया.

const { ethers } = await network.create()

Hardhat 3 मध्ये, स्क्रिप्ट स्पष्टपणे नेटवर्कशी कनेक्शन उघडते. जेव्हा तुम्ही स्क्रिप्ट रन करता तेव्हा network.create() तुम्ही --network पर्यायासह निवडलेल्या नेटवर्कशी कनेक्ट होते, आणि hardhat-ethers प्लगइन त्या कनेक्शनमध्ये एक ethers ऑब्जेक्ट जोडते.

const HelloWorld = await ethers.getContractFactory("HelloWorld")

ethers.js मधील ContractFactory हे नवीन स्मार्ट कॉन्ट्रॅक्ट्स प्रस्थापित करण्यासाठी वापरले जाणारे ॲब्स्ट्रॅक्शन आहे, त्यामुळे येथील HelloWorld हे आमच्या hello world कॉन्ट्रॅक्टच्या इन्स्टन्सेससाठी एक फॅक्टरी आहे. hardhat-ethers प्लगइन वापरताना ContractFactory आणि Contract इन्स्टन्सेस बाय डिफॉल्ट पहिल्या स्वाक्षरीकर्त्याशी कनेक्ट केलेले असतात.

const hello_world = await HelloWorld.deploy("Hello World!")

ContractFactory वर deploy() कॉल केल्याने प्रस्थापना सुरू होईल, आणि एक Promise परत करेल जे Contract मध्ये रिझॉल्व्ह होते. हे असे ऑब्जेक्ट आहे ज्यामध्ये आमच्या प्रत्येक स्मार्ट कॉन्ट्रॅक्ट फंक्शनसाठी एक पद्धत आहे. तुम्ही deploy() ला पास केलेले आर्ग्युमेंट्स कॉन्ट्रॅक्टच्या कन्स्ट्रक्टरकडे जातात, येथे प्रारंभिक संदेश.

waitForDeployment() प्रस्थापना व्यवहार ब्लॉकमध्ये समाविष्ट होईपर्यंत प्रतीक्षा करते, आणि getAddress() नवीन कॉन्ट्रॅक्टचा पत्ता परत करते. अधिक तपशीलांसाठी ethers.js कॉन्ट्रॅक्ट डॉक्युमेंटेशन (नवीन टॅबमध्ये उघडते) पहा.

पायरी 16: आमचे कॉन्ट्रॅक्ट प्रस्थापित करा

आम्ही शेवटी आमचे स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करण्यासाठी तयार आहोत! कमांड लाइनवर जा आणि रन करा:

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

त्यानंतर तुम्हाला असे काहीतरी दिसायला हवे:

Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570

जर आपण Sepolia Etherscan (नवीन टॅबमध्ये उघडते) वर गेलो आणि आमचा कॉन्ट्रॅक्ट पत्ता शोधला तर आपल्याला दिसेल की ते यशस्वीरित्या प्रस्थापित झाले आहे. व्यवहार असा काहीसा दिसेल:

etherscan contract

From पत्ता तुमच्या मेटामास्क खाते पत्त्याशी जुळला पाहिजे आणि To पत्ता “Contract Creation” म्हणेल परंतु जर आपण व्यवहारावर क्लिक केले तर आपल्याला To फील्डमध्ये आमचा कॉन्ट्रॅक्ट पत्ता दिसेल:

etherscan transaction

अभिनंदन! तुम्ही नुकतेच इथेरियम चेनवर एक स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित केले आहे 🎉

तांत्रिकदृष्ट्या काय चालले आहे हे समजून घेण्यासाठी, तुम्ही तुमच्या Alchemy डॅशबोर्डमध्ये (नवीन टॅबमध्ये उघडते) तुमच्या "Hello World" ॲपला प्राप्त झालेल्या विनंत्या पाहू शकता.

तेथे तुम्हाला काही जेसॉन-आरपीसी कॉल्स दिसतील जे Hardhat/Ethers ने आमच्यासाठी अंतर्गतपणे केले जेव्हा आम्ही .deploy() फंक्शन कॉल केले. येथे नमूद करण्यासारखे दोन महत्त्वाचे कॉल्स म्हणजे eth_sendRawTransaction, जी प्रत्यक्षात आमचे कॉन्ट्रॅक्ट Sepolia चेनवर लिहिण्याची विनंती आहे, आणि eth_getTransactionByHash जी हॅश दिल्यावर आमच्या व्यवहाराबद्दल माहिती वाचण्याची विनंती आहे (व्यवहार पाठवताना एक सामान्य पॅटर्न). व्यवहार पाठवण्याबद्दल अधिक जाणून घेण्यासाठी, व्यवहार डॉक्युमेंटेशन तपासा.

या ट्युटोरिअलसाठी एवढेच. पुढे, तुम्ही तुमच्या कॉन्ट्रॅक्टसाठी युजर इंटरफेस तयार करू शकता.