{"id":"c1146","filename":"c1146_brsljani_mldsa_gossip_bft.dok.json","weise3_id":"c1146","tip":"ARHITEKTURA_SIGURNOST","naziv":"Bršljan ML-DSA-65 gossip + BFT Safe-Mode — Rupa A zatvorena za sve atome","kreator":"CC + Ivan","datum":"2026-05-27","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"ARHITEKTURA_SIGURNOST","naziv":"Bršljan ML-DSA-65 gossip + BFT Safe-Mode — Rupa A zatvorena za sve atome","datum":"2026-05-27","autor":"CC + Ivan","kontekst":"Fenix QSeal Dual (ML-DSA-65) postaje temelj cijele Bršljan mreže. ZAKON 20 poštovan. BFT k=4 stvaran jer su čvorovi sada različiti identiteti. Sve niti iz cijelog luka spajaju se u jednu.","redoslijed":["1. authorized_nodes.py — trust anchor: root-potpisan popis čvorova s ML-DSA-65 PK-ovima","2. GossipPaket proširen: creator_genesis_id + seal polja (backward compatible)","3. _verificiraj() migriran: DUAL path (ML-DSA-65 + SHA3-512) primarni, legacy content-hash fallback za stare atome","4. pusi_dokument() i queue worker: seal_dual() potpis prije svakog gossip broacasta","5. bft_pull(k=4): Byzantine-safe pull — k ili više čvorova mora složiti na istom sadržaju","6. get_cvor(): registriraj_cvor() automatski pri svakom prvom pokretanju","7. API: GET /api/v1/brsljani/authorized_nodes + POST /publish (admin)"],"rupa_a":"Zatvorena: gossip _verificiraj() sada zahtijeva ML-DSA-65 potpis čvora pošiljatelja. Neovlašteni čvor ne može potpisati — PK nije u Authorized_Nodes_List.","zakon_20":"Poštovan: ML-DSA-65 (NIST FIPS 204) za sve nove potpise u mreži. Ed25519 ostaje samo u legacy (identitet.py, genesis_auth.py) dok se ne migrira.","bft_kvorom":"k=4: Byzantine-safe za f=1 (3f+1=4). Čvorovi su sada različiti keypairovi → glasovi su stvarni.","marica":"Distribuirana istina koja preživljava — sada ima ispravan potpis nad ispravnim kvorumom.","backward_compat":"Stari gossip paketi (bez seal-a) prolaze legacy content-hash provjeru. Migracijski prozor otvoren dok se svi čvorovi ne ažuriraju.","fajlovi":["services/authorized_nodes.py (novo)","services/brsljani.py (patch: GossipPaket, _verificiraj, pusi_dokument, bft_pull, get_cvor)","services/brsljani_queue.py (patch: queue worker sad generira seal_dual)","api/brsljani.py (novo: /authorized_nodes GET + POST)","dilithium-py pip instalirano na EU server"],"zakoni":["ZAKON 20","ZAKON 17","ZAKON 2","ZAKON 3"],"prethodni_entry":"c1145_ark_jezgra_pii_filter_ed25519.dok.json","weise3_id":"c1146","created_at":"2026-05-27T03:45:00Z"}}