Veilid für den Transport. Monero für die Abwicklung. Kein Betreiber dazwischen.
Es gibt nirgendwo einen DUCAT-Server — Kontakte, Nachrichten, Rechnungen und Quittungen sind DHT-Einträge und Ende-zu-Ende versiegelte Payloads, und jedes Telefon betreibt einen vollwertigen Veilid-Knoten, der Routing und Speicher zurückgibt, die es beansprucht.
Debug-signiert, nur Stagenet. Noch nicht für echtes Geld.
Ein Dukaten war sechs Jahrhunderte lang eine Goldmünze, die von Venedig über Wien bis in die Levante angenommen wurde — keine Beziehung zu einem Emittenten, kein Konto dahinter, keine Erlaubnis nötig. DUCAT ist genau das, für den Moment, in dem man jemandem gegenübersteht und Geschäfte macht.
Kontakte, Rechnungen, Zahlungen und Quittungen reisen als Ende-zu-Ende versiegelte Payloads über Veilids DHT. Es gibt nichts, was man vorladen, drosseln, sperren oder abschalten könnte, weil nichts läuft. Jedes Telefon ist ein vollwertiger Knoten und gibt Routing und Speicher zurück, die es beansprucht.
Auf dem Telefon erzeugt. Keine E-Mail, keine Telefonnummer, niemand, bei dem man sich registriert — weshalb sie dir auch niemand wiederherstellen kann, und die App sagt das offen, statt es zu verstecken.
Du gibst jemandem eine Karte — QR-Code, ducat:-Link oder ein NFC-Tippen —
und sie gilt für eine einzige Person. Einmal eingelöst, funktioniert
sie nicht mehr; ein Screenshot, der anderswo landet, ist also kein Zugang.
Verschlüsselung nach X3DH-Vorbild mit Einmal-Prekeys und Forward Secrecy. Wenn die App auf den signierten Prekey zurückfallen muss, zeigt sie dir ein offenes Schloss, statt es zu verbergen.
Postfach-basierte Threads, die funktionieren, während eine Seite offline ist — sie tragen aufgeschlüsselte Rechnungen, deren Posten die Summe ergeben müssen, sonst wird die Nachricht abgewiesen, dazu Zahlungen und Quittungen, die der Zahlungsempfänger ausstellt und die auf die bestätigte Transaktion zeigen. Kleine Gruppen verteilen sich auf dieselben Zweier-Threads: kein Gruppenschlüssel, kein gemeinsamer Datensatz, jede Thread-Eigenschaft unverändert.
Jeder Screenshot auf dieser Seite zeigt die App auf einem Telefon, kein Mockup. Nichts hier verlangt eine Anmeldung, weil es niemanden gibt, bei dem man sich anmelden könnte.
Deine Identität ist ein Schlüsselpaar, das auf dem Gerät entsteht — keine E-Mail, keine Telefonnummer, niemand, bei dem man sich registriert, weshalb sie dir auch niemand wiederherstellen kann. Der letzte Schritt ist das Backup, denn eine Wallet, die man nicht wiederherstellen kann, ist die eine Art, wie hier wirklich jemand Geld verliert.
Eine selbstverwahrte Monero-Wallet mit durchgehender Umrechnung in Landeswährung, gescannt und ausgegeben von einer eingebetteten monero-oxide-Engine — kein Wallet-Daemon auf dem Telefon.
Beim Bezahlen siehst du den Betrag, die geschätzte Netzwerkgebühr, die Summe, was dir danach bleibt, wie viele Notes ausgegeben werden und ungefähr, wie lange es dauert — und du wählst die Geschwindigkeit. Der Verlauf wird aus der Chain rekonstruiert: Sendungen über das Key Image erkannt, Wechselgeld nie als Eingang gezeigt, jede Zeile mit laufendem Saldo, und der ganze Auszug als CSV exportierbar.
Monero gibt einzelne Notes aus statt eines Kontostands, weshalb eine Wallet mit einer großen Note nicht zweimal hintereinander zahlen kann. Die App zählt die ausgabefähigen Notes und sagt dir, dass du eine aufteilen sollst, bevor du an der Kasse stehst — statt dort zu scheitern.
Ein Kontakt ist ein Schlüsselpaar, keine Kennung. Ein Scan öffnet ein postfach-basiertes Gespräch, das funktioniert, während eine Seite offline ist — und diese Threads tragen Handel, nicht nur Text.
Du gibst jemandem eine Karte — per QR-Code, ducat:-Link oder NFC-Tippen —
und sie ist für eine einzige Person gültig: einmal eingelöst,
funktioniert sie nicht mehr; ein Screenshot, der anderswo landet, ist also kein Zugang.
Eine Gruppe ist eine Mitgliederliste, die nur wächst, und ihre Worte reisen auf einem gemeinsamen Brett-Eintrag je Generation (§16.24): jedes Mitglied schreibt seine eigenen Seiten unter einem Gruppenschlüssel, den die Liste trägt, sodass eine Nachricht an fünf Leute ein Schreibvorgang ist statt fünf — und das Netz kann den Eintrag von keinem anderen unterscheiden. Niemand kann sich als jemand anderes ausgeben, und das Verlassen ist lokal. Eine Gruppe kann eine Rechnung teilen — aus einer Summe werden Einzelanfragen an jede Person plus ein Satz, an dem alle die Rechnung nachprüfen können, und jede Anfrage springt auf bezahlt, sobald ihr Beleg eintrifft.
Wähle einen von neun Modi, und die gesamte App übergibt — mit eigenen Tabs, nichts mehr von der Wallet. Fast nichts davon brauchte ein neues Wire-Objekt, und das ist der stolzeste Satz der Spezifikation.
Eine Kasse bucht Artikel ein oder nimmt eine eingetippte Summe, berechnet die Umsatzsteuer für ihre Region und zeigt einen Code; die Rechnung erscheint auf dem Telefon der Kundschaft, sobald sie scannt, und eine Quittung geht zurück, sobald bezahlt wird. Ein Deckel meldet jedes Getränk an die Kundschaft und schließt mit einer Rechnung. Ein Kiosk übergibt das Telefon vollständig, mit einem Personalbereich hinter einer PIN. Eine Spendenbox bietet beide Wege — einen DUCAT-Code, der ein Gespräch öffnet und eine Quittung schickt, sobald das Geld ankommt, und eine dauerhafte Adresse, an die jede Monero-Wallet geben kann, mit ihren Kosten für die Verknüpfbarkeit auf dem Bildschirm statt in einer Richtlinie.
Tippe ein, wohin du willst. Dein Telefon macht aus einer GPS-Position eine Geozelle — ein öffentliches Schwarzes Brett, dessen Adresse der Ort selbst ist — und stellt einen Ruf ein: eine einmal einlösbare Karte, ein grobes Gebiet und ein Angebot, berechnet aus der echten Fahrtroute. Kein Name steht auf dem Brett — weder auf der Karte noch im Eintrag dahinter. Fahrerinnen und Fahrer beobachten ihre Zelle und die Nachbarzellen und nehmen an; die DHT entscheidet das Rennen, und einen Vermittler gibt es nicht.
Die grüne Linie ist der Punkt: DUCATs Tarife liegen rund 15 % unter den Fahrgastpreisen eines Fahrdienstes, und die Fahrerin behält alles davon — der fehlende Plattformanteil, an beide zurückgegeben. Die Annahme kommt mit einem Gesicht: Name, Wagen, Farbe, Kennzeichen, Ankunftszeit — versiegelt an den Fahrgast, nie auf dem Brett zu sehen. Dein eigener Name und die Haustür, an der du stehst, gehen im selben Moment den umgekehrten Weg, an die eine Fahrerin, die angenommen hat.
Ein Zugeständnis, offen auf dem Bildschirm genannt: Adresssuche, Routing und Kartenkacheln fragen OpenStreetMap ab — die einzige Stelle, an der DUCAT Standortdaten das Gerät verlassen lässt. Die Bretter selbst tragen nie mehr als ~1,2 km Genauigkeit.
Dieselbe Brett-Mechanik trägt mehr als Fahrten. Ein Marktplatz-Inserat, eine Vermietung oder eine Stunde Fachhilfe landen alle auf einem Schwarzen Brett mit der Nachbarschaft als Adresse, und eine fremde Person in der Nähe liest es, ohne dass eine von beiden je eine Plattform berührt.
Inserate liegen auf gröberen Brettern als Rufe — etwa fünf Kilometer weit, weil Menschen für einen Schlüsselsatz auch fahren. Die Suche liest dein Brett und den Ring darum und zeigt Treffer, sobald sie eintreffen: Etwas in deiner Nähe steht in unter sechs Sekunden auf dem Bildschirm, während „hier ist nichts inseriert“ etwa vierzig Sekunden braucht und die Gebiete dabei einzeln abhakt.
Das Inseratsformular ist zweigeteilt, und die App sagt dir, welche Hälfte welche ist: Alles im ersten Teil geht auf ein öffentliches Brett, das jede Person in der Nähe lesen kann, und die Adresse, wo die Schlüssel liegen, und das Kennzeichen kommen in den zweiten, der dein Telefon erst verlässt, wenn eine Buchung echt ist.
Die Einträge, die eine Rechnung tragen, tragen ebenso gut eine Seite. Dein Schlüssel ist bereits eine Adresse, also hat das, was du schreibst, einen Platz, ohne dass du jemanden um Raum bitten musst.
Das Zuhause einer Persona liegt an der Adresse, die ihr eigener Schlüssel benennt, und der Feed ist die Zeitleiste der Leute, die du behältst — ein Beitrag kann ein Bild und eine Datei tragen, und Herzen kommen zurück. Seiten werden von denen ausgeliefert, die sie veröffentlicht haben, und öffnen sich in einem versiegelten Raum, sodass das Lesen nirgendwo sonst etwas abruft.
Veröffentlichungen — eine Zeitung, eine Serie, ein Stück Software — werden weltweit auf Themenbrettern verkauft statt nach Nachbarschaft: ein Beitrag landet auf dem Brett des Themas und auf dem seiner Sprache, und „Alles“ liest alle sechs Regale nebeneinander. Ein Inserat holt sein Bündel vom Telefon der verkaufenden Person — bis zu 24 Fotos in voller Größe, eine Beschreibung, technische Daten und angehängte Dateien — und wird bei jedem Schlüssel, den es nicht benennt, als Ganzes abgewiesen, damit ein schlechtes Dokument keine guten Bilder verstecken kann.
Es gibt keine Firma in der Mitte, die Partei ergreifen könnte, also macht DUCAT etwas Einfacheres. Das Geld liegt an einer Adresse, die nur ihr beide öffnen könnt, und die Freigabe gibt jeder Seite ihre eigene Einlage namentlich zurück. Niemand kann eine Einlage nehmen — wir eingeschlossen, denn es gibt kein Wir, das man bezahlen müsste.
Diese Zahlen sind begründet, nicht geraten — Bisqs 2-von-2-Modell ohne Verwahrer ist der nächste funktionierende Präzedenzfall, und die Literatur zur doppelten Kaution zeigt die Anordnung im Gleichgewicht als betrugssicher. Zwei Grenzen folgen daraus: Eine Einlage, die weniger wert ist als die Gebühr für ihre Rückgabe, wird null statt Dekoration, und keine übersteigt die Hälfte des Preises. Die stärker exponierte Seite zahlt als zweite ein, damit ihr Geld nie allein an einer geteilten Adresse liegt.
Wenn ein Geschäft mehr braucht als eine Kaution: Fahrgast, Fahrerin und ein beiderseits vertrauter Schlichter-Kontakt führen über den versiegelten Thread eine verteilte Schlüsselerzeugung durch — drei Geräte leiten eine Monero-Adresse ab, jedes hält nur einen Anteil, je zwei können signieren, nirgends ein Kartengeber. Der glückliche Weg sind zwei Tipper.
Alles andere ist eine Einigung: Eine Seite schlägt eine Aufteilung vor, die andere signiert oder hält dagegen. Wer feststeckt, fragt den Schlichter, dessen Mitsignatur das Urteil ist — ein übernommener Schlichter kann schlimmstenfalls zwischen den benannten Parteien wählen, sich aber niemals selbst auszahlen. Auf dem Stagenet in jeder Form per Chain nachgewiesen, einschließlich einer FROST-Freigabe mit zwei Eingängen.
Vor jedem Geschäft steht eine fremde Person, und die Frage ist, was ihr Name sie gekostet hat. Eine Persona kann Monero verbrennen — an eine Adresse schicken, zu der niemand die Schlüssel hat, abgeleitet aus einem Hash, den jeder selbst nachrechnen kann — und Moneros eigenen Zahlungsnachweis dafür mitführen. Dein Client prüft diesen Nachweis gegen den eigenen Knoten, fragt einen zweiten Knoten, ob die Transaktion in einem Block steht, und zeigt die Persona von da an überall dort in Worten, wo du etwas entscheidest: 0,01 XMR verbrannt, seit Block N. Nie eine Punktzahl. Die Regel, auf die es ankommt, ist die Warnung: Wenn das, was du gleich aufs Spiel setzt, mehr wert ist als das, was sie verbrannt haben, sagt die App es — denn ein Name, der nichts gekostet hat, verliert nichts, wenn er verschwindet.
Nach einem abgeschlossenen Geschäft kann jede Seite eine bewertete Quittung signieren, und wer dir persönlich begegnet ist, kann eine Bürgschaft signieren. Beide reisen im versiegelten Thread, und beide wiegt allein die lesende Seite — eine Stimme je Unterzeichner, gezählt nur bei Unterzeichnern, deren eigenen Burn du geprüft hast, und eine Bürgschaft nur von Leuten, die schon in deinen Kontakten stehen. Genau einen Schritt weit, kein Graph, nirgends etwas veröffentlicht. Reputation, die Geld kostet statt Privatsphäre.
Ein Datenschutzwerkzeug, das unangenehm zu bedienen ist, wird einmal benutzt. Dieses benennt, was Dinge dich kosten, spricht zwanzig Sprachen und hat ein dunkles Design, das kein nachträglicher Einfall ist.
Bequemlichkeit hat in einem Datenschutzsystem ihren Preis, und die App benennt ihn im Moment der Wahl statt in einer Richtlinie, die niemand liest. Kontakte direkt zahlen zu lassen bedeutet, eine Adresse mehrfach zu verwenden — also sagt sie, dass jede Person, die die Chain beobachtet, erkennen kann, dass jedes Mal dieselbe Person bezahlt wurde, auch Leute, die dir nur ein einziges Mal Geld geschickt haben, und zeigt auf die Alternative. Dieselbe Haltung zieht sich durch: Eine Sichtung im Mempool wird als gesehen, nie abgewickelt angezeigt; ein Profil wird immer als die Behauptung dargestellt, die es ist.
Sie spricht zwanzig Sprachen — jeder Bildschirm liest aus Ressourcen, Pluralformen werden zusammengesetzt statt aneinandergehängt, und Arabisch und Farsi beweisen die Spiegelung. Quittungen sind Belege, keine Nachrichten: Jede Quittung liegt in ihrem eigenen Speicher, überlebt das Löschen von Thread und Kontakt und reist im verschlüsselten Backup mit — das die Menschen ebenso trägt wie das Geld.
Ein natives Fenster über demselben Rust, das auch das Telefon ausführt — sodass die Kasse einer Ladenbesitzerin, ein Kiosk, der Presseraum, der Markt und der Feed eine Umsetzung sind, keine Portierung.
Sie spricht die zwanzig Sprachen des Telefons aus denselben Ressourcen und ist gegen das Telefon in jedem Ritus erprobt: Chat, Gruppen auf Brettern, Rechnungen und Quittungen, eine Kioskbestellung, bezahlt von einem Telefon, das dem Schreibtisch nie begegnet war, Dateien und Seiten ausgeliefert und geholt, und Anrufe mit echtem Ton.
Die README führt Buch darüber, was tatsächlich Ende zu Ende im echten Netz und auf dem echten Stagenet gelaufen ist — und benennt die Lücken, statt sie zu vergraben.
core/ nie gelesen hatJeder Build ist debug-signiert und wickelt auf Moneros Stagenet ab — Münzen ohne Wert, von Haus aus. Die Spezifikation ist Entwurf 1.1.0-dev13 und sagt über sich selbst: Nichts hier ist endgültig, und §14 ist die eigentliche Agenda. Probier sie aus, brich sie, lies sie — nur finanziere sie nicht.
ducat-protocol.md ist das Hauptartefakt — fünf Teile, ein Änderungsprotokoll
zuerst und eine Konformitätssuite, die eine zweite Umsetzung durchläuft, damit das
Dokument nicht stillschweigend vom Code abweichen kann.
★ ducat-protocol.md die Spezifikation — Entwurf 1.1.0-dev13, Änderungen zuerst core/ Referenzimplementierung (Rust) vectors/ 406 Konformitätsfälle + Schema conformance/ vier Prüfer, bei jedem Push harness/ Ende zu Ende über echte Veilid-Routen sim/ Offline-Simulator, Marktszenarien applications/ android/ + desktop/ (dieselben Quellen) mobile/ die Rust-Brücke: Wallet · Postfach · Knoten research/ Belege, kein Produkt
schema.json validiertVerantwortung ist normativ, nicht bloß erwünscht: §18.7 macht Veilids Ethik zur Konformitätsanforderung — keine Protokollgebühren, keine Bezahlung von Knoten, niemals. Bau aus diesem Code, was du willst, aber ein Client, der Beförderung zu Geld macht, ist nicht DUCAT.
Nichts vorher zu installieren — jeder Build bringt seine eigene Rust-Bibliothek und JVM mit. Android auf dem Telefon, und dieselbe Anwendung als natives Fenster unter Linux, Windows und macOS. Einen iOS-Build gibt es nicht; er bekommt einen Ordner, wenn er ihn sich verdient.
Telefon-Browser, neuester Build, keine Release-Seite zum Durchklicken. armeabi-v7a
nur für Telefone, die älter sind als etwa 2016; x86_64 ist für Emulatoren.
Builds für Apple Silicon und Intel. Unsigniert — macOS warnt beim ersten Öffnen.
Debug-signiert, nur Stagenet — nicht für echtes Geld.