Markdown firmado
Contenido, metadatos, hash y firma de autor.
Documentación del sistema · piloto de uso interno
Una guía para entender la publicación de documentos, sus firmas, el papel de OrbitDB y Supabase, y cómo poner en marcha una réplica del nodo. Las propuestas publicadas se diseñan como documentos Markdown verificables; la base de datos facilita su consulta.
01 · MODELO
Una propuesta se redacta como Markdown con metadatos estructurados (frontmatter). Al publicarla, el contenido y sus metadatos se serializan, se calcula un hash y se añade la firma del autor. El registro incluye identificadores y relaciones necesarias para reconstruir la vista —por ejemplo, tipo, tema, autor cívico y referencias—, sin convertir la base de datos en la autoridad sobre el texto.
Contenido, metadatos, hash y firma de autor.
Log replicable elegido como fuente canónica de documentos publicados.
Supabase facilita búsquedas y relaciones; puede reconstruirse desde los registros.
Si el índice y el registro canónico discrepan, debe prevalecer el documento validado en OrbitDB. Los lectores pueden verificar la firma y el hash con los registros disponibles; la firma prueba control de una clave e integridad del contenido, no que sus afirmaciones sean verdaderas.
02 · PUBLICACIÓN
Una nueva versión debe publicarse como un registro nuevo que enlace con la anterior y explique el cambio; no se debe presentar una edición como si el texto original nunca hubiera existido.
03 · DEBATE DISTRIBUIDO
Puedes comentar sin cuenta y sin firma de autor. El editor conserva el formato como Markdown. Cada comentario y apoyo se registra primero en el log OrbitDB y recibe un enlace permanente. Supabase facilita encontrar el documento principal; los comentarios nuevos se leen desde el nodo.
La acreditación se consulta en el servidor, con caducidad y revocación. El verificador FNMT/DNIe todavía no está integrado; el piloto permite participar sin esa acreditación. No publiques información privada ni documentos de identidad.
Compartir abre un enlace independiente con acceso al documento principal y a todos sus comentarios. Fuente del comentario exporta el registro sin firma; Evento firmado exporta el evento verificable. Consulta la guía de participación.
03 · IDENTIDAD Y FIRMAS
Vincula el contenido a una clave de autor y permite detectar cambios posteriores.
Identifica al peer que escribe en OrbitDB y permite comprobar operaciones del log.
Requeriría una credencial verificada por un emisor y pruebas de unicidad adecuadas. DNIe, FNMT y Cl@ve aún no están integrados como login o acreditación verificable en esta aplicación.
La clave de firma de autor vive en el navegador y no equivale a un certificado digital. El estado de verificación que consulta la web pertenece al servicio actual; por sí solo no demuestra a terceros la identidad civil de una persona. No publiques documentos de identidad, secretos ni datos personales en OrbitDB.
04 · ESTADO Y LÍMITES
La replicación puede mejorar la disponibilidad, pero requiere peers independientes, copias y procedimientos operativos. El prototipo no tiene auditoría de seguridad, consenso electoral, protección contra ataques coordinados ni garantía de permanencia.
05 · OPERAR UN NODO
El código inicial está dentro del repositorio de CivicOS, en nodes/orbitdb-node-01. Necesitas Node.js 22 o posterior, npm 10 o posterior y acceso al repositorio privado.
npm ci.npm start; para comprobar el inicio y cierre, usa npm run check.nodes/orbitdb-node-01/data/node-01/. Conserva esa carpeta para mantener la identidad del peer.git clone --branch codex/orbitdb-signed-publication https://github.com/gordo-labs/bases-futuro-compartido.git
cd bases-futuro-compartido/nodes/orbitdb-node-01
npm ci
npm startCódigo del nodo · repositorio privado
Guía de requisitos, arranque, persistencia de datos y configuración de una segunda réplica.
data/node-01/node-key.pb, la carpeta de datos ni secretos de entorno. Esa clave representa la identidad técnica del peer.127.0.0.1 del ordenador del usuario. El piloto usa un túnel HTTPS hacia el primer nodo. Su disponibilidad depende de que el equipo esté encendido; todavía hacen falta réplicas de operadores independientes.ALOJAMIENTO SENCILLO · SERVIDOR LINUX CON DOCKER
Esta receta ejecuta un nodo P2P en un servidor y conserva sus datos en un volumen. Para replicar el registro canónico necesitas la dirección OrbitDB y una dirección de red alcanzable de un peer que ya participe.
git clone --branch codex/orbitdb-signed-publication https://github.com/gordo-labs/bases-futuro-compartido.git
cd bases-futuro-compartido/nodes/orbitdb-node-01.env en esa carpeta y configura este peer con la dirección del nodo existente:CIVIC_ORBIT_NODE_ID=02
CIVIC_ORBIT_PORT=4102
CIVIC_ORBIT_DB_ADDRESS=/orbitdb/DIRECCION_DEL_REGISTRO
CIVIC_ORBIT_BOOTSTRAP_PEERS=/ip4/IP_PUBLICA_DEL_PEER/tcp/4101/p2p/PEER_ID4102/TCP en el firewall. Sustituye los valores de ejemplo por los reales. Si dejas vacía la dirección OrbitDB, el nodo creará un registro independiente.docker compose up -d --build
docker compose logs -f orbit-nodedocker compose down. El volumen orbit_data conserva claves y bloques; no uses down -v.Solo publica el puerto P2P. La web alojada necesita conectarse al nodo por un canal privado autenticado; la API de desarrollo no debe abrirse directamente a Internet.
EVOLUCIÓN FUTURA · AÚN NO IMPLEMENTADA
Sí, se puede diseñar una app de escritorio basada en Electron para que instalarla, elegir una carpeta y pulsar Iniciar nodo sea el recorrido normal. La app empaquetaría el runtime y el nodo, crearía una identidad técnica propia, conectaría con peers configurados y mostraría el estado sin exigir terminal ni editar archivos de entorno.
Es una propuesta, no una función disponible hoy. Requiere antes estabilizar el protocolo, probar la replicación entre operadores y crear una interfaz local segura. Los requisitos, etapas y criterios de aceptación están en la propuesta de arquitectura para la app de escritorio ↗.
El repositorio principal es privado, así que este enlace sólo funciona para personas con acceso concedido. Para que cualquier ciudadano u organización pueda ejecutar un nodo, habría que publicar un repositorio de operador separado o hacer público este código; esta página no cambia la visibilidad del repositorio.