← Tornar a tots els articles
Reptes

Implementar clients sobre MintId: l'hora de la veritat

Per Marc Molas·20 de juliol del 2026·9 min de lectura

El producte més evident que MintID podria treure aquest any és una API de verificació allotjada. Envies la presentació al nostre endpoint, reps un sí o un no, i a final de mes et passem la factura. Qualsevol integrador n'ha consumit una, i els ingressos recurrents es dibuixen sols. No la construirem — i aquest post és l'argument d'enginyeria de per què, perquè la decisió no és cap preferència de negoci. Es desprèn directament de l'arquitectura del protocol, i us en vull ensenyar la derivació pas a pas.

Primer, la notícia que ho motiva. Els SDKs verificadors de MintID ja estan en desenvolupament — TypeScript, PHP i Python — amb les primeres builds provades i funcionant esperades d'aquí a un parell de setmanes. És el primer lliurament adreçat a integradors: el codi que les agències verificadores registrades faran servir per sol·licitar i validar presentacions. Al build hi treballa un equip d'enginyeria de Conectia encastat al projecte. I és el codi més delicat de tot el projecte, per una raó que no té res a veure amb la seva mida.

La frontera del verificador és on les garanties d'un protocol van a morir

Tot el que us vaig ensenyar quan MintID es va fer públic viu en territori que el projecte controla: una especificació congelada, la lògica de consens en Go, el nucli de credencials anònimes en Rust, el determinisme imposat per on es permet viure a cada peça de codi. Dins d'aquest perímetre, la correcció és problema nostre i privilegi nostre.

L'SDK verificador és el primer artefacte que surt del perímetre. Corre en màquines que no veurem mai, dins d'stacks que no hem triat, operat per equips amb les seves pròpies dates d'entrega. I seu exactament al punt on les promeses del protocol es compleixen o es trenquen en silenci: una presentació és una prova de coneixement zero de deu segons, d'un sol ús i lligada a un origen — i cadascun d'aquests adjectius només és cert si el codi que la comprova els fa complir totes i cadascuna de les vegades. La història aquí no perdona. Els protocols tendeixen a sobreviure les auditories i morir als desplegaments: nuclis correctes embolicats amb integracions que es van saltar una comprovació perquè era configurable i la data d'entrega era a prop.

Així que la pregunta de disseny d'aquest lliurament no va ser mai «REST o gRPC». Va ser: com poses la lògica d'acceptació a mans de desconeguts sense posar-los a les mans la capacitat d'afeblir-la?

L'arquitectura ja havia pres la decisió

La resposta honesta és que no vam poder triar entre allotjat i encastat. Tres propietats del centre del disseny de MintID tanquen la qüestió abans que s'obri.

L'arrel no és de ningú. El protocol corre sobre una cadena sobirana precisament perquè cap empresa sigui l'àncora de confiança — un verificador comprova l'estat de l'emissor contra arrels d'estat signades, republicades cada 30 segons, en lloc de trucar a l'API privada de ningú. Ara imagineu la verificació mateixa com un servei que MintID allotja. Cada presentació de cada agent cap a cada contrapart passa per la infraestructura d'un sol operador. La nostra caiguda és la caiguda de tothom; qui opera l'endpoint pot decidir — o pot ser obligat a decidir — quines presentacions es verifiquen. Has reconstruït, a la capa d'aplicació, el jardí tancat que la cadena existeix per impedir. Un verificador allotjat no és una versió més barata del mateix producte. És una derogació silenciosa del primer principi del protocol.

Les presentacions són no-enllaçables. La capa de coneixement zero garanteix que dos agents del mateix operador no es poden correlacionar, i que un verificador només aprèn el predicat que ha demanat. Però la criptografia només protegeix el que va pel cable. Un servei de verificació allotjat veuria les metadades de tota la xarxa — qui verifica contra qui, quan, des de quin origen, amb quina freqüència — acumulades als logs d'un sol operador. Això és la màquina de fer perfils que les propietats de no-enllaçabilitat existeixen per fer impossible, reconstruïda com a efecte col·lateral operatiu. L'única arquitectura que manté les metadades tan privades com la càrrega és aquella on cada verificador només observa el seu propi trànsit, a les seves pròpies màquines.

