nx_watch_read_probe.nx source
↩ module page · 29 lines · 1428 B
1// nx_watch_read_probe.nx -- discriminate WHY nw_read misses keys the ledger serves fine (ns=forge).
2// Same binary, same key: (a) sov_get_copy with a LITERAL prefix; (b) with the nw_prefix-CONSTRUCTED
3// prefix (dumped byte-by-byte); (c) nw_read itself. license_tier: ORIGINAL expect_exit: 0
4import "nx_watch.nx"
5
6func main(argc: i64, argv: *i64) -> i64 {
7 let v: *u8 = sys_mmap(128) as *u8
8 let p1: *u8 = "knowledge/store/watch_forge" as *u8
9 let n1: i64 = sov_get_copy(p1, "probekey" as *u8, v, 127)
10 std_puts("literal_prefix_n=" as *u8); std_pdec(n1)
11 if n1 > 0 { v[n1] = 0 as u8; std_puts(" val=[" as *u8); std_puts(v); std_puts("]" as *u8) }
12 let p2: *u8 = sys_mmap(256) as *u8
13 let pl: i64 = nw_prefix("forge" as *u8, p2)
14 std_puts(" built_len=" as *u8); std_pdec(pl)
15 std_puts(" built=[" as *u8); std_puts(p2); std_puts("]" as *u8)
16 var i: i64 = 0
17 var diff: i64 = 0 - 1
18 while i <= pl { if p2[i] != p1[i] { if diff < 0 { diff = i } } i = i + 1 }
19 std_puts(" first_byte_diff=" as *u8); std_pdec(diff)
20 let n2: i64 = sov_get_copy(p2, "probekey" as *u8, v, 127)
21 std_puts(" built_prefix_n=" as *u8); std_pdec(n2)
22 let word: *u8 = sys_mmap(64) as *u8
23 let age: *i64 = sys_mmap(8) as *i64
24 let cls: i64 = nw_read("forge" as *u8, "probekey" as *u8, word, age)
25 std_puts(" nw_read_cls=" as *u8); std_pdec(cls)
26 std_puts("\n" as *u8)
27 sys_exit(0)
28 return 0
29}