Neutrino, Lightning Labs का Go में लिखा Bitcoin लाइट क्लाइंट है, जिसे Lightning Network वाले मोबाइल ऐप के लिए भी बनाया गया है। यह कॉम्पैक्ट ब्लॉक फ़िल्टर के लिए BIP 157 और BIP 158 इस्तेमाल करता है। यह एक खास सॉफ़्टवेयर लाइब्रेरी है, सभी हल्के वॉलेट का सामान्य नाम या हर नियम स्वयं जाँचने वाले Full Node का विकल्प नहीं।
आना वॉलेट खोलती है और उम्मीद करती है कि आया हुआ भुगतान दिखेगा। सही स्थिति दिखाने के लिए ऐप को Bitcoin नेटवर्क से डेटा लाकर उसे समझना पड़ता है। Neutrino यह काम कर सकता है, और इसके लिए फ़ोन पर पूरी ब्लॉकचेन हमेशा सँभालकर रखना ज़रूरी नहीं। ब्लॉक, Bitcoin नेटवर्क के साझा इतिहास में दर्ज लेनदेन का एक समूह है। प्रोग्राम में इस सेवा का नाम ChainService है: यह कनेक्शन, स्थानीय डेटाबेस और हेडर का समन्वय सँभालती है। हेडर किसी ब्लॉक की बुनियादी जानकारी का छोटा सार होता है। निजी कुंजी एक गुप्त संख्या होती है जिससे धन खर्च करने की अनुमति देने वाला डिजिटल हस्ताक्षर बनाया जाता है। लेकिन केवल Neutrino का इस्तेमाल यह नहीं बताता कि आना की निजी कुंजियाँ किसके पास हैं या भेजने की मंज़ूरी कौन देता है। कुंजियों का प्रबंधन, स्क्रीन और उपयोगकर्ता के बैकअप उस वॉलेट की ज़िम्मेदारी हैं जो लाइब्रेरी इस्तेमाल करता है। [1]
कॉम्पैक्ट फ़िल्टर को किसी एक ब्लॉक की छोटी खोज-सूची समझ सकते हैं। वॉलेट उसे डाउनलोड करके अपने डिवाइस पर जाँचता है कि खोजी जा रही चीज़ से मेल है या नहीं। असल में वह स्क्रिप्ट की तुलना करता है: ऐसी शर्तें जिनके पूरा होने पर कुछ खास Bitcoin आउटपुट खर्च किए जा सकते हैं। आउटपुट लेनदेन का वह हिस्सा है जो रकम और उसे बाद में खर्च करने की शर्तें तय करता है। वॉलेट को अपने सभी पतों की सूची दूसरी तरफ भेजने की ज़रूरत नहीं। मेल मिलने पर वॉलेट संबंधित ब्लॉक लाकर वास्तविक लेनदेन खोजता है। सही बना फ़िल्टर भी गलत सकारात्मक नतीजा दे सकता है: ब्लॉक बेकार में डाउनलोड हो जाता है क्योंकि खोजा गया तत्व उसमें होता ही नहीं। इसलिए मेल मात्र से भुगतान मिलना, रकम या उसे खर्च करने की क्षमता साबित नहीं होती। [1] [2] [3]
आना फ़ोन बदलकर वॉलेट बहाल करती है। अगर उसे पहले भुगतान मिले थे, तो आज के ब्लॉक से आगे ढूँढ़ना पर्याप्त नहीं। ऐप को सही निगरानी वाली स्क्रिप्ट और काफी पुराना खोज-आरंभ देना होगा। दस्तावेज़ के अनुसार शुरुआती ब्लॉक न दिए जाने पर Rescan आखिरी ज्ञात ब्लॉक से शुरू होता है, अपने आप पूरे इतिहास की शुरुआत से नहीं। सही फ़िल्टर भी ऐसा पता नहीं ढूँढ़ सकता जिसे वॉलेट खोज ही नहीं रहा, न ही छोड़े गए समय में हुए पुराने भुगतान। इसलिए पूरी हो चुकी बहाली और अभी जारी स्कैन में फर्क ज़रूरी है। बहाली के बीच खाली सूची अपने आप साबित नहीं करती कि पैसा चला गया। [1]
Neutrino ब्लॉक हेडर और फ़िल्टर हेडर समन्वित करता है। ब्लॉक हेडर से उनकी कड़ी और Proof of Work, यानी किए गए कंप्यूटिंग काम का प्रमाण, जाँचा जा सकता है और सबसे अधिक कुल काम वाली चेन का अनुसरण किया जा सकता है। यह सर्वर की बताई शेष राशि आँख बंद करके मानने से बहुत आगे है, लेकिन Full Node की तरह हर लेनदेन और नियम स्वयं जाँचना नहीं है। ये हेडर की दो अलग शृंखलाएँ भी हैं। Bitcoin ब्लॉक हेडर में इन फ़िल्टर की शुद्धता की सीधी क्रिप्टोग्राफ़िक प्रतिबद्धता नहीं होती। इसलिए केवल हैश, यानी क्रिप्टोग्राफ़िक छाप, जाँचकर भीतर से संगत मगर नकली फ़िल्टर समूह को खारिज नहीं किया जा सकता। काम की बचत के साथ भरोसे की एक स्पष्ट सीमा आती है। [2] [4]
पीयर नेटवर्क का वह दूसरा कंप्यूटर है जिससे क्लाइंट डेटा लेता है। BIP 157 जवाबों की तुलना और कम-से-कम एक ईमानदार पीयर की उपलब्धता पर निर्भर करता है, ताकि गलत फ़िल्टर पकड़े जा सकें। अगर एक ही हमलावर सभी कनेक्शन नियंत्रित करे, तो कंप्यूटरों की संख्या भर काम नहीं आएगी। वे एक ही झूठा जवाब दे सकते हैं या नई स्थिति छिपा सकते हैं। ईमानदार स्रोतों से इस तरह काट देना Eclipse Attack से जुड़ा है। वॉलेट को केवल कनेक्शन नहीं, उपलब्ध और पर्याप्त स्वतंत्र स्रोत चाहिए। हरा कनेक्शन चिह्न यह प्रमाण नहीं कि भुगतान का पूरा और ताज़ा इतिहास मिल चुका है। [2]
मान लें यान ने अभी आना को पैसे भेजे। उसका लेनदेन पहले किसी नोड के Mempool, यानी स्थानीय अपुष्ट लेनदेन के संग्रह, में इंतज़ार कर सकता है, जब तक माइनर उसे ब्लॉक में शामिल न करे। दस्तावेज़ में दिए Neutrino के recvtx और redeemingtx संदेश ब्लॉक में पुष्टि के समय आते हैं, Mempool में पहुँचते ही नहीं। आने वाले अपुष्ट भुगतान दिखाने वाले ऐप को एक और उपयुक्त व्यवस्था चाहिए। ब्लॉक मौजूद होने से पहले उसका फ़िल्टर यह नहीं बता सकता। भेजना, पीयर द्वारा स्वीकार होना और पुष्टि होना अलग घटनाएँ हैं; संदेश न आने से अभी यह साबित नहीं होता कि यान ने कुछ भेजा ही नहीं। [1]
फ़िल्टर का मेल तभी काम आता है जब क्लाइंट ज़रूरी ब्लॉक भी पा सके। अगर नेटवर्क फिलहाल उसे नहीं देता, तो सही निष्कर्ष “डेटा अभी नहीं मिला” है, “शेष राशि शून्य है” नहीं। चेन के पुनर्गठन में भी स्थिति बदल सकती है: नेटवर्क अधिक कुल काम वाली दूसरी शाखा अपनाता है और पहले जुड़े कुछ ब्लॉक अलग हो जाते हैं। Rescan ब्लॉक जुड़ने और अलग होने दोनों की सूचना देता है, ताकि ऐप अपने रिकॉर्ड की दोबारा गणना करे। गोपनीयता भी पूर्ण नहीं: पीयर को खोजे जाने वाले पतों की सूची नहीं मिलती, लेकिन खास ब्लॉक की माँग और कनेक्शन की नेटवर्क जानकारी दिखती है। डेटा लाने का तरीका इसलिए अब भी मायने रखता है। [1] [2]
Lightning Network, Bitcoin पर बना भुगतान नेटवर्क है। भुगतान चैनल में दो भागीदार हर भुगतान को Bitcoin ब्लॉक में दर्ज करने के बजाय यह अद्यतन करते हैं कि साझा धन में किसका कितना हिस्सा है। Neutrino चेन का डेटा देता है; वह खुद उपयोगकर्ता के लिए चैनल की मौजूदा स्थिति बहाल करने का ज़रूरी डेटा नहीं सँभालता। इसलिए वॉलेट का इतिहास वापस पाना और चैनल बहाल करना अलग काम हैं। README माँगे गए फ़िल्टर सँभालने और ब्लॉक लाकर स्थायी रूप से न रखने का वर्णन करता है; असली ज़रूरत ऐप के संस्करण और सेटिंग के अनुसार जाँचनी चाहिए। ऐसे वॉलेट पर निर्भर होने से पहले उसके अपने बैकअप और बहाली के तरीके तथा डेटा स्रोत बंद होने पर उसका व्यवहार समझना चाहिए। फ़ोन का छोटा डेटाबेस ये ज़िम्मेदारियाँ खत्म नहीं करता। [1] [4]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Compact Block Filters, Compact Block Filters, Full Node, Lightning Network, Eclipse Attack, Bitcoin. इस प्रविष्टि का उल्लेख यहाँ भी है Compact Block Filters, Compact Block Filters.