cidc1136
tipimplementacija_nastavak
prethodni_chainc1135 (TimeWitness implementacija)
povod{
"c1135_kaze": "Sljedeći korak 2: Integrirati TimeWitness u dvorac.py i krunica chain — zamijeniti d9_svjedok jedinog svjedoka novim TimeWitness + countersign",
"ivan_kaze": "nastavi c1135"
}
dizajnerska_odluka{
"opcija_A_destruktivno": "Zamijeniti d9_svjedok logiku u dvorac.py (1143 lin) — RISK: production fenix-v3 hash-evi se mijenjaju, breaking change",
"opcija_B_non_destructive": "DODATI dvorac_witness.py ekstenziju koja proširi proof bez diranja dvorac.py — postojeće cigle nepromijenjene, novi enriched",
"odabrano": "B — non-destructive extension. Production v40 ostaje netaknuta. Novi sloj je opt-in."
}
implementirano{
"novi_fajl": "/var/www/genesis/services/dvorac_witness.py (220 linija)",
"test_fajl": "/var/www/genesis/tests/test_dvorac_witness_integration.py (160 linija)",
"format_extension": "{cigla}/.cigle/{stem}.witness.json — uz postojeće payload/proof/chain/svjest",
"api": [
"enrich_cigla_with_witness(cigla, sender_priv?, sender_pub?, recipient_w3?, recipient_priv?, recipient_pub?) -> dict",
"save_witness_json(cigla, extension, output_path?) -> Path",
"verify_witness_file(witness_
sto_witness_json_sadrzi{
"time_witness": "3 izvora: lokal + 4 NTP + 3 TSA RFC3161, DER proof bytes iz TSA-e",
"consensus": "POUZDANO / SUMNJIVO / KRITICNO",
"countersign": {
"sender_w3": "weise3_id pošiljatelja",
"sender_sig": "Ed25519 hex (128 znakova)",
"sender_pub": "Ed25519 javni ključ hex",
"recipient_w3": "weise3_id primatelja",
"recipient_sig": "Ed25519 hex supotpis",
"recipient_pub": "Ed25519 javni ključ primatelja",
"krunica_hash": "SHA3-256 svega + 3-source witness + oba pot
dokazi_testom{
"test_1_enrich": "PASS — 4 NTP + 3 TSA + 1 lokal upisan, POUZDANO konsenzus",
"test_2_countersign": "PASS — sender Ed25519 + recipient Ed25519, krunica_hash sastavljen iz oba",
"test_3_backward_compat": "PASS — postojeće v40 cigle bez .witness.json su legalne",
"test_4_tamper_detect": "PASS — izmjena atom_hash promijeni očekivani krunica_hash (mismatch detect)",
"ukupno": "11/11 testova prošlo"
}
backward_kompatibilnost{
"v40_production_dvorac": "NEDIRNUTO (na MAR fenix-v3 i fenix-v4)",
"postojeci_cigle_bez_witness": "i dalje rade — verify ne traži .witness.json",
"novi_cigle_s_witness": "dobiju .witness.json kao 5. fajl uz postojećih 4 (.payload, .proof, .chain, .svjest)",
"migracija": "nije potrebna; postupno enrichment per-call"
}
sto_jos_nije{
"krunica_chain_dopuna": "Krunica blokovi (api/genesis_login.py + services/krunica*) ne čitaju još .witness.json — treba im hook da uključe witness_hash u svoj append-only zapis",
"key_registry": "napad 8 iz c1135 testa — sender_pub može biti bilo čiji. Treba povjereni registar weise3_id ↔ public_key. Sljedeći prioritet.",
"automatsko_enrichment": "trenutno ručno se mora pozvati enrich_cigla_with_witness — za production bi trebao hook u ZivaCigla.kreiraj() s opt-in flagom"
}
zakon_status{
"ZAKON_41": "poštovano — non-destructive extension, sav novi kod je naš ili W3C standard",
"ZAKON_43": "poštovano — krunica_hash u svakom witness blok-u",
"ZAKON_26": "poštovano — schema_version=dvorac-witness-v1, jasna struktura"
}
poruka_ivanuSloj 2 zatvoren. Dvorac sad može imati 3-izvora vremenski svjedok i dvostrani potpis, bez diranja jedne linije production koda. Sljedeći prirodan korak je Krunica chain pickup (da blok zapisa zna za witness) i Key Registry (da znamo čiji je javni ključ stvarno čiji).
promatracClaude (AI asistent)
statusDEPLOYED — services/dvorac_witness.py + tests/test_dvorac_witness_integration.py na genesis-eu