मुख्य आशयावर जा
Change page

स्मार्ट कॉन्ट्रॅक्ट्ससोबत संवाद साधणे

तुम्हाला नेहमी तुमचे स्वतःचे स्मार्ट कॉन्ट्रॅक्ट लिहिण्याची आणि प्रस्थापित करण्याची आवश्यकता नसते. बहुतांश वेळा एक डेव्हलपर म्हणून, तुम्हाला इतरांनी इथेरियम नेटवर्कवर आधीपासूनच प्रस्थापित केलेल्या स्मार्ट कॉन्ट्रॅक्ट्ससोबत संवाद साधायचा असतो.

हे पृष्ठ स्मार्ट कॉन्ट्रॅक्टसोबत संवाद साधण्याच्या दोन मूलभूत पद्धतींचा समावेश करते—डेटा वाचणे आणि डेटा लिहिणे—आणि या दोन्ही गोष्टी करण्यासाठी तुम्हाला आवश्यक असलेली साधने.

पूर्वअटी

तुम्हाला खालील गोष्टी समजल्या पाहिजेत:

स्मार्ट कॉन्ट्रॅक्टसोबत संवाद साधण्याचे दोन मार्ग

स्मार्ट कॉन्ट्रॅक्टसोबत संवाद साधणे दोन श्रेणींमध्ये विभागले जाते:

कॉन्ट्रॅक्टमधून वाचणे

वाचणे ही एक मोफत प्रक्रिया आहे जी कोणताही व्यवहार तयार करत नाही आणि ब्लॉकचेनवरील कोणतीही स्थिती बदलत नाही.

जेव्हा तुम्ही कॉन्ट्रॅक्टमधून वाचता, तेव्हा तुम्ही फक्त आधीपासून अस्तित्वात असलेल्या डेटाची चौकशी करत असता. उदाहरणार्थ:

  • ERC-20 टोकन शिल्लक तपासणे
  • विकेंद्रित एक्सचेंजवरून सध्याची किंमत वाचणे
  • NFT च्या मालकाची माहिती मिळवणे

कारण वाचण्याने स्थिती बदलत नाही, त्यासाठी गॅस लागत नाही आणि ETH ची आवश्यकता नसताना कोणीही ते करू शकते.

कॉन्ट्रॅक्टमध्ये लिहिणे

लिहिणे ही एक स्थिती-बदलणारी प्रक्रिया आहे ज्यासाठी व्यवहार आवश्यक असतो आणि गॅस लागतो.

जेव्हा तुम्ही कॉन्ट्रॅक्टमध्ये लिहिता, तेव्हा तुम्ही ब्लॉकचेनची स्थिती बदलणारे फंक्शन ट्रिगर करत असता. उदाहरणार्थ:

  • टोकन्स ट्रान्सफर करणे
  • विकेंद्रित एक्सचेंजवर टोकन्स स्वॅप करणे
  • NFT मिंटिंग करणे

लिहिण्यासाठी नेहमी खालील गोष्टी आवश्यक असतात:

  1. गॅससाठी पुरेसे ETH असलेले एक्सटर्नली ओन्ड अकाउंट (EOA)
  2. खात्याच्या खाजगी की द्वारे स्वाक्षरी केलेला व्यवहार
  3. व्यवहार माइन होणे आणि ब्लॉक मध्ये समाविष्ट होणे

खाते अमूर्तीकरण वापरून, स्मार्ट कॉन्ट्रॅक्ट खाते देखील लिहिण्याची प्रक्रिया सुरू करू शकते, आणि पेमास्टर वापरकर्त्याच्या वतीने गॅस कव्हर करू शकतो—त्यामुळे ETH असलेले EOA असणे सक्तीचे नाही.

कॉन्ट्रॅक्ट ABIs समजून घेणे

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

ABI हे एक JSON डॉक्युमेंट आहे जे खालील गोष्टींचे वर्णन करते:

  • कॉन्ट्रॅक्टने उघड केलेले प्रत्येक फंक्शन (नाव, इनपुट्स, आउटपुट्स)
  • कॉन्ट्रॅक्ट उत्सर्जित करू शकणारी प्रत्येक घटना
  • कॉन्ट्रॅक्टशी संवाद साधताना डेटा कसा एन्कोड आणि डिकोड करायचा

ABI ला कॉन्ट्रॅक्टचे सूचना पुस्तिका समजा—त्याशिवाय, तुमच्या ॲप्लिकेशनला कोणती फंक्शन्स अस्तित्वात आहेत किंवा त्यांना कोणते पॅरामीटर्स अपेक्षित आहेत हे माहित नसते.

कॉन्ट्रॅक्टचा ABI कुठे शोधायचा

  • Etherscan वरील सत्यापित कॉन्ट्रॅक्ट्स - Etherscan (नवीन टॅबमध्ये उघडते) सत्यापित सोर्स कोडसाठी आपोआप ABI उघड करते
  • डेव्हलपरकडून - अनेक प्रकल्प त्यांचे ABIs त्यांच्या डॉक्युमेंटेशनमध्ये किंवा npm पॅकेजेसमध्ये प्रकाशित करतात
  • सोर्सवरून तयार करा - जर तुमच्याकडे Solidity सोर्स कोड असेल, तर तुम्ही ABI तयार करण्यासाठी त्याचे संकलन करू शकता

कॉन्ट्रॅक्ट्ससोबत संवाद साधण्यासाठी साधने आणि लायब्ररी

डेव्हलपर्स सामान्यतः वेब ॲप, बॅकएंड किंवा स्क्रिप्टमधून कॉन्ट्रॅक्ट्ससोबत संवाद साधण्यासाठी JavaScript/TypeScript लायब्ररी वापरतात.

क्लायंट लायब्ररी (JavaScript/TypeScript)

बॅकएंड लायब्ररी

उदाहरण: Viem वापरून टोकन शिल्लक वाचणे

उदाहरण: ethers.js वापरून व्यवहार पाठवणे

घटना आणि लॉग्स

काहीतरी घडले आहे हे सूचित करण्यासाठी स्मार्ट कॉन्ट्रॅक्ट्स घटना उत्सर्जित करू शकतात. तुमचे ॲप्लिकेशन रिअल-टाइममध्ये प्रतिक्रिया देण्यासाठी या घटना ऐकू शकते.

व्यवहारांचे अनुकरण करणे

व्यवहार पाठवण्यापूर्वी, तो यशस्वी होईल की नाही हे तपासण्यासाठी—आणि गॅस खर्च न करता त्याचे रिटर्न मूल्य पाहण्यासाठी—तुम्ही त्याचे अनुकरण (simulate) करू शकता. हे लवकर त्रुटी पकडण्यासाठी आणि परिणामांचे पूर्वावलोकन करण्यासाठी उपयुक्त आहे.

बहुतेक क्लायंट लायब्ररी eth_call द्वारे याला समर्थन देतात:

// Viem सह
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

वॉलेट्स आणि स्वाक्षरी करणे

एका विकेंद्रित ॲप्लिकेशन (dapp) मध्ये, वापरकर्त्याचे वॉलेट (जसे की मेटामास्क, Rainbow, किंवा WalletConnect) स्वाक्षरी करणे हाताळते. तुम्ही खाजगी की थेट व्यवस्थापित करत नाही.

वॉलेट लायब्ररी आणि कनेक्शन साधने हे अमूर्त करतात जेणेकरून तुम्ही तुमच्या ॲप्लिकेशन लॉजिकच्या निर्मितीवर लक्ष केंद्रित करू शकता.

पुढील वाचन