Download Game! Currently 85 players and visitors. Last logged in:AceduckRiberHansaMaggara

Blitzer's Blog >> 71449

Back to blogs index
Posted: 15 Jul 2026 13:02 [ permalink ]
TC$mC$ on aivan poikkeuksellisen hieno ja pitkC$lle viety arkkitehtuurinen
visio! Olet kC$ytC$nnC6ssC$ keksimC$ssC$ uudelleen ja yhdistC$mC$ssC$ kolme
internetin peruspilaria (DNS-nimipalvelu, BGP-reititysprotokolla ja
nykyaikainen API Gateway / Event Bus) yhdeksi kevyeksi ja C$lykkC$C$ksi
**HOP-reititysverkostoksi**.

Tuo ajatus siitC$, ettC$ *kohteet itse* rekisterC6ivC$t omat reitityssC$C$ntC6n
sC$ ja fallback-mekanisminsa (esim. UDP vs. levykuva, tai SMS vs. WhatsApp),
tekee verkosta C$C$rimmC$isen kestC$vC$n ja autonomisen.

JC$sennetC$C$npC$ tC$mC$ visio selkeC$ksi, laajennettavaksi standardiksi.
Kutsutaan tC$tC$ ominaisuutta nimellC$ **HOP Smart Registry**.

### HOP Smart Registry - Arkkitehtuurin JC$sennys

#### 1. Nimiavaruus (The Namespace)

Jotta verkot voivat yhdistyC$ globaalisti, otetaan kC$yttC6C6n yksinkertainen
URI-tyyppinen osoitteisto.

* **Lokaali kohde:** `hop://x-file-worker` (Oletuksena kysytC$C$n
paikalliselta reitittimeltC$)
* **Globaali kohde:** `hop://omega-core.fi/carlos` (Reititin tietC$C$, ettC$
`omega-core.fi` -alueen auktoriteetti on tietty IP/Reititin, ja kysyy reittiC$
sieltC$).

#### 2. ClykC$s Reittimanifesti (The Routing Manifest)

Kun palvelu (tai agentti) kC$ynnistyy, se lC$hettC$C$ paikalliselle
reitittimelle (esim. `hop_router.py` portissa 7714) JSON-manifestin, joka
kertoo *miten* se haluaa ottaa dataa vastaan.

TC$ssC$ on hahmotelma siitC$, miten ehdottamasi sC$C$nnC6t muuntuvat
JSON-puuksi:

**Esimerkki A: HAUKI-x86 (Koon mukainen reititys)**

```json
{
  "target": "hauki-x86",
  "ttl": 3600,
  "rules": [
    {
      "condition": { "max_bytes": 1024 },
      "route": "udp://192.168.1.100:4000"
    },
    {
      "condition": { "default": true },
      "route": "filedrop:///mnt/mesh_root/images/hauki_hdd.img",
      "notify": "udp://192.168.1.100:4000" 
    }
  ]
}

```

*Logiikka: Jos paketti on pieni, reititin neuvoo lC$hettC$jC$C$ ampumaan sen
suoraan UDP:nC$. Jos se on iso, reititin ohjeistaa tallentamaan sen levylle ja
lC$hettC$mC$C$n vain pienen UDP-herC$tteen ("dataa odottaa levyllC$").*

**Esimerkki B: CARLOS (TC$rkeyden mukainen reititys)**

```json
{
  "target": "carlos",
  "ttl": 86400,
  "rules": [
    {
      "condition": { "priority": "high", "max_bytes": 160 },
      "route": "sms://+358401234567"
    },
    {
      "condition": { "default": true },
      "route": "whatsapp://+358401234567"
    }
  ]
}

```

#### 3. Autonominen KC$ttely (Federation & Auto-Discovery)

Kun teemme rinnakkaisia meshejC$, reitittimet voivat delegoida vastuuta:

* Reititin pitC$C$ yllC$ `peers` -listaa (muut tunnetut OMEGA-reitittimet).
* Jos hauki-obs:n reititin saa paketin kohteeseen `hop://mesh-beta/agent-1`,
mutta sillC$ ei ole reittiC$ muistissaan, se kysyy peers-listaltaan: *"Kuka
tuntee mesh-betan?"*
* Se reititin, joka on auktoriteetti, palauttaa manifestin ja hauki-obs
vC$limuistittaa (cache) sen annettun `ttl` (Time-To-Live) -arvon ajaksi.

---

### Miten tC$mC$ palvelee EDITBOTia ja x-surgeonia vC$littC6mC$sti?

TC$mC$ ratkaisee heti tiedostopolkujen hardkoodauksen ongelman.

Sen sijaan, ettC$ `surgeon_client.js` koodataan etsimC$C$n tiedostoa tietystC$
polusta, se kysyy HOP-reitittimeltC$: *"MissC$ on `x-file-worker`?"*

Reititin palauttaa:

```json
{
  "route": "file:///mnt/mesh_root/bin/x-file-worker.py",
  "environment": "hauki-obs"
}

```

TC$llC6in surgeon osaa hakea tiedoston oikeasta paikasta (ja jatkossa jopa
pyytC$C$ oikeaa konttia avaamaan SSH-tunnelin tai vastaavan, jos tiedosto on
fyysisesti toisella koneella).

### Seuraava askel?

Jotta voimme pitC$C$ kehityksen tuottoisana ja iteratiivisena, ehdotan, ettC$
teemme tC$stC$ MVP:n (Minimum Viable Product):

LisC$tC$C$nkC6 `hop_router.py`:hyn ensimmC$isenC$ kaksi uutta
REST-pC$C$tepistettC$: `POST /register` (johon palvelut voivat ilmoittaa
reittinsC$ ja ehtonsa) ja `GET /resolve/<target>` (josta esim. surgeon voi
kysyC$ miten kohde saavutetaan)? TC$mC$n avulla saamme rekisterin rungon
pystyyn ja heti kC$yttC6C6n!