code wiki / _hdl_build / nx_pub_receipt.nx

nx_pub_receipt.nx

buildroot/runtime/_hdl_build/nx_pub_receipt.nx

7652 B111 linesdepth 9pulls 16 transitivereach 3 importersview sourcekind librarytopic pub
docsdependenciesstructsconstsfunctions

about

nx_pub_receipt.nx -- THE PUBLISH RECEIPT / RETURN-AND-REPORT, stored on the SOVEREIGN nishi substrate (operator: "don't use tsv or any other non-nishi-ecosystem"; [[feedback-no-3rd-party-tsv-sovereign-store]]). Receipts no longer live in a flat .tsv -- each receipt is a CANON-ENCODED record (nx_canon_cid) in a content-addressed, append-only, crash-safe seg_store (nx_seg_store), keyed by the artifact (sha|dest). The additive seg_store gives the audit history (every state is a preserved segment; ss_hget returns the latest) for free -- no foreign format on the data path. Designed to the breadth the sovereign researcher surfaced (knowledge/fetched/rcpt_*.raw): ACK/NACK, return-receipt(query), DSN states, idempotence, atomic-commit, dead-letter, audit-trail, provenance, + Ed25519 non-repudiation (each receipt SIGNED over status|sha|dest|verify|ts). fields: status, requester, sha, dest, site, verify, ts, sig

dependencies 5 imports · 3 importers

nx_seg_store.nx nx_canon_cid.nx nx_uxf_decode.nx nx_ed25519_signature.nx nx_syscalls.nx nx_pub_receipt.nx nx_pub_reader_receipt.nx nx_pub_receipt_gate.nx nx_pub_receipt_loop.nx

imports: nx_seg_store.nxnx_canon_cid.nxnx_uxf_decode.nxnx_ed25519_signature.nxnx_syscalls.nx

imported by: nx_pub_reader_receipt.nxnx_pub_receipt_gate.nxnx_pub_receipt_loop.nx

structs

none

consts

16const RC_NONE: i64 = 0
17const RC_PUBLISHED: i64 = 1
18const RC_HELD: i64 = 2
19const RC_REJECTED: i64 = 3
20const RC_FAILED: i64 = 4

functions

22func rc_slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
23func rc_streq(a: *u8, b: *u8) -> i64 { var i: i64=0; while 1==1 { let ca: i64=a[i] as i64; let cb: i64=b[i] as i64; if ca!=cb {return 0} if ca==0 {return 1} i=i+1 } return 1 }
24func rc_cat(dst: *u8, off: i64, s: *u8) -> i64 { var o: i64=off; var i: i64=0; while s[i]!=(0 as u8){dst[o]=s[i]; o=o+1; i=i+1} return o }
called by 2: rcpt_keyrc_bind
25func rc_hexenc(inp: *u8, n: i64, out: *u8) -> i64 { let hx: *u8="0123456789abcdef" as *u8; var i: i64=0; while i<n { out[i*2]=hx[((inp[i] as i64)>>4)&15]; out[i*2+1]=hx[(inp[i] as i64)&15]; i=i+1 } out[n*2]=0 as u8; return n*2 }
called by 2: sha_hexrc_sign
26func rc_unhex1(c: i64) -> i64 { if c>=48 { if c<=57 {return c-48} } if c>=97 { if c<=102 {return c-87} } if c>=65 { if c<=70 {return c-55} } return 0 }
called by 1: rc_unhex
27func rc_unhex(inp: *u8, n: i64, out: *u8) -> i64 { var i: i64=0; while i<n { out[i]=((rc_unhex1(inp[i*2] as i64)<<4)|rc_unhex1(inp[i*2+1] as i64)) as u8; i=i+1 } return n }
called by 2: rcpt_verifymain calls 1: rc_unhex1
28func rc_itoa(v: i64, out: *u8) -> i64 { let t: *u8=sys_mmap(28); var m: i64=v; var k: i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i: i64=0; while i<k{out[i]=t[k-1-i];i=i+1} out[k]=0 as u8; return k }
called by 1: rcpt_emit calls 1: sys_mmap
29func rc_code_of(status: *u8) -> i64 { if rc_streq(status,"PUBLISHED" as *u8)==1{return 1} if rc_streq(status,"HELD" as *u8)==1{return 2} if rc_streq(status,"REJECTED" as *u8)==1{return 3} if rc_streq(status,"FAILED" as *u8)==1{return 4} return 0 }
called by 2: rcpt_status_codercpt_emit calls 1: rc_streq
32func rcpt_key(sha: *u8, dest: *u8, out: *u8) -> i64 { var o: i64=rc_cat(out,0,sha); out[o]=124 as u8; o=o+1; o=rc_cat(out,o,dest); out[o]=0 as u8; return o }
called by 2: rcpt_getrcpt_emit calls 1: rc_cat
34func rc_bind(buf: *u8, status: *u8, sha: *u8, dest: *u8, verify: *u8, tsstr: *u8) -> i64
called by 3: rc_signrcpt_verifymain calls 1: rc_cat
42func rc_sign(priv: *u8, status: *u8, sha: *u8, dest: *u8, verify: *u8, tsstr: *u8, out_sighex: *u8) -> i64
50func rcpt_get(prefix: *u8, sha: *u8, dest: *u8, out_keys: *i64, out_vals: *i64, maxf: i64) -> i64
58func rcpt_field(out_keys: *i64, out_vals: *i64, nf: i64, name: *u8) -> *u8
62func rcpt_status_code(prefix: *u8, sha: *u8, dest: *u8) -> i64
70func rcpt_is_published(prefix: *u8, sha: *u8, dest: *u8) -> i64 { if rcpt_status_code(prefix, sha, dest)==RC_PUBLISHED {return 1} return 0 }
75func rcpt_emit(prefix: *u8, priv: *u8, status: *u8, requester: *u8, sha: *u8, dest: *u8, site: *u8, verify: *u8, ts: i64, segid: i64) -> i64
98func rcpt_verify(prefix: *u8, pub: *u8, sha: *u8, dest: *u8) -> i64