DUCAT का मानेकी-नेको, हाथ में Monero का सिक्का लिए
आमने-सामने का पीयर-टू-पीयर व्यापार · विनिर्देश मसौदा 1.1.0-dev13

DUCAT

ढुलाई के लिए Veilid। निपटान के लिए Monero। बीच में कोई संचालक नहीं।

कहीं भी कोई DUCAT सर्वर नहीं है — संपर्क, संदेश, बिल और रसीदें DHT रिकॉर्ड और सिरे-से-सिरे तक सीलबंद पेलोड हैं, और हर फ़ोन एक पूरा Veilid नोड चलाता है, जितनी रूटिंग और भंडारण वह लेता है उतनी लौटा भी देता है।

0 अनुरूपता वेक्टर 0 संचालन मोड 0 भाषाएँ 0 सर्वर

डिबग-हस्ताक्षरित, केवल stagenet। अभी असली पैसे के लिए नहीं।

इन पर टिका है

ऐसा व्यापार जिसमें बीच में कोई नहीं

डुकाट छह सदियों तक वेनिस से वियना और लेवांत तक स्वीकार किया जाने वाला सोने का सिक्का था — जारीकर्ता से कोई रिश्ता नहीं, पीछे कोई खाता नहीं, साथ में कोई अनुमति नहीं। DUCAT वही है, उस पल के लिए जब आप किसी के सामने खड़े होकर सौदा कर रहे होते हैं।

🐱

कहीं कोई सर्वर नहीं

संपर्क, बिल, भुगतान और रसीदें Veilid की DHT पर सिरे-से-सिरे तक सीलबंद पेलोड के रूप में चलती हैं। समन भेजने, गति घटाने, मंच से हटाने या बंद करने को कुछ है ही नहीं, क्योंकि कुछ चल ही नहीं रहा। हर फ़ोन एक पूरा नोड है और जितनी रूटिंग और भंडारण लेता है उतनी लौटाता भी है।

🔑

पहचान एक कुंजी-युग्म है

फ़ोन पर ही बनती है। न ईमेल, न फ़ोन नंबर, न कोई जिसके पास पंजीकरण कराना हो — और इसीलिए कोई इसे आपके लिए वापस भी नहीं ला सकता, और ऐप इसे दबाने के बजाय साफ़-साफ़ कहता है।

🎫

एक बार ही भुनाए जाने वाले कार्ड

आप किसी को एक कार्ड देते हैं — QR, ducat: लिंक, या NFC टैप — और वह सिर्फ़ एक व्यक्ति के लिए चलता है। एक बार भुनाने के बाद वह काम करना बंद कर देता है, इसलिए कहीं और पहुँच गया स्क्रीनशॉट भीतर आने का रास्ता नहीं है।

🔒

सीलबंद बातचीत

X3DH जैसी बनावट वाला एन्क्रिप्शन, एक-बार वाली प्री-कुंजियों और फ़ॉरवर्ड सीक्रेसी के साथ। जब ऐप को हस्ताक्षरित प्री-कुंजी पर लौटना पड़ता है, तो वह इसे छिपाने के बजाय आपको एक खुला ताला दिखाता है।

💬

ऐसी बातचीत जो पैसा भी ढोती है

मेलबॉक्स आधारित सूत्र, जो एक पक्ष के ऑफ़लाइन रहते हुए भी चलते हैं — ये मदवार बिल ढोते हैं जिनकी पंक्तियों का जोड़ कुल से मिलना ही चाहिए, वरना संदेश अस्वीकार हो जाता है; साथ में भुगतान, और पाने वाले द्वारा जारी रसीदें जो उसी लेनदेन की ओर इशारा करती हैं जिसे वे स्वीकार करती हैं। छोटे समूह उन्हीं जोड़ीदार सूत्रों में फैल जाते हैं: न समूह-कुंजी, न साझा रिकॉर्ड, सूत्र का हर गुण जस का तस।

छह चरण, कोई खाता नहीं,
लगभग एक मिनट

इस पन्ने का हर स्क्रीनशॉट फ़ोन पर चल रहा असली ऐप है, कोई नमूना नहीं। यहाँ कुछ भी आपसे साइन अप करने को नहीं कहता, क्योंकि साइन अप कराने वाला कोई है ही नहीं।

6 में से चरण 1: अपनी पहचान बनाइए — इसी फ़ोन पर बना एक कुंजी-युग्म, कोई खाता नहीं
1 · पहचान — एक कुंजी-युग्म, कोई पंजीकरण नहीं
6 में से चरण 4: एक PIN चुनिए, इस साफ़ चेतावनी के साथ कि इसे रीसेट नहीं किया जा सकता
4 · एक PIN — और इसे रीसेट करने का कोई रास्ता नहीं, साफ़ कहा गया
6 में से चरण 5: अजनबी एक-दूसरे पर भरोसा कैसे करते हैं — दोनों पक्ष जमानत रखते हैं, पूरा करने पर वह लौट आती है
5 · भरोसा — आपके पहले सौदे से पहले समझाया गया
6 में से चरण 6: बैकअप, जो सच कहें तो फ़ोन से बाहर जाने तक बैकअप है ही नहीं
6 · बैकअप — फ़ोन से बाहर जाने तक «अभी बैकअप नहीं है»

आपकी पहचान डिवाइस पर ही बना एक कुंजी-युग्म है — न ईमेल, न फ़ोन नंबर, न कोई जिसके पास पंजीकरण कराना हो, और इसीलिए कोई इसे आपके लिए वापस भी नहीं ला सकता। आख़िरी चरण बैकअप है, क्योंकि जिस वॉलेट को आप वापस नहीं ला सकते, वही एकमात्र तरीक़ा है जिससे यहाँ कोई सचमुच पैसा गँवाता है।

पैसा जो सचमुच आपका है

अपनी ही हिरासत वाला एक Monero वॉलेट, हर जगह स्थानीय मुद्रा में रूपांतरण के साथ, जिसे भीतर बसा monero-oxide इंजन स्कैन करता और ख़र्च करता है — फ़ोन पर कोई वॉलेट डीमन नहीं।

निजी होम स्क्रीन: XMR और स्थानीय मुद्रा में शेष, सिंक की स्थिति, ख़र्च होने लायक़ नोटों की गिनती, मोड के टाइल और हाल की हलचल
शेष राशि, और उसके पीछे के नोट
भुगतान या माँग: स्थानीय मुद्रा या XMR में राशि, शुल्क का हिसाब, बाद में क्या बचेगा
पूरा हिसाब आपके हाँ कहने से पहले
विवरण: चालू शेष, रसीदों की खोज, CSV निर्यात
एक विवरण जो शृंखला से दोबारा बनाया गया
किसे भुगतान करना है चुनना: संपर्क, उनकी कुंजी-छापों के साथ
आप किसे भुगतान कर रहे हैं, कुंजी-छाप से

भुगतान करते समय राशि, अनुमानित नेटवर्क शुल्क, कुल, बाद में आपके पास क्या बचेगा, कितने नोट ख़र्च होंगे और मोटे तौर पर कितना समय लगेगा — सब दिखता है, और आप गति भी चुन सकते हैं। इतिहास शृंखला से दोबारा बनता है: भेजी गई राशियाँ key image से पहचानी जाती हैं, बाक़ी लौटी रक़म कभी आय की तरह नहीं दिखती, हर पंक्ति चालू शेष लिए चलती है, और पूरा विवरण CSV में निर्यात होता है।

Monero शेष राशि नहीं, अलग-अलग नोट ख़र्च करता है, इसलिए एक बड़ा नोट रखने वाला वॉलेट लगातार दो बार भुगतान नहीं कर पाता। ऐप गिनता है कि कितने नोट ख़र्च हो सकते हैं और कहता है कि काउंटर पर खड़े होने से पहले एक तुड़वा लीजिए, बजाय इसके कि वहीं जाकर काम अटके।

ऐसी बातचीत जो पैसा भी ढोती है

संपर्क एक कुंजी-युग्म है, कोई पहचानकर्ता नहीं। एक स्कैन मेलबॉक्स आधारित बातचीत खोल देता है जो एक पक्ष के ऑफ़लाइन रहते भी चलती है — और वे सूत्र सिर्फ़ शब्द नहीं, व्यापार ढोते हैं।

आपका कार्ड: एक-बार भुनाने वाला QR जो बातचीत खोलता है, एक ही व्यक्ति के लिए
आपका कार्ड — एक ही व्यक्ति के लिए
पैसा ढोती बातचीत: कर की पंक्ति वाला मदवार बिल, रसीद, और निपटे एस्क्रो की पट्टी
बिल, भुगतान, रसीद — उसी सूत्र में
साझा बोर्ड पर तीन लोगों का समूह: हर पीढ़ी के लिए एक रिकॉर्ड, एक सवाल और दूसरे फ़ोन से आया उसका जवाब
समूह — हर पीढ़ी के लिए एक साझा रिकॉर्ड
लोगों ने जो कहा उसकी खोज, नामों के मिलान संदेशों के मिलान से ऊपर
खोजिए कि लोगों ने असल में क्या कहा

