// 01 — ΕισαγωγήΤι είναι το Iroh;
Φανταστείτε να μπορείτε να στείλετε δεδομένα σε μια συσκευή χωρίς να ξέρετε την IP διεύθυνσή της. Χωρίς να ανησυχείτε αν βρίσκεται πίσω από NAT, firewall, ή αν άλλαξε δίκτυο εν ώρω μεταφοράς. Αυτό ακριβώς κάνει το Iroh.
Το Iroh είναι μια open-source peer-to-peer networking library γραμμένη σε Rust, που δημιουργήθηκε από την εταιρεία n0, Inc. Στις 15 Ιουνίου 2026, μετά από 4 χρόνια ανάπτυξης και 65 pre-release versions, κυκλοφόρησε η έκδοση 1.0 — η πρώτη stable release με εγγυήσεις σταθερότητας στο API και wire protocol.
στα public relays
success rate
το stable 1.0
(Ιούνιος 2026)
// 02 — Το ΠρόβλημαΓιατί οι IP Διευθύνσεις Σπάνε;
Για να καταλάβουμε γιατί το Iroh υπάρχει, πρέπει πρώτα να καταλάβουμε ένα θεμελιώδες πρόβλημα του σύγχρονου internet.
Το internet σχεδιάστηκε με την υπόθεση ότι κάθε συσκευή έχει μια σταθερή, globally routable IP διεύθυνση. Αυτή η υπόθεση πέθανε ήσυχα με την έλευση του NAT (Network Address Translation).
Σήμερα, το laptop σου βρίσκεται πίσω από το home router σου, το οποίο βρίσκεται πίσω από τον ISP σου, που μπορεί να βρίσκεται πίσω από CGNAT. Η "IP διεύθυνσή" σου όπως φαίνεται από έξω είναι κοινή με χιλιάδες άλλους χρήστες και αλλάζει κάθε φορά που ο router διαπραγματεύεται νέο lease.
Πώς φαίνεται το πρόβλημα στην πράξη
192.168.1.5
NAT Layer 1
NAT Layer 2
???
πού είναι;
Η κλασική κατάσταση — δύο συσκευές που δεν μπορούν να βρεθούν
Αυτό δεν είναι ένα configuration πρόβλημα που λύνεται μια φορά. Είναι μια δομική ιδιότητα του σύγχρονου network. Και η παραδοσιακή λύση ήταν πάντα: «βάλε έναν central server στη μέση».
Το Iroh αρνείται αυτή τη λύση.
// 03 — ΑρχιτεκτονικήΠώς Λειτουργεί το Iroh;
Το Iroh αντικαθιστά την IP διεύθυνση με ένα cryptographic keypair. Κάθε endpoint στο δίκτυο του Iroh έχει ένα μοναδικό public/private key. Το public key είναι η "διεύθυνση" σου.
Iroh: "Σύνδεσέ με στο
a1b2c3d4e5f6..." (public key)
Στρώματα της αρχιτεκτονικής
Transport Layer — QUIC + TLS 1.3
Κάτω από όλα, το Iroh χρησιμοποιεί QUIC — το ίδιο modern transport protocol που τροφοδοτεί το HTTP/3. Αυτό δίνει built-in encryption, multiplexing πολλαπλών streams, και καλύτερη απόδοση σε unreliable networks.
NAT Traversal — Hole Punching μέσα στο QUIC
Το Iroh υλοποιεί NAT traversal απευθείας μέσα στο QUIC connection, μέσω μιας επέκτασης που ονομάζεται n0_nat_traversal. Αυτό το κάνει πολύ πιο αξιόπιστο από παραδοσιακές προσεγγίσεις — στατιστικά, 95% των connections γίνονται direct, ενώ το libp2p φτάνει περίπου 70%.
Discovery — Πώς βρίσκεις ένα key;
Εδώ είναι το σημείο που πρέπει να καταλάβουμε ένα σημαντικό limitation: το Iroh δεν λύνει το πρόβλημα της αρχικής ανακάλυψης. Αν θέλεις να συνδεθείς με κάποιον, πρέπει πρώτα να μάθεις το key του μέσω out-of-band μεθόδου — QR code, config file, pairing flow στο app σου. Το Iroh λύνει τα πάντα μετά από αυτό.
της Συσκευής Β
Lookup
95% direct
E2E Encrypted
Η ροή σύνδεσης με Iroh — από key σε authenticated connection
Relay Fallback — DERP Nodes
Όταν το direct hole punching αποτύχει (το 5% των περιπτώσεων), το Iroh κάνει fallback σε relay servers που ονομάζονται DERP nodes (Designated Encrypted Relay Packets). Κρίσιμη λεπτομέρεια: τα relay servers βλέπουν μόνο τα node identifiers, όχι το περιεχόμενο, γιατί το traffic παραμένει end-to-end encrypted.
Τα 3 built-in protocols
Πάνω στη networking layer, το Iroh έρχεται με τρία production-ready protocols:
Content-addressed blob transfer. Σκέψου το git object store, αλλά για arbitrary data σε P2P network. Κάθε chunk αναγνωρίζεται από hash — δεν στέλνεις ποτέ το ίδιο byte δύο φορές.
Publish-subscribe overlay network βασισμένο σε HyParView και Plumtree algorithms. Σχεδιασμένο για mobile devices με high network churn.
Eventually consistent key-value storage με built-in sync protocol. Χρήσιμο για shared state μεταξύ peers χωρίς central database.
Υποστηριζόμενες γλώσσες
Μία από τις μεγαλύτερες νέες εξελίξεις του 1.0 είναι η επίσημη υποστήριξη multiple γλωσσών, που είχε παγώσει νωρίτερα λόγω API churn:
Αυτό σημαίνει ότι μπορείς να κάνεις embed το Iroh σε iOS app (Swift), Android app (Kotlin), ή Python backend χωρίς να αγγίξεις Rust.
Παράδειγμα κώδικα — Rust
RUSTuse iroh::{Endpoint, NodeAddr};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Δημιούργησε ένα endpoint — το key δημιουργείται αυτόματα
let endpoint = Endpoint::builder().bind().await?;
// Το "address" σου είναι το public key, όχι IP
println!("Node ID: {}", endpoint.node_id());
// Σύνδεση σε άλλο endpoint μέσω key
let server_addr: NodeAddr = "από QR code, config, ή pairing".parse()?;
let conn = endpoint.connect(server_addr, b"my-protocol/0").await?;
// QUIC stream — E2E encrypted by default
let (mut send, mut recv) = conn.open_bi().await?;
send.write_all(b"Γεια σου από Ελλάδα!").await?;
send.finish()?;
let response = recv.read_to_end(1024).await?;
println!("Απάντηση: {}", String::from_utf8_lossy(&response));
Ok(())
}
Παράδειγμα κώδικα — Node.js
JAVASCRIPTimport { Endpoint } from "@number0/iroh";
// Δημιουργία endpoint
const endpoint = await Endpoint.bind({
alpns: [Buffer.from("my-app/1")]
});
console.log("Node ID:", endpoint.nodeId().toString("hex"));
// Αποδοχή εισερχόμενων connections
for await (const conn of endpoint.accept()) {
const { stream } = await conn.acceptBi();
const data = await stream.recv.readToEnd(1024);
console.log("Έλαβα:", data.toString());
}
Παράδειγμα κώδικα — Python
PYTHONimport iroh
import asyncio
async def main():
# Δημιούργησε endpoint
endpoint = await iroh.Endpoint.bind()
print(f"Node ID: {endpoint.node_id().to_hex()}")
# Σύνδεση με key
conn = await endpoint.connect(server_addr, b"my-app/1")
bi = await conn.open_bi()
await bi.send.write_all(b"Hello from Python!")
await bi.send.finish()
data = await bi.recv.read_to_end(1024)
print(f"Απάντηση: {data.decode()}")
asyncio.run(main())
// 04 — ΣυγκρίσειςIroh vs. Τι Υπήρχε Πριν;
Υπήρχαν ήδη εργαλεία για P2P networking. Γιατί να ασχοληθείς με το Iroh;
| Χαρακτηριστικό | Iroh 1.0 | libp2p | WebRTC | WireGuard |
|---|---|---|---|---|
| Direct connection rate | ✓ ~95% | ~ ~70% | ~ ~85% | ✓ ~90% |
| E2E Encryption by default | ✓ | ✓ | ✓ | ✓ |
| Key-based addressing | ✓ | ✓ | ✗ | ✓ |
| Mobile-first design | ✓ | ~ | ✓ | ✗ |
| Swift / Kotlin bindings | ✓ | ~ | ✓ | ✗ |
| Developer experience | ✓ Εξαιρετικό | ~ Πολύπλοκο | ~ Μέτριο | ~ Ops-focused |
| Wire protocol stability | ✓ Guaranteed | ✓ | ✓ | ✓ |
| BLE / LoRa transport | ✓ | ✗ | ✗ | ✗ |
| Embedded / IoT ready | ✓ | ~ | ✗ | ✓ |
| Tor integration | ✓ Pluggable | ✗ | ✗ | ~ |
// 05 — Use CasesΠού Χρησιμοποιείται Ήδη;
Το Iroh δεν είναι θεωρητικό — βρίσκεται ήδη σε production σε εκατοντάδες χιλιάδες συσκευές πριν καν φτάσει στο 1.0.
Η PrimeIntellect χρησιμοποιεί Iroh για asynchronous P2P communication σε decentralized AI pipeline parallelism — εκπαίδευση μεγάλων models χωρίς central coordinator.
Η Nous Research το χρησιμοποιεί για gradient sharing μεταξύ AWS, GCP, Azure και self-hosted nodes ταυτόχρονα.
Direct device-to-device video streaming χωρίς CDN για low-latency εφαρμογές όπου κάθε millisecond μετράει.
E2E encrypted messaging χωρίς central server — κανένα metadata δεν διαρρέει, γιατί δεν υπάρχει intermediary που να βλέπει τίποτα.
Multiplayer networking χωρίς dedicated game servers — direct player-to-player connections με built-in encryption.
Εφαρμογές που δουλεύουν offline-first και συγχρονίζουν όταν υπάρχει connectivity — χωρίς cloud dependency.
Συσκευές που επικοινωνούν απευθείας σε local network χωρίς internet access — με υποστήριξη BLE και LoRa για extreme edge cases.
Το iroh-blobs κάνει efficient delta sync — μόνο τα αλλαγμένα chunks μεταφέρονται, κάτι σαν rsync αλλά P2P και encrypted.
// 06 — ΕγκατάστασηΠώς Ξεκινάς;
Το Iroh είναι δύσκολο να αντισταθείς — η εγκατάσταση είναι εξαιρετικά απλή για library ανεξαρτήτως γλώσσας.
Rust
CARGOcargo add iroh
Node.js
NPMnpm install @number0/iroh
Python
PIPpip install iroh
Swift (iOS)
SWIFT PACKAGE// Package.swift
dependencies: [
.package(url: "https://github.com/n0-computer/iroh-swift", from: "1.0.0")
]
Quick test — Node.js Echo Server
Να ένα πλήρες παράδειγμα που δείχνει τη δύναμη του Iroh σε λίγες γραμμές:
JAVASCRIPTimport { Endpoint } from "@number0/iroh";
const ECHO_ALPN = Buffer.from("iroh-echo/1");
async function runServer() {
const server = await Endpoint.bind({ alpns: [ECHO_ALPN] });
console.log("Server Node ID:", server.nodeId().toString("hex").slice(0, 16) + "...");
console.log("Περίμενω connections...\n");
for await (const conn of server.accept()) {
(async () => {
const { stream } = await conn.acceptBi();
const data = await stream.recv.readToEnd(4096);
console.log("Έλαβα:", data.toString());
await stream.send.writeAll(data); // Echo back
await stream.send.finish();
})();
}
}
async function runClient(serverNodeId) {
const client = await Endpoint.bind();
// Σύνδεση με NODE ID, όχι IP!
const conn = await client.connect({ nodeId: serverNodeId }, ECHO_ALPN);
const bi = await conn.openBi();
const msg = "Γεια σου από Ελλάδα! 🇬🇷";
await bi.send.writeAll(Buffer.from(msg));
await bi.send.finish();
const echo = await bi.recv.readToEnd(4096);
console.log("Echo:", echo.toString());
await client.close();
}
// Τρέξε server σε terminal 1, client σε terminal 2 με το Node ID του server
if (process.argv[2] === "server") {
runServer();
} else {
runClient(process.argv[2]);
}
iroh v1.0.x endpoint θα μπορεί να επικοινωνεί με ένα iroh v1.2.0 ή v1.5.0 endpoint. Δεν χρειάζεται να συγχρονίζεις updates σε όλους τους nodes ταυτόχρονα.
// 07 — ΙστορικόΑπό Πού Ήρθε το Iroh;
Η n0, Inc. ξεκινά την ανάπτυξη του Iroh με στόχο ένα P2P networking primitive που να "απλώς δουλεύει".
Rapid iteration, API churn, αλλά συνεχής production testing. Τα FFI bindings παγώνουν προσωρινά λόγω ασταθές API.
Τα public relay stats αποκαλύπτουν massive production adoption πριν το stable release.
Πρώτο Release Candidate — API freeze, multipath QUIC, finalized wire protocol. Κλήση σε community για testing.
Επίσημο stable release με wire protocol stability guarantees, Python/Node.js/Swift/Kotlin bindings, και versioned support policy.
// 08 — ΑδυναμίεςΤι ΔΕΝ Κάνει το Iroh;
Κάθε εργαλείο έχει τα όριά του. Να τα γνωστά limitations του Iroh 1.0:
// 09 — ΣυμπέρασμαΑξίζει να το Δοκιμάσεις;
Το ερώτημα δεν είναι "είναι το Iroh καλό;" — είναι "είναι κατάλληλο για αυτό που χτίζω;"
Αν φτιάχνεις κάτι που χρειάζεται direct device-to-device connections — distributed AI training, real-time multiplayer, IoT sensor networks, file sync, secure messaging, local-first εφαρμογές — το Iroh 1.0 είναι η πιο mature και developer-friendly επιλογή που υπάρχει αυτή τη στιγμή.
Το 95% direct connection rate, η built-in E2E encryption, τα stable bindings σε 5 γλώσσες, και οι 200M+ endpoints που τρέχουν ήδη σε production μαρτυρούν ότι αυτό δεν είναι ένα "ενδιαφέρον experiment" — είναι production-ready infrastructure.
Το P2P networking ήταν πάντα δύσκολο. Το Iroh 1.0 είναι η πρώτη σοβαρή προσπάθεια να το κάνει βαρετά εύκολο.
Δοκίμασε το Iroh αυτό το Σαββατοκύριακο
Ένα npm install @number0/iroh και 30 γραμμές κώδικα αρκούν για να έχεις P2P encrypted connection μεταξύ δύο συσκευών. Χωρίς server. Χωρίς config. Χωρίς IP headaches.