libp2p es una pila de red modular y una biblioteca de código abierto que permite a los desarrolladores crear aplicaciones descentralizadas de igual a igual (P2P). Se originó como parte del Sistema de Archivos Interplanetario (IPFS) y posteriormente se convirtió en un proyecto independiente. [ 1 ] El software se desarrolló para proporcionar un conjunto de herramientas para gestionar los desafíos de red de los sistemas P2P. Esto incluye el descubrimiento de pares , el enrutamiento , la gestión de identidades y la comunicación segura. Existen múltiples implementaciones de libp2p en varios lenguajes de programación. [ 2 ] Proyectos importantes como la capa de consenso de Ethereum [ 3 ] y Filecoin [ 4 ] utilizan libp2p como su capa de red fundamental.
Historia
libp2p fue desarrollado por Juan Benet y el equipo de Protocol Labs durante el desarrollo de IPFS. [ 5 ] El equipo reconoció que construir una red P2P robusta requería resolver una serie de problemas recurrentes que no eran específicos del intercambio de archivos. En lugar de crear una capa de red monolítica estrechamente acoplada a IPFS, diseñaron un marco modular y extensible que podía abstraerse y ser utilizado por cualquier aplicación P2P.
El proyecto se separó del código fuente principal de IPFS para fomentar el desarrollo y la adopción independientes. Esta decisión resultó acertada, ya que libp2p se ha convertido en un componente fundamental para muchos otros protocolos descentralizados, lo que permite a sus desarrolladores centrarse en la lógica de la aplicación en lugar de reinventar la rueda de la red. El proyecto se mantiene como una iniciativa de código abierto con contribuciones de una comunidad global de desarrolladores.
Conceptos básicos
libp2p se basa en un conjunto de conceptos fundamentales que, combinados, proporcionan una solución completa de redes P2P.
Identidad entre pares (PeerID)
En una red libp2p, cada nodo, o "par", se identifica de forma única mediante un PeerID. Un PeerID es el hash criptográfico de la clave pública de un par . Este diseño proporciona un sistema de identidad seguro y verificable. Cuando dos pares se comunican, pueden usar la clave pública del otro para cifrar las comunicaciones y verificar las firmas, lo que garantiza la autenticidad y evita la suplantación de identidad. [ 6 ]
Dirección múltiple (multiaddr)
La localización de pares a través de diferentes protocolos y ubicaciones de red se aborda mediante direcciones múltiples (o multiaddr). [ 7 ] Esta es una dirección de red autodescriptiva que permite múltiples capas de información de direccionamiento. [ 8 ] Un host puede tener múltiples multiaddrs, anunciando todas las formas en que se le puede contactar. [ 9 ]
Por ejemplo, una dirección múltiple podría tener el siguiente aspecto:
- /ip4/192.168.1.100/tcp/8001
Esto describe un par accesible a través de una dirección IPv4 192.168.1.100, utilizando el protocolo TCP en el puerto 8001.
Transportes
libp2p es independiente del protocolo de transporte, lo que significa que puede operar sobre diversos protocolos de transporte de red. [ 9 ] Los transportes comunes incluyen:
Una máquina que ejecuta libp2p puede escuchar conexiones entrantes en múltiples transportes simultáneamente, lo que aumenta la probabilidad de conexiones exitosas entre pares en diferentes entornos de red. [ 15 ]
Multiplexación de flujo
Para reducir la sobrecarga de abrir cada nueva conexión, libp2p se basa en la multiplexación de flujos. [ 16 ] Esto permite que múltiples flujos bidireccionales independientes se ejecuten simultáneamente sobre una única conexión de transporte subyacente, lo que permite que diferentes protocolos de nivel de aplicación operen sin interferencias. [ 17 ]
libp2p logra esto de dos maneras:
- Para transportes como TCP que no admiten flujos de forma nativa, libp2p añade una capa de protocolo multiplexor dedicado (como mplex o yamux) sobre la conexión. [ 18 ]
- Para protocolos de transporte modernos como QUIC y WebRTC, libp2p aprovecha directamente las capacidades de multiplexación nativas e integradas del protocolo, sin necesidad de una capa adicional.
Negociación de protocolo (selección de flujo múltiple)
Cuando un par inicia una nueva transmisión a otro par, libp2p utiliza un mecanismo llamado multistream-select. El par propone un identificador de protocolo (por ejemplo, /ipfs/bitswap/1.2.0), y el par receptor lo acepta o lo rechaza. Esto permite que los pares admitan múltiples protocolos y versiones simultáneamente y garantiza que ambas partes de la conversación se entiendan. [ 15 ]
Descubrimiento entre pares
Encontrar otros pares en una red descentralizada es un desafío fundamental. libp2p proporciona varios mecanismos para el descubrimiento de pares:
- Listas de arranque: Una lista de direcciones de pares conocidas que utilizan los nuevos nodos para unirse a la red. [ 19 ]
- mDNS : Se utiliza para descubrir pares en una red de área local ( LAN ). [ 20 ]
- Tabla hash distribuida (DHT): Para descubrir pares en la red más amplia de Internet, las redes libp2p suelen emplear una DHT basada en Kademlia . Un par puede consultar la DHT para encontrar las direcciones de otros pares. [ 21 ]
Comunicación segura
Cuando dos pares se conectan, actualizan su conexión a un canal seguro utilizando protocolos como TLS 1.3 [ 22 ] o Noise . [ 15 ] Esto protege contra la interceptación de comunicaciones y los ataques de intermediario . [ 23 ]
Publicar/Suscribirse
La implementación más utilizada de un sistema de publicación/suscripción (PubSub) es GossipSub. [ 24 ] Este es un protocolo de chismes escalable y robusto que propaga mensajes a través de la red mediante la comunicación entre pares con un subconjunto aleatorio de sus vecinos. [ 25 ] Se utiliza ampliamente para tareas como la propagación de bloques y transacciones en redes blockchain . [ 26 ]
Implementaciones
Dado que libp2p es una especificación con múltiples implementaciones en diferentes lenguajes de programación, a fecha de 2025, las implementaciones más maduras son:
- go-libp2p ( Go )
- js-libp2p ( JavaScript )
- rust-libp2p ( Rust )
Otras implementaciones oficiales incluyen: [ 27 ]
Referencias
- ↑ "¿Qué es libp2p?" . Documentación de IPFS . Consultado el 14 de septiembre de 2025 .
- ↑ Stengele, Oliver; Droll, Jan; Hartenstein, Hannes (2 de junio de 2025). «Auditoría de software alineada con la cadena de suministro y justificación de uso mediante libros de contabilidad distribuidos». Conferencia Internacional IEEE de 2025 sobre Blockchain y Criptomonedas (ICBC) . IEEE. págs. 1-5 . doi : 10.1109/ICBC64466.2025.11114608 . ISBN 979-8-3315-4135-4.
- ↑ "Capa de consenso" . Documentación de Ethereum . Consultado el 15 de septiembre de 2025 .
- ↑ "Bibliotecas Filecoin" . Especificación Filecoin . Consultado el 15 de septiembre de 2025 .
- ^ Cristea, Alexandru-Gabriel; Alboaie, Lenuta; Panu, Andrei; Radulescu, Vlad (2020). "Sin conexión pero aún conectado con comunicación basada en IPFS" . Procedia Ciencias de la Computación . 176 : 1606– 1612. doi : 10.1016/j.procs.2020.09.183 .
- ↑ "Peers" . Documentación de libp2p . Consultado el 14 de septiembre de 2025 .
- ↑ Si, Haiping; Li, Weixia; Wang, Qingyi; Cao, Haohao; Bacao, Fernando; Sun, Changxia (15 de noviembre de 2023). "Un esquema seguro de interacción entre dominios para sistemas de transporte inteligentes basados en blockchain" . PeerJ Computer Science . 9 e1678. doi : 10.7717/peerj-cs.1678 . ISSN 2376-5992 . PMC 10703034. PMID 38077614 .
- ↑ Guidi, Barbara; Michienzi, Andrea; Ricci, Laura (06-12-2021). «Una implementación libP2P del protocolo de intercambio de bloques de Bitcoin» . Actas del 2.º Taller Internacional sobre Infraestructura Distribuida para el Bien Común . ACM. págs. 1–4 . doi : 10.1145/3493426.3493822 . ISBN 978-1-4503-9169-6.
- 1 2 Ramaguru, R.; Sindhu, M.; Sethumadhavan, M. (2019), "Blockchain para el Internet de los Vehículos" , en Singh, Mayank; Gupta, PK; Tyagi, Vipin; Flusser, Jan (eds.), Advances in Computing and Data Sciences , vol. 1045, Singapur: Springer Singapore, pp. 412–423 , doi : 10.1007/978-981-13-9939-8_37 , ISBN 978-981-13-9938-1, consultado el 5 de octubre de 2025
- ↑ Seemann, Marten; Inden, Max; Vyzovitis, Dimitris (2022). "Perforación de agujeros descentralizada". 2022 IEEE 42nd International Conference on Distributed Computing Systems Workshops (ICDCSW) . pp. 96–98 . doi : 10.1109/ICDCSW56584.2022.00027 . ISBN 978-1-6654-8879-2.
- ↑ Malik, Muhammad Anjum; Pleuger, Tobias; Recker, Stephan (2023). «Enfoque peer-to-peer para servicios de computación de borde». 2023 IEEE International Conference on Cloud Computing Technology and Science (CloudCom) . pp. 200–207 . doi : 10.1109/CloudCom59040.2023.00041 . ISBN 979-8-3503-3982-6.
- ^ G, Pratiksha Narasimha Nayak; Dey, Nimisha; N, Neha; Hariprasad, Malavika; S, Sandhya; Moharir, Minal; Akram, Muteeb (2022). "Una encuesta detallada sobre QUIC y su impacto en la transmisión de datos en red". 2022 VI Congreso Internacional de Tendencias en Electrónica e Informática (ICOEI) . págs. 378– 385. doi : 10.1109/ICOEI53556.2022.9777199 . ISBN 978-1-6654-8328-5.
- 1 2 Antelmi, Alessia; D'Ambrosio, Giuseppe; Petta, Andrea; Serra, Luigi; Spagnuolo, Carmine (2022). "Una arquitectura de computación voluntaria para flujos de trabajo computacionales en la web descentralizada" . IEEE Access . 10 : 98993–99010 . Bibcode : 2022IEEEA..1098993A . doi : 10.1109/ACCESS.2022.3207167 . ISSN 2169-3536 .
- ↑ Lopes, Elio Jordan; Kataria, Shaolin; Keshav, Shashank; Ikram, Sumaiya Thaseen; Ghalib, Muhammad Rukunuddin; Shankar, Achyut; Krichen, Moez (2022). "Servicio de transmisión de video en vivo con modelo de pago por uso en la cadena de bloques Ethereum y el sistema de archivos interplanetario" . Wireless Networks . 28 (7): 3111– 3125. doi : 10.1007/s11276-022-03009-6 . ISSN 1022-0038 .
- 1 2 3 Ángel, Niebla-Montero; Iván, Froiz-Míguez; Paula, Fraga-Lamas; M., Fernández-Caramés, Tiago (2025). "Diseño, Implementación y Evaluación Práctica de un Protocolo de Comunicaciones Oportunistas Basado en Bluetooth Mesh y libp2p" . Sensores . 25 (4): 1190. arXiv : 2503.00976 . Código Bib : 2025Senso..25.1190N . doi : 10.3390/s25041190 . ISSN 1424-8220 . PMID 40006419 .
{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ "Multiplexación de flujo" . Documentación de libp2p . Consultado el 14 de septiembre de 2025 .
- ↑ Dias, David; Benet, Juan (2016), "Aplicaciones web distribuidas con IPFS, tutorial" , en Bozzon, Alessandro; Cudre-Maroux, Philippe; Pautasso, Cesare (eds.), Ingeniería web , vol. 9671, Cham: Springer International Publishing, pp. 616–619 , doi : 10.1007/978-3-319-38791-8_60 , ISBN 978-3-319-38790-1, consultado el 5 de octubre de 2025
- ↑ Zhao , Wanli; Fujita, Satoshi (2025). "Hashgraph Over the Edge: Achieving Byzantine Fault Tolerance in Decentralized P2P Frameworks" . IEEE Access . 13 : 153035–153055 . Bibcode : 2025IEEEA..1353035Z . doi : 10.1109/ACCESS.2025.3604512 . ISSN 2169-3536 .
- ↑ Henningsen, Sebastian; Rust, Sebastian; Florian, Martin; Scheuermann, Björn (2020). "Explorando la red IPFS" . Conferencia de redes IFIP 2020 (Redes) : 679–680 .
- ↑ Trautwein, Dennis; Schubotz, Moritz; Gipp, Bela (2021). «Presentación de Peer Copy: una herramienta de transferencia de archivos entre pares totalmente descentralizada». Conferencia de redes IFIP 2021 (IFIP Networking) . págs. 1–2 . arXiv : 2305.02049 . doi : 10.23919/IFIPNetworking52078.2021.9472842 . ISBN 978-3-9031-7639-3.
- ↑ Costa, Pedro Ákos; Leitão, João; Psaras, Yannis (2023), "Estudiando la carga de trabajo de un sistema Web3 totalmente descentralizado: IPFS" , en Patiño-Martínez, Marta; Paulo, João (eds.), Aplicaciones distribuidas y sistemas interoperables , vol. 13909, Cham: Springer Nature Suiza, págs. 20 a 36, doi : 10.1007/978-3-031-35260-7_2 , ISBN 978-3-031-35259-1, consultado el 6 de octubre de 2025
- ↑ Manakhari, Sushanth S.; Jadhav, Ajinkya P. (2025), "Mejora de la seguridad de los datos con almacenamiento en la nube descentralizado: un enfoque IPFS" , en Arabnia, Hamid R.; Takata, Masami; Deligiannidis, Leonidas; Rivas, Pablo (eds.), Computación en cuadrícula, nube y clúster; tecnologías cuánticas; y métodos de modelado, simulación y visualización , vol. 2257, Cham: Springer Nature Switzerland, pp. 27–39 , doi : 10.1007/978-3-031-85884-0_3 , ISBN 978-3-031-85883-3, consultado el 6 de octubre de 2025
- ↑ Huang, Ken (2023), "Seguridad de la cadena: nodos, algoritmo y red" , en Huang, Ken; Budorin, Dyma; Tan, Lisa JY; Ma, Winston (eds.), Una guía completa para la seguridad de Web3 , El futuro de los negocios y las finanzas, Cham: Springer Nature Switzerland, pp. 31–60 , doi : 10.1007/978-3-031-39288-7_2 , ISBN 978-3-031-39287-0, consultado el 6 de octubre de 2025
- ↑ De Cristo, Flaviene Scheidt; Meira, Jorge Augusto; Eisenbarth, Jean-Philippe; Estado, Radu (2024). "Un análisis de nueve dimensiones de GossipSub sobre el protocolo de consenso del libro mayor XRP". Simposio de gestión y operaciones de red IEEE NOMS 2024-2024 . págs. 1 a 7. doi : 10.1109/NOMS59830.2024.10575688 . ISBN 979-8-3503-2793-9.
- ↑ de Cristo, Flaviene Scheidt; Shbair, Wazen M.; Trestioreanu, Lucian; State, Radu (2023). "Pub/Sub Dissemination on the XRP Ledger". 2023 IEEE Latin-American Conference on Communications (LATINCOM) . pp. 1–6 . doi : 10.1109/LATINCOM59467.2023.10361857 . ISBN 979-8-3503-2687-1.
- ↑ Frey, Davide; Mostefaoui, Achour; Perrin, Matthieu; Roman, Pierre-Louis; Taïani, François (2023). "Consistencia diferenciada para chismes mundiales" . IEEE Transactions on Parallel and Distributed Systems . 34 (1): 1– 15. Bibcode : 2023ITPDS..34P9150F . doi : 10.1109/TPDS.2022.3209150 . ISSN 1558-2183 .
- ↑ La Fundación libp2p. "Una pila de red modular" . libp2p . Consultado el 19 de septiembre de 2025 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
Fuentes
- Smith, William (2025-08-20). Arquitectura y diseño de protocolo Libp2p: la guía completa para desarrolladores e ingenieros . HiTeX Press . Recuperado el 15 de septiembre de 2025 .
- De igual a igual
- Software gratuito relacionado con redes
- Software multiplataforma