code wiki / (root) / nx_watch_read_probe.nx

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}