Tutorial completo del servicio de registro documental en Stellar

Contenidos

  1. ¿Qué es microwd.online?
  2. Conceptos básicos de Stellar
  3. Registrar un documento
  4. Verificar un documento
  5. Autenticación en la API
  6. Gestión de usuarios
  7. Panel de administración
  8. Uso programático de la API
  9. Monitorización y estado
  10. Preguntas frecuentes
  11. Documentación

1 ¿Qué es microwd.online?

microwd.online es un servicio de certificación documental que utiliza la blockchain de Stellar para registrar la existencia de un documento en un momento concreto del tiempo, sin revelar su contenido.

La plataforma:

¿Por qué blockchain? Una vez escrita, la operación es inmutable. Nadie —ni el operador de la plataforma— puede modificarla o borrarla. Cualquier persona con el hash del documento puede verificar por sí misma que el registro existe, sin depender de terceros.

2 Conceptos básicos de Stellar

2.1 Hash SHA-256

Un hash es el resultado de pasar cualquier cantidad de datos por una función matemática que produce una cadena de 64 caracteres hexadecimales. Dos documentos idénticos producen el mismo hash; dos documentos distintos producen hashes distintos. El hash no revela el contenido original ni permite reconstruirlo.

# Ejemplo: generar un hash en Linux / macOS / WSL
$ echo -n "microwd online stellar" | sha256sum
3c2e8f5a...

2.2 Operación manage_data

En Stellar, una cuenta puede almacenar pares clave-valor en su ledger. La clave es el hash SHA-256 del documento; el valor es la fecha/hora UTC del registro. Estas entradas son inmutables: una vez escritas, no se pueden modificar.

2.3 Cuentas Stellar

La plataforma mantiene 3 cuentas Stellar en pubnet (red principal). Por cada documento nuevo, se selecciona una cuenta en round-robin con failover automático si una cuenta no tiene fondos suficientes (mínimo 5 XLM de reserva).

3 Registrar un documento

3.1 Desde la web

2
Introduce tu X-API-Key (admin) o tus credenciales Basic Auth (usuario activo).
3
Arrastra un fichero a la zona de subida o pégalo como texto.
4
Haz clic en Registrar. El sistema devuelve el hash, el tx_hash de Stellar, el ledger y los enlaces de verificación.

3.2 Desde la línea de comandos

curl -X POST https://www.microwd.online/api/register.php \
  -H "X-API-Key: TU_CLAVE_API" \
  -F "file=@documento.txt"

O usando HTTP Basic Auth con credenciales de usuario:

curl -X POST https://www.microwd.online/api/register.php \
  -u "usuario@email.com:contraseña" \
  --data-binary @documento.txt

3.3 Idempotencia

Registrar el mismo documento dos veces no crea una segunda transacción. El sistema detecta el hash duplicado (primero en base de datos, luego en la blockchain) y devuelve la información de la transacción original con el campo "already_registered": true.

Consejo: puedes usar register.php como un sello de tiempo universal. Guarda el JSON de respuesta junto con tu documento original; ese JSON contiene todo lo necesario para que cualquiera verifique la autenticidad en el futuro.

4 Verificar un documento

La verificación puede hacerse de tres formas distintas:

4.1 Por fichero (POST /api/verify.php)

Se envía el fichero completo. El servidor calcula el hash, lo busca en la blockchain y responde si está registrado o no.

curl -X POST https://www.microwd.online/api/verify.php \
  -H "X-API-Key: TU_CLAVE_API" \
  -F "file=@documento_sospechoso.pdf"

4.2 Por hash (GET /api/verify.php?hash=...)

Si ya conoces el hash SHA-256 del documento, puedes consultarlo directamente:

curl https://www.microwd.online/api/verify.php?hash=3c2e8f5a... \
  -H "X-API-Key: TU_CLAVE_API"

4.3 Desde la web

En verificar.php tienes tres pestañas: Archivo (subir fichero), Texto (pegar contenido) y Hash (escribir el hash directamente).

4.4 Verificación pública (sin API)

Cualquier persona puede verificar un registro sin necesidad de credenciales, directamente en la blockchain:

https://horizon.stellar.org/accounts/GATEKT3J.../data/3c2e8f5a...

El enlace verify_data_url que devuelve la API apunta exactamente a esta consulta Horizon. Si el hash está registrado, Horizon devuelve la fecha/hora del registro.

5 Autenticación en la API

La API acepta dos métodos de autenticación simultáneamente:

MétodoHeaderPerfilEndpoints
X-API-Key X-API-Key: <clave> Administrador Todos (register, verify, status, history, admin/*)
Basic Auth Authorization: Basic <base64> Usuario activo register, verify
Importante: la API key NUNCA debe incluirse en URLs (?api_key=...). Usa siempre el header X-API-Key. Las URLs quedan registradas en logs de IIS y de proxies intermedios.

5.1 Rate limiting

Cada autenticación tiene su propio límite de peticiones por minuto: Admin: 30 req/min. Usuario: 30 req/min por usuario. Alta de usuarios: 5 req/min por IP. Si se excede, la API responde 429 Too Many Requests con un header Retry-After.

6 Gestión de usuarios

6.1 Alta de usuario (auto-servicio)

Cualquier persona puede solicitar un usuario en alta-usuarios.php. Necesita:

Los usuarios se crean inactivos por defecto. Un administrador debe activarlos manualmente antes de que puedan usar la API.

6.2 Activación / desactivación / borrado

El administrador gestiona los usuarios desde:

6.3 Seguridad de contraseñas

7 Panel de administración

Accede en admin.php con la X-API-Key de administrador. El panel tiene dos pestañas:

7.1 Operaciones

Lista filtrable de todas las acciones registradas en tblAccion. Puedes filtrar por:

7.2 Usuarios

Lista de usuarios con filtro por email y estado (activo/inactivo). Acciones disponibles: Activar, Desactivar y Borrar.

8 Uso programático de la API

8.1 Endpoints disponibles

Método + RutaAuthDescripción
POST /api/register.php Admin / UsuarioRegistrar documento
POST /api/verify.php Admin / UsuarioVerificar por contenido
GET /api/verify.php?hash=Admin / UsuarioVerificar por hash
GET /api/status.php PúblicoSalud, balances, actividad
GET /api/health.php PúblicoHealth check ligero (uptime)
GET /api/history.php AdminÚltimos registros
GET /api/admin/operations.phpAdminConsulta de operaciones
GET/POST /api/admin/users.phpAdminGestión de usuarios
GET /api/index.php PúblicoInfo del servicio

8.2 Ejemplo: integración en JavaScript

const API_KEY = 'tu-clave-admin';

async function registrar(file) {
  const form = new FormData();
  form.append('file', file);

  const res = await fetch(
    'https://www.microwd.online/api/register.php',
    { method: 'POST', headers: { 'X-API-Key': API_KEY }, body: form }
  );
  return res.json();
}

8.3 Ejemplo: verificar en Python

import requests, hashlib

def verificar_archivo(path, api_key):
    with open(path, 'rb') as f:
        content = f.read()
    h = hashlib.sha256(content).hexdigest()

    resp = requests.get(
        'https://www.microwd.online/api/verify.php',
        params={'hash': h},
        headers={'X-API-Key': api_key},
    )
    return resp.json()

8.4 Formato de respuesta

Todas las respuestas incluyen al menos:

{
  "success": true | false,
  "error":   "mensaje si success=false",
  "code":    "código de error"
}

En caso de registro exitoso, se añaden hash, tx_hash, ledger, source_account, created_at y las URLs de verificación.

9 Monitorización y estado

9.1 Panel de estado

La página estado.php muestra (sin necesidad de autenticación):

9.2 Monitor de saldos

Un script programado (balance_monitor.ps1) se ejecuta cada día a las 08:00. Si alguna cuenta Stellar baja de 10 XLM, escribe una alerta en ACTIONS/MONITOR/. Revisa ese directorio periódicamente o configura una alerta por correo.

9.3 Health check para uptime

curl https://www.microwd.online/api/health.php
# Respuesta: {"ok":true,"service":"microwd.online","ts":"2026-06-20T08:00:00Z"}

Ideal para servicios como UptimeRobot, Better Uptime o Healthchecks.io.

10 Preguntas frecuentes

¿Puedo registrar cualquier tipo de archivo?

Sí. El sistema solo ve bytes; no le importa si es un .txt, .pdf, .jpg o un binario. El límite de tamaño es 10 MB por petición.

¿El documento se almacena en la blockchain?

No. Solo se guarda el hash SHA-256 (64 caracteres). El documento original nunca sale de tu poder. La blockchain certifica que existía en un momento dado, pero no almacena su contenido.

¿Cuánto cuesta cada registro?

Cada operación manage_data en Stellar consume una fracción de XLM (≈0.00001 XLM en fees de red). Las cuentas de la plataforma cubren este coste. No se cobra a los usuarios.

¿Cuánto tarda en confirmarse un registro?

Stellar pubnet confirma transacciones en 3-5 segundos. La respuesta de la API incluye el ledger donde quedó grabada la operación.

¿Qué pasa si la blockchain de Stellar desaparece?

Stellar es una red descentralizada con cientos de validadores independientes. Si desapareciera por completo, los hashes registrados quedarían en los backups diarios de tblAccion, exportables desde el admin.

¿Cómo sé que el registro es válido legalmente?

La validez legal depende de la jurisdicción. El servicio proporciona evidencia técnica (hash + timestamp + transacción inmutable) que puede presentarse como prueba. Consulta con un abogado para tu caso concreto.

¿Puedo verificar un documento sin la API?

Sí. Cualquier persona con el hash SHA-256 puede consultar la blockchain directamente en stellar.expert o en Horizon. No necesita credenciales ni acceso a esta plataforma.

11 Documentación

La documentación completa de la plataforma está disponible en formato Markdown (.md) para su consulta sin conexión.

11.1 Descargar documentación

Archivo: microwd_online_documentacion_v1.2.md
Versión: 1.2 (2026-06-22)
Formato: Markdown — legible con cualquier editor de texto o visor especializado.

Descargar documentación (v1.2)

11.2 Guia rapida (Agil)

La pagina Agil muestra una guia paso a paso para registrar y verificar documentos, con enlaces directos a las paginas y URLs de la blockchain. Es la version HTML del fichero MicroWD_Steps.txt.

11.3 Visor de Markdown gratuito

Para visualizar el documento con formato, se recomienda la aplicación gratuita:

Markdown View by tinyGOODIES
Aplicación gratuita (Microsoft Store) para visualizar archivos Markdown (.md) con formato, ideal para leer la documentación sin conexión.

Abrir en Microsoft Store o visita tinygoodies.com
Consejo: la documentación se actualiza cada vez que hay un cambio en la plataforma. El número de versión aparece en el nombre del archivo. Descarga la versión más reciente desde esta sección.