एथेरियम ब्लॉकचेन पर ERC-20 टोकन कैसे बनाएं और लागू करें
कैसे बनाएं और कार्यान्वित करें ईआरसी -20 टोकन एथेरियम ब्लॉकचेन पर. विकास की वर्तमान दर पर, ब्लॉकचेन धीरे-धीरे दुनिया पर विजय प्राप्त कर रहा है। बिटकॉइन, सबसे लोकप्रिय cryptocurrency, दुनिया की पहली और सबसे प्रसिद्ध ब्लॉकचेन तकनीक का उत्पाद है। एथेरियम ब्लॉकचेन का एक उप-उत्पाद है और इसका जन्म तब हुआ जब बिटकॉइन फलना-फूलना शुरू हुआ।
जबकि बिटकॉइन केवल एक मुद्रा की ओर बढ़ा है, एथेरियम वर्चुअल मशीन (ईवीएम) और स्मार्ट अनुबंध प्रदान करने के अपने दृष्टिकोण के साथ और भी आगे बढ़ गया है जो उपयोगकर्ताओं को नेटवर्क पर टोकन बनाने की अनुमति देता है।
टोकन पैसे, सोना, लॉटरी टिकट का प्रतिनिधित्व कर सकते हैं... आप एथेरियम ब्लॉकचेन पर सभी प्रकार के टोकन विकसित कर सकते हैं, लेकिन यह ट्यूटोरियल ईआरसी-20 टोकन बनाने और तैनात करने पर केंद्रित होगा।
टोकन बनाने से पहले, आपको कम से कम ब्लॉकचेन तकनीक, सॉलिडिटी भाषा और एथेरियम कैसे काम करता है, इसकी बुनियादी समझ होनी चाहिए।
ब्लॉकचेन क्या है और तरीका यह कैसे काम करता है?
संक्षेप में, ब्लॉकचेन कई नेटवर्क प्रतिभागियों के लिए वितरित बहीखाता या डेटाबेस में लेनदेन का रिकॉर्ड है। इस बहीखाते में नेटवर्क पर किए गए लेनदेन का रिकॉर्ड होता है।
लेन-देन नेटवर्क पर एक उपयोगकर्ता से दूसरे उपयोगकर्ता तक एक विशिष्ट मुद्रा या राशि स्थानांतरित करने का कार्य है। मान लीजिए ऐलिस बॉब को 30BLC भेजती है। यह लेन-देन क्रिप्टोग्राफ़िक रूप से नेटवर्क पर एक विशिष्ट नोड द्वारा हैश किया जाता है और सामान्य खाता बही में दर्ज किया जाता है।
यह नोड लेनदेन को नेटवर्क में अन्य नोड्स को भेजता है, अर्थात यह लेनदेन को नेटवर्क में प्रसारित करता है। अन्य नोड्स लेनदेन प्राप्त करते हैं, मानक विधि का उपयोग करके इसकी समीक्षा करते हैं, और फिर इसे बही में जोड़ते हैं।
नेटवर्क पर नोड्स नेटवर्क पर नए प्रेषित लेनदेन को प्राप्त करते हैं और फिर लेनदेन को बही में जोड़ते हैं। नेटवर्क पर प्रत्येक नोड के पास बहीखाता की एक प्रति होती है। इसके परिणामस्वरूप ब्लॉकचेन का विकेंद्रीकृत चरित्र सामने आता है।
शब्द "ब्लॉकचैन" इस तथ्य से लिया गया है कि बही के भीतर लेनदेन या रिकॉर्ड एक श्रृंखला बनाने के लिए जुड़े हुए हैं। जैसा कि हम सभी जानते हैं, लेनदेन नोड में दो पक्षों के बीच मुद्रा विनिमय का प्रतिनिधित्व करता है, जिसे JSON में निम्नानुसार दर्शाया जा सकता है:
{
"को": "0xalice",
"से": "0xbob",
"रकम": "30बीएलसी"
}
यह एक साधारण रिकॉर्ड या लेनदेन है. बॉब ने 30BLC ऐलिस को हस्तांतरित कर दिया।
यह लेनदेन निम्नलिखित JSON डेटा प्रारूप का उपयोग करके लिखे गए ब्लॉक में दर्ज किया गया है:
[
{
"को": "0xalice",
"से": "0xbob",
"रकम": "30बीएलसी"
}
]
एक ब्लॉक एक अनुक्रम की तरह होता है जिसमें कई लेनदेन ऑब्जेक्ट होते हैं। इसलिए इस ब्लॉक में कई लेनदेन हो सकते हैं:
[
{
"को": "0xalice",
"से": "0xbob",
"रकम": "30बीएलसी"
},
{
"को": "0xथेरेसा",
"से": "0xarinze",
"रकम": "5बीएलसी"
}
]
आप उस ब्लॉक का स्थान देख सकते हैं जिसमें लेनदेन जोड़ा जाएगा। जंजीरें आपस में जुड़े ब्लॉकों से बनी होती हैं। प्रत्येक ब्लॉकचेन एक जेनेसिस ब्लॉक से शुरू होता है, जिसे निर्माता नेटवर्क में जोड़ता और वितरित करता है।
प्रत्येक ब्लॉक में एक क्रिप्टोग्राफ़िक हैश भी होता है जो नेटवर्क पर एक विशिष्ट पहचानकर्ता के रूप में कार्य करता है। किसी भी दो ब्लॉक का हैश समान नहीं है.
जब किसी ब्लॉक को नोड्स द्वारा सत्यापित किया जाता है और नेटवर्क में जोड़ा जाता है, तो इसमें नेटवर्क पर अंतिम ब्लॉक के हैश के लिए एक पॉइंटर होता है।
[
{
"हैश": "0x0",
"prevHash": "",
"txns": [
{
"को": "0xalice",
"से": "0xbob",
"रकम": "30बीएलसी"
},
{
"हैश": "0x1",
"prevHash": "0x0",
"को": "0xथेरेसा",
"से": "0xarinze",
"रकम": "5बीएलसी"
}
]
},
{
"हैश": "0x1",
"prevHash": "0x0",
"txns": [
{
"को": "0xalice",
"से": "0xbob",
"रकम": "30बीएलसी"
},
{
"को": "0xथेरेसा",
"से": "0xarinze",
"रकम": "5बीएलसी"
}
]
}
]
हैश 0x0 वाला पहला ब्लॉक मूल ब्लॉक है। हैश 0x1 के साथ अगले ब्लॉक में एक prevHash है जो 0x0 को इंगित करता है, यानी नेटवर्क में पहले ब्लॉक को।
इस प्रकार, नेटवर्क में डाला गया प्रत्येक नया ब्लॉक सबसे पहले निकटवर्ती नवीनतम ब्लॉक को इंगित करता है। यह ब्लॉकचेन में एक "श्रृंखला" बनाता है।
एथेरियम क्या है?
एथेरियम एक ब्लॉकचेन है जिसकी अपनी डिजिटल मुद्रा है जिसे ETH कहा जाता है। अन्य ब्लॉकचेन की तरह, लेनदेन को एक बहीखाता में संग्रहीत किया जाता है।
एथेरियम को अन्य ब्लॉकचेन से अलग करने वाली बात इसका लचीलापन है। जबकि कई ब्लॉकचेन प्लेटफ़ॉर्म केवल धन हस्तांतरण का समर्थन करते हैं, एथेरियम सभी डेटा को ब्लॉकचेन पर स्थानांतरित करने और ईटीएच में शुल्क का भुगतान करने की अनुमति देता है।
इथेरियम कैसे काम करता है?
जैसा कि ऊपर उल्लेख किया गया है, हम एथेरियम ब्लॉकचेन में कोई भी डेटा स्थानांतरित कर सकते हैं और ईटीएच में शुल्क का भुगतान कर सकते हैं।
उपरोक्त उदाहरण में बीएलसी लेनदेन की तरह, एथेरियम ब्लॉकचेन ईटीएच लेनदेन का समर्थन करता है। मान लीजिए कि ऐलिस बॉब को 1 ETH हस्तांतरित करता है। यह लेनदेन नेटवर्क में नोड्स द्वारा मान्य किया जाता है और ब्लॉकचेन में ब्लॉक में जोड़ा जाता है।
इसके अलावा, एथेरियम में खनन होता है, जिसे ETH प्राप्त करने के लिए काम करने की आवश्यकता होती है। इस कार्य में एक कठिन गणना को कई अलग-अलग तरीकों से हल करना शामिल है जब तक कि आपको सही उत्तर न मिल जाए। नेटवर्क में कोई भी नोड भाग ले सकता है। एक नोड जो गणना को सफलतापूर्वक हल करता है उसे ETH की एक निश्चित राशि से पुरस्कृत किया जाता है। लेन-देन कम होने पर गणना की कठिनाई बढ़ जाती है।
जब भी एथेरियम ब्लॉकचेन में कोई लेनदेन शुरू होता है, तो नेटवर्क में एक खनन नोड इस लेनदेन को चालू करता है। लेन-देन भेजने वाले को इस नोड पर एक निश्चित ईटीएच राशि का भुगतान करने के लिए सहमत होना होगा। इसे गैस की कीमत के रूप में जाना जाता है।
स्मार्ट अनुबंध क्या है?
स्मार्ट कॉन्ट्रैक्ट एक उपकरण है जिसमें कोड होता है जो एथेरियम ब्लॉकचेन पर चलता है। स्मार्ट कॉन्ट्रैक्ट सॉलिडिटी भाषा में लिखे जाते हैं और एबीआई कोड में संकलित किए जाते हैं। यह एबीआई कोड एथेरियम ब्लॉकचेन पर प्रदान किया गया है। स्मार्ट अनुबंध प्रेषक का बाहरी पता लेता है और एथेरियम ब्लॉकचेन पर एक पता बनाने के लिए इसे एक गैर (अद्वितीय संख्या) के साथ मिलाता है।
स्मार्ट अनुबंध डिजिटल अनुबंधों के निर्माण को सक्षम बनाते हैं। वास्तविक अनुबंधों की तरह, डिजिटल अनुबंध एथेरियम ब्लॉकचेन के भीतर दो या दो से अधिक पार्टियों के बीच लेनदेन स्थापित करने में मदद करते हैं।
स्मार्ट कॉन्ट्रैक्ट एथेरियम में एक प्रकार का खाता है, जिसका अर्थ है कि यह उपयोगकर्ता द्वारा नियंत्रित नहीं है और ब्लॉकचेन पर लेनदेन भेज सकता है। चूंकि यह एक खाता है, स्मार्ट कॉन्ट्रैक्ट में एक बैलेंस होता है और इसमें ईवीएम कोड होता है।
ERC-20 टोकन क्या हैं?
एथेरियम वर्चुअल मशीन (ईवीएम) एक वर्चुअल मशीन है जो संकलित सॉलिडिटी एबीआई कोड चलाती है। एथेरियम में स्मार्ट अनुबंध टोकन की एक श्रृंखला बनाने के लिए वैश्विक मानक बन गए हैं। इन मानकों को एथेरियम रिक्वेस्ट फॉर कमेंट (ईआरसी) मानक के रूप में जाना जाता है।
एथेरियम में बहुत सारे हैं चूक, लेकिन सबसे अधिक उपयोग और व्यापक रूप से उपयोग किए जाने वाले ERC-20 और ERC-721 हैं। ERC-20 का उपयोग टोकन निर्माण के लिए किया जाता है जबकि ERC-721 का उपयोग NFT विकास के लिए किया जाता है।
ERC-20 फैबियन वोगेलस्टेलर द्वारा प्रस्तावित मानक है, एक स्मार्ट अनुबंध जिसमें कई एपीआई शामिल हैं। ERC20 नियमों का एक सेट है जो ERC-20 मानक चुनने वाले सभी टोकन पर लागू होता है।
जैसा कि ऊपर बताया गया है, ERC-20 का उपयोग बिटकॉइन और ETH जैसी आभासी मुद्राएँ बनाने के लिए किया जा सकता है। ERC-20 मानक के अनुसार बनाए गए कुछ सबसे प्रसिद्ध टोकन बिनेंस कॉइन (बीएनबी) और शीबा शाबू (KOBE) हैं।
उपयोगकर्ता ERC-20 टोकन भेज और प्राप्त कर सकते हैं। ये टोकन फंजिबल हैं, जिसका अर्थ है कि ब्लॉकचेन पर हर जगह उनका मूल्य समान है।
का पालन करें Blockchain.com, वॉलेट और एक्सचेंज इस मानक का उपयोग विभिन्न ईआरसी -20 टोकन को प्लेटफॉर्म में एकीकृत करने और उनके एक्सचेंज और कई अन्य क्रिप्टोकरेंसी को सुविधाजनक बनाने के लिए करते हैं।
अब जब हम समझ गए हैं कि ERC-20 मानक क्या है, तो आइए ERC-20 टोकन की सामग्री पर एक नज़र डालें।
टोकन की सामग्री ईआरसी-20
ERC-20 टोकन में वे विधियाँ और घटनाएँ शामिल हैं जो ERC-20 टोकन में होनी चाहिए।
ERC-20 टोकन निम्न में सक्षम होने चाहिए:
- एक खाते से दूसरे खाते में टोकन स्थानांतरित करें
- खाते की शेष राशि वापस करें
- टोकन में उपलब्ध टोकन की कुल संख्या लौटाता है
- अपने खाते में टोकन स्थानांतरित करें
वास्तव में, यदि इसे सॉलिडिटी में लिखा जाता, तो ERC-20 इस तरह दिखता:
समारोह नाम() सार्वजनिक राय रिटर्न (स्ट्रिंग)
समारोह प्रतीक() सार्वजनिक राय रिटर्न (स्ट्रिंग)
समारोह दशमलव() सार्वजनिक राय रिटर्न (uint8)
समारोह कुल मिलाकर() सार्वजनिक राय रिटर्न (uint256)
समारोह का संतुलन(पता_मालिक) सार्वजनिक राय रिटर्न (uint256 संतुलन)
समारोह स्थानांतरण(को संबोधित, uint256 _मूल्य) सार्वजनिक रिटर्न (bool सफलता)
समारोह इससे स्थानांतरित करें(पता _से, को संबोधित, uint256 _मूल्य) सार्वजनिक रिटर्न (bool सफलता)
समारोह अनुमोदन करना(पता _स्पेंडर, uint256 _मूल्य) सार्वजनिक रिटर्न (bool सफलता)
समारोह भत्ता(पता_मालिक, पता _स्पेंडर) सार्वजनिक राय रिटर्न (uint256 शेष)
ERC-20 टोकन में निम्नलिखित विधियाँ हो सकती हैं:
- नाम - टोकन का नाम लौटाता है (उदाहरण के लिए बिनेंस कॉइन)
- प्रतीक - टोकन का प्रतीक लौटाता है (जैसे बीएनबी)
- दशमलव स्थान - टोकन द्वारा उपयोग किए गए दशमलव स्थानों की संख्या लौटाता है
- totalSupply - टोकन का संपूर्ण आरंभिक स्टॉक लौटाता है
- BalanceOf - खाते का शेष लौटाता है
- स्थानांतरण - एक निश्चित मात्रा में टोकन को एक पते पर स्थानांतरित करें
- ट्रांसफरफ्रॉम - प्राप्तकर्ता पते से प्राप्तकर्ता पते पर एक निश्चित संख्या में टोकन स्थानांतरित करता है
- स्वीकृत - मालिक के पते से एक निश्चित संख्या तक टोकन वापस ले लें
- छूट - टोकन की वह राशि लौटाता है जिसे स्वामी के खाते से निकाला जा सकता है
सिग्नल भेजे जाने पर समय पर कब्जा करने के लिए घटनाओं को टोकन पर भी पंजीकृत किया जा सकता है। ERC-20 टोकन में निम्नलिखित घटनाएँ हैं:
ईवेंट स्थानांतरण (पता _से अनुक्रमित, पता _से अनुक्रमित, uint256 _मान)
ईवेंट अनुमोदन (पता अनुक्रमित _स्वामी, पता अनुक्रमित _स्पेंडर, uint256 _मान)
- स्थानांतरण - टोकन स्थानांतरित करते समय सक्रिय किया गया
- अनुमोदन - तब सक्रिय होता है जब खाते को एक निश्चित संख्या में टोकन प्राप्त करने की मंजूरी मिल जाती है
ईआरसी 20 टोकन जेनरेट करें
इस अनुभाग को समझना आसान बनाने के लिए, लेख दिखाता है कि एक साधारण टोकन कैसे लिखें और इसे एनडी कॉइन कैसे कहें।
// एसपीडीएक्स-लाइसेंस-पहचानकर्ता: जीपीएल-3.0
व्यावहारिक दृढ़ता >=0.7.0 <0.9.0;
अनुबंध NDCoinERC20 {
घटना हस्तांतरण(पता अनुक्रमित से, पता अनुक्रमित, यूंट टोकन);
घटना अनुमोदन(पता अनुक्रमित टोकनस्वामी, पता अनुक्रमित व्ययकर्ता, यूंट टोकन);
स्ट्रिंग सार्वजनिक निरंतर नाम = "एनडी सिक्का";
स्ट्रिंग सार्वजनिक स्थिर प्रतीक = "एनडीएन";
uint8 सार्वजनिक स्थिर दशमलव = 18;
मानचित्रण(पता => uint256) शेष;
मानचित्रण(पता => मानचित्रण (पता => uint256)) की अनुमति दी;
uint256 कुल आपूर्ति_;
निर्माता(uint256 कुल) {
कुल आपूर्ति_ = कुल;
शेष[msg.प्रेषक] = कुल आपूर्ति_;
}
समारोह कुल मिलाकर() सार्वजनिक राय रिटर्न (uint256) {
वापसी कुल आपूर्ति_;
}
समारोह का संतुलन(पता टोकनस्वामी) सार्वजनिक राय रिटर्न (यूंट) {
वापसी शेष[टोकनस्वामी];
}
समारोह स्थानांतरण(पता प्राप्तकर्ता, यूंट numTokens) सार्वजनिक रिटर्न (bool) {
की आवश्यकता होती है(numTokens <= शेष[msg.प्रेषक]);
शेष[msg.प्रेषक] -= numTokens;
शेष[रिसीवर] += numTokens;
फेंकना हस्तांतरण(msg.प्रेषक, रिसीवर, numTokens);
वापसी <strong>उद्देश्य</strong>;
}
समारोह अनुमोदन करना(पता प्रतिनिधि, यूंट numTokens) सार्वजनिक रिटर्न (bool) {
अनुमति\[संदेश.प्रेषक\][प्रतिनिधि] = numTokens;
फेंकना अनुमोदन(msg.प्रेषक, प्रतिनिधि, numTokens);
वापसी <strong>उद्देश्य</strong>;
}
समारोह भत्ता(पता स्वामी, पता प्रतिनिधि) सार्वजनिक राय रिटर्न (यूंट) {
वापसी अनुमति\[स्वामी\][प्रतिनिधि];
}
समारोह इससे स्थानांतरित करें(पता स्वामी, खरीदार का पता, यूंट numTokens) सार्वजनिक रिटर्न (bool) {
की आवश्यकता होती है(numTokens <= शेष[मालिक]);
की आवश्यकता होती है(numTokens <= अनुमति\[स्वामी\][msg.प्रेषक]);
शेष[मालिक] -= numTokens;
अनुमति\[स्वामी\][msg.प्रेषक] -= numTokens;
शेष[खरीददार] += numTokens;
फेंकना हस्तांतरण(मालिक, खरीददार, numTokens);
वापसी <strong>उद्देश्य</strong>;
}
}