Kod koji raste.
QR se za svaku promjenu cijeli preslaže. DokArh v5 kod raste kao suncokret: novi zapis (potpis kupca, plaćanje, knjiženje) dodaje se kao prsten izvana, a srce ostaje netaknuto. Svaka brojka niže izmjerena je u laboratoriju, uključujući ono gdje kod gubi.
zadnji pad je dokazana granica rezolucije
kosa snimka i dalje čitljiva
popravljeno bez ijedne greške
cijena: gustoća (iskreno niže)
Kodovi su do sada bili ravni.
Od prvog bar koda (patent 1949., prvi sken u trgovini 1974.) preko QR-a (Denso Wave, 1994.) do EU COVID potvrde (2021.), kod je uvijek bio ploha na kojoj je svaki bit jednako važan. Oštećenje bilo gdje ruši cjelinu, a nova informacija znači novi kod.
1D bar kod
Širine crta, ~20–40 znakova, bez popravka grešaka. Samo pokazivač u bazu.
QR
Kockice, do ~2.950 B, popravak 7–30 %. Ploha: za svaku promjenu cijeli se preslaže.
EU COVID potvrda
QR s potpisanim zapisom, provjera bez interneta. Najbliži uzor, ali i dalje ravan i nepromjenjiv.
Stroju je QR samo 441 bit.
Najmanji QR (21×21) za riječ „DOKARH": sama poruka je 50 bitova, a sve ostalo su okvir, punilo i matematika za popravak.
Točka n: kut n × 137,5°, udaljenost √n.
Svaka nova sjemenka ide na zlatni kut od prethodne. Tako su točke jednoliko raspoređene za bilo koji broj, bez rupa i bez preklapanja, i nema gornje granice veličine.
Pravi π ili naš zlatni π?
| Kut izračunat s… | Jednolikost |
|---|---|
| pravim π 3,14159 | 0,979 |
| PI_G 3,13601 (naš zlatni) | 0,686 gomila se |
| PI_S 3,1418 | 0,878 |
„Zlatnost" dolazi od φ, a π samo prevodi u krug kakav kamera vidi. Zato geometrija koristi pravi π, a naš PI_G postaje maska koja miješa bitove, kao otisak (49 % velikih točaka, savršeno uravnoteženo).
Susjedi su Fibonaccijevi
Najbliži susjedi točke n su n ± Fₖ:
- točka 100 → 13, 21, 34, 55
- točka 500 → 34, 55, 89
- točka 2000 → 55, 89, 144
Suncokret je lokalno pravilna mreža, pa čitač korača od susjeda do susjeda: greška se ne gomila, a kosa snimka se prati.
Pogledaj kako raste.
Svako mjesto ima točku: velika je 1, mala je 0. Zeleno je sjeme u srcu (tko, kome, koliko, pečat). Klizač dodaje prstenove izvana, a srce se ne mijenja. Prekidač pokazuje što bi PI_G učinio s rasporedom.
Prikaz je geometrija rasporeda, ne pravi kodirani zapis (taj je u labu). Jednolikost se ovdje mjeri na uzorku vanjske polovice, pa je za PI_G blaža nego u tablici (lab: svih 3.000 točaka, 0,686).
Sjeme u srcu, plod na rubu.
Meta + tihi pojas
Prsten s rupom i disk u sredini: kamera nađe središte, mjerilo i smjer. Oko nje prazan pojas, jer se u prvom pokusu oznaka smjera preklopila s podacima.
Sjeme (prvi prsten)
Shema, vrsta, tko, kome, koliko, WeisE3 i potpis. Preživi i kad se odreže pola ruba.
Prstenovi
Svaki novi zapis = cijeli pojasevi izvana, vlastiti potpis autora i lanac (hash prethodnih). Staro ostaje bit-identično.
Popravak grešaka
Reed-Solomon po bloku (35 %), bajtovi isprepleteni po blokovima, pa mrlja uzme po malo iz svakog.
Maska PI_G
Bitovi pomiješani nizom iz našeg zlatnog π, po mjestu, pa ni rast ne mijenja staro.
Tonska provjera
Točka se prima samo ako je stvarno tamna prema lokalnoj podlozi (crna i bijela iz mete). Šum ne može izmisliti segment.
24 od 25 — i zašto je 25. granica, a ne greška.
Kriterij prolaza za svaki scenarij zapisan je prije pokretanja. Prvo mjerenje dalo je 17/25. Pokus je otkrio tri cake, pa 21/25, pa 24/25. Slike su sintetičke (render + simulirana kamera); pravi mobitel je sljedeći korak.
| Scenarij | Rezultat |
|---|---|
| Duljine 6 B – 5.000 B (57.760 točaka) | bit-točno |
| Rast: sjeme + potpis kupca + plaćeno + proknjiženo | staro bit-identično svaki prsten potpisan i vezan lancem |
| Okret 6 kutova · mjerilo 5–12 px | sve |
| Perspektiva 15°, 25°, 35°, 45° | 4/4 |
| Mrlja bijela 5/10/20 %, crna 10 % | 4/4 |
| Niski kontrast (150–230) | OK |
| Odrezana pola ruba | sjeme čitljivo izgubljeni prstenovi: NEPOZNATO, nikad lažni OK |
| Krivotvorina iznosa u sjemenu / prstenu „plaćeno" | ALARM točno na krivotvorenom dijelu |
| Mobitel: mrlja + nagib 25° + okret 40° + mutno + šum + JPEG + svjetlo | 4/4 segmenta, 0,75 s |
| Najteža kamera (zamućenje 1,6 + JPEG 30) | pada na 7 px ✓ od 8,5 px: granica rezolucije |
| Mrlja preko središta | odbija („meta nije pronađena"), nikad lažni OK |



Perspektiva
Daleke točke su sitnije. Veličina se mjeri prema lokalnom mjerilu (jakobijan homografije) → 45° prolazi.
Crna mrlja
Proglašena je metom jer je najveća. Meta se sada prepoznaje po potpisu (prsten s rupom + disk).
Šum
Izmišljao je peti segment. Sada se provjerava ton: točka mora biti stvarno tamna prema podlozi.
Gdje gubimo: gustoća.
Točka treba prazan prostor oko sebe, a kvadratić QR-a dijeli rub sa susjedom. U v5 su uz to uključeni potpis i jača zaštita. Izmjereno na istom sadržaju:
| Sadržaj | QR (razina Q, 4 px) | v5 (8,5 px) | v5 treba |
|---|---|---|---|
| 200 B | 292 px | 1.154 px | 15,6× površine |
| 1.500 B | 724 px | 2.335 px | 10,4× površine |
| 2.900 B | ne stane | radi | — |
Zauzvrat: rast bez preslaganja, bez gornje granice, sjeme preživi gubitak ruba, potpis ugrađen, kosa snimka do 45°. Sljedeći korak: 2 bita po točki (≈2× gušće) i slabija zaštita na prstenovima koji nisu sjeme.
1 MB ne stane u jednu sliku. Stane u vrijeme.
1 MB je ~11 milijuna točaka, odnosno slika od ~2,5 gigapiksela. Nijedna kamera to ne snimi u jednom kadru. Zato treća dimenzija postaje vrijeme: niz kadrova s fontanskim kodom, gdje bilo koji dovoljan skup kadrova vraća cijeli zapis. Isto načelo kao naša DNK obnova 3-od-8.
SHA-256 izvornika = SHA-256 obnovljenog
88 od 438 namjerno bačeno, svejedno obnovljeno
~44 s pri 10 kadrova/s
350 pročitano, kamera simulirana
Kako je izvedeno
- 1 MB (nasumični bajtovi, najgori slučaj, ne sažima se) → 2 skupine, svaka fontanski kod k-od-n. Jedna skupina ne smije imati više od 256 dijelova, jer je to granica alata (otkriveno pokusom).
- Svaki dio od 3.000 B = jedan v5 kadar (2.349 px, točke 6 px), a sjeme nosi skupinu, indeks i SHA-256 cijelog zapisa.
- Kamera hvata kadrove bilo kojim redom, 20 % ih nikad ne stigne, a čitač skuplja dok nema dovoljno.
Što još nije dokazano
- Kadar od 2.349 px je nešto viši od 4K zaslona (2.160 px). Za zaslon treba 2.500 B po kadru ili sitnije točke.
- Vrijeme od 15–44 s pretpostavlja da čitač prati 10–30 kadrova/s. U labu je Python čitač trošio ~1,8 s po kadru, pa za stvarno vrijeme treba brži (nativni) čitač na mobitelu. Nadogradnja 27.9.: nativni čitač postoji. Rust jezgra EHO v2 radi bez OpenCV-a, a čitanje uz zaključano srce mjerljivo je brže (pred-registrirano c8322). Izmjerene brojke su uživo u 4D laboratoriju i ne prepisuju se ovamo, da ne zastare.
- Kamera je simulirana; zaslon → pravi mobitel nije testiran.
- 2 bita po točki bi vrijeme prepolovila.
Kod se ne sprema. Sprema se zapis.
Trajno: DokArh zapis
U arhivi živi samo zapis: pečaćen na izvoru, s blokom u Krunici i samoreplikacijom (DOKARH::w3) na čvorove. Kod je odijelo koje se nacrta kad netko gleda; nikad se ne pohranjuje.
Privremeno: spremnik čitača
Dok kamera hvata kadrove, čitač drži dijelove u privremenom spremniku po ključu (skupina, indeks): idempotentno, a kadar tuđeg zapisa (drugi SHA-256) se ne miješa. Tek kad ima dovoljno, spaja ih, provjeri SHA-256 i pečat, pa zapis ulazi u arhivu kroz jedini ulaz.
Nepotpuno ne ulazi
Nedovršen niz nikad ne postaje dokument. Ostaje „čeka još N kadrova" i istječe. Ništa napola nije OK.
Što još nije dokazano.
Sljedeći koraci
- Pravi mobitel: ispis + slikanje s 3 mobitela (bez toga ovo je lab).
- 2 bita po točki: ≈2× gušće.
- Čitač u aplikaciji i na naočalama; animirani niz na zaslonu.
- 27.9. — ugrađeno na testu: račun u blagajni fenix-v4 postaje 4D dokument koji raste (izdan → fiskaliziran → storno), uz potpisani strojni zapis i čitanje sa slike. Sve se prvo dokazuje na izoliranoj testnoj instanci. Stanje: 4D laboratorij · Uživo.
- Standardni QR uz v5 kao pokazivač, dok se čitač ne proširi.
Granice
- Sve slike su sintetičke; kamera je simulirana.
- Gustoća je 10–16× niža od QR-a.
- Mrlja preko središnje mete = nečitljivo (odbija, ne laže).
- Najmanje ~8,5 px između točaka za lošu kameru.