O maneki-neko do DUCAT, a segurar uma moeda Monero
comércio de proximidade ponto a ponto · especificação rascunho 1.1.0-dev13

DUCAT

Veilid para o transporte. Monero para a liquidação. Nenhum operador no meio.

Não existe servidor DUCAT em lugar nenhum — contactos, mensagens, faturas e recibos são registos na DHT e cargas seladas de ponta a ponta, e cada telemóvel corre um nó Veilid completo, devolvendo o encaminhamento e o armazenamento que consome.

0 vetores de conformidade 0 modos de operação 0 línguas 0 servidores

Assinado em depuração, apenas stagenet. Ainda não é para dinheiro real.

Assente em

Comércio sem ninguém no meio

Um ducado foi durante seis séculos uma moeda de ouro aceite de Veneza a Viena até ao Levante — sem relação com um emissor, sem conta por trás, sem autorização anexada. DUCAT é isso, para o momento em que se está diante de alguém a fazer negócio.

🐱

Nenhum servidor em lugar nenhum

Contactos, faturas, pagamentos e recibos viajam como cargas seladas de ponta a ponta sobre a DHT do Veilid. Não há nada para intimar, limitar, remover ou desligar, porque não há nada a correr. Cada telemóvel é um nó completo e devolve o encaminhamento e o armazenamento que consome.

🔑

A identidade é um par de chaves

Criada no telemóvel. Sem e-mail, sem número de telefone, sem ninguém junto de quem se registar — razão pela qual também ninguém a pode restaurar por si, e a aplicação di-lo em voz alta em vez de o esconder.

🎫

Cartões de uso único

Entrega-se um cartão a alguém — QR, ligação ducat: ou um toque NFC — e ele serve para uma única pessoa. Depois de reclamado deixa de funcionar, por isso uma captura de ecrã que vá parar a outro sítio não é uma porta de entrada.

🔒

Conversas seladas

Cifra com a forma do X3DH, com pré-chaves de uso único e sigilo persistente. Quando a aplicação tem de recorrer à pré-chave assinada, mostra-lhe um cadeado aberto em vez de o esconder.

💬

Conversas que transportam dinheiro

Conversas assentes em caixa de correio que funcionam mesmo com um dos lados offline — transportam faturas discriminadas cujas linhas têm de somar o total ou a mensagem é recusada, pagamentos, e recibos emitidos por quem recebe, apontando para a transação que reconhecem. Os grupos pequenos distribuem-se pelas mesmas conversas a dois: sem chave de grupo, sem registo partilhado, com todas as propriedades da conversa intactas.

Seis passos, sem conta,
cerca de um minuto

Cada captura desta página é a aplicação a correr num telemóvel, não uma maqueta. Nada aqui lhe pede que se inscreva, porque não há ninguém junto de quem o fazer.

Passo 1 de 6: crie a sua identidade — um par de chaves feito neste telemóvel, sem conta
1 · Identidade — um par de chaves, não um registo
Passo 4 de 6: escolha um PIN, com o aviso de que não há reposição dito com clareza
4 · Um PIN — e nenhuma forma de o repor, dito com clareza
Passo 5 de 6: como desconhecidos confiam um no outro — ambos os lados depositam garantia, concluir devolve-a
5 · Confiança — explicada antes do seu primeiro negócio
Passo 6 de 6: a cópia de segurança, que honestamente ainda não o é até sair do telemóvel
6 · Cópia de segurança — «ainda não é uma cópia» até sair do telemóvel

A sua identidade é um par de chaves criado no dispositivo — sem e-mail, sem número de telefone, sem ninguém junto de quem se registar, razão pela qual também ninguém a pode restaurar por si. O último passo é a cópia de segurança, porque uma carteira que não se consegue restaurar é a única forma de aqui alguém perder dinheiro a sério.

Dinheiro que é seu

Uma carteira Monero de autocustódia com conversão para moeda local em todo o lado, analisada e gasta por um motor monero-oxide embutido — sem qualquer daemon de carteira no telemóvel.

