گربهٔ مانکی-نکوی DUCAT، با یک سکهٔ Monero در دست
داد و ستد نزدیک، همتا به همتا · مشخصات، پیش‌نویس 1.1.0-dev13

DUCAT

Veilid برای حمل. Monero برای تسویه. و هیچ گرداننده‌ای در میان نیست.

هیچ‌کجا سرور DUCAT وجود ندارد — مخاطبان، پیام‌ها، صورت‌حساب‌ها و رسیدها همگی رکوردهای DHT و بسته‌های مهرشدهٔ سرتاسری‌اند، و هر گوشی یک گرهٔ کامل Veilid را می‌گرداند و آنچه از مسیریابی و فضای ذخیره برمی‌دارد، باز پس می‌دهد.

0 بردار انطباق 0 حالت کاری 0 زبان 0 سرور

امضای اشکال‌زدایی، فقط روی stagenet. هنوز برای پول واقعی نیست.

ایستاده بر

داد و ستدی که کسی در میانش نیست

دوکات شش سده سکه‌ای زرین بود که از ونیز تا وین و تا شام پذیرفته می‌شد — بی هیچ رابطه‌ای با ناشر، بی هیچ حسابی پشتش، و بی هیچ اجازه‌ای که به آن چسبیده باشد. DUCAT همان است، برای آن لحظه‌ای که روبه‌روی کسی ایستاده‌ای و معامله می‌کنی.

🐱

هیچ‌کجا سروری نیست

مخاطبان، صورت‌حساب‌ها، پرداخت‌ها و رسیدها به شکل بسته‌های مهرشدهٔ سرتاسری روی DHT‌ی Veilid سفر می‌کنند. چیزی نیست که احضاریه بگیرد، یا کند شود، یا از سکو حذف شود، یا خاموش شود، چون اصلاً چیزی در حال اجرا نیست. هر گوشی یک گرهٔ کامل است و آنچه از مسیریابی و فضا برمی‌دارد باز پس می‌دهد.

🔑

هویت یک جفت کلید است

روی همان گوشی ساخته می‌شود. نه رایانامه، نه شمارهٔ تلفن، و نه جایی برای ثبت‌نام — و دقیقاً به همین دلیل هم کسی نمی‌تواند آن را برایت بازگرداند، و برنامه این را به‌جای دفن‌کردن، بلند می‌گوید.

🎫

کارت‌هایی که یک‌بار دریافت می‌شوند

کارتی به کسی می‌دهی — کد QR، پیوند ducat:، یا یک تماس NFC — و آن کارت فقط برای یک نفر کار می‌کند. همین که دریافت شد از کار می‌افتد، پس عکسی از صفحه که سر از جای دیگری درآورده باشد، راه ورود نیست.

🔒

گفت‌وگوهای مهرشده

رمزنگاری به شکل X3DH، با پیش‌کلیدهای یک‌بارمصرف و رازداری روبه‌جلو. و هرگاه برنامه ناچار شود به پیش‌کلید امضاشده عقب بنشیند، به‌جای پنهان‌کردنش یک قفل باز نشانت می‌دهد.

💬

گفت‌وگوهایی که پول می‌برند

رشته‌هایی بر پایهٔ صندوق پستی که حتی وقتی یک طرف آفلاین است کار می‌کنند — و صورت‌حساب‌های ریز را می‌برند که جمع سطرهایشان باید با مبلغ کل بخواند وگرنه پیام رد می‌شود، و نیز پرداخت‌ها و رسیدهایی که گیرندهٔ پول صادر می‌کند و به همان تراکنشی اشاره دارند که تأییدش کرده است. گروه‌های کوچک هم روی همان رشته‌های دوتایی پخش می‌شوند: نه کلید گروهی، نه سابقهٔ مشترک، و هیچ‌یک از ویژگی‌های رشته دست‌نخورده باقی می‌ماند.

شش گام، بدون حساب کاربری،
حدود یک دقیقه

هر عکسی در این صفحه، خودِ برنامه است که روی یک گوشی اجرا می‌شود؛ ماکت نیست. و هیچ‌چیز اینجا از تو نمی‌خواهد ثبت‌نام کنی، چون اصلاً جایی برای ثبت‌نام وجود ندارد.

