Algorand के Smart ASA v2 में टोकन का फ्रीज़ अब ऐसी जगह जाता है जहाँ से धारक उसे हटा नहीं सकता
ARC-20 Algorand टोकन के नियमों को एक स्मार्ट कॉन्ट्रैक्ट में रखता है। 23 अक्टूबर को जारी इसका v2.0.0 संदर्भ कार्यान्वयन खातों के फ्रीज़ को उन बॉक्स में रखता है जिनका स्वामी कॉन्ट्रैक्ट है, जिससे धारक की लॉक राशि घटकर 0.1 ALGO रह जाती है। रिलीज़ में कहा गया है कि कोड का ऑडिट नहीं हुआ है और इसे अपग्रेड नहीं किया जा सकता।

अब किसी टोकन को उसके धारक के पास एक भी यूनिट होने से पहले ही फ्रीज़ किया जा सकता है, और धारक के चले जाने के बाद भी वह फ्रीज़ बना रहता है। यही बदलाव Smart ASA v2 में है, जो Algorand के ARC-20 मानक का नया संदर्भ कार्यान्वयन है और 23 अक्टूबर को प्रकाशित हुआ।
बीच में कॉन्ट्रैक्ट वाला टोकन
ASA Algorand का मूल टोकन है। इसे एक ही लेनदेन में बनाया जाता है और ऑप्ट-इन करके रखा जाता है। इसका नाम, यूनिट, दशमलव और अधिकतम आपूर्ति निर्माण के समय तय हो जाते हैं। इसकी चार भूमिकाएँ पतों पर टिकी होती हैं, और दो धारकों के बीच होने वाले हस्तांतरण पर जारीकर्ता के अपने नियम को लागू करने के लिए कोई हुक नहीं है।
किसी नियम को लागू कराने का पुराना तरीका यह था कि एसेट को फ्रीज़ करके यूनिट को clawback के ज़रिए भेजा जाए, जो धारक को ऐसा लगता है जैसे हस्तांतरण की जगह ज़ब्ती हो गई हो। ARC-20 मूल टोकन को बनाए रखता है और चारों भूमिकाएँ एक कॉन्ट्रैक्ट को सौंप देता है। एसेट डिफ़ॉल्ट रूप से फ्रीज़ करके बनाया जाता है, इसलिए यूनिट धारक तक सिर्फ़ कॉन्ट्रैक्ट के ज़रिए पहुँचती हैं और हर गतिविधि की पहले जाँच होती है।
इससे ARC-20, Algorand के दूसरे कॉन्ट्रैक्ट-टोकन मानक ARC-2001 का उल्टा रूप बन जाता है, जहाँ टोकन ही कॉन्ट्रैक्ट होता है और बैलेंस व अनुमोदन के मामले में Ethereum टोकन की तरह व्यवहार करता है। ARC-20 एसेट को मूल रूप में रखता है, इसलिए वॉलेट और एक्सचेंज उसे किसी भी अन्य टोकन की तरह रखते हैं, और नियमों की किताब उसके ऊपर बैठा दी जाती है।
संस्करण 2 में क्या बदला
खातों के फ्रीज़ अब धारक के अपने स्टोरेज से निकलकर कॉन्ट्रैक्ट के स्वामित्व वाले खाली बॉक्स में चले गए हैं। पुराने डिज़ाइन में यह फ़्लैग खाते की लोकल स्टेट में रहता था और धारक उसे हटा सकता था। विनिर्देश2 में अब कहा गया है कि बॉक्स में रखी स्टेट को धारक मिटा नहीं सकता, और धारकों को कॉन्ट्रैक्ट में ऑप्ट-इन करने की ज़रूरत ही नहीं। उनकी लॉक राशि 0.2285 से घटकर 0.13 ALGO रह जाती है।
कुछ सीमाएँ अब भी हैं। किसी पते पर उसके पास कुछ होने से पहले भी फ्रीज़ लगाया जा सकता है, जो प्रतिबंध सूची के लिए ज़रूरी है, और धारक के जाने और लौटने पर भी वह बना रहता है। किसी खाते पर पहला फ्रीज़ एक बॉक्स बनाता है। इसके लिए 0.01574 ALGO की जमा राशि कॉन्ट्रैक्ट को फ्रीज़ कॉल से ठीक पहले दी जाती है और खाते के डिफ़ॉल्ट हाल में लौटने पर वापस मिल जाती है।
इससे जो मिलता है वह सीमित पर ठोस है: जारीकर्ता ऐसे धारक के खिलाफ़ नियम थामे रख सकता है जो सहयोग नहीं करता, जबकि आपूर्ति की सीमा और भुगतान का तर्क सार्वजनिक स्टेट में रहते हैं जिन्हें कोई भी पढ़ सकता है। यह कितना उपयोगी है, यह इस पर निर्भर है कि आप फ्रीज़ के किस पक्ष में खड़े हैं।
बाकी चीज़ें काम की हैं, पर हल्की नहीं। तीन दिन पहले प्रकाशित पिछले संस्करण में एसेट और खाते के आर्ग्युमेंट सादे पूर्णांकों और पतों के रूप में एन्कोड किए गए थे, इसलिए 'इसके मेथड सेलेक्टर ARC-20 इंटरफ़ेस से मेल नहीं खाते थे5'। संस्करण 2 मानक के अपने टाइप इस्तेमाल करता है और क्लाइंट से उन्हें फिर से जनरेट करने को कहता है। अब विफल कॉल ARC-65 त्रुटि कोड दर्ज करते हैं, जिससे वॉलेट असर्शन संदेश दिखाने की जगह कारण बता सकता है। दो एक्सटेंशन बिंदु जारीकर्ता को सामान्य हस्तांतरणों में जाँच जोड़ने और प्रचलित आपूर्ति तय करने देते हैं, जिसका एक सीमित उदाहरण रिपॉज़िटरी में मौजूद है।
फ्रीज़ परतों में हैं। वैश्विक फ्रीज़ हस्तांतरण रोकता है और खाता फ्रीज़ एक धारक को रोकता है; रिलीज़ नोट्स कहते हैं कि clawback को इनमें से कोई नहीं रोकता, और एक-एक पते पर रखी भूमिकाएँ अपने-अपने नियमों से काम करती हैं।
इस्तेमाल के लिए क्या चाहिए
इसे तैनात करने का मतलब है एक कॉन्ट्रैक्ट तैनात करना और एक एसेट बनाना, फिर हर क्रिया पर शुल्क देना। रिलीज़ की माइग्रेशन चेकलिस्ट में जारी करने, भुनाने, clawback, सामान्य हस्तांतरण और फ्रीज़ रीसेट का शुल्क न्यूनतम शुल्क का दोगुना बताया गया है। टोकन नष्ट करने पर उससे तीन गुना लगता है। हर फ्रीज़ किए गए खाते पर कॉन्ट्रैक्ट में 0.01576 ALGO की जमा राशि भी लॉक होती है, जो रीसेट पर वापस मिलती है।
विकास का रास्ता AlgoKit, Poetry और Docker में लोकल नेटवर्क से होकर जाता है, सब कुछ रिपॉज़िटरी7 से। कोई होस्टेड सेवा नहीं है और साइन अप करने के लिए कुछ नहीं है।
आम उपयोगकर्ता के लिए खोलने को भी कुछ नहीं है। रिलीज़ का TestNet वाला हिस्सा पाँच मानकों के प्रदर्शन का ज़िक्र करता है, पर किसी एप्लिकेशन या एसेट का नाम नहीं देता, जबकि तीन दिन पहले के पिछले संस्करण के नोट्स में नाम थे। डेवलपर कोड पढ़कर उसे लोकल में तैनात कर सकता है; जो पाठक चालू संस्करण 2 का टोकन ढूँढ़ रहा है, उसके पास जाने की कोई जगह नहीं है।
अधिक पूर्ण संस्करण ARC-89 मेटाडेटा रजिस्ट्री पर टिका है, जिसे उसके अपने अंगीकरण रिकॉर्ड में TestNet पर तैनात और MainNet पर तैनाती की प्रतीक्षा में बताया गया है। उस रजिस्ट्री की नवीनतम रिलीज़ खुद को MainNet तैनाती के लिए पहला रिलीज़ कैंडिडेट कहती है। जब तक वह तैनात नहीं होती, अधिक पूर्ण रूप TestNet का ही काम है।
इसे कौन बनाता है
ARC-20 विनिर्देश cusma8 नाम से पोस्ट करने वाले Cosimo Bassi ने लिखा। वही इस कार्यान्वयन का रखरखाव करते हैं और जिस मेटाडेटा रजिस्ट्री पर यह टिका है, वह भी उन्होंने लिखी। रिपॉज़िटरी Algorand Foundation के अधीन है, और उसकी रिलीज़ सूची पिछला संस्करण 20 अक्टूबर और यह संस्करण 23 अक्टूबर का बताती है। रिलीज़ के दिन उन्होंने जारीकर्ताओं, वॉलेट और एक्सप्लोरर से प्रतिक्रिया माँगी।
algorandlabs/smart-asa9 पर पहले का एक कार्यान्वयन 2022 से यही काम कर रहा था। वह टोकन को उसके कॉन्ट्रैक्ट से जोड़ने के लिए कॉन्ट्रैक्ट का नंबर टोकन के URL फ़ील्ड में लिखता था और हर धारक का फ्रीज़ फ़्लैग लोकल स्टेट में रखता था। संस्करण 2 उस व्यवस्था को बदल देता है, और चालू टोकन अब भी उसी पुरानी व्यवस्था का पालन करते हैं।
एकमात्र चालू उपयोगकर्ता
ARC-20 की अंगीकरण फ़ाइल में ठीक एक परियोजना, enel-ebitts, दर्ज है, जिसकी तैयारी निम्न आँकी गई है और वॉलेट, एक्सप्लोरर व टूलिंग वाले कॉलम खाली हैं। ebitts वह Enel और Conio सेवा है जो इतालवी घरों को दो नवीकरणीय संयंत्रों के उत्पादन से जुड़े टोकन बेचती है और उस उत्पादन का हिसाब बिजली के बिल में लगाती है; PXke ने अक्टूबर में इसके शुभारंभ को कवर किया था।
हर संयंत्र का अपना टोकन है जिसका नाम उसी पर रखा गया है: ebitts Barile Venosa, टिकर EBT-BVEN, और ebitts Piani della Marina, EBT-PDM।10 दोनों मई 2026 से Algorand मेननेट पर हैं।11 पवन टोकन की चारों भूमिकाएँ उस खाते पर हैं जिसका स्वामी उसका अपना कॉन्ट्रैक्ट है, किसी व्यक्ति की कुंजी पर नहीं, इसलिए हर गतिविधि उसी कॉन्ट्रैक्ट से होकर गुज़रती है। कॉन्ट्रैक्ट के भीतर वे चारों भूमिकाएँ एक ही वॉलेट को सौंपी गई हैं। टोकन अपने URL फ़ील्ड में पुरानी बाइंडिंग रखते हैं। उनके कॉन्ट्रैक्ट एक भुगतान एप्लिकेशन, एक इनाम टोकन और एक पहचान एप्लिकेशन की ओर भी इशारा करते हैं, जो इस रिलीज़ का कॉन्ट्रैक्ट नहीं करता। वे संस्करण 2 की नकल नहीं, बल्कि एक कस्टम बिल्ड के रूप में उसी इंटरफ़ेस का पालन करते हैं।
वे जीवित हैं। पवन टोकन के कॉन्ट्रैक्ट ने 4 मई से लगभग 37012 वॉलेट को करीब 1,83013 हस्तांतरण भेजे हैं, जिनमें से 47514 26 अक्टूबर तक के तीस दिनों में हुए, और सब एक ही पते से, यानी ये धारकों के बीच सौदे नहीं बल्कि कॉन्ट्रैक्ट से बाँटे गए वितरण हैं। दोनों में से कोई टोकन ट्रेड ही नहीं करता।
दोनों आपूर्तियों में से लगभग सारी अब भी एक ही वॉलेट के पास है। उसी ने दोनों कॉन्ट्रैक्ट बनाए। हर कॉन्ट्रैक्ट की संग्रहीत स्टेट उसे manager, reserve, freeze और clawback के रूप में नामित करती है। उसके पास पवन टोकन का करीब 97.715% और सौर टोकन का करीब 99.816% है।
अंगीकरण फ़ाइल का साक्ष्य लिंक उसी परिवार के किसी दूसरे टोकन को खोलता है, जिसका कॉन्ट्रैक्ट REWARD नाम का है और दो दशमलव संग्रहीत करता है, किसी भी संयंत्र वाले टोकन का नहीं। यह रिकॉर्ड दिखाता है कि परिवार मौजूद है; यह अपने आप यह नहीं दिखाता कि घरों के पास मौजूद यूनिट उससे मेल खाती हैं।
क्या-क्या गड़बड़ हो सकती है
रिलीज़ अपने बारे में दो बातें कहती है। यह तैनात करने वालों से नया कॉन्ट्रैक्ट शुरू करने को कहती है, क्योंकि पिछले संस्करण के एप्लिकेशन जगह पर अपग्रेड नहीं किए जा सकते। और कोड का ऑडिट नहीं हुआ है।
बाकी सब जारीकर्ता पर टिका है, और विनिर्देश यही कहता है। नियम तभी तक लागू रहते हैं जब तक टोकन डिफ़ॉल्ट रूप से फ्रीज़ रहे, उसका clawback पता कॉन्ट्रैक्ट के पास ही रहे, और उस कॉन्ट्रैक्ट को अपडेट, डिलीट या रीकी न किया जा सके। इसके संशोधित पाठ में दो रास्ते बताए गए हैं। एसेट का freeze पता होल्डिंग्स को अनफ्रीज़ कर सकता है, और उसका manager पता clawback बदल सकता है, जब तक कि इनमें से कोई कॉन्ट्रैक्ट पर सेट न हो या खाली न छोड़ा गया हो।
धारक को उसका अपना वॉलेट भी भ्रम में डाल सकता है। अंतर्निहित एसेट हमेशा शून्य दशमलव और एक प्लेसहोल्डर अधिकतम दिखाता है, चाहे जारीकर्ता ने कुछ भी कॉन्फ़िगर किया हो, और जो वॉलेट ARC-20 नहीं समझते वे असली कॉन्फ़िगरेशन की जगह यही दिखाते हैं।
कागज़ात भी खिसकते रहते हैं। रिपॉज़िटरी ने रिलीज़ के दिन अपना मेटाडेटा नियम must-be-immutable से should-be-immutable कर दिया, जबकि डेवलपर पोर्टल की प्रति अब भी must कहती है और फ्रीज़ स्टेट को धारक के लोकल स्टोरेज में बैठा बताती है। जो भी पोर्टल देखता है, वह उसी संस्करण को पढ़ता है जिसे यह रिलीज़ बदल चुकी है।
घोषणा पर एक जवाब में सीधे पूछा गया कि स्मार्ट ASA का कोई उपयोग क्या होगा। रिकॉर्ड पर एकमात्र काम करता उदाहरण इटली का बिजली बिल है, और वह भी पहले के बिल्ड पर चलता है।
स्रोत
- Release v2.0.0 · algorandfoundation/arc20 · GitHub17
- ARCs/ARCs/arc-0020.md at main · algorandfoundation/ARCs · GitHub2
- github.com7
- Releases · algorandfoundation/arc2018
- Algorand Smart Contract Token Specification | Algorand Developer Portal1
- GitHub - algorandlabs/smart-asa: Smart ASA reference implementation · GitHub9
- raw.githubusercontent.com19
इस कहानी के 11 आंकड़े जाँचे गए हैं। 3 सीधे चेन से पढ़े गए।हर जाँच देखें
स्रोत
- 1ARC-200 dev.algorand.co↩
- 2विनिर्देश github.com↩
- 7रिपॉज़िटरी github.com↩
- 8cusma github.com↩
- 9algorandlabs/smart-asa github.com↩
- 17Release v2.0.0 · algorandfoundation/arc20 · GitHub github.com↩
- 18Releases · algorandfoundation/arc20 github.com↩
- 19raw.githubusercontent.com/algorandfoundation/arc20/main/README.md raw.githubusercontent.com↩