Iroh ไลบรารีเครือข่ายที่พัฒนาด้วย Rust ซึ่งออกแบบมาเพื่อทำให้การเชื่อมต่อแบบ peer-to-peer ง่ายขึ้น กำลังดึงดูดความสนใจจากนักพัฒนาที่ชื่นชอบแนวทางของมันในการทำให้แอปพลิเคชัน P2P เข้าถึงได้ง่ายขึ้น ไลบรารีนี้สัญญาว่าจะจัดการงานเครือข่ายที่ซับซ้อนซึ่งมักจะทำให้แอปพลิเคชันแบบกระจายสร้างได้ยาก
โปรเจกต์นี้มีการพัฒนาอย่างมีนัยสำคัญจากความมุ่งหวังดั้งเดิม ในตอนแรก Iroh ถูกคิดค้นขึ้นเพื่อเป็นตัวแทนของ IPFS แต่นักพัฒนาของ Iroh ได้ตัดสินใจเชิงกลยุทธ์ที่จะลดขอบเขตการทำงานให้เป็นไลบรารีคุณภาพสูงสำหรับแอปพลิเคชัน P2P แทนที่จะพยายามแก้ปัญหาระบบแบบกระจายทุกอย่าง การเปลี่ยนแปลงนี้ดูเหมือนจะได้รับการตอบรับอย่างดีจากชุมชนนักพัฒนา
แนวทางการพัฒนา P2P ที่เรียบง่าย
จุดดึงดูดหลักของ Iroh อยู่ที่ความสามารถในการซ่อนความซับซ้อนของเครือข่าย นักพัฒนาสามารถเชื่อมต่อกับโหนดระยะไกลโดยใช้ public key โดยไม่ต้องกังวลเกี่ยวกับ NAT traversal, hole-punching หรือการจัดการ relay ไลบรารีจะค้นหาและรักษาการเชื่อมต่อที่เร็วที่สุดโดยอัตโนมัติ โดยใช้เซิร์ฟเวอร์ relay เป็นทางเลือกสำรองเมื่อการเชื่อมต่อโดยตรงไม่สามารถทำได้
ระบบนี้สร้างขึ้นบนโปรโตคอล QUIC โดยใช้การใช้งาน Quinn ซึ่งให้การเข้ารหัสที่ได้รับการพิสูจน์ตัวตน สตรีมพร้อมกัน และหลีกเลี่ยงปัญหา head-of-line blocking ที่พบบ่อยในโซลูชันที่ใช้ TCP รากฐานนี้ให้ความสามารถเครือข่ายสมัยใหม่แก่แอปพลิเคชันโดยไม่ต้องให้นักพัฒนาใช้งานฟีเจอร์เหล่านี้เอง
ข้อกำหนดทางเทคนิค:
- สร้างบนโปรโตคอล QUIC โดยใช้การใช้งาน Quinn
- ใช้ public key แบบ Ed25519 เป็น Node ID (ไม่สามารถกำหนดค่าได้)
- ฮาร์ดแวร์ขั้นต่ำ: รองรับ ESP32
- ไม่รองรับ no_std (ต้องใช้ Rust standard library แบบเต็ม)
ระบบนิเวศที่เติบโตและการใช้งานในโลกจริง
โปรโตคอลหลายตัวได้ถูกสร้างขึ้นบน Iroh รวมถึง iroh-blobs สำหรับการถ่ายโอนไฟล์ที่มี content-addressed, iroh-gossip สำหรับเครือข่าย publish-subscribe และ iroh-docs สำหรับการจัดเก็บ key-value แบบกระจาย คอมโพเนนต์สำเร็จรูปเหล่านี้ช่วยให้นักพัฒนาสามารถประกอบแอปพลิเคชันได้โดยไม่ต้องสร้างทุกอย่างตั้งแต่เริ่มต้น
ไลบรารีนี้กำลังเห็นการใช้งานจริงแล้ว แอปพลิเคชันสาธิตอย่าง Dumb Pipe และ SendMe แสดงความสามารถของมัน ในขณะที่มีสตาร์ทอัปอย่างน้อยหนึ่งแห่งที่รายงานว่าใช้ Iroh สำหรับแอปพลิเคชันสตรีมมิ่งวิดีโอเกม นักพัฒนาให้บริการเซิร์ฟเวอร์ relay สาธารณะฟรีและเสนอบริการเครือข่าย relay เชิงพาณิชย์สำหรับองค์กรที่มีความต้องการเฉพาะ
โปรโตคอลในตัว:
- iroh-blobs: การถ่ายโอนข้อมูลแบบ content-addressed ที่ใช้ BLAKE3 (ขนาดตั้งแต่ KB ถึง TB)
- iroh-gossip: เครือข่าย overlay แบบ publish-subscribe สำหรับอุปกรณ์มือถือ
- iroh-docs: ระบบจัดเก็บข้อมูลแบบ key-value ที่มีความสอดคล้องกันในที่สุด โดยใช้ iroh-blobs
- iroh-willow: การพัฒนาโปรโตคอล Willow (อยู่ระหว่างการพัฒนา)
ข้อพิจารณาทางเทคนิคและข้อจำกัด
แม้ว่า Iroh จะแสดงให้เห็นถึงความสัญญา แต่มันก็เผชิญกับข้อจำกัดบางประการที่จำกัดความสามารถในการใช้งานในสถานการณ์บางอย่าง การเชื่อมโยงอย่างแน่นหนาของไลบรารีกับ QUIC และการใช้งาน Quinn หมายความว่ามันไม่สามารถรองรับระบบฝังตัวที่ต้องการสภาพแวดล้อม no_std ได้อย่างง่ายดาย การรองรับการขนส่งทางเลือกอย่าง CAN bus สำหรับแอปพลิเคชันฝังตัวยังไม่มีให้ใช้งานในปัจจุบัน
กลไกการค้นพบอาศัยระบบแยกต่างหาก - ไม่ว่าจะเป็นเซิร์ฟเวอร์ DNS แบบกำหนดเอง, mDNS ในท้องถิ่น หรือ Mainline DHT ของ BitTorrent แนวทางแบบโมดูลาร์นี้ให้ความยืดหยุ่นแต่เพิ่มความซับซ้อนสำหรับนักพัฒนาที่ต้องเข้าใจตัวเลือกการค้นพบที่แตกต่างกันเหล่านี้
ตัวเลือกการค้นหา:
- เซิร์ฟเวอร์ DNS แบบกำหนดเอง (แนะนำสำหรับการใช้งานทั่วไป)
- การค้นหา mDNS ในเครือข่ายท้องถิ่น
- BitTorrent Mainline DHT
- วิธีการค้นหาทั้งหมดสามารถเสียบเข้าและกำหนดค่าได้
การพัฒนาในอนาคตและการรองรับภาษา
หนึ่งในการพัฒนาที่คาดหวังมากที่สุดคือการรองรับ Foreign Function Interface (FFI) ที่ดีขึ้น แม้ว่าจะมี C FFI bindings พื้นฐานอยู่แล้ว แต่นักพัฒนากำลังรอคอยการผูกภาษาที่ครอบคลุมมากขึ้นซึ่งจะทำให้ Iroh เข้าถึงได้จาก Go, Python และภาษายอดนิยมอื่นๆ
ฉันแค่ต้องการ FFI ที่ดีตอนนี้ ซึ่งอยู่ในแผนงาน!
ทีมพัฒนาดูเหมือนจะตอบสนองต่อข้อเสนอแนะของชุมชนและมีส่วนร่วมกับผู้ใช้อย่างแข็งขันผ่าน Discord และช่องทางอื่นๆ พวกเขากำลังเตรียมตัวสำหรับการเปิดตัวเวอร์ชัน 1.0 ซึ่งบ่งบอกว่าไลบรารีกำลังเข้าใกล้ความพร้อมสำหรับการใช้งานจริงในหลายกรณีการใช้งาน
Iroh แสดงถึงแนวทางที่น่าสนใจในการทำให้การพัฒนา P2P เป็นประชาธิปไตยโดยจัดการด้านเครือข่ายที่ยากลำบากในขณะที่ยังคงความยืดหยุ่นเพียงพอสำหรับประเภทแอปพลิเคชันต่างๆ เมื่อการรองรับ FFI ดีขึ้นและระบบนิเวศเติบโต มันอาจกลายเป็นตัวเลือกหลักสำหรับนักพัฒนาที่สร้างแอปพลิเคชันแบบกระจาย
อ้างอิง: iroh