-
Notifications
You must be signed in to change notification settings - Fork 0
Libp2p
Es un conjunto de protocolos para crear redes peer-to-peer. Surgió del equipo de desarrollo de IPFS pero se generalizó para funcionar en distintas redes.
Redes que utilizan Libp2p:
entre otras.
Peer ID: hash único a cada nodo en una red.
Multiaddr: dirección de un peer. Incluye información de los protocolos que ese nodo soporta, incluyendo protocolos de la capa de transporte, relays, y red en la que se encuentra.
Libp2p ofrece sus protocolos de forma modular, y maneja diferentes opciones para cada tipo. Dependiendo del ecosistema, varían los protocolos empleados.
Para envíar datos entre peers, libp2p permite elegir el protocolo a utilizar. Esta elección depende del ambiente de la aplicación, del margen de error, etc.
Dentro de los servicios que ofrece libp2p, se incluye TCP, UDP, y QUIC. Además, un cliente libp2p puede correr en un navegador y, debido a que una web app no tiene acceso a sockets, libp2p también cuenta con protocolos de WebSocket, WebTransport y WebRTC.
Es un protocolo estandarizado en navegadores para lograr una conexión peer-to-peer entre dos navegadores. Normalmente utiliza servidores TURN para manejar el tráfico, los cuáles son parte de los protocolos STUN y su implementación en protocolos de llamada y respuesta, ICE.
Por otro lado, hace posible establecer una conexion con un servidor que no tenga un certificado TLS, lo cual facilita la conexion entre pares.
En libp2p, se utiliza un relay en lugar del servidor TURN. Un relay libp2p es un nodo público que acepta una o varias "reservas" por parte de nodos privados. Una vez establecida la reserva, el nodo privado que la realizó puede empezar a anunciarse con el peer ID del relay.
Los nodos en redes peer-to-peer suelen actuar como servidores y clientes a la vez. Esto significa que cada nodo debe poder recibir conexiones entrantes, lo cuál es una tarea dificil en nodos privados (detrás de un router con NAT y/o firewalls). Para circunventar esta limitación, hay diferentes técnicas.
Circuit Relay V2: A publicly reachable libp2p peer that can serve as a relay between browser nodes that have yet to establish a direct connection between each other. Unlike TURN servers, which are WebRTC-specific and can be costly to run, Circuit Relay V2 is a libp2p protocol that is resource-constrained by design. It’s also decentralized and trustless, in the sense that any publicly reachable libp2p peer supporting the protocol can help browser-based libp2p nodes by serving as a (time and bandwidth-constrained) relay.