گام ۱ از ۶: هویتت را بساز — جفت کلیدی که روی همین گوشی ساخته می‌شود، بدون حساب کاربری
۱ · هویت — یک جفت کلید، نه ثبت‌نام
گام ۴ از ۶: رمز PIN را برگزین، با هشداری رک که بازنشانی‌اش ممکن نیست
۴ · یک رمز PIN — و هیچ راهی برای بازنشانی‌اش، رک و راست
گام ۵ از ۶: غریبه‌ها چطور به هم اعتماد می‌کنند — هر دو طرف ضمانت می‌گذارند و به سرانجام رساندن آن را بازمی‌گرداند
۵ · اعتماد — پیش از نخستین معامله‌ات توضیح داده می‌شود
گام ۶ از ۶: پشتیبان، که راستش تا از گوشی بیرون نرفته هنوز پشتیبان نیست
۶ · پشتیبان — تا وقتی از گوشی بیرون نرفته، «هنوز پشتیبان نیست»

هویت تو یک جفت کلید است که روی همین دستگاه ساخته می‌شود — نه رایانامه، نه شمارهٔ تلفن، و نه جایی برای ثبت‌نام، و دقیقاً به همین دلیل هم کسی نمی‌تواند آن را برایت بازگرداند. گام آخر پشتیبان‌گیری است، چون کیف پولی که نتوانی بازش گردانی، تنها راهی است که آدم اینجا واقعاً پول از دست می‌دهد.

پولی که از آنِ خودت است

یک کیف پول Monero که کلیدش دست خودت است، با تبدیل به پول رایج در همه‌جا، که موتور توکار monero-oxide آن را می‌پیماید و خرج می‌کند — و هیچ سرویس کیف پولی روی گوشی در حال اجرا نیست.

صفحهٔ خانگی شخصی: موجودی به XMR و پول رایج، وضعیت هم‌گام‌سازی، شمارندهٔ اسکناس‌های قابل‌خرج، کاشی‌های حالت‌ها و جابه‌جایی‌های اخیر
موجودی، و اسکناس‌هایی که پشتش هستند
پرداخت یا درخواست: مبلغ به پول رایج یا XMR، حساب کارمزد، و آنچه پس از آن می‌ماند
همهٔ حساب و کتاب پیش از آنکه بپذیری
صورت‌حساب: موجودی جاری، جست‌وجوی رسیدها، برون‌بری CSV
صورت‌حسابی که از زنجیره بازساخته شده
برگزیدن اینکه به چه کسی بپردازی: مخاطبان همراه با اثر انگشت کلیدشان
به چه کسی می‌پردازی، با اثر انگشت کلید

هنگام پرداخت، مبلغ، کارمزد تخمینی شبکه، جمع کل، آنچه پس از آن برایت می‌ماند، تعداد اسکناس‌هایی که خرج می‌شود و تقریباً چقدر طول می‌کشد، همه پیداست — و سرعتش را هم خودت برمی‌گزینی. تاریخچه از زنجیره بازساخته می‌شود: ارسال‌ها با key image شناخته می‌شوند، باقیِ برگشتی هرگز مثل درآمد نشان داده نمی‌شود، هر سطر موجودی جاری را با خود دارد، و کل صورت‌حساب به CSV بیرون می‌آید.

Monero به‌جای موجودی، اسکناس‌های جدا از هم را خرج می‌کند؛ پس کیف پولی که یک اسکناس درشت دارد ممکن است نتواند دو بار پشت سر هم بپردازد. برنامه اسکناس‌های قابل‌خرج را می‌شمارد و می‌گوید یکی را پیش از آنکه پای صندوق بایستی خرد کن، نه اینکه همان‌جا کار بخوابد.

گفت‌وگوهایی که پول می‌برند

مخاطب یک جفت کلید است، نه یک شناسه. یک بار پویش، گفت‌وگویی بر پایهٔ صندوق پستی می‌گشاید که حتی وقتی یک طرف آفلاین است کار می‌کند — و آن رشته‌ها داد و ستد می‌برند، نه فقط نوشته.

کارت تو: کد QR یک‌بارمصرفی که گفت‌وگویی می‌گشاید، فقط برای یک نفر
کارت تو — فقط برای یک نفر
گفت‌وگویی که پول می‌برد: صورت‌حساب ریز با سطر مالیات، رسید، و نوار امانتِ تسویه‌شده
صورت‌حساب، پرداخت، رسید — درون همان رشته
گروهی سه‌نفره روی یک تابلوی مشترک: یک رکورد برای هر نسل، یک پرسش و پاسخش از گوشی دیگر
گروه‌ها — یک رکورد مشترک برای هر نسل
جست‌وجو در آنچه مردم گفته‌اند، با نتایج نام بالاتر از نتایج پیام
بگرد دنبال آنچه مردم واقعاً گفته‌اند

