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

शून्य-ज्ञान पुराव्यांसह इथेरियमवर गोपनीयता ॲप्स कसे तयार करावे

शून्य-ज्ञान पुरावे
गोपनीयता
फिलिप क्राऊस
EF Builder Growth
12 मे, 2026
6 मिनिट वाचन

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

अनामिक सदस्यत्व हा एक पुनर्वापर करण्यायोग्य पॅटर्न आहे जो इथेरियमवरील गोपनीयता ॲप्सच्या मोठ्या वर्गाला चालना देतो. लोक प्रथम नोंदणी करतात, नंतर ते कोणते सदस्य आहेत हे उघड न करता ते गटाचे असल्याचे सिद्ध करतात. शून्य-ज्ञान पुरावा हा नोंदणी वॉलेट आणि कृती करणाऱ्या वॉलेटमधील सेतू आहे आणि हा सेतू कोणी ओलांडला हे उघड करत नाही.

आजूबाजूचे उत्पादन बदलते, परंतु गोपनीयतेचा सांगाडा तसाच राहतो.

अनामिक मतदानाद्वारे स्पष्ट केलेला पॅटर्न

या पॅटर्नचे तीन भाग आहेत. एक बांधिलकी प्रत्येक सदस्याची नोंदणी करते. एक मर्कल ट्री त्या बांधिलकींना गर्दीत बदलते. एक पुरावा आणि एक नलिफायर (nullifier) एका सदस्याला कोणता सदस्य कृती करत आहे हे उघड न करता एकदा कृती करू देतात.

पहिली पायरी: नोंदणी करणे

प्रत्येक मतदार साखळीबाह्य दोन खाजगी मूल्ये तयार करतो, एक गुपित (secret) आणि नलिफायर. मतदार त्या मूल्यांना एका सार्वजनिक बांधिलकीमध्ये हॅश करतो, नंतर ती बांधिलकी ऑनचेन नोंदवतो.

बांधिलकी हा सार्वजनिक नोंदणी रेकॉर्ड आहे. गुपित आणि नलिफायर ही खाजगी नोंद (note) आहे जी मतदाराला नंतर आवश्यक असते. नोंद गमावल्यास मतदार सदस्यत्व सिद्ध करू शकत नाही. ती लीक झाल्यास वापरकर्त्याच्या जागी दुसरे कोणीतरी मत देऊ शकते.

बांधिलकी ही एक हॅश असल्यामुळे, निरीक्षक त्यातील खाजगी मूल्ये पुनर्प्राप्त करू शकत नाहीत. बांधिलकी "कोणीतरी नोंदणी केली" असे सांगते, परंतु ती नोंदणी नंतर कोण वापरेल हे उघड करत नाही.

दुसरी पायरी: गर्दी तयार करणे

जसजसे अधिक मतदार नोंदणी करतात, तसतसे ॲप त्यांच्या बांधिलकी एका मर्कल ट्रीमध्ये गोळा करते. मर्कल ट्री मूल्यांच्या एका लांबलचक सूचीला एकाच हॅशमध्ये संकुचित करते, ज्याला रूट म्हणतात. सूचीमधील कोणतेही मूल्य बदलल्यास हॅश बदलते, त्यामुळे रूट संपूर्ण संचाचा छेडछाड-स्पष्ट (tamper-evident) सारांश म्हणून कार्य करते.

ती ट्री तुमचा अनामिकत्व संच आहे. जर ट्रीमध्ये 10 वापरकर्ते असतील, तर निरीक्षक नंतरच्या कृतीला त्या 10 पैकी एकापर्यंत मर्यादित करू शकतो. जर ट्रीमध्ये 10,000 वापरकर्ते असतील, तर कृती एका व्यक्तीशी जोडणे खूप कठीण असते. अगदी लहान अनामिकत्व संच असलेले खाजगी ॲप सहसा फारसे खाजगी नसते, जरी गूढलेखन योग्य असले तरीही.

तिसरी पायरी: अनामिकपणे कृती करणे

जेव्हा मतदान सुरू होते, तेव्हा मतदाराने बांधिलकी नोंदवलेल्या त्याच वॉलेटमधून मत देऊ नये. नोंदणी वॉलेटमधून मत दिल्यास मत थेट नोंदणीकर्त्याशी जोडले जाईल आणि गोपनीयतेचे काम व्यर्थ ठरेल. त्याऐवजी, मतदार एक शून्य-ज्ञान पुरावा तयार करतो. हे विधान एका सर्किटच्या रूपात एन्कोड केलेले असते जे सांगते, "मला खाजगी मूल्ये माहित आहेत जी नोंदणीकृत बांधिलकी तयार करतात आणि मी या मतदानासाठी योग्य नलिफायर हॅश उघड करत आहे."

