Veilid voor het transport. Monero voor de afwikkeling. Geen exploitant ertussen.
Er staat nergens een DUCAT-server — contacten, berichten, rekeningen en bonnen zijn DHT-records en end-to-end verzegelde payloads, en elke telefoon draait een volledige Veilid-node, die de routering en opslag teruggeeft die hij gebruikt.
Debug-ondertekend, alleen stagenet. Nog niet voor echt geld.
Een dukaat was zes eeuwen lang een gouden munt die van Venetië tot Wenen tot de Levant werd aangenomen — geen relatie met een uitgever, geen rekening erachter, geen toestemming eraan verbonden. DUCAT is precies dat, voor het moment dat je tegenover iemand staat en zakendoet.
Contacten, rekeningen, betalingen en bonnen reizen als end-to-end verzegelde payloads over Veilids DHT. Er valt niets te dagvaarden, te beperken, te verwijderen of uit te zetten, want er draait niets. Elke telefoon is een volledige node en geeft de routering en opslag terug die hij gebruikt.
Op de telefoon gemaakt. Geen e-mail, geen telefoonnummer, niemand om je bij te registreren — en daarom kan niemand hem ook voor je herstellen, en de app zegt dat hardop in plaats van het weg te moffelen.
Je geeft iemand een kaartje — QR, ducat:-link of een NFC-tik — en het geldt
voor één persoon. Eenmaal ingewisseld werkt het niet meer, dus een
schermafbeelding die ergens anders belandt is geen ingang.
Versleuteling in X3DH-vorm, met eenmalige prekeys en forward secrecy. Wanneer de app moet terugvallen op de ondertekende prekey, toont hij je een open slot in plaats van het te verbergen.
Op een postbus gebaseerde gesprekken die werken terwijl een van beiden offline is — ze dragen gespecificeerde rekeningen waarvan de regels moeten optellen tot het totaal, anders wordt het bericht geweigerd, betalingen, en bonnen die de ontvanger uitgeeft en die verwijzen naar de transactie die ze erkennen. Kleine groepen waaieren uit over diezelfde gesprekken tussen twee: geen groepssleutel, geen gedeeld register, elke eigenschap van het gesprek onveranderd.
Elke schermafbeelding op deze pagina is de app op een telefoon, geen mockup. Niets hier vraagt je je aan te melden, want er is niemand om je bij aan te melden.
Je identiteit is een sleutelpaar dat op het apparaat ontstaat — geen e-mail, geen telefoonnummer, niemand om je bij te registreren, en daarom kan niemand hem ook voor je herstellen. De laatste stap is de back-up, want een portemonnee die je niet kunt herstellen is de enige manier waarop hier echt iemand geld verliest.
Een Monero-portemonnee in eigen beheer met overal omrekening naar lokale valuta, gescand en uitgegeven door een ingebouwde monero-oxide-engine — geen wallet-daemon op de telefoon.
Bij het betalen zie je het bedrag, de geschatte netwerkkosten, het totaal, wat je daarna overhoudt, hoeveel notes het uitgeeft en ongeveer hoe lang het duurt — en je kiest zelf een snelheid. De geschiedenis wordt heropgebouwd uit de keten: verzendingen herkend aan het key image, wisselgeld nooit als inkomsten getoond, elke regel met het lopende saldo, en het hele afschrift exporteerbaar als CSV.
Monero geeft losse notes uit in plaats van een saldo, dus een portemonnee met één grote note kan niet twee keer achter elkaar betalen. De app telt de notes die hij kan uitgeven en zegt dat je er één moet breken voordat je bij de kassa staat, in plaats van daar te falen.
Een contact is een sleutelpaar, geen identificatie. Eén scan opent een op een postbus gebaseerd gesprek dat werkt terwijl een van beiden offline is — en die gesprekken dragen handel, niet alleen tekst.
Je geeft iemand een kaartje — via QR, ducat:-link of een NFC-tik — en het is
geldig voor één persoon: eenmaal ingewisseld werkt het niet meer, dus een
schermafbeelding die ergens anders belandt is geen ingang.
Een groep is een ledenlijst die alleen groeit, en haar woorden reizen op één gedeeld prikbordrecord per generatie (§16.24): elk lid schrijft zijn eigen pagina's onder een groepssleutel die de lijst meedraagt, dus een bericht aan vijf mensen is één schrijfactie in plaats van vijf, en het netwerk kan dat record van geen enkel ander onderscheiden. Niemand kan zich als een ander voordoen, en weggaan is een lokale zaak. Een groep kan een rekening delen: één totaal wordt een apart verzoek aan elke persoon plus een zin waaraan iedereen het rekenwerk kan nalopen, en elk verzoek springt op betaald zodra de verwijzing binnenkomt.
Kies een van negen modi en de hele app draagt over — met eigen tabbladen, niets meer van de portemonnee. Bijna niets hiervan had een nieuw protocolobject nodig, en dat is de zin waar de specificatie het trotst op is.
Een kassa boekt artikelen in of neemt een ingetypt totaal, berekent de omzetbelasting voor haar regio en toont één code; de rekening verschijnt op de telefoon van de klant zodra die scant, en een bon gaat terug wanneer die betaalt. Een lopende rekening meldt elk drankje aan de klant en sluit af met één rekening. Een kiosk geeft de telefoon volledig aan de klant, met een personeelspaneel achter een pincode. Een donatiebox biedt beide wegen: een DUCAT-code die een gesprek opent en een bon terugstuurt zodra het geld binnen is, en een vast adres waaraan elke Monero-portemonnee kan geven, met de koppelbaarheidskosten op het scherm in plaats van in een beleidsstuk.
Typ waar je heen wilt. Je telefoon maakt van een GPS-positie een geocel — een openbaar prikbord waarvan het adres de plek zelf is — en plaatst een oproep: een kaartje voor eenmalig gebruik, een grof gebied en een prijs berekend uit de echte route. Er komt geen naam op het prikbord — niet op het kaartje en niet in het record erachter. Chauffeurs houden hun cel en de buren in de gaten en nemen hem aan; de DHT is de scheidsrechter van de race, en er bestaat geen bemiddelaar.
De groene lijn is het punt: DUCATs tarieven liggen zo'n 15% onder wat een platform de passagier rekent, en de chauffeur houdt alles — de ontbrekende platformafdracht, teruggegeven aan hen beiden. De acceptatie komt met een gezicht erbij: naam, auto, kleur, kenteken, aankomsttijd — verzegeld naar de passagier, nooit getoond op het prikbord. Je eigen naam en het portiek waar je staat gaan op hetzelfde moment de andere kant op, naar de ene chauffeur die hem aannam.
Eén toegeving, ronduit op het scherm gezegd: het zoeken van adressen, de routering en de kaarttegels bevragen OpenStreetMap — de enige plek waar DUCAT locatie het apparaat laat verlaten. De prikborden zelf dragen nooit beter dan ~1,2 km.
Dezelfde prikbordmachinerie draagt meer dan ritten. Een advertentie op de marktplaats, een verhuur, of een uur vakkundige hulp gaan allemaal naar een prikbord met de buurt als adres, en een onbekende vlakbij leest het zonder dat een van jullie beiden een platform aanraakt.
Advertenties staan op grovere prikborden dan oproepen — zo'n vijf kilometer breed, omdat mensen wel willen rijden voor een sleutelbos. Het zoeken leest jouw bord en de ring eromheen, en tekent resultaten zodra ze antwoorden, zodat iets dat vlakbij geparkeerd staat binnen zes seconden op het scherm staat, terwijl „hier is niets aangeboden” zo'n veertig seconden duurt en de gebieden onderweg afvinkt.
Het advertentieformulier is in tweeën gedeeld en de app vertelt je welke helft welke is: alles in het eerste deel gaat naar een openbaar prikbord dat iedereen in de buurt kan lezen, en het adres, waar de sleutels liggen en het kenteken gaan in het tweede, dat je telefoon pas verlaat als een boeking echt is.
De records die een rekening dragen, dragen net zo goed een pagina. Je sleutel is al een adres, dus wat je schrijft heeft ergens om te wonen zonder iemand om ruimte te vragen.
Het thuis van een persona staat op het adres dat zijn eigen sleutel noemt, en de feed is de tijdlijn van de mensen die je houdt — een bericht kan een foto en een bestand meedragen, en hartjes komen terug. Sites worden vanaf de schijf geserveerd door wie ze publiceerde en openen in een verzegelde kamer, zodat er bij het lezen nergens anders iets wordt opgehaald.
Publicaties — een krant, een serie, een stuk software — worden wereldwijd verkocht op prikborden per onderwerp in plaats van per buurt: een bericht landt op het bord van het onderwerp én op dat van zijn taal, en „Alles” leest alle zes planken naast elkaar. Een advertentie haalt haar bundel van de telefoon van de verkoper — tot 24 foto's op ware grootte, een beschrijving, specificaties en bijgevoegde bestanden — in zijn geheel geweigerd bij elke sleutel die zij niet noemt, zodat een slecht document geen goede foto's kan verbergen.
Er is geen bedrijf in het midden dat partij kan kiezen, dus doet DUCAT iets eenvoudigers. Het geld staat op een adres dat alleen jullie tweeën kunnen openen, en de vrijgave geeft elke kant zijn eigen borg bij naam terug. Niemand kan een borg afnemen — wij inbegrepen, want er is geen wij om te betalen.
Die getallen zijn beredeneerd, niet gegokt — Bisqs 2-uit-2-model zonder bewaarder is het dichtstbijzijnde werkende precedent, en de literatuur over dubbele borg bewijst dat de opzet in evenwicht bestand is tegen valsspelen. Daar volgen twee grenzen uit: een borg die minder waard is dan de kosten om hem terug te geven wordt nul in plaats van decoratie, en geen enkele overstijgt de helft van de prijs. De meest blootgestelde partij stort als tweede, zodat haar geld nooit alleen op een gedeeld adres staat.
Wanneer een deal meer vraagt dan een borg: passagier, chauffeur en een wederzijds vertrouwd arbiter-contact voeren over het verzegelde gesprek een gedistribueerde sleutelgeneratie uit — drie apparaten leiden één Monero-adres af, elk met slechts een aandeel, elke twee kunnen tekenen, nergens een uitgever. Het gelukkige pad zijn twee tikken.
Al het andere is een schikking: de ene kant stelt een verdeling voor, de andere tekent of biedt tegen. Wie vastloopt vraagt de arbiter, wiens medeondertekening de uitspraak is — een gekaapte arbiter kan hooguit kiezen tussen de genoemde partijen, zichzelf nooit uitbetalen. Op de keten bewezen op stagenet in elke vorm, inclusief een FROST-vrijgave met twee invoeren.
Voordat er een deal is, is er een onbekende, en de vraag is wat zijn naam hem heeft gekost. Een persona kan Monero verbranden — sturen naar een adres waarvan niemand de sleutels heeft, afgeleid uit een hash die iedereen zelf kan narekenen — en Monero's eigen betaalbewijs daarvoor meedragen. Je client controleert dat bewijs bij zijn eigen node, vraagt een tweede node of de transactie in een blok staat, en toont de persona van dan af in woorden overal waar je iets beslist: 0,01 XMR verbrand, sinds blok N. Nooit een score. De regel die telt is de waarschuwing: als wat je op het spel zet meer waard is dan wat zij hebben verbrand, zegt de app dat, want een naam die niets heeft gekost, verliest niets door te verdwijnen.
Na een afgewikkelde deal mag elke kant een beoordeelde bon ondertekenen, en iedereen die je in levenden lijve hebt ontmoet mag een borgstelling ondertekenen. Beide reizen in een verzegeld gesprek en beide worden alleen door de lezer gewogen — één stem per ondertekenaar, waarbij alleen ondertekenaars meetellen wier eigen verbranding je hebt gecontroleerd, en een borgstelling alleen meetelt van mensen die al in jouw contacten staan. Eén stap ver, geen graaf, nergens iets gepubliceerd. Reputatie die geld kost in plaats van privacy.
Een privacygereedschap dat onprettig werkt, wordt één keer gebruikt. Dit benoemt wat dingen je kosten, spreekt twintig talen, en heeft een donker thema dat geen bijgedachte is.
Gemak heeft een prijs in een privacysysteem, en de app benoemt die op het moment dat je kiest in plaats van in een beleidsstuk dat niemand leest. Contacten je direct laten betalen betekent één adres hergebruiken — dus zegt hij dat iedereen die de keten bekijkt kan zien dat elke keer dezelfde persoon betaald werd, ook mensen die je maar één keer betaalden, en wijst op het alternatief. Diezelfde gewoonte loopt overal door: een waarneming in de mempool wordt getoond als gezien, nooit afgewikkeld; een profiel wordt altijd gepresenteerd als de bewering die het is.
Hij spreekt twintig talen — elk scherm leest uit resources, meervouden worden samengesteld in plaats van aan elkaar geplakt, en Arabisch en Farsi bewijzen de spiegeling. Bonnen zijn registers, geen berichten: elke bon staat in zijn eigen opslag, overleeft het wissen van gesprek en contact, en reist mee in de versleutelde back-up — die de mensen net zo goed meeneemt als het geld.
Een native venster over dezelfde Rust die de telefoon draait — zodat de kassa van een winkelier, een kiosk, de perskamer, de markt en de feed één implementatie zijn en geen port.
Hij spreekt de twintig talen van de telefoon uit dezelfde resources, en is tegen de telefoon beproefd in elke rite: chat, groepen op borden, rekeningen en bonnen, een kioskbestelling betaald vanaf een telefoon die het bureau nooit eerder had ontmoet, bestanden en sites geserveerd en opgehaald, en gesprekken met echt geluid.
De README houdt bij wat er werkelijk end-to-end heeft gedraaid op het echte netwerk en het echte stagenet — en benoemt de gaten in plaats van ze te begraven.
core/ nooit gelezen heeftElke build is debug-ondertekend en wikkelt af op Monero's stagenet — munten zonder waarde, met opzet. De specificatie is concept 1.1.0-dev13 en zegt over zichzelf: niets hier is definitief, en §14 is de echte agenda. Probeer hem, breek hem, lees hem — financier hem alleen niet.
ducat-protocol.md is het hoofdartefact — vijf delen, een wijzigingslog
vooraan, en een conformiteitssuite die een tweede implementatie draait, zodat het document
niet stilletjes van de code kan afdrijven.
★ ducat-protocol.md de specificatie — concept 1.1.0-dev13, wijzigingen vooraan core/ referentie-implementatie (Rust) vectors/ 406 conformiteitsgevallen + schema conformance/ vier controleurs, bij elke push harness/ end-to-end over echte Veilid-routes sim/ offline simulator, marktscenario's applications/ android/ + desktop/ (dezelfde bronnen) mobile/ de Rust-brug: portemonnee · postbus · node research/ bewijs, geen product
schema.jsonRentmeesterschap is normatief, niet aspirationeel: §18.7 maakt Veilids ethiek tot een conformiteitseis — geen protocolkosten, geen betaling aan nodes, nooit. Bouw wat je wilt met deze code, maar een client die vervoer te gelde maakt is geen DUCAT.
Niets vooraf te installeren — elke build draagt zijn eigen Rust-bibliotheek en JVM mee. Android op de telefoon, en dezelfde applicatie als native venster op Linux, Windows en macOS. Er is geen iOS-build; die krijgt een map zodra hij er een verdient.
Telefoonbrowser, nieuwste build, geen releasepagina om door te ploegen.
armeabi-v7a alleen voor telefoons ouder dan ongeveer 2016;
x86_64 is voor emulators.
Builds voor Apple Silicon en Intel. Niet ondertekend — macOS waarschuwt bij de eerste keer openen.
Debug-ondertekend, alleen stagenet — niet voor echt geld.