کارتی به کسی می‌دهی — با کد QR، با پیوند ducat:، یا با یک تماس NFC — و آن فقط برای یک نفر کار می‌کند: همین که دریافت شد از کار می‌افتد، پس عکسی از صفحه که سر از جای دیگری درآورده باشد، راه ورود نیست.

گروه فهرستی است که فقط بزرگ‌تر می‌شود، و واژه‌هایش بر یک رکورد تابلوی مشترک برای هر نسل سوار می‌شوند (§16.24): هر عضو صفحه‌های خودش را زیر کلیدی گروهی می‌نویسد که خود فهرست آن را حمل می‌کند، پس پیامی به پنج نفر یک نوشتن است نه پنج تا، و شبکه نمی‌تواند آن رکورد را از هیچ رکورد دیگری بازشناسد. هیچ‌کس نمی‌تواند خود را جای دیگری جا بزند، و بیرون‌رفتن کاری محلی است. یک گروه می‌تواند صورت‌حساب را تقسیم کند: یک جمع کل به درخواستی جداگانه برای هر نفر بدل می‌شود، به‌همراه جمله‌ای که همه می‌توانند حساب را با آن وارسی کنند، و هر درخواست به‌محض رسیدن سندش به «پرداخت‌شده» می‌چرخد.

گوشی‌ات همهٔ آن کسب‌وکار است

یکی از نُه حالت را برگزین و کل برنامه سکان را واگذار می‌کند — با زبانه‌های خودش، و بی آنکه چیزی از کیف پول بماند. تقریباً هیچ‌کدام از اینها به شیء تازه‌ای در پروتکل نیاز نداشت، و این همان جمله‌ای است که مشخصات به آن بیش از همه می‌بالد.

حالت‌های کاری: شخصی، صندوق فروش، حساب باز، تاکسی، کمک مالی، بازار، اجاره، گرفتن کمک، کیوسک
نُه حالت، یک پروتکل
صندوق فروش: کالاهای زده‌شده با سطر مالیات فروشِ حساب‌شده
صندوق فروش — با مالیاتِ حساب‌شده
یک کد که مشتری می‌پوید؛ و صورت‌حساب ریز روی گوشی او می‌نشیند
یک کد — صورت‌حساب همان لحظهٔ پویش می‌رسد
حساب‌های باز: باز، صورت‌حساب‌شده و در انتظار، و بسته‌شده با یک صورت‌حساب
حساب باز — در اتوبوس برگشت تسویه می‌شود
حالت کیوسک، سمت مشتری: هر چه می‌خواهی لمس کن، و مالیات پیش از تأیید نشان داده می‌شود
کیوسک — مشتری خودش سفارش می‌دهد
پنل کارکنان کیوسک پشت یک رمز PIN: سفارش‌ها، فهرست، و نرخ مالیات
پنل کارکنان پشت یک رمز PIN
کد کمک مالی همیشگی، با هزینهٔ پیوندپذیری‌اش روی صفحه
کمک مالی — با هزینه‌ای که نامش برده شده

صندوق فروش کالاها را می‌زند یا جمع تایپ‌شده را می‌گیرد، مالیات فروش منطقهٔ خودش را حساب می‌کند و یک کد نشان می‌دهد؛ صورت‌حساب همان لحظه که مشتری می‌پوید روی گوشی‌اش می‌نشیند و با پرداخت، رسید بازمی‌گردد. حساب باز هر نوشیدنی را به مشتری خبر می‌دهد و با یک صورت‌حساب بسته می‌شود. کیوسک گوشی را یکسره به مشتری می‌سپارد و پنل کارکنان پشت یک رمز PIN می‌ماند. صندوق کمک هر دو راه را باز می‌گذارد: یک کد DUCAT که گفت‌وگو می‌گشاید و به‌محض رسیدن پول رسید می‌فرستد، و نشانی‌ای همیشگی که هر کیف پول Monero می‌تواند به آن بدهد — و هزینهٔ پیوندپذیری‌اش روی صفحه نوشته شده، نه در یک سیاست‌نامه.

سفری که کسی آن را تقسیم نمی‌کند

