ढुलाई के लिए Veilid। निपटान के लिए Monero। बीच में कोई संचालक नहीं।
कहीं भी कोई DUCAT सर्वर नहीं है — संपर्क, संदेश, बिल और रसीदें DHT रिकॉर्ड और सिरे-से-सिरे तक सीलबंद पेलोड हैं, और हर फ़ोन एक पूरा Veilid नोड चलाता है, जितनी रूटिंग और भंडारण वह लेता है उतनी लौटा भी देता है।
डिबग-हस्ताक्षरित, केवल stagenet। अभी असली पैसे के लिए नहीं।
डुकाट छह सदियों तक वेनिस से वियना और लेवांत तक स्वीकार किया जाने वाला सोने का सिक्का था — जारीकर्ता से कोई रिश्ता नहीं, पीछे कोई खाता नहीं, साथ में कोई अनुमति नहीं। DUCAT वही है, उस पल के लिए जब आप किसी के सामने खड़े होकर सौदा कर रहे होते हैं।
संपर्क, बिल, भुगतान और रसीदें Veilid की DHT पर सिरे-से-सिरे तक सीलबंद पेलोड के रूप में चलती हैं। समन भेजने, गति घटाने, मंच से हटाने या बंद करने को कुछ है ही नहीं, क्योंकि कुछ चल ही नहीं रहा। हर फ़ोन एक पूरा नोड है और जितनी रूटिंग और भंडारण लेता है उतनी लौटाता भी है।
फ़ोन पर ही बनती है। न ईमेल, न फ़ोन नंबर, न कोई जिसके पास पंजीकरण कराना हो — और इसीलिए कोई इसे आपके लिए वापस भी नहीं ला सकता, और ऐप इसे दबाने के बजाय साफ़-साफ़ कहता है।
आप किसी को एक कार्ड देते हैं — QR, ducat: लिंक, या NFC टैप — और वह
सिर्फ़ एक व्यक्ति के लिए चलता है। एक बार भुनाने के बाद वह काम करना बंद कर
देता है, इसलिए कहीं और पहुँच गया स्क्रीनशॉट भीतर आने का रास्ता नहीं है।
X3DH जैसी बनावट वाला एन्क्रिप्शन, एक-बार वाली प्री-कुंजियों और फ़ॉरवर्ड सीक्रेसी के साथ। जब ऐप को हस्ताक्षरित प्री-कुंजी पर लौटना पड़ता है, तो वह इसे छिपाने के बजाय आपको एक खुला ताला दिखाता है।
मेलबॉक्स आधारित सूत्र, जो एक पक्ष के ऑफ़लाइन रहते हुए भी चलते हैं — ये मदवार बिल ढोते हैं जिनकी पंक्तियों का जोड़ कुल से मिलना ही चाहिए, वरना संदेश अस्वीकार हो जाता है; साथ में भुगतान, और पाने वाले द्वारा जारी रसीदें जो उसी लेनदेन की ओर इशारा करती हैं जिसे वे स्वीकार करती हैं। छोटे समूह उन्हीं जोड़ीदार सूत्रों में फैल जाते हैं: न समूह-कुंजी, न साझा रिकॉर्ड, सूत्र का हर गुण जस का तस।
इस पन्ने का हर स्क्रीनशॉट फ़ोन पर चल रहा असली ऐप है, कोई नमूना नहीं। यहाँ कुछ भी आपसे साइन अप करने को नहीं कहता, क्योंकि साइन अप कराने वाला कोई है ही नहीं।
आपकी पहचान डिवाइस पर ही बना एक कुंजी-युग्म है — न ईमेल, न फ़ोन नंबर, न कोई जिसके पास पंजीकरण कराना हो, और इसीलिए कोई इसे आपके लिए वापस भी नहीं ला सकता। आख़िरी चरण बैकअप है, क्योंकि जिस वॉलेट को आप वापस नहीं ला सकते, वही एकमात्र तरीक़ा है जिससे यहाँ कोई सचमुच पैसा गँवाता है।
अपनी ही हिरासत वाला एक Monero वॉलेट, हर जगह स्थानीय मुद्रा में रूपांतरण के साथ, जिसे भीतर बसा monero-oxide इंजन स्कैन करता और ख़र्च करता है — फ़ोन पर कोई वॉलेट डीमन नहीं।
भुगतान करते समय राशि, अनुमानित नेटवर्क शुल्क, कुल, बाद में आपके पास क्या बचेगा, कितने नोट ख़र्च होंगे और मोटे तौर पर कितना समय लगेगा — सब दिखता है, और आप गति भी चुन सकते हैं। इतिहास शृंखला से दोबारा बनता है: भेजी गई राशियाँ key image से पहचानी जाती हैं, बाक़ी लौटी रक़म कभी आय की तरह नहीं दिखती, हर पंक्ति चालू शेष लिए चलती है, और पूरा विवरण CSV में निर्यात होता है।
Monero शेष राशि नहीं, अलग-अलग नोट ख़र्च करता है, इसलिए एक बड़ा नोट रखने वाला वॉलेट लगातार दो बार भुगतान नहीं कर पाता। ऐप गिनता है कि कितने नोट ख़र्च हो सकते हैं और कहता है कि काउंटर पर खड़े होने से पहले एक तुड़वा लीजिए, बजाय इसके कि वहीं जाकर काम अटके।
संपर्क एक कुंजी-युग्म है, कोई पहचानकर्ता नहीं। एक स्कैन मेलबॉक्स आधारित बातचीत खोल देता है जो एक पक्ष के ऑफ़लाइन रहते भी चलती है — और वे सूत्र सिर्फ़ शब्द नहीं, व्यापार ढोते हैं।
आप किसी को एक कार्ड देते हैं — QR से, ducat: लिंक से, या NFC टैप से — और वह
सिर्फ़ एक व्यक्ति के लिए चलता है: एक बार भुनाने के बाद वह काम करना बंद कर देता
है, इसलिए कहीं और पहुँच गया स्क्रीनशॉट भीतर आने का रास्ता नहीं है।
समूह एक ऐसी सूची है जो केवल बढ़ती है, और उसके शब्द हर पीढ़ी के लिए एक साझा बोर्ड रिकॉर्ड पर चलते हैं (§16.24): हर सदस्य सूची के साथ चलने वाली एक समूह-कुंजी के नीचे अपने पन्ने लिखता है, इसलिए पाँच लोगों को भेजा गया संदेश पाँच के बजाय एक लेखन है, और नेटवर्क उस रिकॉर्ड को किसी दूसरे से अलग नहीं कर सकता। कोई किसी और के नाम पर नहीं लिख सकता, और समूह छोड़ना स्थानीय बात है। एक समूह बिल बाँट सकता है: एक कुल हर व्यक्ति के लिए अलग अनुरोध बन जाता है, साथ में एक वाक्य जिस पर सब हिसाब जाँच सकें, और हर अनुरोध अपनी रसीद आते ही चुकता में बदल जाता है।
नौ में से एक मोड चुनिए और पूरा ऐप कमान सौंप देता है — अपने ही टैब के साथ, वॉलेट का कुछ भी बचे बिना। इनमें से लगभग किसी को भी नया प्रोटोकॉल ऑब्जेक्ट नहीं चाहिए था, और यही वह वाक्य है जिस पर विनिर्देश को सबसे ज़्यादा गर्व है।
बिक्री केंद्र सामान चढ़ाता है या टाइप किया हुआ कुल लेता है, अपने क्षेत्र का बिक्री कर जोड़ता है और एक कोड दिखाता है; ग्राहक के स्कैन करते ही बिल उसके फ़ोन पर पहुँच जाता है, और भुगतान करते ही रसीद वापस जाती है। बार का उधार हर पेय की जानकारी ग्राहक को भेजता है और एक ही बिल से बंद होता है। कियोस्क फ़ोन पूरी तरह ग्राहक को सौंप देता है, स्टाफ़ पैनल एक PIN के पीछे रहता है। दान-पेटी दोनों रास्ते देती है: एक DUCAT कोड जो बातचीत खोलता है और पैसे पहुँचते ही रसीद भेज देता है, और एक स्थायी पता जिस पर कोई भी Monero वॉलेट दे सकता है — जोड़े जा सकने की क़ीमत किसी नीति में नहीं, स्क्रीन पर लिखी होती है।
टाइप कीजिए कि कहाँ जाना है। आपका फ़ोन GPS स्थान को एक जियोसेल में बदल देता है — एक सार्वजनिक सूचना-पट्ट जिसका पता वह जगह ख़ुद है — और एक पुकार टाँग देता है: एक-बार वाला कार्ड, एक मोटा-सा इलाक़ा, और असली रास्ते से निकाला गया दाम। सूचना-पट्ट पर कोई नाम नहीं जाता — न कार्ड पर, न उसके पीछे के रिकॉर्ड में। चालक अपनी सेल और पड़ोसी सेलें देखते हैं और उसे ले लेते हैं; दौड़ का फ़ैसला DHT करती है, और कोई मिलान कराने वाला है ही नहीं।
हरी रेखा ही असल बात है: DUCAT की दरें किसी मंच द्वारा सवारी से लिए जाने वाले दाम से लगभग 15% नीचे रहती हैं, और चालक पूरा का पूरा रखता है — मंच का ग़ायब हिस्सा, दोनों को लौटा दिया गया। स्वीकृति एक चेहरे के साथ आती है: नाम, गाड़ी, रंग, प्लेट, पहुँचने का समय — सवारी के लिए सीलबंद, सूचना-पट्ट को कभी नहीं दिखाया गया। आपका अपना नाम और वह दरवाज़ा जिसके पास आप खड़े हैं, उसी पल उलटी दिशा में जाते हैं — उस अकेले चालक के पास जिसने उसे उठाया।
एक समझौता, स्क्रीन पर साफ़ कहा हुआ: पता खोजना, रास्ता निकालना और नक़्शे की टाइलें OpenStreetMap से पूछती हैं — यही अकेली जगह है जहाँ DUCAT स्थान डिवाइस से बाहर भेजता है। सूचना-पट्ट ख़ुद कभी ~1.2 किमी से बेहतर सटीकता नहीं रखते।
वही सूचना-पट्ट वाली मशीनरी सवारियों से ज़्यादा कुछ ढोती है। बाज़ार की एक सूची, एक किराया, या हुनरमंद मदद का एक घंटा — सब मोहल्ले के पते वाले सूचना-पट्ट पर टँगते हैं, और पास खड़ा कोई अजनबी उसे पढ़ लेता है, बिना आप दोनों में से किसी के किसी मंच को छुए।
सूचियाँ पुकारों से मोटे सूचना-पट्टों पर बैठती हैं — क़रीब पाँच किलोमीटर चौड़े, क्योंकि चाबियों का गुच्छा लेने लोग सफ़र कर ही लेते हैं। खोज आपका पट्ट और उसके चारों ओर का घेरा पढ़ती है, और जैसे-जैसे जवाब आते हैं नतीजे बनाती जाती है, इसलिए आपके पास खड़ी कोई चीज़ छह सेकंड से कम में स्क्रीन पर आ जाती है, जबकि «यहाँ आस-पास कुछ नहीं है» में क़रीब चालीस सेकंड लगते हैं और वह इलाक़े एक-एक कर के निपटाती जाती है।
सूची का फ़ॉर्म दो हिस्सों में बँटा है और ऐप आपको बताता है कि कौन-सा हिस्सा कौन-सा है: पहले हिस्से की हर चीज़ एक सार्वजनिक पट्ट पर जाती है जिसे पास का कोई भी पढ़ सकता है, और पता, चाबियाँ कहाँ रखी हैं, तथा नंबर प्लेट दूसरे हिस्से में जाते हैं, जो असली बुकिंग होने तक आपके फ़ोन से बाहर नहीं निकलता।
जो रिकॉर्ड एक बिल ढोते हैं, वही एक पन्ना भी उतनी ही आसानी से ढोते हैं। आपकी कुंजी पहले से ही एक पता है, इसलिए जो आप लिखते हैं उसके रहने की जगह है — किसी से जगह माँगे बिना।
किसी पहचान का घर उसी पते पर बैठता है जिसे उसकी अपनी कुंजी नाम देती है, और फ़ीड उन लोगों की समयरेखा है जिन्हें आप रखते हैं — एक पोस्ट तस्वीर और फ़ाइल दोनों ढो सकती है, और दिल वापस आते हैं। साइटें उन्हीं की डिस्क से परोसी जाती हैं जिन्होंने उन्हें प्रकाशित किया, और वे एक सीलबंद कमरे में खुलती हैं, इसलिए एक को पढ़ना कहीं और से कुछ नहीं मँगाता।
प्रकाशन — एक अख़बार, एक धारावाहिक, सॉफ़्टवेयर का एक टुकड़ा — मोहल्ले के हिसाब से नहीं, विषय-बोर्डों पर दुनिया भर में बिकते हैं: एक पोस्ट विषय के बोर्ड पर और अपनी भाषा के बोर्ड पर, दोनों जगह उतरती है, और «सब कुछ» छहों ताकें साथ-साथ पढ़ता है। एक इश्तिहार अपना बंडल बेचने वाले के अपने फ़ोन से लाता है — पूरे आकार की 24 तस्वीरों तक, एक ब्योरा, ख़ूबियाँ और नत्थी फ़ाइलें — और जिस कुंजी का वह नाम नहीं लेता उस पर पूरा का पूरा ठुकरा दिया जाता है, ताकि एक बुरा दस्तावेज़ अच्छी तस्वीरें न छिपा सके।
बीच में कोई कंपनी है ही नहीं जो किसी का पक्ष ले, इसलिए DUCAT कुछ आसान करता है। पैसा एक ऐसे पते पर रहता है जिसे सिर्फ़ आप दोनों खोल सकते हैं, और छोड़ने पर हर पक्ष को उसकी अपनी जमानत नाम से वापस मिलती है। कोई जमानत हड़प नहीं सकता — हम भी नहीं, क्योंकि कोई «हम» है ही नहीं जिसे भुगतान करना हो।
ये आँकड़े अंदाज़े नहीं, तर्क से निकले हैं — Bisq का बिना अभिरक्षक वाला 2-में-से-2 मॉडल सबसे नज़दीकी चलता-फिरता उदाहरण है, और दोहरी जमा राशि पर हुआ काम साबित करता है कि संतुलन पर यह व्यवस्था धोखे से सुरक्षित है। इससे दो सीमाएँ निकलती हैं: जिस जमानत की क़ीमत उसे लौटाने के शुल्क से कम हो वह सजावट के बजाय शून्य हो जाती है, और कोई भी दाम के आधे से ऊपर नहीं जाती। ज़्यादा जोखिम वाला पक्ष दूसरे नंबर पर पैसा डालता है, ताकि उसका पैसा साझा पते पर कभी अकेला न पड़े।
जब सौदे को जमानत से ज़्यादा चाहिए: सवारी, चालक और दोनों का भरोसेमंद मध्यस्थ संपर्क सीलबंद सूत्र पर वितरित कुंजी-निर्माण चलाते हैं — तीन डिवाइस मिलकर एक Monero पता निकालते हैं, हर एक के पास सिर्फ़ एक हिस्सा, कोई भी दो हस्ताक्षर कर सकते हैं, और कहीं कोई बाँटने वाला नहीं। सीधा रास्ता दो टैप का है।
बाक़ी सब एक समझौता है: एक पक्ष बँटवारा सुझाता है, दूसरा हस्ताक्षर करता है या पलटकर प्रस्ताव देता है। जो अटक जाए वह मध्यस्थ से पूछता है, जिसका सह-हस्ताक्षर ही फ़ैसला है — क़ब्ज़े में आया मध्यस्थ ज़्यादा से ज़्यादा नामित पक्षों में से चुन सकता है, ख़ुद को कभी भुगतान नहीं कर सकता। stagenet पर हर रूप में शृंखला-प्रमाणित, दो-इनपुट वाली FROST रिलीज़ समेत।
कोई सौदा होने से पहले एक अजनबी होता है, और सवाल यह है कि उसके नाम की उसे क्या क़ीमत चुकानी पड़ी। एक पर्सोना Monero को जला सकता है — उसे ऐसे पते पर भेजकर जिसकी चाबियाँ किसी के पास नहीं, और जो एक ऐसे हैश से निकला है जिसे कोई भी ख़ुद दोबारा गिन सकता है — और उसके लिए Monero का अपना भुगतान-प्रमाण साथ रख सकता है। आपका ऐप उस प्रमाण को अपने ही नोड पर जाँचता है, दूसरे नोड से पूछता है कि लेनदेन किसी ब्लॉक में आया या नहीं, और उसके बाद जहाँ भी आप कुछ तय करते हैं वहाँ उस पर्सोना को शब्दों में दिखाता है: 0.01 XMR जलाया, ब्लॉक N से। कभी कोई अंक नहीं। असल नियम वह चेतावनी है: जो आप दाँव पर लगाने जा रहे हैं वह उनके जलाए हुए से ज़्यादा क़ीमती हो, तो ऐप यह कह देता है — क्योंकि जिस नाम की कोई क़ीमत नहीं चुकी, उसके ग़ायब होने में खोने को कुछ नहीं।
सौदा निपट जाने के बाद कोई भी पक्ष एक रेटिंग वाली रसीद पर हस्ताक्षर कर सकता है, और जिससे आप ख़ुद मिले हों वह कोई भी एक गवाही पर हस्ताक्षर कर सकता है। दोनों सीलबंद सूत्र में सफ़र करते हैं और दोनों को तौलता सिर्फ़ पढ़ने वाला है — हर हस्ताक्षरकर्ता की एक आवाज़, और गिने वही हस्ताक्षरकर्ता जाते हैं जिनका अपना जलाना आपने जाँचा हो, और गवाही सिर्फ़ उन लोगों की गिनी जाती है जो पहले से आपके संपर्कों में हैं। एक ही क़दम, कोई ग्राफ़ नहीं, कहीं कुछ प्रकाशित नहीं। ऐसी साख जो निजता के बजाय पैसे में पड़ती है।
जिस निजता-उपकरण को चलाना अखरता है, वह एक ही बार चलाया जाता है। यह बताता है कि चीज़ों की आपको क्या क़ीमत पड़ती है, बीस भाषाएँ बोलता है, और इसकी डार्क थीम बाद में सोची हुई चीज़ नहीं है।
निजता की व्यवस्था में सुविधा की एक क़ीमत होती है, और ऐप वह क़ीमत उसी पल बताता है जब आप चुनते हैं, न कि उस नीति में जिसे कोई नहीं पढ़ता। संपर्कों को सीधे भुगतान करने देने का मतलब है एक ही पता दोबारा इस्तेमाल करना — इसलिए वह कहता है कि शृंखला देखने वाला कोई भी जान सकता है कि हर बार उसी व्यक्ति को भुगतान हुआ, उन लोगों को भी पता चलेगा जिन्होंने आपको सिर्फ़ एक बार भुगतान किया, और साथ ही विकल्प भी दिखाता है। यही आदत हर जगह चलती है: mempool में दिखी चीज़ को दिखी, निपटी कभी नहीं के रूप में दिखाया जाता है; प्रोफ़ाइल हमेशा उसी रूप में पेश की जाती है जो वह है — एक दावा।
यह बीस भाषाएँ बोलता है — हर स्क्रीन संसाधन फ़ाइलों से पढ़ती है, बहुवचन जोड़-तोड़ के बजाय रचे जाते हैं, और अरबी तथा फ़ारसी दर्पण को साबित करती हैं। रसीदें अभिलेख हैं, संदेश नहीं: हर रसीद अपने अलग भंडार में रहती है, सूत्र और संपर्क के मिटने के बाद भी बची रहती है, और एन्क्रिप्टेड बैकअप के साथ सफ़र करती है — जो पैसे के साथ-साथ लोगों को भी ले चलता है।
उसी Rust के ऊपर एक नेटिव खिड़की जो फ़ोन चलाता है — जिससे एक दुकानदार का गल्ला, एक कियोस्क, प्रेस-कक्ष, बाज़ार और फ़ीड एक ही कार्यान्वयन बन जाते हैं, कोई पोर्ट नहीं।
यह फ़ोन की बीस भाषाएँ उन्हीं संसाधनों से बोलता है, और हर रीति में फ़ोन के सामने परखा जा चुका है: चैट, बोर्डों पर समूह, बिल और रसीदें, एक कियोस्क ऑर्डर जो ऐसे फ़ोन से चुकाया गया जो इस मेज़ से पहले कभी नहीं मिला था, फ़ाइलें और साइटें परोसी और मँगाई गईं, और असली आवाज़ वाली कॉलें।
README इस बात का हिसाब रखता है कि असली नेटवर्क और असली stagenet पर सिरे से सिरे तक सचमुच क्या चला है — और कमियों को दबाने के बजाय गिना देता है।
core/ न पढ़ा होहर बिल्ड डिबग-हस्ताक्षरित है और Monero के stagenet पर निपटता है — जान-बूझकर बेक़ीमत सिक्के। विनिर्देश मसौदा 1.1.0-dev13 है और ख़ुद अपने बारे में कहता है: यहाँ कुछ भी अंतिम नहीं है, और §14 ही असली एजेंडा है। इसे आज़माइए, तोड़िए, पढ़िए — बस इसमें पैसा मत लगाइए।
ducat-protocol.md ही मुख्य कृति है — पाँच हिस्से, सबसे आगे बदलावों की सूची, और एक
अनुरूपता-सूट जिसे दूसरा कार्यान्वयन चलाता है, ताकि दस्तावेज़ चुपचाप कोड से अलग न हो जाए।
★ ducat-protocol.md विनिर्देश — मसौदा 1.1.0-dev13, बदलावों की सूची सबसे आगे core/ संदर्भ कार्यान्वयन (Rust) vectors/ 406 अनुरूपता मामले + स्कीमा conformance/ चार जाँचकर्ता, हर push पर चलते हैं harness/ असली Veilid रास्तों पर सिरे से सिरे तक sim/ ऑफ़लाइन सिम्युलेटर, बाज़ार की परिस्थितियाँ applications/ android/ + desktop/ (वही स्रोत) mobile/ Rust पुल: वॉलेट · मेलबॉक्स · नोड research/ सबूत, उत्पाद नहीं
schema.json के विरुद्ध जाँचा गयासंरक्षकता अनिवार्य है, बस चाहत नहीं: §18.7 Veilid की नैतिकता को अनुरूपता की शर्त बना देता है — न प्रोटोकॉल शुल्क, न नोड को भुगतान, कभी नहीं। इस कोड से जो चाहें बनाइए, पर ढुलाई से कमाई करने वाला क्लाइंट DUCAT नहीं है।
पहले से कुछ इंस्टॉल करने की ज़रूरत नहीं — हर बिल्ड अपनी Rust लाइब्रेरी और JVM साथ लाता है। फ़ोन पर Android, और वही ऐप Linux, Windows और macOS पर एक नेटिव खिड़की के रूप में। iOS का कोई बिल्ड नहीं है; जब वह इसका हक़ पा लेगा, तब उसे अपना फ़ोल्डर मिलेगा।
फ़ोन का ब्राउज़र, सबसे नया बिल्ड, कोई रिलीज़ पन्ना खंगालने की ज़रूरत नहीं। armeabi-v7a
सिर्फ़ लगभग 2016 से पुराने फ़ोनों के लिए; x86_64 एमुलेटर के लिए है।
Apple Silicon और Intel के बिल्ड। बिना हस्ताक्षर — macOS पहली बार खोलने पर चेतावनी देगा।
डिबग-हस्ताक्षरित, केवल stagenet — असली पैसे के लिए नहीं।