Se ha publicado la versión 1.7 de la plataforma P2P Radicle, diseñada para crear un servicio descentralizado de desarrollo y almacenamiento de código similar a GitHub y GitLab, pero no vinculado a servidores específicos, libre de censura y que funciona utilizando los recursos de los participantes de la red P2P. La plataforma admite elementos típicos de interacción social de desarrolladores, como issues, parches y revisiones de código. Los desarrollos del proyecto están escritos en Rust y se distribuyen bajo las licencias Apache 2.0 y MIT. Se han preparado versiones para Linux y macOS. Además, se está desarrollando un cliente de escritorio, una interfaz web y una interfaz de consola.
Radicle permite liberar el desarrollo y la distribución de código de plataformas y corporaciones centralizadas, cuya dependencia introduce riesgos adicionales (un único punto de falla, la empresa puede cerrar o cambiar las condiciones de operación). Para gestionar el código en Radicle se utiliza Git, ampliado con medios para la identificación de repositorios en la red P2P. Todos los datos se guardan principalmente de manera local (concepto local-first) y siempre están disponibles en la computadora del desarrollador, independientemente del estado de la conexión de red.
Los participantes proporcionan acceso a su código y artefactos relacionados, como parches y discusiones sobre corrección de errores (issues), que se guardan localmente y se replican en los nodos de otros desarrolladores interesados, conectados a la red P2P descentralizada compartida. Como resultado, se forma un repositorio Git descentralizado global, cuyos datos están replicados y duplicados en diferentes sistemas de los participantes.
Para identificar nodos vecinos en la red P2P se utiliza el protocolo Gossip, y para replicar datos entre nodos se emplea el protocolo Heartwood, basado en Git. Dado que el protocolo se basa en Git, la plataforma se integra fácilmente con las herramientas existentes para desarrollo en Git. La identificación de nodos y la verificación de repositorios utilizan criptografía de claves públicas, sin necesidad de cuentas. La autenticación y autorización se realizan sobre la base de claves públicas sin entidades certificadoras centralizadas. servidores.
Cada repositorio en la red P2P tiene un identificador único y es autodeclarado, es decir, todas las acciones en el repositorio, como agregar commits y dejar comentarios en issues, son firmadas por el propietario con una firma digital, que permite verificar la integridad de los datos en otros nodos sin la necesidad de centros de certificación centralizados. Para acceder al repositorio, basta con que al menos un nodo esté en línea y tenga una copia replicada de él.
Los nodos en la red P2P pueden suscribirse a ciertos repositorios y recibir actualizaciones. Es posible crear repositorios privados, accesibles solo para nodos específicos. Para gestionar y poseer un repositorio se usa el concepto de 'delegados'. Un delegado puede ser un usuario individual, un bot o un grupo, ligados a un identificador especial. Los delegados pueden aceptar parches en el repositorio, cerrar issues y establecer permisos de acceso al repositorio. Se pueden asociar varios delegados a cada repositorio.
Los repositorios Radicle se almacenan en los sistemas de los usuarios como repositorios git normales, en los que hay espacios de nombres adicionales para almacenar datos de pares y bifurcaciones con los que se está trabajando actualmente. Las discusiones, los parches propuestos y los componentes para la organización de revisiones también se guardan en el repositorio git como objetos colaborativos (COB — Collaborative Objects) y se replican entre pares.
En esta nueva versión:
- Se ha reestructurado la implementación de enlaces firmados (sigrefs — Signed References), que ahora incluye protección contra la reutilización de firmas. La antigua estructura del repositorio permitía reemplazar código con una versión anterior, reutilizando una firma válida antigua. Para bloquear este problema, la nueva implementación ha añadido un puntero a la entrada anterior, que está abarcada por la firma actual, lo que forma una cadena continua de cambios cuya integridad se puede rastrear desde la raíz.
- Se han ampliado las capacidades de bloqueo de nodos, que ahora se bloquean a nivel de gestión de conexiones. Anteriormente, solo se bloqueaba la recepción de datos, sin limitar la conexión del nodo, pero ahora el bloqueo se aplica en el establecimiento de la conexión con un nodo bloqueado y al recibir una conexión de un nodo bloqueado.
- Se permite utilizar cualquier enlace a objetos Git externos, excepto ramas temporales. Anteriormente, solo se permitían enlaces a ramas externas, etiquetas, metadatos de Radicle, notas y objetos para colaboración.
- Se ha mejorado la claridad de los mensajes de error que aparecen al intentar realizar operaciones para las cuales el usuario no tiene suficientes permisos.
- Se ha mejorado la eficiencia de entrada/salida. Los desarrolladores descubrieron que en nodos que han estado funcionando durante mucho tiempo, la combinación de configuraciones «journal_mode = WAL» y «synchronous = FULL» en la base de datos SQLite, utilizada para almacenar el estado local, resulta en un alto volumen de operaciones de entrada/salida. Para reducir la carga, por defecto el parámetro «synchronous» ahora está establecido en «NORMAL», y se han añadido configuraciones al archivo de configuración de Radicle para que el usuario pueda modificar estos parámetros.
- Se ha solucionado una vulnerabilidad, cuya información se revelará el 23 de marzo. Actualmente, se informa únicamente que el equipo de desarrolladores ha escaneado todos los repositorios públicos de Radicle y no ha encontrado indicios de explotación de este problema.
Fuente: opennet.ru