بنویس کجا می‌روی. گوشی‌ات موقعیت GPS را به یک ژئوسل بدل می‌کند — تابلوی اعلانات عمومی‌ای که نشانی‌اش خودِ آن مکان است — و فراخوانی می‌زند: کارتی یک‌بارمصرف، یک ناحیهٔ تقریبی، و پیشنهادی که از مسیر رانندگی واقعی درآمده. هیچ نامی روی تابلو نمی‌رود — نه روی کارت و نه در رکوردی که پشت آن است. رانندگان سلول خودشان و سلول‌های همسایه را می‌پایند و آن را برمی‌دارند؛ داور این مسابقه DHT است و هیچ واسطه‌ای وجود ندارد.

خط سبز همان نکتهٔ اصلی است: نرخ‌های DUCAT حدود ۱۵٪ پایین‌تر از چیزی است که یک سکو از مسافر می‌گیرد، و راننده همه‌اش را نگه می‌دارد — سهم غایب سکو، به هر دو بازگردانده شده. و پذیرش، با یک چهره می‌رسد: نام، خودرو، رنگ، پلاک، زمان رسیدن — مهرشده برای مسافر و هرگز روی تابلو دیده نمی‌شود. نام خودت و درگاهی که کنارش ایستاده‌ای هم در همان لحظه راه وارونه را می‌روند، به همان یک راننده‌ای که فراخوان را برداشت.

تنها یک امتیاز واگذارشده، رک روی صفحه نوشته: جست‌وجوی نشانی، مسیریابی و کاشی‌های نقشه همه از OpenStreetMap می‌پرسند — تنها جایی که DUCAT موقعیت را از دستگاه بیرون می‌فرستد. خودِ تابلوها هرگز دقتی بهتر از حدود ۱٫۲ کیلومتر ندارند.

فراخواندن یک سفر: مسیر، مسافت، زمان، و کرایه در برابر آنچه یک سکو می‌گرفت
فراخوان، در کنار نرخ سکو
کنتور تاکسی: نرخ یک بار تایپ می‌شود، یک کد سوارشدن، و شرایط هنگام آغاز در گفت‌وگو می‌نشیند
کنتور، و شرایط درون همان رشته

بفروشش، اجاره‌اش بده، یا یک ساعت از وقتت را پیشنهاد کن

همان سازوکار تابلو چیزی بیش از سفر می‌برد. یک آگهی در بازار، یک اجاره، یا یک ساعت کمک ماهرانه — همه روی تابلویی می‌نشینند که نشانی‌اش محله است، و غریبه‌ای در همان نزدیکی آن را می‌خواند، بی آنکه هیچ‌یک از شما دو نفر به سکویی دست بزنید.

آگهی‌ها روی تابلوهایی درشت‌تر از فراخوان‌ها می‌نشینند — حدود پنج کیلومتر پهنا، چون آدم‌ها برای یک دسته کلید حاضرند راه بیفتند. جست‌وجو تابلوی تو و حلقهٔ گرداگردش را می‌خواند و نتیجه‌ها را همان‌طور که پاسخ می‌آید می‌کشد، پس چیزی که نزدیک تو پارک شده در کمتر از شش ثانیه روی صفحه می‌آید، حال آنکه «این دور و بر چیزی نیست» حدود چهل ثانیه می‌برد و در همان حال ناحیه‌ها را یکی‌یکی خط می‌زند.

گشتن در بازار: آگهی‌ای که روی تابلو پیدا شده، با قیمت، ضمانت‌ها و دکمه‌ای برای پرسیدن
بازار
گشتن دنبال کمک: مهارتی که همان نزدیکی پیشنهاد شده، با قیمت ساعتی
گرفتن کمک
گذاشتن آگهی خودرو برای اجاره: نیمهٔ عمومی که روی تابلو می‌رود
نیمهٔ عمومی — آنچه تابلو می‌تواند بخواند
فقط برای کسی که رزرو می‌کند: نشانی و جزئیات تحویل هرگز روی تابلو نمی‌روند
نیمهٔ خصوصی — هرگز روی تابلو نمی‌رود
یافتن وسیله در همان نزدیکی: آگهی‌ای زنده با قیمت روزانه و ضمانت
یافتنش — قیمت، ضمانت، و راهی برای پرسیدن

فرم آگهی به دو نیم بریده شده و برنامه به تو می‌گوید کدام نیمه کدام است: هر چه در بخش نخست است روی تابلویی عمومی می‌رود که هر کس نزدیک باشد می‌تواند بخواند، و نشانی، جای کلیدها و پلاک در بخش دوم می‌آیند، که تا رزروی واقعی نشود از گوشی تو بیرون نمی‌رود.