आप किसी को एक कार्ड देते हैं — QR से, ducat: लिंक से, या NFC टैप से — और वह सिर्फ़ एक व्यक्ति के लिए चलता है: एक बार भुनाने के बाद वह काम करना बंद कर देता है, इसलिए कहीं और पहुँच गया स्क्रीनशॉट भीतर आने का रास्ता नहीं है।

समूह एक ऐसी सूची है जो केवल बढ़ती है, और उसके शब्द हर पीढ़ी के लिए एक साझा बोर्ड रिकॉर्ड पर चलते हैं (§16.24): हर सदस्य सूची के साथ चलने वाली एक समूह-कुंजी के नीचे अपने पन्ने लिखता है, इसलिए पाँच लोगों को भेजा गया संदेश पाँच के बजाय एक लेखन है, और नेटवर्क उस रिकॉर्ड को किसी दूसरे से अलग नहीं कर सकता। कोई किसी और के नाम पर नहीं लिख सकता, और समूह छोड़ना स्थानीय बात है। एक समूह बिल बाँट सकता है: एक कुल हर व्यक्ति के लिए अलग अनुरोध बन जाता है, साथ में एक वाक्य जिस पर सब हिसाब जाँच सकें, और हर अनुरोध अपनी रसीद आते ही चुकता में बदल जाता है।

आपका फ़ोन ही पूरा कारोबार है

नौ में से एक मोड चुनिए और पूरा ऐप कमान सौंप देता है — अपने ही टैब के साथ, वॉलेट का कुछ भी बचे बिना। इनमें से लगभग किसी को भी नया प्रोटोकॉल ऑब्जेक्ट नहीं चाहिए था, और यही वह वाक्य है जिस पर विनिर्देश को सबसे ज़्यादा गर्व है।

संचालन मोड: निजी, बिक्री केंद्र, बार का उधार, टैक्सी, दान, बाज़ार, किराया, मदद किराए पर लेना, कियोस्क
नौ मोड, एक प्रोटोकॉल
बिक्री केंद्र: चढ़ाए गए सामान के साथ गणना की हुई बिक्री-कर की पंक्ति
बिक्री केंद्र — कर की गणना के साथ
ग्राहक के स्कैन करने के लिए एक कोड; मदवार बिल उसके फ़ोन पर पहुँच जाता है
एक कोड — स्कैन करते ही बिल पहुँच जाता है
बार का उधार: खुले खाते, बिल बनकर इंतज़ार करते खाते, और एक ही बिल से बंद हुए खाते
बार का उधार — घर लौटती बस से चुकाइए
कियोस्क मोड, ग्राहक की तरफ़: जो चाहिए उस पर टैप कीजिए, हामी भरने से पहले कर दिख जाता है
कियोस्क — ग्राहक ख़ुद ऑर्डर करता है
PIN के पीछे कियोस्क का स्टाफ़ पैनल: ऑर्डर, मेन्यू और कर की दर
स्टाफ़ पैनल एक PIN के पीछे
एक स्थायी दान कोड, जोड़े जा सकने की क़ीमत स्क्रीन पर लिखी हुई
दान — क़ीमत बताई हुई

बिक्री केंद्र सामान चढ़ाता है या टाइप किया हुआ कुल लेता है, अपने क्षेत्र का बिक्री कर जोड़ता है और एक कोड दिखाता है; ग्राहक के स्कैन करते ही बिल उसके फ़ोन पर पहुँच जाता है, और भुगतान करते ही रसीद वापस जाती है। बार का उधार हर पेय की जानकारी ग्राहक को भेजता है और एक ही बिल से बंद होता है। कियोस्क फ़ोन पूरी तरह ग्राहक को सौंप देता है, स्टाफ़ पैनल एक PIN के पीछे रहता है। दान-पेटी दोनों रास्ते देती है: एक DUCAT कोड जो बातचीत खोलता है और पैसे पहुँचते ही रसीद भेज देता है, और एक स्थायी पता जिस पर कोई भी Monero वॉलेट दे सकता है — जोड़े जा सकने की क़ीमत किसी नीति में नहीं, स्क्रीन पर लिखी होती है।

ऐसी सवारी जिसे कोई बाँटता नहीं

टाइप कीजिए कि कहाँ जाना है। आपका फ़ोन GPS स्थान को एक जियोसेल में बदल देता है — एक सार्वजनिक सूचना-पट्ट जिसका पता वह जगह ख़ुद है — और एक पुकार टाँग देता है: एक-बार वाला कार्ड, एक मोटा-सा इलाक़ा, और असली रास्ते से निकाला गया दाम। सूचना-पट्ट पर कोई नाम नहीं जाता — न कार्ड पर, न उसके पीछे के रिकॉर्ड में। चालक अपनी सेल और पड़ोसी सेलें देखते हैं और उसे ले लेते हैं; दौड़ का फ़ैसला DHT करती है, और कोई मिलान कराने वाला है ही नहीं।

