Propuesta de esquemas JSON-LD y JSON Schema para Credenciales Verificables del ecosistema vial de Costa Rica.
Propuesta tecnica abierta. Este repositorio contiene una propuesta de esquemas para credenciales verificables del ecosistema vial costarricense, desarrollada por Attestto Open. No es un estandar oficial. Los esquemas estan disenados para ser evaluados, modificados y adoptados por las instituciones competentes (COSEVI, MICITT, DGEV) a traves de un proceso de revision abierto. Invitamos a todas las partes interesadas a revisar, comentar y contribuir.
| Esquema | Tipo de VC | Emisor | Directorio |
|---|---|---|---|
| DrivingLicense | Licencia de conducir digital (mDL, ISO 18013-5) | COSEVI/DGEV | schemas/mdl/ |
| TheoreticalTestResult | Prueba teorica (conocimientos, en linea o presencial) | DGEV / proveedor certificado | schemas/driving-test/ |
| PracticalTestResult | Prueba practica (conduccion real con evaluador) | DGEV / proveedor certificado | schemas/driving-test/ |
| MedicalFitnessCredential | Dictamen medico de aptitud | Consultorio autorizado | schemas/medical/ |
| VehicleRegistration | Registro vehicular (placa) | Registro Nacional | schemas/vehicle/ |
| VehicleTechnicalReview | Revision tecnica (RTV) | Centro RTV | schemas/vehicle/ |
| CirculationRights | Derechos de circulacion (marchamo) | INS | schemas/vehicle/ |
| SOATCredential | Seguro obligatorio (SOAT) | INS | schemas/insurance/ |
| DriverIdentity | Identidad del conductor | TSE / DGME / banco / COSEVI | schemas/identity/ |
| TrafficViolation | Multa de transito | COSEVI | schemas/violations/ |
| AccidentReport | Parte de accidente | COSEVI / INS | schemas/violations/ |
cr-vc-schemas/
context/
cr-driving-v1.jsonld Contexto compartido (namespace comun)
schemas/
mdl/
DrivingLicense.jsonld Ejemplo de VC
DrivingLicense.schema.json JSON Schema para validacion
driving-test/
TheoreticalTestResult.jsonld + .schema.json
PracticalTestResult.jsonld + .schema.json
medical/
MedicalFitnessCredential.jsonld
MedicalFitnessCredential.schema.json
vehicle/
VehicleRegistration.jsonld + .schema.json
VehicleTechnicalReview.jsonld + .schema.json
CirculationRights.jsonld + .schema.json
insurance/
SOATCredential.jsonld + .schema.json
identity/
DriverIdentity.jsonld + .schema.json
violations/
TrafficViolation.jsonld + .schema.json
AccidentReport.jsonld + .schema.json
examples/ Ejemplos completos con datos ficticios
docs/ Documentacion adicional
LICENSE Apache 2.0
Todos los esquemas usan el contexto compartido:
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://schemas.attestto.org/cr/driving/v1"
]
}El contexto propuesto agrupa los tipos y propiedades en un namespace: https://schemas.attestto.org/cr/driving/v1#. Este namespace es provisional y puede cambiar si las instituciones competentes adoptan un dominio oficial (ej. schemas.cosevi.go.cr).
-
Privacidad por defecto — Los esquemas NUNCA incluyen datos de salud (solo resultado funcional), NUNCA exponen numeros de identidad completos (solo referencias parciales o hashes).
-
Interoperabilidad — Compatible con W3C Verifiable Credentials Data Model v2.0, JSON-LD, y los protocolos OpenID4VCI/OpenID4VP.
-
Verificacion offline — Cada VC incluye
credentialStatuscon StatusList2021 para verificacion de revocacion sin servidor centralizado. -
Neutralidad tecnologica — Los esquemas no dependen de ningun proveedor, plataforma ni blockchain especificos. Son compatibles con cualquier implementacion que soporte JSON-LD + W3C VC.
Los esquemas de este repositorio estan anclados en Solana via el Solana Attestation Service (SAS) — un protocolo abierto y permisionless de la Solana Foundation. No se requiere un programa propio.
| Entidad | PDA | Red |
|---|---|---|
| CR-VIAL-ECOSYSTEM (credencial) | GfqJFXiUVBFLHk1J7nooR9Vv1AaK3J8M3Ygz3RrzrM6u |
devnet |
| INSTITUTION (esquema) | CzvQmmyFtQg6yLr6hRJvfjAyAaA38paGcXiRTQQVHAmW |
devnet |
| CREDENTIAL-ANCHOR (esquema) | CsvrCdCyiE8QyV8uZF2xZ5Cj9PpfoKkdSK7dG7K9hSW5 |
devnet |
| VEHICLE-HISTORY (esquema) | 6Gn5M2q3BezbqaWQdrrh1w3xuizaJjgmdhwRpNnWjzJZ |
devnet |
Ver docs/deployment-devnet.json para el registro completo.
-
INSTITUTION — Anclas de confianza. Registra instituciones autorizadas (COSEVI, DGEV, bancos, consultorios) y los tipos de credencial que pueden emitir. Un verificador consulta este esquema para validar que el emisor de una VC esta autorizado.
-
CREDENTIAL-ANCHOR — Anclaje de hashes de VCs para personas. Modelo de verificacion en 3 capas: web (emisor) → CDN (attestto.id) → cadena (SAS). Tambien sirve como indice de recuperacion si el titular pierde su dispositivo. Sin PII on-chain — solo hashes.
-
VEHICLE-HISTORY — Historial de vida del vehiculo. Registros de matricula, RTV, marchamo, SOAT. Transferible (los vehiculos cambian de dueno). Historial publico, sin PII.
Devnet (actual): Autoridad de desarrollo — Att2ARRaK2VrAbmUvNzwUGJUom8cPVCYe65azSbb9oR5
Mainnet (planificado): Multisig multi-institucional via Squads Protocol v4:
| Firmante | Rol |
|---|---|
| COSEVI / MOPT | Regulador — gobierno del ecosistema vial |
| MICITT | Supervision tecnica — neutralidad y estandares |
| Desarrollador(es) | Operacion tecnica — Attestto Open u otro proveedor |
Threshold 2-of-3: ninguna parte puede unilateralmente agregar/remover anclas de confianza, pausar esquemas o revocar attestations. La infraestructura no pertenece al contratista.
Este modelo responde directamente a las observaciones del MICITT:
- Obs. 1 (Neutralidad tecnologica): La infraestructura es un protocolo abierto, no un producto propietario.
- Obs. 7 (Reversibilidad y portabilidad): La autoridad es transferible — el Estado puede asumir control total en cualquier momento.
cd scripts && pnpm install
# Desplegar credencial + esquemas en devnet
pnpm deploy:devnet
# Crear attestations de demo
pnpm demo:attest
# Verificar estado de los esquemas on-chain
pnpm verify
# Verificar un attestation especifico
pnpm verify -- --schema INSTITUTION --nonce <address># Usando ajv-cli
npx ajv validate -s schemas/mdl/DrivingLicense.schema.json -d mi-credencial.json{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://schemas.attestto.org/cr/driving/v1"
],
"type": ["VerifiableCredential", "DrivingLicense"],
"issuer": "did:web:cosevi.go.cr",
"credentialSubject": {
"id": "did:example:titular",
"license": {
"licenseNumber": "CI-100000000",
"categories": ["B"],
"issueDate": "2026-04-01",
"expiresAt": "2032-04-01",
"status": "active",
"points": 12,
"issuingAuthority": "did:web:cosevi.go.cr"
}
}
}Nota: El numero de licencia en Costa Rica es el mismo numero de cedula del titular (formato
CI-XXXXXXXXX). El metodo DID del ejemplo (did:web) es ilustrativo — el metodo definitivo se define por las instituciones competentes.
Este repositorio es parte de un ecosistema de herramientas open source para identidad descentralizada:
| Repositorio | Que hace | Estado |
|---|---|---|
| cr-vc-schemas | Esquemas JSON-LD para el ecosistema vial CR (este repo) | Listo |
| did-sns-spec | Especificacion W3C CCG del metodo DID para Solana Name Service (did:sns) |
Publicado en spec.attestto.com |
| wallet-identity-resolver | Resolucion de identidad on-chain: dado un wallet address, descubre DIDs, SBTs, attestations. Incluye resolver para SAS (Solana Attestation Service). | Publicado |
| credential-wallet-connector | Protocolo de descubrimiento universal de wallets de credenciales (como EIP-6963 para identidad). Sitios broadcast, wallets announce. | Publicado |
| vLEI-Solana-Bridge | Programa Solana que convierte credenciales organizacionales vLEI (GLEIF) en attestations on-chain con verificacion ZKP (Groth16). | Deployado en mainnet |
| did-method-checklist | Framework de evaluacion para especificaciones de metodos DID — cobertura, interop, completitud. | En progreso |
| Repositorio | Que hara |
|---|---|
| cr-vc-sdk-node | SDK Node.js/TypeScript — emision, verificacion, holder operations, trust registry |
| cr-vc-sdk-dotnet | SDK .NET/ASP — para consultorios, bancos, sistemas legacy del Estado |
| cr-vc-issuer-reference | App emisora clonar-y-desplegar (Node.js + Docker) |
| cr-vc-verifier-reference | App verificadora clonar-y-desplegar (Node.js + Docker) |
| cr-vc-wallet-reference | Wallet movil minimalista (React Native) |
| cr-vc-officer-app | App de verificacion en campo para oficiales de transito |
| cr-trust-registry | Directorio de emisores autorizados por tipo de credencial |
| cr-vc-testkit | Suite de pruebas de certificacion |
- W3C Verifiable Credentials Data Model v2.0
- W3C VC Use Cases — bounds of authority, verification vs validation, verifier business rules
- ISO/IEC 18013-5 (mDL)
- W3C CCG Verifiable Driver's License Vocabulary
- W3C StatusList2021
- OpenID4VCI
- OpenID4VP
- Solana Attestation Service (SAS)
- INTEROP.md — Mapeo completo CR → ISO 18013-5 → W3C VDL
- docs/did-adoption-model.md — Modelo de adopcion progresiva de DIDs
Apache 2.0 — Ver LICENSE