Início pessoal: saldo em XMR e moeda local, estado de sincronização, contador de notas gastáveis, mosaicos de modo e movimentos recentes
O saldo e as notas por trás dele
Pagar ou pedir: montante em moeda local ou XMR, aritmética das taxas, o que fica depois
Toda a aritmética antes de se comprometer
O extrato: saldo corrente, procura de recibos, exportação CSV
Um extrato reconstruído a partir da cadeia
Escolher a quem pagar: contactos listados com as impressões das suas chaves
A quem está a pagar, pela impressão da chave

Ao pagar vê o montante, a taxa de rede estimada, o total, o que lhe fica depois, quantas notas gasta e aproximadamente quanto tempo demora — e pode escolher a velocidade. O histórico é reconstruído a partir da cadeia: os envios identificados pela imagem da chave, o troco nunca mostrado como entrada, cada linha com o saldo corrente, e todo o extrato exportável em CSV.

O Monero gasta notas discretas em vez de um saldo, por isso uma carteira com uma nota grande pode não conseguir pagar duas vezes seguidas. A aplicação conta as notas que pode gastar e diz-lhe para partir uma antes de estar ao balcão, em vez de falhar lá.

Conversas que transportam dinheiro

Um contacto é um par de chaves, não um identificador. Uma leitura abre uma conversa assente em caixa de correio que funciona mesmo com um dos lados offline — e essas conversas transportam comércio, não apenas texto.

O seu cartão: um QR de uso único que abre uma conversa, válido para uma pessoa
O seu cartão — serve para uma pessoa
Uma conversa que transporta dinheiro: fatura discriminada com linha de imposto, o recibo, um aviso de custódia liquidada
Fatura, pagamento, recibo — na conversa
Um grupo de três num placard partilhado: um registo por geração, uma pergunta e a sua resposta de outro telemóvel
Grupos — um registo partilhado por geração
Procurar o que as pessoas disseram, com os nomes à frente das mensagens
Procure o que as pessoas disseram de facto

Entrega-se um cartão a alguém — por QR, ligação ducat: ou um toque NFC — e serve para uma única pessoa: depois de reclamado deixa de funcionar, por isso uma captura que vá parar a outro sítio não é uma porta de entrada.

Um grupo é uma lista que só cresce, e as suas palavras viajam num único registo de placard por geração (§16.24): cada membro escreve as suas próprias páginas sob uma chave de grupo que a lista transporta, por isso uma mensagem para cinco pessoas é uma escrita em vez de cinco, e a rede não consegue distinguir esse registo de qualquer outro. Ninguém se pode fazer passar por outro, e sair é local. Um grupo pode dividir uma conta: um total transforma-se num pedido individual a cada pessoa mais uma frase com que todos podem conferir as contas, e cada pedido passa a pago assim que a sua referência chega.

O seu telemóvel é o negócio inteiro

Escolha um de nove modos e a aplicação inteira passa o testemunho — com separadores próprios, nada dos da carteira. Quase nada disto precisou de um objeto de protocolo novo, que é a frase de que a especificação mais se orgulha.

Modos de operação: pessoal, ponto de venda, conta de bar, táxi, donativos, mercado, aluguer, contratar ajuda, quiosque
Nove modos, um protocolo
Ponto de venda: artigos registados com uma linha de imposto calculada
Ponto de venda — com o imposto calculado
Um código para o cliente ler; a fatura discriminada chega ao telemóvel dele
Um código — a fatura chega ao ler
Contas de bar: abertas, faturadas e à espera, fechadas com uma única fatura
Contas de bar — liquidadas no autocarro de volta
Modo quiosque, lado do cliente: toque no que quiser, o imposto é mostrado antes de confirmar
Quiosque — o cliente pede sozinho
Painel do pessoal do quiosque por trás de um PIN: pedidos, ementa e a taxa de imposto
Painel do pessoal por trás de um PIN
Um código de donativo permanente, com o seu custo de ligabilidade dito no ecrã
Donativos — com o custo nomeado

Um ponto de venda regista artigos ou aceita um total escrito, calcula o imposto sobre vendas da sua região e mostra um código; a fatura chega ao telemóvel do cliente no momento em que lê o código, e um recibo volta quando paga. Uma conta de bar avisa o cliente de cada bebida e fecha com uma única fatura. Um quiosque entrega o telemóvel inteiramente ao cliente, com um painel do pessoal por trás de um PIN. Uma caixa de donativos oferece as duas vias: um código DUCAT que abre uma conversa e devolve um recibo assim que o dinheiro chega, e um endereço permanente para o qual qualquer carteira Monero pode dar, com o seu custo de ligabilidade dito no ecrã e não numa política.

Uma boleia que ninguém despacha

Escreva para onde vai. O telemóvel transforma uma posição GPS numa geocélula — um placard público cujo endereço é o próprio lugar — e publica um chamamento: um cartão de uso único, uma zona aproximada e uma oferta calculada a partir do percurso real. Nenhum nome vai para o placard — nem no cartão, nem no registo por trás dele. Quem conduz vigia a sua célula e as vizinhas e aceita; é a DHT que arbitra a corrida, e não existe qualquer intermediário.

A linha verde é o que importa: as tarifas do DUCAT ficam cerca de 15 % abaixo do que uma plataforma cobra ao passageiro, e quem conduz fica com tudo — a comissão ausente, devolvida aos dois. A aceitação chega com um rosto: nome, carro, cor, matrícula, hora de chegada — selada para o passageiro, nunca mostrada no placard. O seu próprio nome e a porta onde está à espera seguem no sentido contrário no mesmo instante, para o único condutor que aceitou.

Uma cedência, dita com clareza no ecrã: a procura de moradas, o cálculo de percurso e os mosaicos do mapa consultam o OpenStreetMap — o único ponto em que o DUCAT envia localização para fora do dispositivo. Os próprios placards nunca levam melhor do que ~1,2 km.

Chamar uma boleia: percurso, distância, tempo e a tarifa face ao que uma plataforma cobraria
O chamamento, comparado com a plataforma
O taxímetro: tarifa escrita uma vez, um código de recolha, as condições a chegar à conversa no arranque
O taxímetro, com as condições na conversa

Venda, alugue, ou ofereça uma hora do seu tempo

A mesma mecânica de placards transporta mais do que boleias. Um anúncio de mercado, um aluguer ou uma hora de ajuda qualificada são publicados num placard endereçado pelo bairro, e um desconhecido ali perto lê-o sem que nenhum dos dois toque numa plataforma.

Os anúncios ficam em placards mais grosseiros do que os chamamentos — cerca de cinco quilómetros de lado, porque as pessoas deslocam-se para ir buscar um molho de chaves. A procura lê o seu placard e o anel à volta, desenhando resultados à medida que respondem, de modo que algo estacionado perto de si aparece em menos de seis segundos, enquanto «não há nada por aqui» demora cerca de quarenta e vai assinalando as zonas.

Percorrer o mercado: um anúncio encontrado no placard, com preço, garantias e um botão para perguntar
Mercado
Percorrer ajudas: uma competência oferecida ali perto, com preço à hora
Contratar ajuda
Anunciar um veículo para alugar: a metade pública que vai para o placard
A metade pública — o que o placard pode ler
Só para quem reservar: a morada e os detalhes da entrega nunca vão para o placard
A metade privada — nunca no placard
Encontrar equipamento ali perto: um anúncio ativo com preço por dia e a garantia
Encontrá-lo — preço, garantia e uma forma de perguntar

O formulário do anúncio está dividido em dois e a aplicação diz-lhe qual metade é qual: tudo o que está na primeira parte vai para um placard público que qualquer pessoa ali perto pode ler, e a morada, o sítio onde estão as chaves e a matrícula vão na segunda, que só sai do seu telemóvel quando existe uma reserva a sério.

Uma casa, um feed
e uma prateleira sua

Os registos que transportam uma fatura transportam igualmente bem uma página. A sua chave já é um endereço, por isso o que escreve tem onde viver sem pedir espaço a ninguém.