हरी रेखा ही असल बात है: DUCAT की दरें किसी मंच द्वारा सवारी से लिए जाने वाले दाम से लगभग 15% नीचे रहती हैं, और चालक पूरा का पूरा रखता है — मंच का ग़ायब हिस्सा, दोनों को लौटा दिया गया। स्वीकृति एक चेहरे के साथ आती है: नाम, गाड़ी, रंग, प्लेट, पहुँचने का समय — सवारी के लिए सीलबंद, सूचना-पट्ट को कभी नहीं दिखाया गया। आपका अपना नाम और वह दरवाज़ा जिसके पास आप खड़े हैं, उसी पल उलटी दिशा में जाते हैं — उस अकेले चालक के पास जिसने उसे उठाया।

एक समझौता, स्क्रीन पर साफ़ कहा हुआ: पता खोजना, रास्ता निकालना और नक़्शे की टाइलें OpenStreetMap से पूछती हैं — यही अकेली जगह है जहाँ DUCAT स्थान डिवाइस से बाहर भेजता है। सूचना-पट्ट ख़ुद कभी ~1.2 किमी से बेहतर सटीकता नहीं रखते।

सवारी बुलाना: रास्ता, दूरी, समय, और किराया इसके मुक़ाबले कि कोई मंच कितना लेता
पुकार, मंच के दाम के मुक़ाबले
टैक्सी मीटर: दर एक बार टाइप की गई, एक पिकअप कोड, और शुरू होते ही शर्तें चैट में पहुँचती हैं
मीटर, शर्तें उसी सूत्र में

बेचिए, किराए पर दीजिए, या अपने समय का एक घंटा दीजिए

वही सूचना-पट्ट वाली मशीनरी सवारियों से ज़्यादा कुछ ढोती है। बाज़ार की एक सूची, एक किराया, या हुनरमंद मदद का एक घंटा — सब मोहल्ले के पते वाले सूचना-पट्ट पर टँगते हैं, और पास खड़ा कोई अजनबी उसे पढ़ लेता है, बिना आप दोनों में से किसी के किसी मंच को छुए।

सूचियाँ पुकारों से मोटे सूचना-पट्टों पर बैठती हैं — क़रीब पाँच किलोमीटर चौड़े, क्योंकि चाबियों का गुच्छा लेने लोग सफ़र कर ही लेते हैं। खोज आपका पट्ट और उसके चारों ओर का घेरा पढ़ती है, और जैसे-जैसे जवाब आते हैं नतीजे बनाती जाती है, इसलिए आपके पास खड़ी कोई चीज़ छह सेकंड से कम में स्क्रीन पर आ जाती है, जबकि «यहाँ आस-पास कुछ नहीं है» में क़रीब चालीस सेकंड लगते हैं और वह इलाक़े एक-एक कर के निपटाती जाती है।

बाज़ार देखना: पट्ट पर मिली एक सूची, दाम, जमानतों और पूछने के बटन के साथ
बाज़ार
मदद देखना: पास ही पेश किया गया कोई हुनर, प्रति घंटा दाम के साथ
मदद किराए पर लें
किराए के लिए गाड़ी की सूची डालना: वह सार्वजनिक हिस्सा जो पट्ट पर जाता है
सार्वजनिक हिस्सा — जो पट्ट पढ़ सकता है
सिर्फ़ उसके लिए जो बुक करे: पता और सौंपने के ब्योरे कभी पट्ट पर नहीं जाते
निजी हिस्सा — कभी पट्ट पर नहीं
पास में सामान ढूँढना: प्रति दिन दाम और जमानत के साथ एक चालू सूची
इसे ढूँढना — दाम, जमानत, और पूछने का रास्ता

सूची का फ़ॉर्म दो हिस्सों में बँटा है और ऐप आपको बताता है कि कौन-सा हिस्सा कौन-सा है: पहले हिस्से की हर चीज़ एक सार्वजनिक पट्ट पर जाती है जिसे पास का कोई भी पढ़ सकता है, और पता, चाबियाँ कहाँ रखी हैं, तथा नंबर प्लेट दूसरे हिस्से में जाते हैं, जो असली बुकिंग होने तक आपके फ़ोन से बाहर नहीं निकलता।

एक घर, एक फ़ीड
और अपनी एक ताक

जो रिकॉर्ड एक बिल ढोते हैं, वही एक पन्ना भी उतनी ही आसानी से ढोते हैं। आपकी कुंजी पहले से ही एक पता है, इसलिए जो आप लिखते हैं उसके रहने की जगह है — किसी से जगह माँगे बिना।

