इथेरियम पर शून्य-ज्ञान प्रमाण के साथ गोपनीयता ऐप्स कैसे बनाएँ

इथेरियम डिज़ाइन के अनुसार पूरी तरह से सार्वजनिक है। हर पता, बैलेंस, लेन-देन, अनुबंध कॉल, और घटनाएँ ब्लॉक एक्सप्लोरर वाले किसी भी व्यक्ति को दिखाई देती हैं। जब आप सत्यापन चाहते हैं तो वह पारदर्शिता उपयोगी होती है। यह एक समस्या बन जाती है जब उपयोगकर्ताओं को हर कार्रवाई को उसी वॉलेट से जोड़े बिना वोट करने, दावा करने, निकासी करने, या सदस्यता साबित करने की आवश्यकता होती है।
अनाम सदस्यता वह पुन: प्रयोज्य पैटर्न है जो इथेरियम पर गोपनीयता ऐप्स के एक बड़े वर्ग को शक्ति प्रदान करता है। लोग पहले पंजीकरण करते हैं, फिर बाद में यह साबित करते हैं कि वे समूह से संबंधित हैं, बिना यह बताए कि वे कौन से सदस्य हैं। एक शून्य-ज्ञान प्रमाण पंजीकरण वॉलेट और कार्य करने वाले वॉलेट के बीच का सेतु है, और यह सेतु यह उजागर नहीं करता कि इसे किसने पार किया।
आस-पास का उत्पाद बदल जाता है, लेकिन गोपनीयता का ढांचा वही रहता है।
पैटर्न, अनाम वोटिंग के माध्यम से समझाया गया
इस पैटर्न के तीन हिस्से हैं। एक प्रतिबद्धता प्रत्येक सदस्य को पंजीकृत करती है। एक मर्कल ट्री उन प्रतिबद्धताओं को एक भीड़ में बदल देता है। एक प्रमाण और एक नलिफायर एक सदस्य को यह बताए बिना एक बार कार्य करने देते हैं कि किस सदस्य ने कार्य किया।
पहला कदम: पंजीकरण
प्रत्येक मतदाता ऑफचेन दो निजी मान बनाता है, गुप्त और नलिफायर। मतदाता उन मानों को एक सार्वजनिक प्रतिबद्धता में हैश करता है, फिर उस प्रतिबद्धता को ऑनचेन पंजीकृत करता है।
प्रतिबद्धता सार्वजनिक पंजीकरण रिकॉर्ड है। गुप्त और नलिफायर वह निजी नोट हैं जिनकी मतदाता को बाद में आवश्यकता होती है। नोट खो जाने पर मतदाता सदस्यता साबित नहीं कर सकता। इसके लीक होने पर कोई और उपयोगकर्ता की जगह वोट कर सकता है।
क्योंकि प्रतिबद्धता एक हैश है, पर्यवेक्षक इसके अंदर के निजी मानों को पुनर्प्राप्त नहीं कर सकते हैं। प्रतिबद्धता यह बताती है कि "किसी ने पंजीकरण किया है" बिना यह बताए कि बाद में उस पंजीकरण का उपयोग कौन करेगा।
दूसरा कदम: भीड़ बनाना
जैसे-जैसे अधिक मतदाता पंजीकरण करते हैं, ऐप उनकी प्रतिबद्धताओं को एक मर्कल ट्री में एकत्र करता है। एक मर्कल ट्री मानों की एक लंबी सूची को एक ही हैश में संकुचित करता है, जिसे रूट कहा जाता है। सूची में कोई भी मान बदलें और हैश बदल जाता है, इसलिए रूट पूरे सेट के छेड़छाड़-स्पष्ट सारांश के रूप में कार्य करता है।
वह ट्री आपका अनामिकता समूह है। यदि ट्री में 10 उपयोगकर्ता हैं, तो एक पर्यवेक्षक बाद की कार्रवाई को उन 10 में से एक तक सीमित कर सकता है। यदि ट्री में 10000 उपयोगकर्ता हैं, तो कार्रवाई को एक व्यक्ति से जोड़ना बहुत कठिन है। एक छोटे अनामिकता समूह वाला एक निजी ऐप आमतौर पर बहुत निजी नहीं होता है, भले ही क्रिप्टोग्राफी सही हो।
तीसरा कदम: गुमनाम रूप से कार्य करना
जब पोल खुलता है, तो मतदाता को उसी वॉलेट से वोट नहीं करना चाहिए जिसने प्रतिबद्धता दर्ज की थी। पंजीकरण वॉलेट से वोट करने पर वोट सीधे पंजीकरणकर्ता से जुड़ जाएगा और गोपनीयता का काम पूर्ववत हो जाएगा। इसके बजाय, मतदाता एक शून्य-ज्ञान प्रमाण बनाता है। कथन को एक सर्किट के रूप में एन्कोड किया गया है जो कहता है, "मुझे निजी मान पता हैं जो एक पंजीकृत प्रतिबद्धता उत्पन्न करते हैं, और मैं इस पोल के लिए सही नलिफायर हैश प्रकट कर रहा हूँ।"
प्रमाण सत्यापनकर्ता अनुबंध को आश्वस्त करता है कि कथन सत्य है। यह गुप्त, नलिफायर, या किस प्रतिबद्धता का उपयोग किया गया था, इसका खुलासा नहीं करता है।
नलिफायर वह है जो दोहरे वोट को रोकता है। प्रमाण के साथ, मतदाता एक नलिफायर हैश प्रकाशित करता है। वोटिंग अनुबंध वोट स्वीकार करने के बाद उस हैश को संग्रहीत करता है। यदि उसी पोल के लिए उसी निजी नोट का फिर से उपयोग किया जाता है, तो यह वही नलिफायर हैश उत्पन्न करता है, और अनुबंध दूसरे वोट को अस्वीकार कर देता है। प्रमाण के साथ मिलकर, यह अनुबंध को केवल यह जानने देता है कि किसी पंजीकृत मतदाता ने एक बार कार्य किया, यह नहीं कि किसने।
पुन: प्रयोज्य गेट
वही प्रमाण-और-नलिफायर जोड़ी वोटिंग से परे काम करती है। वोटिंग की कहानी को हटा दें और आपके पास जो बचता है वह स्मार्ट अनुबंध कार्यों के लिए एक गोपनीयता गेट है।
फ़ंक्शन के चलने से पहले, अनुबंध मर्कल रूट की जाँच करता है, प्रमाण को सत्यापित करता है, पुष्टि करता है कि नलिफायर हैश का उपयोग नहीं किया गया है, और सार्वजनिक इनपुट को सही ऐप, चेन, पोल, दावा, या निकासी से बांधता है। यदि वे जाँच पास हो जाती हैं, तो यह नलिफायर को उपयोग किए गए के रूप में चिह्नित करता है और बाकी फ़ंक्शन चलाता है।
उस गेट को वोट के सामने रखें और आपको अनाम वोटिंग मिलती है। इसे एयरड्रॉप दावे के सामने रखें और आपको अनाम दावे मिलते हैं। इसे निकासी फ़ंक्शन के सामने रखें और आपको मिक्सर-शैली निकासी प्रवाह का मूल मिलता है। वही प्रतिबद्धता ट्री, वही नलिफायर विचार, वही प्रमाण पैटर्न। जो बदलता है वह फ़ंक्शन बॉडी और आस-पास का ऐप लॉजिक है।
क्या कहाँ चलता है
निजी काम आमतौर पर ऑफचेन होता है। उपयोगकर्ता नोट को संग्रहीत करता है, और एक क्लाइंट ऐप साक्षी बनाता है और प्रमाण उत्पन्न करने के लिए प्रमाणक चलाता है। एक इंडेक्सर प्रतिबद्धताओं और मर्कल रूट को ट्रैक करता है। एक बंडलर उपयोगकर्ता संचालन (UserOperation) को ऑनचेन प्रसारित करता है और एक ERC-4337 पेमास्टर गैस को प्रायोजित करता है, ताकि एक नए वॉलेट को पहले उपयोगकर्ता के ज्ञात वॉलेट से ETH की आवश्यकता न हो।
सार्वजनिक प्रवर्तन ऑनचेन होता है। सत्यापनकर्ता अनुबंध प्रमाण की जाँच करता है। ऐप अनुबंध वैध रूट और अप्रयुक्त नलिफायर की जाँच करता है, नलिफायर हैश को संग्रहीत करता है, और सार्वजनिक कार्रवाई चलाता है।
संवेदनशील UX नोट हैंडलिंग है। गुप्त और नलिफायर को कुंजी की तरह मानें। उन्हें एनालिटिक्स, लॉग, URL, त्रुटि रिपोर्ट, या सामान्य सर्वर-साइड टेलीमेट्री में न डालें। एक बार नोट लीक हो जाने पर, गोपनीयता समाप्त हो जाती है, चाहे प्रमाण कितना भी मजबूत क्यों न हो।
टूलिंग ने पकड़ बना ली है
आपको अंतर्निहित क्रिप्टोग्राफी को हाथ से कोड करने की आवश्यकता नहीं है। एक सामान्य तरीका यह है कि सर्किट को उच्च-स्तरीय शून्य-ज्ञान भाषा में लिखा जाए, एक Solidity सत्यापनकर्ता उत्पन्न किया जाए, और उस सत्यापनकर्ता को ऐप अनुबंध से कॉल किया जाए।
सही स्टैक काम पर निर्भर करता है। snarkjs के साथ Circom ऐप-स्तरीय सर्किट के लिए एक लंबे समय से स्थापित मार्ग है। Barretenberg के साथ Noir एक नया डेवलपर-अनुकूल मार्ग है। Halo2 और gnark निचले स्तर की सर्किट लाइब्रेरी हैं। RISC Zero या SP1 जैसे zkVM सामान्य प्रोग्राम साबित करते हैं, लेकिन एक छोटे कस्टम सर्किट की तुलना में साबित करने के लिए अधिक महंगे हो सकते हैं।
अनाम सदस्यता के लिए, अपना खुद का सर्किट लिखने से पहले एक मौजूदा प्रोटोकॉल का उपयोग करें। Semaphore समूह सदस्यता और नलिफायर-आधारित दोहरे उपयोग की रोकथाम को अनुबंधों और JavaScript लाइब्रेरी में पैकेज करता है। निजी वोटिंग और शासन के लिए, MACI विशेष मार्ग है क्योंकि यह मिलीभगत-विरोधी गुण जोड़ता है। परिपक्व प्रोटोकॉल अक्सर नए सर्किट की तुलना में अधिक सुरक्षित होते हैं।
प्रमाण पर्याप्त नहीं है
यदि वॉलेट प्रवाह लिंक को लीक करता है तो एक आदर्श प्रमाण भी विफल हो जाता है। वॉलेट A से पंजीकरण करें और बाद में वॉलेट A से कार्य करें, और देखने वाला कोई भी व्यक्ति लेन-देन को जोड़ सकता है। कार्य करने से ठीक पहले वॉलेट A से वॉलेट B को फंड करें, और वह फंडिंग लेन-देन वही समस्या पैदा करता है।
यही कारण है कि बंडलर और पेमास्टर मायने रखते हैं। कार्य करने वाला वॉलेट नया होना चाहिए, और इसे उस वॉलेट से ETH प्राप्त करने की आवश्यकता नहीं होनी चाहिए जिसे उपयोगकर्ता कार्रवाई से अलग करने का प्रयास कर रहा है।
यही समस्या ऑफचेन भी मौजूद है। एक ही IP पते, RPC प्रदाता, या सत्र से पंजीकरण और कार्रवाई लेन-देन सबमिट करने से सर्किट द्वारा प्रदान की जाने वाली गोपनीयता कमजोर हो सकती है। फ्रंटएंड एनालिटिक्स, स्थानीय स्टोरेज और सपोर्ट लॉग के माध्यम से लीक कर सकते हैं। एक शून्य-ज्ञान प्रमाण प्रमाण के अंदर के मानों को छुपाता है। यह लेन-देन के आस-पास की हर चीज को नहीं छुपाता है।
सार्वजनिक इनपुट एक और जगह है जहाँ गोपनीयता ऐप्स विफल होते हैं। सर्किट में सार्वजनिक रूप से चिह्नित, एक घटना के रूप में उत्सर्जित, कॉल डेटा में शामिल, या अनुबंध द्वारा संग्रहीत कुछ भी दिखाई देता है। सार्वजनिक इनपुट की समीक्षा उतनी ही सावधानी से करें जितनी Solidity अनुबंध पर एक्सेस कंट्रोल की।
यह बिल्डरों के लिए क्या बदलता है
इथेरियम पर गोपनीयता लागू करने योग्य है। बिल्डर टुकड़ों को वास्तविक अनुप्रयोगों में जोड़ सकते हैं। स्टैक निजी कथन के लिए एक सर्किट, प्रमाण जाँच के लिए एक सत्यापनकर्ता, सार्वजनिक नियमों के लिए एक ऐप अनुबंध, मर्कल डेटा के लिए एक इंडेक्सर, और अनलिंक करने योग्य सबमिशन और गैस प्रायोजन के लिए एक बंडलर प्लस पेमास्टर है।
कठिन हिस्से उत्पाद डिज़ाइन, कुंजी प्रबंधन, मेटाडेटा स्वच्छता, ऑडिट और अनामिकता समूह को बढ़ाना हैं। इनमें से किसी को भी गलत करें और प्रमाण द्वारा दी गई गोपनीयता समाप्त हो जाती है।
आगे की पढ़ाई
- शून्य-ज्ञान प्रमाण (ethereum.org) (opens in a new tab)
- Semaphore दस्तावेज़ (opens in a new tab)
- MACI दस्तावेज़ (opens in a new tab)
- Circom दस्तावेज़ (opens in a new tab)
- Noir दस्तावेज़ (opens in a new tab)
- Halo2 बुक (opens in a new tab)
- gnark दस्तावेज़ (opens in a new tab)
- RISC Zero दस्तावेज़ (opens in a new tab)
- SP1 दस्तावेज़ (opens in a new tab)
- EIP-4337: एंट्रीपॉइंट अनुबंध के माध्यम से खाता अमूर्तन (opens in a new tab)
पेज का अंतिम अपडेट: 28 मई 2026