O Feed: publicações das pessoas que guarda, e a sua própria casa
O feed — publicações das pessoas que guarda
A Biblioteca: números arquivados por editor, guardados fora em vez de abertos
A biblioteca — números arquivados por editor
Mundial: publicações em placards por tema, com «Tudo» a ler cada prateleira de uma vez
Mundial — placards por tema, todas as prateleiras de uma vez
Um anúncio aberto: as fotos do seu pacote, a descrição de quem vende, o preço que escreveu ao lado da conversão de hoje
Um anúncio aberto — as suas fotos e o preço escrito

A casa de um perfil fica no endereço que a sua própria chave nomeia, e o feed é a cronologia das pessoas que guarda — uma publicação pode levar uma imagem e um ficheiro, e os corações voltam. Os sites são servidos do disco de quem os publicou e abrem numa sala selada, de modo que ler um não vai buscar nada a mais lado nenhum.

As publicações — um jornal, uma série, um programa — vendem-se mundialmente em placards por tema em vez de por bairro: uma publicação assenta no placard do tema e no da sua língua, e «Tudo» lê as seis prateleiras lado a lado. Um anúncio vai buscar o seu pacote ao telemóvel de quem vende — até 24 fotografias em tamanho real, uma descrição, especificações e ficheiros anexos — recusado por inteiro perante qualquer chave que não nomeie, para que um documento mau não possa esconder boas fotografias.

Ambos depositam uma garantia.
Concluir devolve-a.

Não há nenhuma empresa no meio para tomar partido, por isso o DUCAT faz algo mais simples. O dinheiro fica num endereço que só os dois conseguem abrir, e a libertação devolve a cada lado a sua própria garantia, nomeadamente. Ninguém pode ficar com uma garantia — nós incluídos, porque não há nenhum nós a quem pagar.

~10 % uma boleia curta, pouca exposição a danos
~20 % um alojamento as chaves da casa de alguém
~30 % um veículo o dano pode exceder o preço

Esses números são argumentados, não adivinhados — o modelo 2-em-2 sem custodiante do Bisq é o precedente em funcionamento mais próximo, e a literatura sobre depósito duplo prova que o arranjo é à prova de batota em equilíbrio. Daí saem dois limites: uma garantia que vale menos do que a taxa para a devolver passa a zero em vez de decoração, e nenhuma excede metade do preço. O lado mais exposto financia em segundo, para que o seu dinheiro nunca fique sozinho num endereço partilhado.

⅔

Custódia sem empresa nenhuma por trás

Quando um negócio pede mais do que uma caução: passageiro, condutor e um contacto árbitro de confiança mútua executam uma geração distribuída de chaves sobre a conversa selada — três dispositivos derivam um endereço Monero, cada um guardando apenas uma parte, quaisquer dois capazes de assinar, sem distribuidor em lado nenhum. O caminho feliz são dois toques.

Tudo o resto é um acordo: um lado propõe uma divisão, o outro assina ou contrapropõe. Quem fica encalhado recorre ao árbitro, cuja coassinatura é a decisão — um árbitro comprometido pode, no pior caso, escolher entre as partes nomeadas, nunca pagar a si próprio. Provado na cadeia, em stagenet, em todas as formas, incluindo uma libertação FROST com duas entradas.

∅

Quanto custou um nome

Antes de haver negócio há um desconhecido, e a pergunta é quanto lhe custou o nome. Uma persona pode queimar Monero — enviá-lo para um endereço cujas chaves ninguém tem, derivado de um resumo que qualquer pessoa pode recalcular — e levar consigo a própria prova de pagamento do Monero. O seu cliente verifica essa prova contra o seu próprio nó, pergunta a um segundo nó se a transação está num bloco e, a partir daí, mostra a persona por palavras em todo o lado onde decide alguma coisa: queimou 0,01 XMR, desde o bloco N. Nunca uma pontuação. A regra que importa é o aviso: quando o que está prestes a arriscar vale mais do que aquilo que queimaram, a aplicação di-lo, porque um nome que não custou nada não tem nada a perder ao desaparecer.

Depois de um negócio fechado, qualquer dos lados pode assinar um recibo avaliado, e quem o tenha conhecido pessoalmente pode assinar um aval. Ambos viajam numa conversa selada e ambos são pesados apenas por quem os lê — uma voz por signatário, contando só os signatários cuja queima verificou, e contando um aval só de pessoas que já estão nos seus contactos. Um salto, sem grafo, nada publicado em lado nenhum. Reputação que custa dinheiro em vez de privacidade.

