Tutorial completo del servicio de registro documental en Stellar
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:
manage_data.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...
manage_dataEn 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.
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).
tx_hash de Stellar, el ledger y los enlaces de verificación.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
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.
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.
La verificación puede hacerse de tres formas distintas:
/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"
/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"
En verificar.php tienes tres pestañas: Archivo (subir fichero), Texto (pegar contenido) y Hash (escribir el hash directamente).
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.
La API acepta dos métodos de autenticación simultáneamente:
| Método | Header | Perfil | Endpoints |
|---|---|---|---|
| X-API-Key | X-API-Key: <clave> | Administrador | Todos (register, verify, status, history, admin/*) |
| Basic Auth | Authorization: Basic <base64> | Usuario activo | register, verify |
?api_key=...). Usa siempre el header X-API-Key. Las URLs quedan registradas en logs de IIS y de proxies intermedios.
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.
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.
El administrador gestiona los usuarios desde:
POST /api/admin/users.php?mode=toggle_active&user_id=X&activo=1hash_equals() para prevenir timing attacks.Accede en admin.php con la X-API-Key de administrador. El panel tiene dos pestañas:
Lista filtrable de todas las acciones registradas en tblAccion. Puedes filtrar por:
Lista de usuarios con filtro por email y estado (activo/inactivo). Acciones disponibles: Activar, Desactivar y Borrar.
| Método + Ruta | Auth | Descripción |
|---|---|---|
| POST /api/register.php | Admin / Usuario | Registrar documento |
| POST /api/verify.php | Admin / Usuario | Verificar por contenido |
| GET /api/verify.php?hash= | Admin / Usuario | Verificar por hash |
| GET /api/status.php | Público | Salud, balances, actividad |
| GET /api/health.php | Público | Health check ligero (uptime) |
| GET /api/history.php | Admin | Últimos registros |
| GET /api/admin/operations.php | Admin | Consulta de operaciones |
| GET/POST /api/admin/users.php | Admin | Gestión de usuarios |
| GET /api/index.php | Público | Info del servicio |
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();
}
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()
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.
La página estado.php muestra (sin necesidad de autenticación):
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.
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.
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.
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.
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.
Stellar pubnet confirma transacciones en 3-5 segundos. La respuesta de la API incluye el ledger donde quedó grabada la operación.
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.
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.
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.
La documentación completa de la plataforma está disponible en formato Markdown (.md) para su consulta sin conexión.
microwd_online_documentacion_v1.2.mdLa 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.
Para visualizar el documento con formato, se recomienda la aplicación gratuita: