1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| import hashlib, sys, os
D = "infinity-palimpsest/" root = open(D+"root.bin","rb").read() ev = open(D+"events.bin","rb").read() heads = [l.strip() for l in open(D+"heads.txt") if l.strip()]
assert len(ev) % 36 == 0, len(ev) N = len(ev)//36 recs = {} for k in range(N): r = ev[k*36:(k+1)*36] recs[hashlib.sha256(r).hexdigest()] = r
root_id = hashlib.sha256(b"root"+root).hexdigest() print("records:", N, "unique ids:", len(recs), "heads:", len(heads)) print("root_id:", root_id, "in events:", root_id in recs)
ops = set(); imax=0; jmax=0; vmax=0 for k in range(N): r = ev[k*36:(k+1)*36] op,i,j,v = r[32],r[33],r[34],r[35] ops.add(op); imax=max(imax,i); jmax=max(jmax,j); vmax=max(vmax,v) print("opcodes:", sorted(ops), "i max:", imax, "j max:", jmax, "v max:", vmax)
def apply(mem, op, i, j, v): m = bytearray(mem) if op == 0: m[i] = (m[i] + m[j] + v) & 0xFF elif op == 1: m[i] = m[i] ^ m[j] ^ v elif op == 2: a = m[j] ^ v b = m[i] m[i] = a; m[j] = b elif op == 3: x = m[i] m[i] = (((x << 3) | (x >> 5)) & 0xFF) ^ v else: raise ValueError(op) return bytes(m)
MSIZE = len(root)
cache = {root_id: root} results = [] miss = 0 for h in heads: if h not in recs: print("HEAD NOT IN EVENTS:", h); miss += 1; continue chain = [] cur = h while cur not in cache: if cur not in recs: print("MISSING PARENT:", cur); chain=None; break r = recs[cur] chain.append(r) cur = r[:32].hex() if chain is None: miss += 1; continue mem = cache[cur] for r in reversed(chain): op,i,j,v = r[32],r[33],r[34],r[35] mem = apply(mem, op, i, j, v) cache[hashlib.sha256(r).hexdigest()] = mem results.append((hashlib.sha256(mem+b"terminus").hexdigest(), h, mem))
print("resolved:", len(results), "miss:", miss, "cache size:", len(cache)) results.sort(key=lambda t: bytes.fromhex(t[0])) best = results[0] print("BEST head:", best[1]) print("BEST key :", best[0]) print("BEST state sha256:", hashlib.sha256(best[2]).hexdigest()) print("state hex:", best[2].hex()) print("--- top 5 ---") for k in range(5): print(results[k][0], results[k][1]) open("best_state.bin","wb").write(best[2])
|