E comporta-se como uma aplicação

Uma ferramenta de privacidade desagradável de usar é usada uma vez só. Esta nomeia o que as coisas lhe custam, fala vinte línguas, e tem um tema escuro que não é um pensamento tardio.

Perfil: o custo de ligabilidade de deixar os contactos pagarem-lhe diretamente, dito onde se escolhe
Custos nomeados no momento em que escolhe
O mesmo ecrã inicial no tema escuro Mocha
Mocha — o tema escuro, bem feito
O mesmo ecrã inicial em árabe: um espelho completo da direita para a esquerda, com algarismos arábicos orientais
Árabe — um espelho completo da direita para a esquerda
A metade de negócio das definições: região de tarifas, taxa de imposto, privacidade, cópia de segurança
A metade de negócio das definições

A conveniência tem um preço num sistema de privacidade, e a aplicação nomeia-o no momento em que escolhe, não numa política que ninguém lê. Deixar que os contactos lhe paguem diretamente significa reutilizar um endereço — por isso diz que qualquer pessoa a observar a cadeia consegue ver que foi paga a mesma pessoa de cada vez, incluindo pessoas que lhe pagaram apenas uma vez, e aponta a alternativa. O mesmo hábito atravessa tudo: um avistamento na mempool é mostrado como visto, nunca liquidado; um perfil é sempre apresentado como a afirmação que é.

Fala vinte línguas — cada ecrã lê de recursos, os plurais são compostos em vez de concatenados, e o árabe e o farsi provam o espelho. Os recibos são registos, não mensagens: cada recibo vive no seu próprio arquivo, sobrevive à eliminação da conversa e do contacto, e viaja na cópia de segurança cifrada — que leva as pessoas tanto quanto o dinheiro.

A mesma aplicação numa secretária

Uma janela nativa sobre o mesmo Rust que o telemóvel corre — de modo que a caixa de um comerciante, um quiosque, a sala de imprensa, o mercado e o feed são uma implementação, não um port.

A página de Conversas da secretária: grupos em placards acima das conversas a dois, com um painel de conversa
Conversas — grupos em placards, acima das conversas a dois
A caixa da secretária: uma venda registada e contas de bar
A caixa — uma venda registada e as contas de bar
A página de Mercado da secretária: anúncios perto de uma célula com as suas miniaturas
O mercado — anúncios perto de uma célula, com miniaturas
A página de Estado da secretária: o nó, a sua tabela de encaminhamento, Reconectar, o registo
Estado — o nó, a sua tabela de encaminhamento, Reconectar

Fala as vinte línguas do telemóvel a partir dos mesmos recursos, e está provada contra o telemóvel em todos os ritos: conversas, grupos em placards, faturas e recibos, um pedido de quiosque pago a partir de um telemóvel que nunca tinha encontrado a secretária, ficheiros e sites servidos e obtidos, e chamadas com som a sério.

O que está provado, e o que não está

O README mantém um registo do que correu de facto de ponta a ponta na rede real e no stagenet real — e enuncia as lacunas em vez de as enterrar.

Demonstrado de ponta a ponta
  • Duas boleias completas despachadas telemóvel↔computador — do chamamento por geocélula à liquidação na cadeia, gorjeta e recibo — e a boleia com caução agora levada até ao fim em dois telemóveis
  • O arco completo da custódia — dois telemóveis e um árbitro na secretária derivaram de forma independente um endereço 2-em-3; financiar → libertar → condutor pago
  • Uma reserva — proprietário e hóspede a financiar cada um a sua garantia, o fundo confirmado pela leitura do próprio hóspede, divisão proposta, assinada, ambos os lados inteiros; retomou em vez de recomeçar quando um nó Monero esgotou o tempo a meio
  • Conta de bar do telemóvel para o computador, da fatura ao recibo; dez ataques recusados
  • Um telemóvel apagado até ao nada percorreu a configuração: primeiro cartão, primeiro pagamento, uma venda de quiosque paga de ponta a ponta — e depois apagado outra vez e restaurado da sua própria cópia
  • Todas as vias de custódia pela interface num só dia — uma venda no mercado, um chamamento na rua com a posição em direto a atravessar telemóveis, um aluguer de equipamento, e um trabalho de ajuda cuja primeira execução trouxe à luz e corrigiu uma condição de corrida real
  • A camada de confiança, percorrida em vez de argumentada — uma queima provada e verificada em 12 s contra o próprio nó de um desconhecido, um recibo avaliado corretamente pesado a zero, quatro computadores a concluir «2 dos seus contactos conhecem-nos», e um cartão de chamamento sem nome a que deram nome os dados partilhados logo a seguir