یک خانه، یک خوراک
و قفسه‌ای از آنِ خودت

رکوردهایی که یک صورت‌حساب را می‌برند، یک صفحه را هم به همان خوبی می‌برند. کلید تو پیشاپیش یک نشانی است، پس آنچه می‌نویسی جایی برای زیستن دارد، بی‌آنکه از کسی جا بخواهی.

خوراک: نوشته‌های کسانی که نگه‌شان می‌داری، و خانهٔ خودت
خوراک — نوشته‌های کسانی که نگه‌شان می‌داری
کتابخانه: شماره‌ها به تفکیک ناشر، ذخیره‌شده به بیرون به‌جای آنکه باز شوند
کتابخانه — شماره‌ها به تفکیک ناشر
جهانی: انتشارات روی تابلوهای موضوعی، و «همه» هر قفسه را یکجا می‌خواند
جهانی — تابلوهای موضوعی، همهٔ قفسه‌ها یکجا
آگهی‌ای گشوده: عکس‌های بسته‌اش، توضیح فروشنده، و بهایی که تایپ کرده در کنار تبدیل امروز
آگهی‌ای گشوده — عکس‌هایش و بهایی که تایپ کرده‌اند

خانهٔ یک شخصیت بر همان نشانی می‌ایستد که کلید خودش نامش را می‌برد، و خوراک خط زمانی کسانی است که نگه‌شان می‌داری — یک نوشته می‌تواند تصویر و پرونده‌ای را با خود بیاورد، و قلب‌ها بازمی‌گردند. سایت‌ها را همان کسی که منتشرشان کرده از دیسک خودش سرو می‌کند و در اتاقی مهروموم‌شده باز می‌شوند، پس خواندن یکی از آن‌ها هیچ‌چیز از جای دیگری نمی‌آورد.

انتشارات — یک روزنامه، یک داستان دنباله‌دار، یک تکه نرم‌افزار — نه بر پایهٔ محله که روی تابلوهای موضوعی در سراسر جهان فروخته می‌شوند: یک نوشته هم بر تابلوی موضوعش می‌نشیند و هم بر تابلوی زبانش، و «همه» هر شش قفسه را کنار هم می‌خواند. یک آگهی بستهٔ خود را از گوشی خودِ فروشنده می‌آورد — تا ۲۴ عکس در اندازهٔ کامل، یک توضیح، مشخصات و پرونده‌های پیوست — و در برابر هر کلیدی که نامش را نبرده باشد یکجا رد می‌شود، تا سندی بد نتواند عکس‌های خوب را پنهان کند.

هر دو ضمانتی می‌گذارید.
به سرانجام رساندن، آن را بازمی‌گرداند.

هیچ شرکتی در میان نیست که جانب کسی را بگیرد، پس DUCAT کاری ساده‌تر می‌کند. پول در نشانی‌ای می‌نشیند که فقط شما دو نفر می‌توانید بگشاییدش، و آزادسازی، ضمانت هر طرف را به نام خودش بازمی‌گرداند. هیچ‌کس نمی‌تواند ضمانتی را بردارد — از جمله ما، چون اصلاً «مایی» وجود ندارد که پولی به آن پرداخت شود.

حدود ۱۰٪ یک سفر کوتاه، با احتمال آسیب کم
حدود ۲۰٪ جایی برای ماندن کلید خانهٔ کسی
حدود ۳۰٪ یک خودرو آسیب می‌تواند از قیمت بیشتر شود

این عددها استدلال‌شده‌اند، نه حدس‌زده — مدل ۲ از ۲ بدون امین در Bisq نزدیک‌ترین نمونهٔ عملیِ کارآمد است، و ادبیات سپردهٔ دوطرفه ثابت می‌کند این چیدمان در تعادل، در برابر تقلب مقاوم است. از آن دو کران بیرون می‌آید: ضمانتی که ارزشش از کارمزد بازگرداندنش کمتر باشد به‌جای تزیین، صفر می‌شود، و هیچ ضمانتی از نیمهٔ قیمت فراتر نمی‌رود. طرفی که بیشتر در معرض است دوم واریز می‌کند، تا پولش هرگز تنها در نشانی مشترک نماند.

⅔

امانتی که هیچ شرکتی پشتش نیست