Les lectures de cadena es proven, i fallen tancades. El nucli de verificació no es refia de la resposta d'un node: el que llegeix de la cadena, ho verifica amb proves criptogràfiques, i si no en pot provar la frescor, rebutja. Això és el que fa que encastar sigui segur. L'objecció clàssica a distribuir lògica de verificació — «mil desplegaments són mil llocs on colar estat caducat» — es dissol quan el nucli es nega a acceptar res que no pugui ancorar criptogràficament a l'estat vigent de l'emissor. Les revocacions arriben a tot arreu en qüestió de segons no perquè tothom truqui a casa, sinó perquè ningú no té permís per saltar-se la prova.

Llegiu les tres propietats juntes i la conclusió s'escriu sola: la verificació a MintID està pensada per ser encastada, no allotjada per nosaltres — enllaçada dins del backend de la mateixa agència, o corrent com a servei independent al costat del seu stack, i en tots dos casos el mateix pipeline d'acceptació s'executa a la infraestructura de l'agència.

El pipeline viatja sencer, o no viatja

Encastar la lògica resol el problema de la centralització i immediatament aixeca el que obria el post: el codi distribuït és codi que desconeguts poden desconfigurar. La resposta de MintID és que els SDKs no exposen cap superfície de política.

Nou condicions d'acceptació corren sempre al complet. L'anunci anomena les que suporten més pes, i cadascuna existeix per matar un atac concret. La vinculació a l'origen exacte del verificador — un verificador per origen, sense comodins — fa que una presentació produïda per a una contrapart sigui criptogràficament inútil a qualsevol altra, cosa que tanca tota la família de relay-i-replay. Un nonce fresc tanca el replay directe. La comprovació de la política sol·licitada garanteix que la prova respon exactament el predicat que el verificador ha demanat, no un cosí més feble. La comprovació de l'estat vigent de l'emissor ancora cada acceptació a les arrels d'estat de 30 segons, de manera que una credencial revocada deixa de verificar gairebé immediatament, a tot arreu.

Cada presentació viu deu segons. No deu per defecte — deu com a constant al codi. Cap desplegament no la pot estirar per fer més tova una finestra de replay, i la constant també fixa el pressupost de deriva de rellotge que un integrador ha de respectar: si els teus servidors deriven, el protocol no es doblega, la teva taxa d'acceptació cau, i la fallada és visible en lloc de silenciosa.

Són constants i tipus tancats, no paràmetres. No hi ha cap verifyPartial(), cap flag skipOriginCheck, cap mode de compatibilitat. El sistema de tipus no pot expressar un verificador més feble. La formulació de l'anunci és la que hauria triat jo: amb aquestes peces no es pot construir un verificador més feble.

Si això sona paranoic, és paranoia amb bibliografia. Les llibreries de JWT sortien amb alg: none com a opció acceptada, i el 2015 la indústria va descobrir quants sistemes en producció acceptaven un token sense signar només perquè la flexibilitat existia. TLS va mantenir disponibles per compatibilitat els xifratges «export» dels anys noranta, i FREAK i Logjam van convertir aquella configurabilitat adormida en atacs de degradació en viu. El patró és sempre el mateix: ningú no tria la configuració feble; algú amb una data d'entrega a sobre agafa el botó que fa desaparèixer un error. En una xarxa de verificació el radi de l'explosió és col·lectiu — la força del desplegament més feble és la reputació de tota la xarxa — i per això els botons s'eliminen a nivell de tipus en lloc de documentar-se en negreta.

Un nucli, tres llenguatges — la disciplina de frontera, estesa cap enfora

Dins del protocol, la frontera de llenguatge és la frontera de seguretat: el consens en Go, el nucli de credencials i proves en Rust, Python confinat a la simulació, mai en un camí de consens. Els SDKs estenen la mateixa doctrina al codi de cara a l'integrador. TypeScript, PHP i Python emboliquen el mateix nucli de verificació — la capa de llenguatge és ergonomia i idioma; el pipeline d'acceptació de sota és una sola implementació amb un sol comportament. La tria dels tres objectius és un mapa d'on viuen realment les agències verificadores — backends Node, el web comercial, els stacks de dades i IA — i és deliberadament l'única tria que un integrador pot fer, perquè és l'única sense pes de seguretat.

