Skip to content

Attestto-com/cr-vc-schemas

Repository files navigation

cr-vc-schemas

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.

Esquemas

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/

Estructura

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

Contexto JSON-LD

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).

Principios de Diseno (Propuestos)

  1. Privacidad por defecto — Los esquemas NUNCA incluyen datos de salud (solo resultado funcional), NUNCA exponen numeros de identidad completos (solo referencias parciales o hashes).

  2. Interoperabilidad — Compatible con W3C Verifiable Credentials Data Model v2.0, JSON-LD, y los protocolos OpenID4VCI/OpenID4VP.

  3. Verificacion offline — Cada VC incluye credentialStatus con StatusList2021 para verificacion de revocacion sin servidor centralizado.

  4. Neutralidad tecnologica — Los esquemas no dependen de ningun proveedor, plataforma ni blockchain especificos. Son compatibles con cualquier implementacion que soporte JSON-LD + W3C VC.

Anclaje On-Chain (Solana Attestation Service)

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.

Despliegue actual (Devnet)

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.

Tres esquemas, tres tipos de entidad

  1. 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.

  2. 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.

  3. VEHICLE-HISTORY — Historial de vida del vehiculo. Registros de matricula, RTV, marchamo, SOAT. Transferible (los vehiculos cambian de dueno). Historial publico, sin PII.

Modelo de gobernanza on-chain

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.

Scripts de despliegue

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>

Uso

Validar una VC contra un esquema

# Usando ajv-cli
npx ajv validate -s schemas/mdl/DrivingLicense.schema.json -d mi-credencial.json

Referenciar el contexto en una VC

{
  "@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.

Ecosistema

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

Por construir

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

Referencias

Licencia

Apache 2.0 — Ver LICENSE

About

JSON-LD + JSON Schema for Costa Rica verifiable credentials — mDL, medical, vehicles, insurance, identity. 11 credential types aligned with W3C VDL and ISO 18013-5. Apache 2.0

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors