Iroh , một thư viện mạng dựa trên Rust được thiết kế để đơn giản hóa các kết nối peer-to-peer, đang thu hút sự chú ý từ các nhà phát triển đánh giá cao cách tiếp cận của nó trong việc làm cho các ứng dụng P2P trở nên dễ tiếp cận hơn. Thư viện này hứa hẹn sẽ xử lý các tác vụ mạng phức tạp thường khiến việc xây dựng các ứng dụng phân tán trở nên khó khăn.
Dự án đã phát triển đáng kể so với tham vọng ban đầu. Được hình thành lúc đầu như một sự thay thế cho IPFS , các nhà phát triển Iroh đã đưa ra quyết định chiến lược thu hẹp trọng tâm của họ để trở thành một thư viện chất lượng cao cho các ứng dụng P2P thay vì cố gắng giải quyết mọi vấn đề của hệ thống phân tán. Sự chuyển hướng này dường như đã tạo được tiếng vang tốt với cộng đồng phát triển.
Cách tiếp cận phát triển P2P đơn giản
Sức hấp dẫn chính của Iroh nằm ở khả năng trừu tượng hóa độ phức tạp của mạng. Các nhà phát triển có thể kết nối với các node từ xa bằng cách sử dụng khóa công khai mà không cần lo lắng về việc vượt qua NAT , hole-punching, hoặc quản lý relay. Thư viện tự động tìm và duy trì kết nối nhanh nhất có thể, dự phòng bằng các máy chủ relay khi không thể kết nối trực tiếp.
Hệ thống được xây dựng trên giao thức QUIC sử dụng triển khai Quinn , cung cấp mã hóa được xác thực, các luồng đồng thời, và tránh các vấn đề tắc nghẽn head-of-line thường gặp với các giải pháp dựa trên TCP . Nền tảng này mang lại cho các ứng dụng khả năng mạng hiện đại mà không yêu cầu các nhà phát triển phải tự triển khai những tính năng này.
Yêu cầu kỹ thuật:
- Được xây dựng trên giao thức QUIC sử dụng triển khai Quinn
- Sử dụng khóa công khai Ed25519 làm Node ID (không thể cấu hình)
- Phần cứng tối thiểu: có hỗ trợ ESP32
- Không hỗ trợ no_std (yêu cầu thư viện chuẩn Rust đầy đủ)
Hệ sinh thái đang phát triển và sử dụng thực tế
Một số giao thức đã được xây dựng trên nền tảng Iroh , bao gồm iroh-blobs cho việc truyền tệp có địa chỉ nội dung, iroh-gossip cho mạng publish-subscribe, và iroh-docs cho lưu trữ key-value phân tán. Những thành phần có sẵn này cho phép các nhà phát triển tạo ra các ứng dụng mà không cần xây dựng mọi thứ từ đầu.
Thư viện đã được triển khai thực tế. Các ứng dụng demo như Dumb Pipe và SendMe thể hiện khả năng của nó, trong khi ít nhất một startup được báo cáo là đang sử dụng Iroh cho các ứng dụng streaming game video. Các nhà phát triển cung cấp các máy chủ relay công cộng miễn phí và cung cấp dịch vụ mạng relay thương mại cho các tổ chức có yêu cầu cụ thể.
Giao thức tích hợp sẵn:
- iroh-blobs: Truyền tải blob được định địa chỉ nội dung dựa trên BLAKE3 (quy mô từ KB đến TB)
- iroh-gossip: Mạng lưới phủ publish-subscribe cho thiết bị di động
- iroh-docs: Kho lưu trữ key-value nhất quán cuối cùng sử dụng iroh-blobs
- iroh-willow: Triển khai giao thức Willow (đang trong quá trình phát triển)
Những cân nhắc kỹ thuật và hạn chế
Mặc dù Iroh cho thấy tiềm năng, nhưng nó phải đối mặt với một số ràng buộc hạn chế khả năng ứng dụng trong một số tình huống nhất định. Sự kết hợp chặt chẽ của thư viện với QUIC và triển khai Quinn có nghĩa là nó không thể dễ dàng hỗ trợ các hệ thống nhúng yêu cầu môi trường no_std. Hỗ trợ cho các phương thức truyền tải thay thế như CAN bus cho các ứng dụng nhúng hiện tại không có sẵn.
Cơ chế khám phá dựa vào các hệ thống riêng biệt - hoặc là máy chủ DNS tùy chỉnh, mDNS cục bộ, hoặc Mainline DHT của BitTorrent . Cách tiếp cận modular này cung cấp tính linh hoạt nhưng tăng thêm độ phức tạp cho các nhà phát triển cần hiểu những tùy chọn khám phá khác nhau này.
Các Tùy Chọn Khám Phá:
- Máy chủ DNS tùy chỉnh (được khuyến nghị cho việc sử dụng chung)
- Khám phá mDNS cục bộ
- BitTorrent Mainline DHT
- Tất cả các phương thức khám phá đều có thể cắm thêm và cấu hình được
Phát triển tương lai và hỗ trợ ngôn ngữ
Một trong những phát triển được mong đợi nhất là cải thiện hỗ trợ Foreign Function Interface ( FFI ). Mặc dù đã có các binding FFI C cơ bản, các nhà phát triển đang háo hức chờ đợi các binding ngôn ngữ toàn diện hơn sẽ làm cho Iroh có thể truy cập được từ Go , Python , và các ngôn ngữ phổ biến khác.
Tôi chỉ cần FFI tốt ngay bây giờ, điều này đã có trong lộ trình!
Nhóm phát triển có vẻ phản hồi tích cực với phản hồi từ cộng đồng và tích cực tương tác với người dùng thông qua Discord và các kênh khác. Họ đang chuẩn bị cho bản phát hành 1.0, cho thấy thư viện đang tiến gần đến mức sẵn sàng sản xuất cho nhiều trường hợp sử dụng.
Iroh đại diện cho một cách tiếp cận thú vị trong việc dân chủ hóa phát triển P2P bằng cách xử lý các khía cạnh mạng khó khăn trong khi vẫn đủ linh hoạt cho các loại ứng dụng khác nhau. Khi hỗ trợ FFI được cải thiện và hệ sinh thái phát triển, nó có thể trở thành lựa chọn hàng đầu cho các nhà phát triển xây dựng ứng dụng phân tán.
Tham khảo: iroh