हा पुरावा पडताळणीकर्ता कॉन्ट्रॅक्टला खात्री देतो की विधान सत्य आहे. तो गुपित, नलिफायर किंवा कोणती बांधिलकी वापरली गेली हे उघड करत नाही.

नलिफायर दुहेरी मतदानाला प्रतिबंध करतो. पुराव्यासोबत, मतदार एक नलिफायर हॅश प्रकाशित करतो. मत स्वीकारल्यानंतर मतदान कॉन्ट्रॅक्ट ती हॅश साठवून ठेवते. जर त्याच मतदानासाठी तीच खाजगी नोंद पुन्हा वापरली गेली, तर तीच नलिफायर हॅश तयार होते आणि कॉन्ट्रॅक्ट दुसरे मत नाकारते. पुराव्यासोबत एकत्रित केल्यावर, यामुळे कॉन्ट्रॅक्टला फक्त एवढेच समजते की कोणत्यातरी नोंदणीकृत मतदाराने एकदा कृती केली आहे, परंतु कोणी केली हे समजत नाही.

पुनर्वापर करण्यायोग्य गेट

तीच पुरावा-आणि-नलिफायर जोडी मतदानाच्या पलीकडेही काम करते. मतदानाची कथा बाजूला काढल्यास तुमच्याकडे स्मार्ट कॉन्ट्रॅक्ट फंक्शन्ससाठी एक गोपनीयता गेट उरते.

फंक्शन चालण्यापूर्वी, कॉन्ट्रॅक्ट मर्कल रूट तपासते, पुराव्याची पडताळणी करते, नलिफायर हॅश वापरली गेली नसल्याची पुष्टी करते आणि सार्वजनिक इनपुट्सना योग्य ॲप, चेन, मतदान, दावा किंवा रक्कम काढणे याच्याशी जोडते. जर या तपासण्या यशस्वी झाल्या, तर ते नलिफायरला वापरलेले म्हणून चिन्हांकित करते आणि उर्वरित फंक्शन चालवते.

ते गेट मतदानाच्या समोर ठेवा आणि तुम्हाला अनामिक मतदान मिळेल. ते एअरड्रॉप दाव्याच्या समोर ठेवा आणि तुम्हाला अनामिक दावे मिळतील. ते रक्कम काढण्याच्या फंक्शनसमोर ठेवा आणि तुम्हाला मिक्सर-शैलीतील रक्कम काढण्याच्या प्रवाहाचा गाभा मिळेल. तीच बांधिलकी ट्री, तीच नलिफायर कल्पना, तोच पुरावा पॅटर्न. जे बदलते ते म्हणजे फंक्शन बॉडी आणि आजूबाजूचे ॲप लॉजिक.

काय कुठे चालते

खाजगी काम सहसा साखळीबाह्य होते. वापरकर्ता नोंद साठवतो आणि क्लायंट ॲप साक्ष तयार करते आणि पुरावा तयार करण्यासाठी सिद्धकर्ता चालवते. एक इंडेक्सर बांधिलकी आणि मर्कल रूट्सचा मागोवा घेतो. एक बंडलर वापरकर्ता कार्य (UserOperation) ऑनचेन प्रसारित करतो आणि एक ERC-4337 पेमास्टर गॅस प्रायोजित करतो, जेणेकरून नवीन वॉलेटला प्रथम वापरकर्त्याच्या ज्ञात वॉलेटमधून ETH ची आवश्यकता नसते.

सार्वजनिक अंमलबजावणी ऑनचेन होते. पडताळणीकर्ता कॉन्ट्रॅक्ट पुराव्याची तपासणी करते. ॲप कॉन्ट्रॅक्ट वैध रूट्स आणि न वापरलेले नलिफायर्स तपासते, नलिफायर हॅश साठवते आणि सार्वजनिक कृती चालवते.

संवेदनशील UX म्हणजे नोंद हाताळणे. गुपित आणि नलिफायरला की प्रमाणे वागवा. त्यांना ॲनालिटिक्स, लॉग्स, URLs, त्रुटी अहवाल किंवा सामान्य सर्व्हर-साइड टेलिमेट्रीमध्ये टाकू नका. एकदा नोंद लीक झाली की, पुरावा कितीही मजबूत असला तरी गोपनीयता नष्ट होते.

टूलिंगने वेग पकडला आहे

तुम्हाला अंतर्निहित गूढलेखन हाताने कोड करण्याची आवश्यकता नाही. एक सामान्य मार्ग म्हणजे उच्च-स्तरीय झिरो-नॉलेज भाषेत सर्किट लिहिणे, एक Solidity पडताळणीकर्ता तयार करणे आणि ॲप कॉन्ट्रॅक्टमधून त्या पडताळणीकर्त्याला कॉल करणे.