El que un integrador aporta és infraestructura, mai política

L'altra cara dels zero botons és una llista curta i honesta del que una agència ha de posar sobre la taula, i cada element és una competència d'operacions i no un judici de valor: registre a la cadena i aprovació KYC; els orígens exactes des dels quals verificarà; les seves claus; un registre de nonces durable; un rellotge disciplinat. Els dos elements menys glamurosos mereixen la seva nota tècnica. El registre de nonces ha de ser durable perquè un reinici que oblida els nonces vistos reobre en silenci la finestra de replay que el protocol acabava de tancar — una cache en memòria falla exactament de la pitjor manera possible: invisiblement. I el rellotge ha de ser disciplinat perquè deu segons de vida d'una presentació són un pressupost que la teva deriva es gasta per tu.

Fixeu-vos en el que no hi ha a la llista: cap decisió sobre quanta protecció contra replay és suficient, cap tria de quins estats d'emissor mereixen confiança, cap ajust de l'acceptació de proves. El protocol és l'amo del judici; l'integrador és l'amo de la infraestructura. Aquesta divisió és el que fa que un model encastat es pugui distribuir amb seguretat a entitats que no has vist mai.

On vaig amb peus de plom

La disciplina de sempre. «Provades i funcionant d'aquí a un parell de setmanes» vol dir builds que passen els seus tests i verifiquen presentacions reals — no vol dir disponibilitat general, que es decidirà més endavant i amb deliberació. L'adaptador del costat emissor és un lliurament posterior. I la línia del protocol no s'ha mogut: MintID continua sent un protocol en fase de recerca, sense token viu i sense mainnet abans d'auditories independents. El número de les dues setmanes no és una data de llançament; és la data en què els primers enginyers externs podran agafar la peça i intentar trencar-la.

Què faria si portes una agència verificadora

  1. Aprofita la finestra de design partner — són exactament el parell de setmanes del titular. La superfície de l'API encara és calenta; contacta a través de MintID.net ara, no quan les interfícies ja s'hagin endurit.
  2. Audita els prerequisits d'infraestructura abans d'escriure una sola línia d'integració. Camí de registre i KYC, orígens exactes, custòdia de claus, un registre de nonces que sobrevisqui reinicis, disciplina de rellotge amb deu segons de pressupost. L'SDK no es doblegarà per venir-te a buscar.
  3. Tria l'SDK segons on visqui ja el teu stack. Node, TypeScript; web comercial, PHP; pipeline de dades o IA, Python. El pipeline de sota és idèntic — gasta la tria en ergonomia per als teus desenvolupadors.
  4. Fes inventari dels botons de seguretat de l'stack que ja tens en marxa. Cada timeout configurable, cada llista d'algorismes acceptats i cada mode de compatibilitat del teu camí d'autenticació actual és un lloc on una data d'entrega et pot afeblir. No et cal MintID per començar a tancar-los.

El fil que ho travessa

L'últim post acabava en l'humà: verifica un sol cop, deixa que la responsabilitat viatgi cap a tot el que despleguis, no exposis la persona a ningú. Això és el mateix principi una capa més avall, al punt on el protocol toca per fi entitats que no controla. La confiança no és un servei que crides; és una propietat del codi que corres — encastada a la teva infraestructura, estricta per construcció, provada contra la cadena, sense cap botó que ningú pugui afluixar a les dues de la matinada amb una entrega a sobre. Les tres primeres portes cap a aquest model — TypeScript, PHP, Python — s'estan construint ara mateix. Si portes una agència verificadora i les vols ajudar a donar forma, MintID.net és la porta.

Preparat per construir el teu equip d'enginyeria?

Parla amb un partner tècnic i desplega desenvolupadors validats per CTOs en 72 hores.