परिचयइस थ्रेड में, मैं Ruben Somsen के एक दिलचस्प प्रस्ताव "Silent Payments" पर चर्चा करना चाहूँगा, जो गोपनीयता को बेहतर बनाने वाली एक तकनीक है. इसका उद्देश्य ब्लॉकचेन पर दो पक्षों के बीच होने वाले भुगतानों को किसी बाहरी पर्यवेक्षक के लिए कम पारदर्शी बनाना है. यह "stealth addresses" और "reusable payment codes" जैसी अवधारणाओं पर आधारित है और मूल रूप से उसी समस्या को अधिक प्रभावशाली तरीके से हल करने का प्रयास करती है.
मूल विचारमूल विचार इस प्रकार है:
उपयोगकर्ता A कोई
पहचानकर्ता (आमतौर पर एक सार्वजनिक कुंजी) प्रकाशित करता है, और
उपयोगकर्ता B अपनी निजी कुंजी को
A की प्रकाशित कुंजी के साथ मिलाकर एक विशिष्ट एड्रेस बनाता है, जिससे केवल
A ही पैसे खर्च कर सकता है.
उपयोगकर्ता C भी अपनी निजी कुंजी को
A के एक एड्रेस के साथ मिलाकर और एक अन्य विशिष्ट एड्रेस प्राप्त करके
उपयोगकर्ता A को पैसे भेज सकता है.
उपयोगकर्ता A को पता होगा कि
B और
C, दोनों ने उसे पैसे भेजे हैं, लेकिन
B और
C एक-दूसरे के बारे में नहीं जान पाएँगे. इसलिए, इससे
उपयोगकर्ता A केवल एक सार्वजनिक एड्रेस का उपयोग करके पूरी तरह से असंबद्ध एड्रेस पर भुगतान प्राप्त कर सकता है.
यह कैसे काम करता हैमान लीजिए Bob, Alice को एक साइलेंट पेमेंट भेजना चाहता है.
1) Alice मानक elliptic curve गणित का उपयोग करके एक विशिष्ट पहचानकर्ता (मान लीजिए, एक सार्वजनिक कुंजी) बनाती है:
A = a*G, जहाँ
A - Alice की सार्वजनिक कुंजी (elliptic curve पर एक बिंदु),
a - Alice की निजी कुंजी (एक यादृच्छिक संख्या, जिसे गुप्त रखा जाना चाहिए), और
G - जनरेटर बिंदु (elliptic curve पर एक पूर्वनिर्धारित बिंदु).
2) Alice इस पहचानकर्ता
A को सार्वजनिक कर देती है, ताकि Bob (और Carol जैसे अन्य उपयोगकर्ता भी) जान सकें कि भुगतान कहाँ भेजना है.
3) Bob अपने नियंत्रण वाले इनपुट में से एक चुनता है, जिसमें एक सार्वजनिक कुंजी होती है.
B = b*G, जहाँ
B - Bob की सार्वजनिक कुंजी (elliptic curve पर एक बिंदु),
b - Bob की निजी कुंजी (एक यादृच्छिक पूर्णांक, जिसे केवल Bob जानता है), और
G - जनरेटर बिंदु.
4) Bob, Alice की सार्वजनिक कुंजी
A लेता है और निम्नलिखित सूत्र का उपयोग करके एक नई सार्वजनिक कुंजी बनाता है:
A' = hash(b*A)*G + A, जहाँ
A' - वह सार्वजनिक कुंजी है, जिस पर Bob का भुगतान किया जाता है.
5) Bob, पहले से बनाई गई सार्वजनिक कुंजी
A' से जुड़ा एक आउटपुट बनाकर Alice को भुगतान करता है.
6) चूँकि
bA = baG = abG = aB, इसलिए Alice अपनी निजी कुंजी
a का उपयोग करके निम्नलिखित सूत्र से उसी सार्वजनिक कुंजी
A' को फिर से बना सकती है:
A' = (hash(a*B) + a)*G, जहाँ
hash(a*B) + a - Alice की नई निजी कुंजी है, जो उसे सार्वजनिक कुंजी
A' से संबंधित आउटपुट से पैसे खर्च करने की अनुमति देती है.
हालाँकि, समस्या यह है कि अपने भुगतान का पता लगाने के लिए Alice को Bob की सार्वजनिक कुंजी
B जानना आवश्यक है. यही कारण है कि वह लगातार ब्लॉकचेन को स्कैन करती रहती है और यह पता लगाने की कोशिश करती है कि कौन-सी सार्वजनिक कुंजियों को अपनी निजी कुंजी
a के साथ मिलाकर मौजूदा बिटकॉइन एड्रेस फिर से बनाए जा सकते हैं.
फायदे:1) भेजने वाले और प्राप्त करने वाले के बीच किसी तरह के संपर्क की आवश्यकता नहीं होती. भुगतान करने के लिए, भेजने वाले को केवल प्राप्तकर्ता की साइलेंट सार्वजनिक कुंजी से एक एड्रेस बनाना होता है.
2) साइलेंट पेमेंट ब्लॉकस्पेस का अधिक कुशलता से उपयोग करते हैं, क्योंकि BIP47 के मामले की तरह किसी भी "घोषणा" वाले ट्रांजैक्शन की आवश्यकता नहीं होती. इसलिए, एक ट्रांजैक्शन का मतलब एक भुगतान है, जो एक बार किए जाने वाले दान के लिए बिल्कुल उपयुक्त है.
3) साइलेंट ट्रांजैक्शन सामान्य ट्रांजैक्शन से अलग नहीं पहचाने जा सकते (उदाहरण के लिए, "Stealth addresses" के मामले की तरह किसी अस्थायी सार्वजनिक कुंजी को साझा करने के लिए कोई OP_RETURN आउटपुट नहीं होता). इसका मतलब है कि इनके माध्यम से उपयोगकर्ताओं के लिए भीड़ में छिपना बेहद आसान है - गुमनामी का दायरा पूरी ब्लॉकचेन है.
4) शुरुआती साइलेंट सार्वजनिक कुंजी से प्राप्त एड्रेस हमेशा नियतात्मक और विशिष्ट होते हैं, क्योंकि प्रत्येक भेजने वाला प्राप्तकर्ता की साइलेंट सार्वजनिक कुंजी में बदलाव करने के लिए अपनी अलग-अलग कुंजियों का उपयोग करता है.
5) साइलेंट पेमेंट धन प्राप्त करने वाले व्यक्ति को अपना Bitcoin फुल नोड चालू रखने के लिए प्रोत्साहित करते हैं, जिससे अपने आप अधिक विकेंद्रीकृत नेटवर्क बनता है.
6) ट्रांजैक्शन भेजने वाले और उसके प्राप्तकर्ता के अलावा किसी को भी यह पता नहीं चलेगा कि भुगतान वास्तव में हुआ था.
7) साइलेंट पेमेंट बिटकॉइन ट्रांजैक्शन की फंजिबिलिटी में काफी सुधार करते हैं.
नुकसान:1) इस तकनीक का सबसे बड़ा नुकसान इसकी अपेक्षाकृत अधिक वैलिडेशन लागत है. चूँकि भुगतान प्राप्त करने वाले को पहले से पता नहीं होता कि किन बिटकॉइन एड्रेस पर उसकी नियंत्रित निजी कुंजी से खर्च किया जा सकता है, इसलिए उसे प्रत्येक ट्रांजैक्शन के हर इनपुट की जाँच करनी पड़ती है और सार्वजनिक कुंजियों की गणना करके उनकी तुलना करनी पड़ती है.
2) भेजने वाले द्वारा एड्रेस दोबारा इस्तेमाल किए जाने की संभावना. जब किसी भेजने वाले के पास एक ही सार्वजनिक कुंजी साझा करने वाले कई इनपुट होते हैं, तो इनमें से प्रत्येक इनपुट से गणना करके वही एड्रेस प्राप्त होगा. एड्रेस का दोबारा इस्तेमाल करना गोपनीयता के लिहाज़ से खराब अभ्यास माना जाता है और हर हाल में इससे बचना चाहिए. गणना की प्रक्रिया में अतिरिक्त जानकारी शामिल करके इस समस्या को कम किया जा सकता है, लेकिन इससे अतिरिक्त बोझ पैदा होता है, खासकर लाइट क्लाइंट्स के लिए. इसके विकल्प के रूप में, भेजने वाला एक ही ट्रांजैक्शन में सभी इनपुट खर्च कर सकता है, लेकिन इससे भी साझा स्वामित्व का पता चल जाता है, जिससे गोपनीयता को नुकसान पहुँचता है.
संदर्भ:1]
https://gist.github.com/RubenSomsen/c43b79517e7cb701ebf77eec6dbb46b82]
https://github.com/genjix/bips/blob/master/bip-stealth.mediawiki3]
https://github.com/bitcoin/bips/blob/master/bip-0047.mediawiki4]
https://en.m.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman5]
https://bitcoinops.org/en/newsletters/2022/04/06/6]
https://bitcoinmagazine.com/technical/bitcoin-silent-payments-secret-keys7]
https://bitcoinmagazine.com/technical/improving-bitcoin-privacy-with-silent-payments8]
https://gist.github.com/w0xlt/72390ded95dd797594f80baba5d2e6ee
इस पहल के तहत अनुवादित :