फ़ीड: उन लोगों की पोस्टें जिन्हें आप रखते हैं, और आपका अपना घर
फ़ीड — उन लोगों की पोस्टें जिन्हें आप रखते हैं
लाइब्रेरी: प्रकाशक के हिसाब से रखे अंक, खोले जाने के बजाय बाहर सहेजे गए
लाइब्रेरी — प्रकाशक के हिसाब से रखे अंक
दुनिया भर: विषय-बोर्डों पर प्रकाशन, जहाँ «सब कुछ» हर ताक एक साथ पढ़ता है
दुनिया भर — विषय-बोर्ड, सारी ताकें एक साथ
खुला हुआ एक इश्तिहार: उसके बंडल की तस्वीरें, बेचने वाले का ब्योरा, और लिखा हुआ दाम आज की दर के साथ
खुला हुआ एक इश्तिहार — उसकी तस्वीरें और लिखा हुआ दाम

किसी पहचान का घर उसी पते पर बैठता है जिसे उसकी अपनी कुंजी नाम देती है, और फ़ीड उन लोगों की समयरेखा है जिन्हें आप रखते हैं — एक पोस्ट तस्वीर और फ़ाइल दोनों ढो सकती है, और दिल वापस आते हैं। साइटें उन्हीं की डिस्क से परोसी जाती हैं जिन्होंने उन्हें प्रकाशित किया, और वे एक सीलबंद कमरे में खुलती हैं, इसलिए एक को पढ़ना कहीं और से कुछ नहीं मँगाता।

प्रकाशन — एक अख़बार, एक धारावाहिक, सॉफ़्टवेयर का एक टुकड़ा — मोहल्ले के हिसाब से नहीं, विषय-बोर्डों पर दुनिया भर में बिकते हैं: एक पोस्ट विषय के बोर्ड पर और अपनी भाषा के बोर्ड पर, दोनों जगह उतरती है, और «सब कुछ» छहों ताकें साथ-साथ पढ़ता है। एक इश्तिहार अपना बंडल बेचने वाले के अपने फ़ोन से लाता है — पूरे आकार की 24 तस्वीरों तक, एक ब्योरा, ख़ूबियाँ और नत्थी फ़ाइलें — और जिस कुंजी का वह नाम नहीं लेता उस पर पूरा का पूरा ठुकरा दिया जाता है, ताकि एक बुरा दस्तावेज़ अच्छी तस्वीरें न छिपा सके।

आप दोनों जमानत रखते हैं।
पूरा करने पर वह लौट आती है।

बीच में कोई कंपनी है ही नहीं जो किसी का पक्ष ले, इसलिए DUCAT कुछ आसान करता है। पैसा एक ऐसे पते पर रहता है जिसे सिर्फ़ आप दोनों खोल सकते हैं, और छोड़ने पर हर पक्ष को उसकी अपनी जमानत नाम से वापस मिलती है। कोई जमानत हड़प नहीं सकता — हम भी नहीं, क्योंकि कोई «हम» है ही नहीं जिसे भुगतान करना हो।

~10% एक सवारी छोटी, नुक़सान का ख़तरा कम
~20% ठहरने की जगह किसी के घर की चाबियाँ
~30% एक गाड़ी नुक़सान दाम से ऊपर जा सकता है

ये आँकड़े अंदाज़े नहीं, तर्क से निकले हैं — Bisq का बिना अभिरक्षक वाला 2-में-से-2 मॉडल सबसे नज़दीकी चलता-फिरता उदाहरण है, और दोहरी जमा राशि पर हुआ काम साबित करता है कि संतुलन पर यह व्यवस्था धोखे से सुरक्षित है। इससे दो सीमाएँ निकलती हैं: जिस जमानत की क़ीमत उसे लौटाने के शुल्क से कम हो वह सजावट के बजाय शून्य हो जाती है, और कोई भी दाम के आधे से ऊपर नहीं जाती। ज़्यादा जोखिम वाला पक्ष दूसरे नंबर पर पैसा डालता है, ताकि उसका पैसा साझा पते पर कभी अकेला न पड़े।

⅔

ऐसा एस्क्रो जिसके पीछे कोई कंपनी नहीं

जब सौदे को जमानत से ज़्यादा चाहिए: सवारी, चालक और दोनों का भरोसेमंद मध्यस्थ संपर्क सीलबंद सूत्र पर वितरित कुंजी-निर्माण चलाते हैं — तीन डिवाइस मिलकर एक Monero पता निकालते हैं, हर एक के पास सिर्फ़ एक हिस्सा, कोई भी दो हस्ताक्षर कर सकते हैं, और कहीं कोई बाँटने वाला नहीं। सीधा रास्ता दो टैप का है।