وقتی معامله چیزی بیش از یک ضمانت می‌خواهد: مسافر، راننده، و مخاطبی داور که هر دو به او اعتماد دارند، روی همان رشتهٔ مهرشده تولید کلید توزیع‌شده را اجرا می‌کنند — سه دستگاه یک نشانی Monero را استخراج می‌کنند، هر کدام تنها یک سهم دارد، هر دوتایی می‌تواند امضا کند، و هیچ‌کجا پخش‌کننده‌ای نیست. مسیر خوش، دو ضربه است.

هر چیز دیگری یک توافق است: یک طرف تقسیمی پیشنهاد می‌دهد، طرف دیگر امضا می‌کند یا پیشنهاد متقابل می‌دهد. آن‌که گیر افتاده از داور می‌پرسد، و امضای همراه داور خودِ حکم است — داوری که از دست رفته باشد، در بدترین حالت فقط می‌تواند میان طرف‌های نام‌برده یکی را برگزیند، و هرگز نمی‌تواند به خودش بپردازد. روی stagenet در همهٔ شکل‌هایش زنجیره‌ای اثبات شده، از جمله یک آزادسازی FROST با دو ورودی.

∅

نام چه هزینه‌ای داشته است

پیش از آنکه معامله‌ای در کار باشد، غریبه‌ای هست، و پرسش این است که نامش برایش چه هزینه‌ای داشته. یک شخصیت می‌تواند Monero را بسوزاند — آن را به نشانی‌ای بفرستد که کلیدهایش دست هیچ‌کس نیست و از درهم‌سازی‌ای برآمده که هر کس می‌تواند خودش دوباره حسابش کند — و گواهی پرداخت خودِ Monero را برایش همراه داشته باشد. برنامهٔ تو آن گواهی را نزد گرهٔ خودش وارسی می‌کند، از گرهٔ دومی می‌پرسد که تراکنش در بلوکی نشسته است یا نه، و از آن پس هر جا چیزی را تصمیم می‌گیری، آن شخصیت را با کلمات نشان می‌دهد: ۰٫۰۱ XMR سوزانده، از بلوک N. هرگز یک نمره. قاعده‌ای که اهمیت دارد همان هشدار است: وقتی آنچه می‌خواهی به خطر بیندازی از آنچه آن‌ها سوزانده‌اند ارزشمندتر باشد، برنامه همین را می‌گوید، چون نامی که هیچ هزینه‌ای نداشته، با ناپدید شدن چیزی از دست نمی‌دهد.

پس از معامله‌ای که تسویه شده، هر یک از دو طرف می‌تواند رسیدی امتیازدار امضا کند، و هر کس که تو را از نزدیک دیده باشد می‌تواند برایت ضمانت امضا کند. هر دو در رشته‌ای مهرشده سفر می‌کنند و وزن هر دو را تنها خواننده تعیین می‌کند — یک صدا برای هر امضاکننده، و تنها آن امضاکنندگانی به شمار می‌آیند که سوزاندن خودشان را وارسی کرده باشی، و ضمانت تنها از کسانی شمرده می‌شود که از پیش در مخاطبان تو هستند. یک گام، بی هیچ گرافی، و هیچ چیز در هیچ‌جا منتشر نمی‌شود. اعتباری که به جای حریم خصوصی، پول هزینه دارد.

و مثل یک برنامهٔ درست‌ودرمان رفتار می‌کند

ابزار حریم خصوصی‌ای که کارکردنش آزاردهنده باشد، یک بار به کار می‌رود و بس. این یکی نام می‌برد که هر چیز چه بهایی برایت دارد، بیست زبان حرف می‌زند، و پوستهٔ تیره‌اش فکر بعدی نبوده است.

نمایه: هزینهٔ پیوندپذیریِ اینکه بگذاری مخاطبان مستقیم به تو بپردازند، همان‌جا که انتخاب می‌کنی نوشته شده
بها را نام می‌برد در همان لحظهٔ انتخاب
همان صفحهٔ خانگی با پوستهٔ تیرهٔ Mocha
Mocha — پوستهٔ تیره، درست‌وحسابی
همان صفحهٔ خانگی به عربی: آینه‌ای کامل از راست به چپ، با ارقام عربی شرقی
عربی — آینه‌ای کامل از راست به چپ
نیمهٔ کسب‌وکاری تنظیمات: منطقهٔ کرایه، نرخ مالیات فروش، حریم خصوصی، پشتیبان
نیمهٔ کسب‌وکاری تنظیمات

