NoxSafe

NoxSafe

Confidential payroll rails for Safe{Wallet} · iExec Nox · ERC-7984

/verify — judge dashboard

Live roster events, publicly-decryptable cap checks, and every handle’s ACL. Zero mocks: on Sepolia these read straight off the chain + the Nox gateway.
#Call in the Safe queueAmount
0approve(cUSD, 25000) none
1wrap(safe, 25000) none
2setOperator(rail, Q3-end) none
3approveRoster(1) none

Cap-compliance checks (publicly decryptable)

publicDecrypt(okHandle) per line — anyone audits compliance without seeing a single amount.
L0: trueL1: trueL2: trueL3: trueL4: trueL5: false — over cap, paid encrypted zero
Aggregate proof: proveSpendWithinBudget() → “spend ≤ budget” = true (24,000 paid ≤ 25,000 cap; the total is never revealed).

Live event stream — real Sepolia txs from the funded 2-of-3 Safe run

Every hash below opens on Etherscan. The Paid events carry handles only — no amounts.
EventArgsTx (Sepolia)
RosterProposedid=1, hash=0x…, lines=60x3b5c…8718 ↗
RosterApprovedid=10xaccc…cef2 ↗
Paidid=1, i=0…5, handles only0x62bf…93d2 ↗
RosterSettledid=10x62bf…93d2 ↗
BudgetComplianceProvenspend ≤ budget = true0x083f…cdb9 ↗

Contracts + benchmarks (real, on-chain)

Live on Ethereum Sepolia — click any address to verify on Etherscan.
PayrollRail
0xE715…0ED8 ↗ Etherscan-verified
ConfidentialUSD (cUSD)
0x82C2…8991 ↗ reused · verified
Demo Safe (2-of-3)
Nox protocol
concurrent encrypt ×10
2.6s
264 ms/line
per-payout gas
310,617
decrypt p50 / p95
814ms / 2.0s
Numbers from fixtures/bench.json (reproduce with npm run bench).