बाक़ी सब एक समझौता है: एक पक्ष बँटवारा सुझाता है, दूसरा हस्ताक्षर करता है या पलटकर प्रस्ताव देता है। जो अटक जाए वह मध्यस्थ से पूछता है, जिसका सह-हस्ताक्षर ही फ़ैसला है — क़ब्ज़े में आया मध्यस्थ ज़्यादा से ज़्यादा नामित पक्षों में से चुन सकता है, ख़ुद को कभी भुगतान नहीं कर सकता। stagenet पर हर रूप में शृंखला-प्रमाणित, दो-इनपुट वाली FROST रिलीज़ समेत।

∅

एक नाम की क्या क़ीमत चुकी

कोई सौदा होने से पहले एक अजनबी होता है, और सवाल यह है कि उसके नाम की उसे क्या क़ीमत चुकानी पड़ी। एक पर्सोना Monero को जला सकता है — उसे ऐसे पते पर भेजकर जिसकी चाबियाँ किसी के पास नहीं, और जो एक ऐसे हैश से निकला है जिसे कोई भी ख़ुद दोबारा गिन सकता है — और उसके लिए Monero का अपना भुगतान-प्रमाण साथ रख सकता है। आपका ऐप उस प्रमाण को अपने ही नोड पर जाँचता है, दूसरे नोड से पूछता है कि लेनदेन किसी ब्लॉक में आया या नहीं, और उसके बाद जहाँ भी आप कुछ तय करते हैं वहाँ उस पर्सोना को शब्दों में दिखाता है: 0.01 XMR जलाया, ब्लॉक N से। कभी कोई अंक नहीं। असल नियम वह चेतावनी है: जो आप दाँव पर लगाने जा रहे हैं वह उनके जलाए हुए से ज़्यादा क़ीमती हो, तो ऐप यह कह देता है — क्योंकि जिस नाम की कोई क़ीमत नहीं चुकी, उसके ग़ायब होने में खोने को कुछ नहीं।

सौदा निपट जाने के बाद कोई भी पक्ष एक रेटिंग वाली रसीद पर हस्ताक्षर कर सकता है, और जिससे आप ख़ुद मिले हों वह कोई भी एक गवाही पर हस्ताक्षर कर सकता है। दोनों सीलबंद सूत्र में सफ़र करते हैं और दोनों को तौलता सिर्फ़ पढ़ने वाला है — हर हस्ताक्षरकर्ता की एक आवाज़, और गिने वही हस्ताक्षरकर्ता जाते हैं जिनका अपना जलाना आपने जाँचा हो, और गवाही सिर्फ़ उन लोगों की गिनी जाती है जो पहले से आपके संपर्कों में हैं। एक ही क़दम, कोई ग्राफ़ नहीं, कहीं कुछ प्रकाशित नहीं। ऐसी साख जो निजता के बजाय पैसे में पड़ती है।

और यह एक ढंग के ऐप की तरह बरतता है

जिस निजता-उपकरण को चलाना अखरता है, वह एक ही बार चलाया जाता है। यह बताता है कि चीज़ों की आपको क्या क़ीमत पड़ती है, बीस भाषाएँ बोलता है, और इसकी डार्क थीम बाद में सोची हुई चीज़ नहीं है।

प्रोफ़ाइल: संपर्कों को सीधे भुगतान करने देने की जोड़े जा सकने वाली क़ीमत, वहीं बताई गई जहाँ आप चुनते हैं
क़ीमत बताई जाती है उसी पल जब आप चुनते हैं
वही होम स्क्रीन गहरी Mocha थीम में
Mocha — डार्क थीम, ढंग से बनाई हुई
वही होम स्क्रीन अरबी में: दाएँ-से-बाएँ का पूरा दर्पण, पूर्वी अरबी अंकों के साथ
अरबी — दाएँ-से-बाएँ का पूरा दर्पण
सेटिंग्स का कारोबारी हिस्सा: किराया क्षेत्र, बिक्री-कर की दर, निजता, बैकअप
सेटिंग्स का कारोबारी हिस्सा

निजता की व्यवस्था में सुविधा की एक क़ीमत होती है, और ऐप वह क़ीमत उसी पल बताता है जब आप चुनते हैं, न कि उस नीति में जिसे कोई नहीं पढ़ता। संपर्कों को सीधे भुगतान करने देने का मतलब है एक ही पता दोबारा इस्तेमाल करना — इसलिए वह कहता है कि शृंखला देखने वाला कोई भी जान सकता है कि हर बार उसी व्यक्ति को भुगतान हुआ, उन लोगों को भी पता चलेगा जिन्होंने आपको सिर्फ़ एक बार भुगतान किया, और साथ ही विकल्प भी दिखाता है। यही आदत हर जगह चलती है: mempool में दिखी चीज़ को दिखी, निपटी कभी नहीं के रूप में दिखाया जाता है; प्रोफ़ाइल हमेशा उसी रूप में पेश की जाती है जो वह है — एक दावा।

