← DokArh Portal
implementacija

Krunica chain prima TimeWitness — korak 3 iz c1135

Kreator: genesis Datum: 2026-05-24 Status:
WeisE3™ ID: c1137_krunica_chain_witness_hook
tipimplementacija
nadovezuje_se_na[ "c1135_time_witness_implementacija", "c1136_dvorac_witness_integracija" ]
sto_trebaKrunica chain blokovi (ChainBlockORM) sada nose witness_hash + konsenzus + 3 timestamps u svom meta JSONB polju. Backward kompatibilno — pozivi bez witness_extension rade kao prije.
zastoC1135 implementirao TimeWitness (3 izvora). C1136 dodao .witness.json fajl uz svaku ciglu. Ali Krunica chain (DB-side append-only lanac) još nije nosio witness — kratki spoj između proof-on-disk i proof-in-chain. C1137 zatvara ovaj krug: svaki novi Krunica blok može imati witness u meta polju, nepro
implementacija{ "patch_lokacija": "/var/www/genesis/services/krunica_dvorac_sync.py", "dodana_helper_funkcija": "_witness_meta(witness_extension) -> dict", "izmijenjene_funkcije": [ "upisi_u_krunicu(...) → dodaje param witness_extension=None i upisuje meta u ChainBlockORM + podaci.witness u EntityORM", "TrojnaPohrana.pohrani_async(...) → dodaje param witness_extension=None i forwardira u upisi_u_krunicu" ], "meta_polja_u_chain_bloku": [ "witness_hash", "witness_consensus (POUZDANO|SU
tehnicke_odluke{ "zasto_meta_a_ne_novi_table": "ChainBlockORM.meta je vec dizajniran kao opcijski indexable kontejner — dodavanje novog tablice (chain_witness) bi razdvojilo proof od bloka i dvostruko vise upita za read", "zasto_samo_3_polja_a_ne_cijeli_extension": "Pun .witness.json (s DER bytes, RSA potpisima) ostaje na disku kao primarni dokaz. ChainBlockORM nosi samo izvuceno za brzu SQL pretragu (npr. WHERE meta->>'witness_consensus' = 'KRITICNO')", "zasto_backward_kompatibilno": "Postojeci pozivi u
testovi{ "fajl": "/var/www/genesis/tests/test_krunica_witness_hook.py", "rezultat": "17/17 PASSED", "pokrivenost": [ "1.1-1.7: _witness_meta() ekstrakcija (cista funkcija, bez DB)", "2.1-2.3: skip neuspjesnih NTP/TSA izvora", "3.1-3.5: end-to-end Krunica chain entry s witness — stvarna baza", "4.1-4.2: backward kompatibilnost — pozivi bez witness_extension rade i meta ostaje prazan" ] }
sljedeci_koraci{ "korak_4_wire_up_genesis_login": { "fajl": "/var/www/genesis/api/genesis_login.py", "opis": "Genesis login endpoint trenutno zove pohrani_async bez witness_extension — treba dodati enrich_cigla_with_witness poziv prije i forwardirati ext", "rizik": "Mijenja produkcijski auth flow — treba kontrolirani staged rollout (najprije za novi /v2 endpoint, pa migracija)", "ulagac_odluke": "Ivan (kada zelimo aktivirati witness za login — sad infrastruktura spremna)" }, "korak_5_key_
kratki_kod_primjer{ "stari_poziv": "block_hash = await upisi_u_krunicu(db, w3id, sadrzaj, kreator, tip, prev_hash, kljuc)", "novi_poziv_s_witness": "ext = enrich_cigla_with_witness(cigla, sender_priv=..., sender_pub=...)\nblock_hash = await upisi_u_krunicu(db, w3id, sadrzaj, kreator, tip, prev_hash, kljuc, witness_extension=ext)", "sql_provjera_chain_bloka": "SELECT meta->>'witness_consensus' AS konsenzus, meta->>'witness_hash' AS hash, meta->>'witness_t_tsa' AS tsa_ts FROM chain_blocks WHERE weise3_id = '.
zakonZAKON 17 (Bršljan PULL only) + ZAKON 26 (schema contract — meta polja imenovana eksplicitno) + ZAKON 32 (svaki fix ima chain entry)
promatraci[ "Ivan Brtan (vlasnik, dao naredbu 'ne mozemo graditi digitalnu arhivu na lazima')", "Opus (analiza propusta — krunica chain nije nosio witness)", "CC Sonnet (implementacija c1135 -> c1136 -> c1137 lanac)" ]
citacijaTrojna pohrana sad je zaista trojna: Krunica zna kad i tko, Dvorac zna sto i kako, Brsljani znaju gdje. Witness je sad u svakom od tri sloja, kao Krunica koja je svugdje (ZAKON 43).