code wiki / (root) / nx_trust.nx

nx_trust.nx source

↩ module page · 44 lines · 1918 B

1// nx_trust.nx -- Nishi Office trust accounting (F506) CLI/MCP organ: self-verifying demo. 2// IOLTA / RPC 1.15: no-commingling, no-overdraw (refused), three-way reconciliation. 3// license_tier: ORIGINAL 4 5import "nx_trust_lib.nx" 6const K_MAGIC_100000: i64 = 100000 7const K_MAGIC_50000: i64 = 50000 8const K_MAGIC_30000: i64 = 30000 9const K_MAGIC_70000: i64 = 70000 10const K_MAGIC_200000: i64 = 200000 11const K_MAGIC_120000: i64 = 120000 12 13func main() -> i64 { 14 let p: *u8 = "/tmp/nx_trust_demo-" as *u8 15 trust_put(p, "ClientA" as *u8, 0, "M1" as *u8, "deposit" as *u8, K_MAGIC_100000) 16 trust_put(p, "ClientB" as *u8, 0, "M2" as *u8, "deposit" as *u8, K_MAGIC_50000) 17 trust_put(p, "ClientA" as *u8, 1, "M1" as *u8, "disburse" as *u8, K_MAGIC_30000) 18 let a: i64 = trust_balance(p, "ClientA" as *u8) 19 if a != K_MAGIC_70000 { return __syscall(93, 81, 0, 0, 0, 0, 0) } 20 let b: i64 = trust_balance(p, "ClientB" as *u8) 21 if b != K_MAGIC_50000 { return __syscall(93, 82, 0, 0, 0, 0, 0) } 22 if trust_disburse_ok(p, "ClientA" as *u8, K_MAGIC_200000) != 0 { return __syscall(93, 83, 0, 0, 0, 0, 0) } 23 let total: i64 = a + b 24 if total != K_MAGIC_120000 { return __syscall(93, 84, 0, 0, 0, 0, 0) } 25 let da: *u8 = sys_mmap(32) 26 tr_dollars(a, da) 27 let db: *u8 = sys_mmap(32) 28 tr_dollars(b, db) 29 let dt: *u8 = sys_mmap(32) 30 tr_dollars(total, dt) 31 let out: *u8 = sys_mmap(512) 32 var o: i64 = 0 33 o = mt_catcopy(out, o, "NISHI-TRUST OK clients=2 ClientA=" as *u8) 34 o = mt_catcopy(out, o, da) 35 o = mt_catcopy(out, o, " ClientB=" as *u8) 36 o = mt_catcopy(out, o, db) 37 o = mt_catcopy(out, o, " account-total=" as *u8) 38 o = mt_catcopy(out, o, dt) 39 o = mt_catcopy(out, o, " no-commingling overdraw($2000.00)=REFUSED three-way(ledgers-sum==account-total)=OK" as *u8) 40 out[o] = 10 as u8 41 o = o + 1 42 sys_write(1, out, o) 43 return __syscall(93, 0, 0, 0, 0, 0, 0) 44}