Dito, não enterrado
  • Sem revisão por alguém de fora do projeto — o §2.5 é o argumento de por que isso importa; uma passagem interna por cinco superfícies de ataque encontrou umas quarenta coisas e corrigiu a maioria, o que é coisa menor
  • Sem qualquer implementador que nunca tenha lido core/
  • NFC verificado na compilação, nunca testado no terreno entre dois telemóveis — e o toque nunca medido num telemóvel
  • Latências medidas num computador com um nó ligado, não num telemóvel a bateria
  • Dois rádios, duas baterias, dois relógios independentes — o dia de campo continua em dívida
  • O computador não tem segundo fator — nem bloqueio de dispositivo nem segredo próprio, por isso o controlo que o telemóvel impõe antes de sair dinheiro não pode correr ali
!

Pré-alfa. Stagenet. Não é para dinheiro real.

Cada compilação é assinada em depuração e liquida no stagenet do Monero — moedas sem valor, por desenho. A especificação é o rascunho 1.1.0-dev13 e diz de si mesma: nada aqui é definitivo, e o §14 é a agenda a sério. Experimente-a, parta-a, leia-a — mas não a financie.

A especificação é o produto.
Todo o resto a mantém honesta.

O ducat-protocol.md é o artefacto principal — cinco partes, um registo de alterações à cabeça, e um conjunto de conformidade que uma segunda implementação corre, para que o documento não se possa afastar do código em silêncio.

★ ducat-protocol.md   a especificação — rascunho 1.1.0-dev13, alterações à cabeça
  core/               implementação de referência (Rust)
  vectors/            406 casos de conformidade + esquema
  conformance/        quatro verificadores, em cada push
  harness/            ponta a ponta sobre rotas Veilid reais
  sim/                simulador offline, cenários de mercado
  applications/       android/ + desktop/ (as mesmas fontes)
  mobile/             a ponte Rust: carteira · caixa de correio · nó
  research/           provas, não produto

Quatro verificadores, em cada push

  • Cada vetor validado contra o schema.json
  • Uma segunda implementação corre os 406 e tem de concordar
  • O documento auditado contra o código — apanhou uma secção normativa referenciada três vezes e nunca escrita, um intervalo de valores que o registo não declarava, e seis tipos de vetor que o documento nunca nomeou
  • Nada do que é importado fica por declarar

A responsabilidade é normativa, não aspiracional: o §18.7 faz da ética do Veilid um requisito de conformidade — sem taxas de protocolo, sem pagamento a nós, nunca. Construa o que quiser a partir deste código, mas um cliente que monetiza o transporte não é DUCAT.

Instale-a num telemóvel,
ou numa secretária

Nada para instalar antes — cada compilação traz a sua própria biblioteca Rust e a JVM. Android no telemóvel, e a mesma aplicação como janela nativa em Linux, Windows e macOS. Não há compilação para iOS; terá uma pasta quando a merecer.

🤖 Android

Navegador do telemóvel, compilação mais recente, sem página de versões para percorrer. armeabi-v7a apenas para telemóveis anteriores a cerca de 2016; x86_64 é para emuladores.

🐧 Linux

O .deb e o .rpm instalam-se como pacotes; o AppImage simplesmente corre.

🪟 Windows

Sem assinatura — o Windows avisa na primeira abertura.

🍎 macOS

Compilações para Apple Silicon e Intel. Sem assinatura — o macOS avisa na primeira abertura.

Assinado em depuração, apenas stagenet — não é para dinheiro real.