योग्य स्टॅक कामावर अवलंबून असतो. snarkjs सह Circom हा ॲप-स्तरीय सर्किट्ससाठी एक प्रस्थापित मार्ग आहे. Barretenberg सह Noir हा एक नवीन विकसक-अनुकूल मार्ग आहे. Halo2 आणि gnark या निम्न-स्तरीय सर्किट लायब्ररी आहेत. RISC Zero किंवा SP1 सारखे zkVMs सामान्य प्रोग्राम्स सिद्ध करतात, परंतु लहान कस्टम सर्किटपेक्षा ते सिद्ध करणे अधिक महाग असू शकते.

अनामिक सदस्यत्वासाठी, तुमचे स्वतःचे सर्किट लिहिण्यापूर्वी विद्यमान प्रोटोकॉलचा वापर करा. Semaphore गट सदस्यत्व आणि नलिफायर-आधारित दुहेरी-वापर प्रतिबंधाला कॉन्ट्रॅक्ट्स आणि JavaScript लायब्ररीमध्ये पॅकेज करते. खाजगी मतदान आणि प्रशासनासाठी, MACI हा एक विशेष मार्ग आहे कारण तो संगनमत-विरोधी (anti-collusion) गुणधर्म जोडतो. परिपक्व प्रोटोकॉल अनेकदा नवीन सर्किट्सपेक्षा अधिक सुरक्षित असतात.

पुरावा पुरेसा नाही

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

म्हणूनच बंडलर आणि पेमास्टर महत्त्वाचे आहेत. कृती करणारे वॉलेट नवीन असावे आणि वापरकर्ता ज्या वॉलेटला कृतीपासून वेगळे ठेवण्याचा प्रयत्न करत आहे त्या वॉलेटमधून त्याला ETH मिळण्याची आवश्यकता नसावी.

तीच समस्या साखळीबाह्य देखील अस्तित्वात आहे. एकाच IP पत्त्यावरून, RPC प्रदात्यावरून किंवा सत्रावरून नोंदणी आणि कृती व्यवहार सबमिट केल्याने सर्किटद्वारे प्रदान केलेली गोपनीयता कमकुवत होऊ शकते. फ्रंटएंड्स ॲनालिटिक्स, स्थानिक स्टोरेज आणि सपोर्ट लॉग्सद्वारे लीक करू शकतात. शून्य-ज्ञान पुरावा पुराव्याच्या आतील मूल्ये लपवतो. तो व्यवहाराच्या आजूबाजूचे सर्व काही लपवत नाही.

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

यामुळे बिल्डर्ससाठी काय बदलते

इथेरियमवरील गोपनीयता वितरित करण्यायोग्य (shippable) आहे. बिल्डर्स या भागांना एकत्र करून वास्तविक ॲप्लिकेशन्स बनवू शकतात. स्टॅकमध्ये खाजगी विधानासाठी एक सर्किट, पुरावा तपासणीसाठी एक पडताळणीकर्ता, सार्वजनिक नियमांसाठी एक ॲप कॉन्ट्रॅक्ट, मर्कल डेटासाठी एक इंडेक्सर आणि लिंक न करता येण्याजोगे सबमिशन आणि गॅस प्रायोजकत्वासाठी एक बंडलर तसेच पेमास्टर यांचा समावेश असतो.

कठीण भाग म्हणजे उत्पादन डिझाइन, की व्यवस्थापन, मेटाडेटा स्वच्छता, ऑडिट्स आणि अनामिकत्व संच वाढवणे. यापैकी काहीही चुकीचे झाल्यास पुराव्याने दिलेली गोपनीयता नष्ट होते.

पुढील वाचन

  1. शून्य-ज्ञान पुरावे (ethereum.org) (opens in a new tab)
  2. Semaphore दस्तऐवजीकरण (opens in a new tab)
  3. MACI दस्तऐवजीकरण (opens in a new tab)
  4. Circom दस्तऐवजीकरण (opens in a new tab)
  5. Noir दस्तऐवजीकरण (opens in a new tab)
  6. Halo2 पुस्तक (opens in a new tab)
  7. gnark दस्तऐवजीकरण (opens in a new tab)
  8. RISC Zero दस्तऐवजीकरण (opens in a new tab)
  9. SP1 दस्तऐवजीकरण (opens in a new tab)
  10. EIP-4337: एंट्रीपॉइंट कॉन्ट्रॅक्टद्वारे खाते अमूर्तीकरण (opens in a new tab)

पृष्ठ शेवटचे अपडेट: 28 मे, 2026

हे पृष्ठ उपयुक्त होते का?