Veilid для передавання. Monero для розрахунку. Жодного оператора посередині.
Ніде немає сервера DUCAT — контакти, повідомлення, рахунки й чеки це записи в DHT та наскрізно запечатані пакети, а кожен телефон тримає повноцінний вузол Veilid, повертаючи маршрутизацію та сховище, які сам займає.
Підписано в режимі налагодження, лише stagenet. Поки не для справжніх грошей.
Дукат шість століть був золотою монетою, яку приймали від Венеції до Відня й до Леванту — жодних стосунків з емітентом, жодного рахунку позаду, жодного дозволу. DUCAT — це те саме, для хвилини, коли ви стоїте перед людиною й домовляєтеся.
Контакти, рахунки, платежі та чеки йдуть як наскрізно запечатані пакети через DHT Veilid. Нема чого викликати до суду, обмежити, зняти з платформи чи вимкнути, бо нічого не працює. Кожен телефон — повноцінний вузол і повертає маршрутизацію та сховище, які займає.
Створюється на телефоні. Ні пошти, ні номера, нікого, у кого реєструватися — і саме тому ніхто не зможе її вам відновити, і застосунок каже це вголос, а не ховає.
Ви даєте людині картку — 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/Кожна збірка підписана в режимі налагодження й розраховується на stagenet Monero — монети без вартості, так задумано. Специфікація це чернетка 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 — не для справжніх грошей.