Download Game! Currently 72 players. Last logged in:MalcomRobinhoodMeiggAxl

Blitzer's Blog >> 73087

Back to blogs index
Posted: 20 Oct 2026 18:18 [ permalink ]
TC$mC$ on tC$ydellinen suunta. Se, mitC$ kuvailet, on Delay-Tolerant
Networking (DTN) -arkkitehtuurin todellinen "Graalin malja". Kun irrotamme
kC$yttC6liittymC$n (Web App) ja kuljetusverkon (DMZ-reitittimet) toisistaan,
saamme aikaan jC$rjestelmC$n, joka muistuttaa perinteistC$ postilaitosta,
mutta kryptografisilla steroideilla.
TC$llainen arkkitehtuuri kannattaa jakaa kahteen loogiseen kokonaisuuteen:
Web-Postitoimistoon (asiakassovellus) ja DMZ-Postikeskuksiin (reitityssolmut).
TC$ssC$ on ehdotus siitC$, miten tC$mC$ kannattaa suunnitella:
1. Web-Postitoimisto (Browser-Based Reference App)
Koska UNIVERSE OS ei luota verkkoon (Zero-Trust), selaimessa toimivan
web-sovelluksen on oltava oma, itsenC$inen solmunsa. Sen ei tarvitse olla
jatkuvasti yhteydessC$ mihinkC$C$n; riittC$C$, ettC$ se osaa pakata ja purkaa
postia.
 * Identiteetti: Selain generoi Ed25519-avaimet ja tallentaa ne IndexedDB:hen
tai localStorageen. (Koska selaimen WebCrypto API:n Ed25519-tuki on vielC$
kokeellinen, tC$ssC$ kannattaa kC$yttC$C$ kevyttC$ kryptokirjastoa, kuten
tweetnacl tai @noble/ed25519, jotka olet ehkC$ jo todennut toimiviksi
aiemmissa selaimessa toimivissa identiteettiprojekteissasi).
 * KC$yttC6liittymC$ (UI):
   * Luo Intent: TekstikenttC$, johon kC$yttC$jC$ (tai lokaali tekoC$ly)
kirjoittaa koodin ja valitsee kohteen NodeID:n.
   * Allekirjoitus ja Paketointi: Selain kC$yttC$C$ cbor-x:n selainversiota,
kC$C$rii koodin Envelopeen, laskee tiivisteet ja allekirjoittaa sen lokaalilla
yksityisellC$ avaimella.
   * Export/Import (Drag & Drop): Painike, joka lataa selaimesta
bundle_123.universe -tiedoston. KC$yttC6liittymC$ssC$ on myC6s pudotusalue
(Dropzone), johon voi raahata muualta tulleen .universe-tiedoston luettavaksi.
2. DMZ-alueet ("Postikeskukset")
Jotta postia ei tarvitse kantaa aina fyysisellC$ USB-tikulla (kuten
Airgap-kuriirissamme), tarvitsemme julkisia kohtauspaikkoja eli DMZ-solmuja
(Demilitarized Zone).
DMZ-solmu on tavallinen Node.js UniverseNode, mutta sillC$ on kaksi
ratkaisevaa eroa verrattuna vaikkapa Raspberry Pi -sensoriisi:
 * Vain 'Route' -valtuus: DMZ-solmulla ei ole hiekkalaatikkoa, tai jos on,
sille ei koskaan myC6nnetC$ 'execute' -kykyC$. Se on puhdas tyhmC$ reititin.
Se ottaa vastaan viestejC$, validoi niiden kryptografian (Zod & Ed25519) ja
tallentaa ne SQLite-kantaansa. Se ei vC$litC$, mitC$ viestin sisC$llC$ on, se
vain reitittC$C$.
 * Julkinen rajapinta: TCP-sokettien sijaan DMZ-solmussa kannattaa ajaa
Fastify-pohjaista WebSocket-palvelinta. Selain (Web-Postitoimisto) ei voi
avata raakoja TCP-yhteyksiC$, mutta se voi avata turvallisen wss://
WebSocket-yhteyden.
DMZ-arkkitehtuurin sijoittelu:
TC$llainen DMZ-solmu on ihanteellista sijoittaa esimerkiksi Cloudflare
Tunnelin taakse (jolloin se saa nC$tin domainin, esim. wss://dmz.omatunnus.com,
 ja SSL-salauksen automaattisesti). Cloudflaren takana oleva node pystyy
pitC$mC$C$n yllC$ kymmeniC$ tuhansia rinnakkaisia WebSocket-yhteyksiC$ ja
laittamaan SQLite-kannan koville, pitC$en varsinaiset laitteesi suojassa.
3. Solmujen "kohtaaminen" (Data Mules & Gossip)
Miten viesti kulkee selaimesta Sensorille DMZ:n kautta?
 * Drop-off: Avaat Web-Postitoimiston selaimessa. Selain avaa WebSocketin
DMZ-solmuun. Selaimen ja DMZ:n vC$lillC$ suoritetaan sama Merkle Mountain
Range (MMR) -synkronointi kuin TCP-testissC$mme. Selain pukkaa uuden Intentin
DMZ:n SQLite-kantaan ja katkaisee yhteyden.
 * Store & Forward: Viesti makaa DMZ:n tietokannassa.
 * Pick-up: Raspberry Pi (Sensori) on sC$C$detty ottamaan kerran tunnissa (tai
Tailscale-verkon sisC$isen eventin herC$ttC$mC$nC$) WebSocket- tai TCP-yhteys
DMZ-solmuun. Se tekee MMR-synkronoinnin, huomaa ettC$ DMZ:llC$ on sille
osoitettu viesti, lataa sen ja suorittaa sen hiekkalaatikossaan lokaalisti.
Miten tC$mC$ kannattaa lC$hteC$ rakentamaan?
Olemme jo tehneet kovimman tyC6n. Koska ydinarkkitehtuuri (UniversalRouter,
RouterStore, verify.ts) on tC$ysin riippumaton kuljetuskerroksesta,
laajentaminen on helppoa.
Voimme valita kahdesta polusta, kumpaa lC$hdemme koodaamaan ensin:
Vaihtoehto A: Laajennetaan Facade tukemaan DMZ WebSocket -gossippia.
Rakennetaan src/transport/websocket.ts, joka toimii tismalleen samalla
logiikalla kuin aiempi TCP-koodimme, mutta Fastify:n ja ws-kirjaston
pC$C$llC$. TC$mC$ sallii DMZ-solmun pystyttC$misen heti.
Vaihtoehto B: Rakennetaan selainpohjainen Web-Postitoimisto (HTML/JS).
Luodaan staattinen HTML/WASM -sivu (esim. studio.html), jossa on Canvas tai
tyylikC$s UI. Tuomme siihen cbor-x ja kryptokirjastot, ja teemme
kC$yttC6liittymC$n, josta voit ladata fyysisiC$ .universe -bundleja ja
siirrellC$ niitC$ solmujen vC$lillC$ kC$sin.
Kumpaan suuntaan visiosi vetC$C$ vahvemmin tC$ssC$ vaiheessa?