در یک سامانهٔ حریم خصوصی، راحتی بها دارد، و برنامه این بها را در همان لحظه‌ای که انتخاب می‌کنی نام می‌برد، نه در سیاست‌نامه‌ای که کسی نمی‌خواند. اینکه بگذاری مخاطبانت مستقیم به تو بپردازند یعنی یک نشانی را دوباره به کار ببری — پس می‌گوید هر کس زنجیره را بپاید می‌تواند ببیند هر بار به همان یک نفر پرداخت شده، حتی کسانی که فقط یک بار به تو پرداخته‌اند، و بعد راه جایگزین را نشان می‌دهد. همین عادت همه‌جا جاری است: چیزی که در mempool دیده شده به شکل دیده شد، اما هرگز تسویه نشد نمایش می‌یابد؛ و نمایه همیشه همان‌گونه که هست ارائه می‌شود — یک ادعا.

بیست زبان حرف می‌زند — هر صفحه از فایل‌های منبع می‌خواند، صیغه‌های جمع به‌جای چسباندن، ساخته می‌شوند، و عربی و فارسی درستی آن آینه را ثابت می‌کنند. رسیدها سابقه‌اند، نه پیام: هر رسید در انبار خودش زندگی می‌کند، از حذف رشته و مخاطب جان به‌در می‌برد، و همراه پشتیبان رمزگذاری‌شده سفر می‌کند — پشتیبانی که به‌اندازهٔ پول، آدم‌ها را هم با خود می‌برد.

همان برنامه روی یک میز

پنجره‌ای بومی روی همان Rust که گوشی می‌گرداند — چنان‌که صندوق یک مغازه‌دار، یک کیوسک، اتاق خبر، بازار و خوراک یک پیاده‌سازی‌اند، نه یک نسخهٔ منتقل‌شده.

صفحهٔ گفت‌وگوی میز: گروه‌ها روی تابلوها بالای رشته‌های دوتایی، با یک قاب گفت‌وگو
گفت‌وگو — گروه‌ها روی تابلوها، بالای رشته‌های دوتایی
صندوق میز: فروشی که زده شده و حساب‌های باز
صندوق — فروشی که زده شده، و حساب‌های باز
صفحهٔ بازار میز: آگهی‌های نزدیک یک سلول با تصویرهای کوچکشان
بازار — آگهی‌های نزدیک یک سلول، با تصویرهای کوچکشان
صفحهٔ وضعیت میز: گره، جدول مسیریابی‌اش، اتصال دوباره، و گزارش
وضعیت — گره، جدول مسیریابی‌اش، و اتصال دوباره

بیست زبان گوشی را از همان منابع می‌گوید، و در برابر گوشی در هر آیینی آزموده شده است: گفت‌وگو، گروه‌ها روی تابلوها، صورت‌حساب‌ها و رسیدها، سفارشی در کیوسک که از گوشی‌ای پرداخت شد که هرگز این میز را ندیده بود، پرونده‌ها و سایت‌هایی که سرو و آورده شدند، و تماس‌هایی با صدای واقعی.

چه چیزی ثابت شده و چه چیزی نه

فایل README دفتری نگه می‌دارد از آنچه واقعاً سرتاسر روی شبکهٔ واقعی و stagenet واقعی اجرا شده — و شکاف‌ها را به‌جای دفن‌کردن، نام می‌برد.

