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 — не для настоящих денег.