यह बीस भाषाएँ बोलता है — हर स्क्रीन संसाधन फ़ाइलों से पढ़ती है, बहुवचन जोड़-तोड़ के बजाय रचे जाते हैं, और अरबी तथा फ़ारसी दर्पण को साबित करती हैं। रसीदें अभिलेख हैं, संदेश नहीं: हर रसीद अपने अलग भंडार में रहती है, सूत्र और संपर्क के मिटने के बाद भी बची रहती है, और एन्क्रिप्टेड बैकअप के साथ सफ़र करती है — जो पैसे के साथ-साथ लोगों को भी ले चलता है।

वही ऐप एक मेज़ पर

उसी Rust के ऊपर एक नेटिव खिड़की जो फ़ोन चलाता है — जिससे एक दुकानदार का गल्ला, एक कियोस्क, प्रेस-कक्ष, बाज़ार और फ़ीड एक ही कार्यान्वयन बन जाते हैं, कोई पोर्ट नहीं।

मेज़ का चैट पन्ना: जोड़ीदार सूत्रों के ऊपर बोर्डों पर समूह, साथ में बातचीत का खाना
चैट — बोर्डों पर समूह, जोड़ीदार सूत्रों के ऊपर
मेज़ का गल्ला: चढ़ाई गई एक बिक्री और बार के उधार
गल्ला — चढ़ाई गई एक बिक्री और बार के उधार
मेज़ का बाज़ार पन्ना: किसी सेल के पास के इश्तिहार, उनके थंबनेल के साथ
बाज़ार — किसी सेल के पास के इश्तिहार, उनके थंबनेल के साथ
मेज़ का स्थिति पन्ना: नोड, उसकी रूटिंग तालिका, फिर से जोड़ें, और लॉग
स्थिति — नोड, उसकी रूटिंग तालिका, फिर से जोड़ें

यह फ़ोन की बीस भाषाएँ उन्हीं संसाधनों से बोलता है, और हर रीति में फ़ोन के सामने परखा जा चुका है: चैट, बोर्डों पर समूह, बिल और रसीदें, एक कियोस्क ऑर्डर जो ऐसे फ़ोन से चुकाया गया जो इस मेज़ से पहले कभी नहीं मिला था, फ़ाइलें और साइटें परोसी और मँगाई गईं, और असली आवाज़ वाली कॉलें।

क्या साबित है, और क्या नहीं

README इस बात का हिसाब रखता है कि असली नेटवर्क और असली stagenet पर सिरे से सिरे तक सचमुच क्या चला है — और कमियों को दबाने के बजाय गिना देता है।

सिरे से सिरे तक करके दिखाया
  • दो पूरी बाँटी हुई सवारियाँ फ़ोन↔डेस्कटॉप — जियोसेल पुकार से शृंखला पर निपटान तक, टिप और रसीद समेत — और जमानत वाली सवारी अब दो फ़ोनों पर भी अंत तक चलाई जा चुकी
  • एस्क्रो का पूरा चक्र — दो फ़ोन और मेज़ पर बैठे एक मध्यस्थ ने अलग-अलग मिलकर एक 2-में-से-3 पता निकाला; पैसा डालना → छोड़ना → चालक को भुगतान
  • एक बुकिंग — मालिक और मेहमान दोनों ने अपनी-अपनी जमानत डाली, कोष की पुष्टि मेहमान के अपने स्कैन से हुई, बँटवारा सुझाया गया, हस्ताक्षर हुए, दोनों पक्ष पूरे रहे; बीच रास्ते एक Monero नोड का समय पूरा हो जाने पर वह दोबारा शुरू होने के बजाय वहीं से आगे बढ़ी
  • बार का उधार फ़ोन से डेस्कटॉप तक, बिल से रसीद तक; दस हमले नाकाम
  • शून्य तक मिटाया गया एक फ़ोन पूरे सेटअप से गुज़ारा गया: पहला कार्ड, पहला भुगतान, सिरे से सिरे तक चुकाई गई एक कियोस्क बिक्री — फिर दोबारा मिटाकर उसी के अपने बैकअप से बहाल किया गया
  • एक ही दिन में हर एस्क्रो पटरी इंटरफ़ेस से होकर — बाज़ार की एक बिक्री, सड़क से पुकारी गई सवारी जिसमें जीवित स्थिति दो फ़ोनों के बीच जाती रही, सामान का किराया, और मदद का एक काम जिसकी पहली ही दौड़ ने एक असली दौड़-स्थिति उजागर कर के ठीक कर दी
  • भरोसे की परत, बहस नहीं, चल कर देखी गई — एक जलाना साबित हुआ और किसी अजनबी के अपने नोड पर 12 सेकंड में जाँचा गया, रेटिंग वाली एक रसीद सही-सही शून्य तौली गई, चार डेस्कटॉप इस नतीजे पर पहुँचे कि «आपके 2 संपर्क उन्हें जानते हैं», और बिना नाम वाले एक पुकार-कार्ड को नाम उसके बाद साझा किए गए विवरण ने दिया