سرتاسر نشان داده شده
  • دو سفر کامل با تقسیم کار گوشی↔رایانه — از فراخوان ژئوسل تا تسویه روی زنجیره، با انعام و رسید — و سفرِ ضمانت‌دار اکنون روی دو گوشی هم تا انتها رانده شده است
  • کمان کامل امانت — دو گوشی و داوری پشت میز، هر یک جداگانه یک نشانی ۲ از ۳ را استخراج کردند؛ واریز ← آزادسازی ← پرداخت به راننده
  • یک رزرو — مالک و مهمان هر کدام ضمانت خود را واریز کردند، مجموع با پویش خود مهمان تأیید شد، تقسیم پیشنهاد و امضا شد، و هر دو طرف سالم ماندند؛ و وقتی وسط کار مهلت یک گرهٔ Monero سر آمد، همان امانت را از سر گرفت به‌جای آنکه از نو آغاز کند
  • حساب باز از گوشی به رایانه، از صورت‌حساب تا رسید؛ و ده حمله رد شد
  • گوشی‌ای که تا هیچ پاک شده بود گام‌به‌گام از راه‌اندازی گذرانده شد: نخستین کارت، نخستین پرداخت، و فروشی در کیوسک که سرتاسر پرداخت شد — و سپس دوباره پاک و از پشتیبان خودش بازگردانده شد
  • همهٔ ریل‌های امانت در یک روز از راه رابط کاربری — فروشی در بازار، فراخوانی در خیابان با موقعیت زنده که میان دو گوشی رفت‌وآمد می‌کرد، اجارهٔ یک دست وسیله، و کاری دستیارانه که نخستین اجرایش یک هم‌روندی واقعی را آشکار کرد و همان‌جا درستش کرد
  • لایهٔ اعتماد را پیمودیم، نه اینکه دربارهٔ آن استدلال کنیم — یک سوزاندن ثابت شد و در ۱۲ ثانیه با گرهٔ خودِ یک غریبه وارسی شد، یک رسید امتیازدار به‌درستی صفر وزن خورد، چهار رایانه به این نتیجه رسیدند که «۲ نفر از مخاطبان شما آن‌ها را می‌شناسند»، و یک کارت فراخوانِ بی‌نام، نامش را از مشخصاتی گرفت که پس از آن فرستاده شد
گفته شده، نه دفن‌شده
  • هیچ بازبینی‌ای از سوی کسی بیرون از پروژه انجام نشده — و §2.5 همان استدلال است دربارهٔ اینکه چرا این مهم است؛ یک بازبینی درونی روی پنج سطح حمله چهل و اندی چیز یافت و بیشترشان را درست کرد، که چیز کم‌ارزش‌تری است
  • هیچ پیاده‌سازی‌کننده‌ای که هرگز core/ را نخوانده باشد وجود ندارد
  • NFC هنگام کامپایل بررسی شده، اما هرگز میدانی میان دو گوشی آزموده نشده — و آن تماس هرگز روی یک دستگاه واقعی اندازه‌گیری نشده است
  • عددهای تأخیر روی رایانه‌ای با گرهٔ متصل اندازه گرفته شده، نه روی گوشی‌ای که با باتری کار می‌کند
  • دو فرستنده، دو باتری، دو ساعت مستقل — و روز میدانی هنوز بدهی است
  • رایانه عامل دومی ندارد — نه قفل دستگاه و نه رازی از آنِ خودش، پس آن پرسشی که گوشی پیش از خروج پول می‌گذارد، آنجا اجرا نمی‌شود
!

پیش‌آلفا. Stagenet. برای پول واقعی نیست.

هر ساخت با امضای اشکال‌زدایی است و روی stagenet مربوط به Monero تسویه می‌کند — سکه‌هایی که بنا بر طراحی ارزشی ندارند. مشخصات پیش‌نویس 1.1.0-dev13 است و دربارهٔ خودش می‌گوید: هیچ‌چیز اینجا نهایی نیست و §14 دستورکار واقعی است. امتحانش کن، بشکنش، بخوانش — فقط سرمایه‌اش نکن.

مشخصات، خودِ محصول است.
و باقی همه آن را صادق نگه می‌دارند.

فایل ducat-protocol.md اثر اصلی است — پنج بخش، سیاههٔ تغییرات در آغاز، و مجموعه‌ای از آزمون‌های انطباق که پیاده‌سازی دومی آن را می‌گرداند، تا سند نتواند بی‌صدا از کد فاصله بگیرد.

★ ducat-protocol.md   مشخصات — پیش‌نویس 1.1.0-dev13، سیاههٔ تغییرات در آغاز
  core/               پیاده‌سازی مرجع (Rust)
  vectors/            ۴۰۶ مورد انطباق + طرحواره
  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 فقط برای گوشی‌های قدیمی‌تر از حدود ۲۰۱۶؛ و x86_64 برای شبیه‌سازهاست.

🐧 Linux

.deb و .rpm مثل بسته نصب می‌شوند؛ AppImage فقط اجرا می‌شود.

🪟 Windows

بدون امضا — ویندوز در نخستین باز کردن هشدار می‌دهد.

🍎 macOS

ساخت‌های Apple Silicon و Intel. بدون امضا — مک‌اواس در نخستین باز کردن هشدار می‌دهد.

امضای اشکال‌زدایی، فقط روی stagenet — برای پول واقعی نیست.