कहा गया, दबाया नहीं
  • परियोजना के बाहर के किसी की भी समीक्षा नहीं — §2.5 यही तर्क है कि यह क्यों मायने रखता है; भीतर ही पाँच हमला-सतहों पर एक फेरा लगाकर चालीस-कुछ बातें मिलीं और अधिकांश ठीक कर दी गईं, जो इससे छोटी चीज़ है
  • ऐसा कोई कार्यान्वयनकर्ता नहीं जिसने कभी core/ न पढ़ा हो
  • NFC संकलन में जाँचा गया, दो फ़ोनों के बीच मैदान में कभी नहीं आज़माया गया — और वह छुअन किसी हैंडसेट पर कभी नापी नहीं गई
  • विलंब के आँकड़े नोड जुड़े डेस्कटॉप पर मापे गए, बैटरी पर चलते फ़ोन पर नहीं
  • दो रेडियो, दो बैटरियाँ, दो अलग घड़ियाँ — मैदानी दिन अब भी बाक़ी है
  • डेस्कटॉप के पास दूसरा कारक नहीं है — न उपकरण का कोई लॉक, न अपना कोई रहस्य, इसलिए पैसा जाने से पहले फ़ोन जो पूछता है वह वहाँ चल ही नहीं सकता
!

प्री-अल्फ़ा। Stagenet। असली पैसे के लिए नहीं।

हर बिल्ड डिबग-हस्ताक्षरित है और 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/           सबूत, उत्पाद नहीं

चार जाँचकर्ता, हर push पर

  • हर वेक्टर schema.json के विरुद्ध जाँचा गया
  • एक दूसरा कार्यान्वयन तीनों सौ अट्ठाईस चलाता है और उसका मिलना ज़रूरी है
  • दस्तावेज़ की कोड से जाँच — इसी से पकड़ा गया कि एक अनिवार्य खंड तीन बार हवाला दिया गया और लिखा कभी नहीं गया, एक मान-सीमा जिसे रजिस्ट्री ने घोषित ही नहीं किया, और छह वेक्टर-क़िस्में जिनका नाम दस्तावेज़ ने कभी लिया ही नहीं
  • आयात की गई कोई चीज़ बिना घोषित नहीं रहती

संरक्षकता अनिवार्य है, बस चाहत नहीं: §18.7 Veilid की नैतिकता को अनुरूपता की शर्त बना देता है — न प्रोटोकॉल शुल्क, न नोड को भुगतान, कभी नहीं। इस कोड से जो चाहें बनाइए, पर ढुलाई से कमाई करने वाला क्लाइंट DUCAT नहीं है।

इसे फ़ोन पर डालिए,
या मेज़ पर

पहले से कुछ इंस्टॉल करने की ज़रूरत नहीं — हर बिल्ड अपनी Rust लाइब्रेरी और JVM साथ लाता है। फ़ोन पर Android, और वही ऐप Linux, Windows और macOS पर एक नेटिव खिड़की के रूप में। iOS का कोई बिल्ड नहीं है; जब वह इसका हक़ पा लेगा, तब उसे अपना फ़ोल्डर मिलेगा।

🤖 Android

फ़ोन का ब्राउज़र, सबसे नया बिल्ड, कोई रिलीज़ पन्ना खंगालने की ज़रूरत नहीं। armeabi-v7a सिर्फ़ लगभग 2016 से पुराने फ़ोनों के लिए; x86_64 एमुलेटर के लिए है।

🐧 Linux

.deb और .rpm पैकेज की तरह इंस्टॉल होते हैं; AppImage बस चल पड़ता है।

🪟 Windows

बिना हस्ताक्षर — Windows पहली बार खोलने पर चेतावनी देगा।

🍎 macOS

Apple Silicon और Intel के बिल्ड। बिना हस्ताक्षर — macOS पहली बार खोलने पर चेतावनी देगा।

डिबग-हस्ताक्षरित, केवल stagenet — असली पैसे के लिए नहीं।