A signed measurement, re-derived from raw XRPL data at one pinned ledger and published with the artifact and the key needed to check it. This page presents the result; it does not compute it. The re-run is the evidence, not this page.
Bound to validated ledger 107345010, closing 2026-09-30T21:00:00Z. It says nothing about any other ledger, and nothing about today.
At the last validated ledger closing at or before the issuer's reported as-of instant, were the issuer's RLUSD obligations on the XRPL — re-derived independently from raw ledger data — less than or equal to the aggregate outstanding units the issuer reported across all its networks?
| Issuer | rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De |
|---|---|
| Ledger | 107345010 E013A54AEBD76571EF7623DF2806DDAF6E6CFE37FCE00B50C3C431D03388D016 |
| Ledger close | 2026-09-30T21:00:00Z measured |
| Ledger chosen by | Rule, not by KVT: the last validated ledger with close_time ≤ the reported as-of. |
| XRPL obligations | 1,013,522,846.501454 RLUSD measured |
| Reported outstanding | 2,399,995,528 RLUSD units reported Standard Custody & Trust Company, LLC — RLUSD Reserve Report September 2026 (report dates 21 and 30 September 2026, 5:00pm ET), examined by Deloitte & Touche LLP, report dated 26 October 2026. Source PDF. Unverified here — this is the issuer's figure, not ours. |
| Reported scope | reported Aggregate RLUSD on NYDFS-approved networks (XRPL, Ethereum, Base, Unichain, Optimism, Ink, XRPL EVM Sidechain). No per-network breakdown is published. |
| Coverage | 99,134 trust lines, 100.00% — every line, on every node, whole-set agreement measured |
| Operators agreeing | 2 independent operators (s1 and s2 count as one), 3 endpoints, identical ledger hash |
| Frozen balances | 0 at this ledger measured Where an issuer has frozen a line, gateway_balances
reports it in a separate frozen_balances field rather than inside obligations.
Both are counted here, in their own buckets and never netted together. At this ledger there were none. |
| Difference vs reported | 1,386,472,681.498546 inferred Reported aggregate minus on-ledger XRPL supply = units on the issuer's other networks, plus any change between the report instant and ledger close. This is not a deficiency and not a reserve finding. |
| XRPL share of reported | 42.23% inferred — stated only because the ledger is time-matched to the report instant. |
| Predicate digest | a2adc3985adf52d971661dff3271efcfbec3482c8708e3cfd8dd7b5f6c9cb6bb |
|---|---|
| Input digest | b5f78606a77f6bf5a2ecaa88bf28fc52cede622911f13b32a1323574d0ebfaf5 Computed over the inputs before any ledger read, so the question could not be adjusted to fit the answer. |
| Signed by | kvt · ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2BmKtpmwQsq8rDz0PPaVcKPFASDMLJHU+zkZ3REV/O OpenSSH signature, namespace kvt-attest, over the digest above. |
This September record is signed. Its on-chain anchor is pending: until it is written, the signature above is what makes it tamper-evident. The previous record (July 2026) is signed and anchored, and stays published below.
| Ledger | 105983921 (2026-07-31T21:00:00Z) |
|---|---|
| Result | consistent: 759,671,210.7815219 RLUSD on XRPL ≤ 1,463,694,758 reported (RLUSD Reserve Report July 2026) |
| Signed artifact | predicate-2026-07.json (predicate digest 0977f305c578c7a45861f236c74a342fe5b3cefa780600fd09546d16a9145344) |
| Anchor transaction | 355937CCDA9CD66E66158317A891FB7B8DA052189AFA2370BC95F54B723802BF on-ledger |
| Anchor account | rBJW51DoReTh2wpikTADVFNyAyjTQeyX4L AccountSet carrying a kvt/attestation-anchor memo; account Domain kairovault.com. |
| Anchored digest | 58090d6b0c1ffe3f639e908b022170f8e7bbe3e98d069e8a82fc02188d898468 SHA-256 over the whole signed July artifact; this is what the on-chain memo records. |
curl -s https://xrplcluster.com/ -H 'Content-Type: application/json' \
-d '{"method":"tx","params":[{"transaction":"355937CCDA9CD66E66158317A891FB7B8DA052189AFA2370BC95F54B723802BF"}]}' \
| python3 -c "import sys,json; r=json.load(sys.stdin)['result']; tx=r.get('tx_json', r); print(bytes.fromhex(tx['Memos'][0]['Memo']['MemoData']).decode())"
# prints: 58090d6b0c1ffe3f639e908b022170f8e7bbe3e98d069e8a82fc02188d898468
Both files below are published so you never have to take this page's word for anything. Verify the signature with stock OpenSSH — no KVT software involved:
curl -sO https://kairovault.com/verify/rlusd/predicate.json
curl -sO https://kairovault.com/verify/rlusd/kvt-attest.pub
# 1. the digest is over the document itself, minus digest and signature
python3 - <<'EOF'
import json, hashlib
d = json.load(open('predicate.json'))
body = {k: v for k, v in d.items() if k not in ('predicate_digest', 'signature')}
c = json.dumps(body, sort_keys=True, separators=(',', ':'), ensure_ascii=True, allow_nan=False)
print(hashlib.sha256(c.encode()).hexdigest())
print(d['predicate_digest'])
EOF
# 2. the signature is over that digest, by the key you hold
python3 -c "import json;d=json.load(open('predicate.json'));open('sig','w').write(d['signature']['sig']);print(d['predicate_digest'],end='')" > digest
printf 'kvt %s\n' "$(cut -d' ' -f1,2 kvt-attest.pub)" > allowed_signers
ssh-keygen -Y verify -f allowed_signers -I kvt -n kvt-attest -s sig < digest
A good signature proves the document has not changed
since KVT signed it. It proves nothing about whether the measurement is right — for that, re-derive
it: read gateway_balances and walk account_lines for the issuer at ledger
107345010 on two independent operators and compare. The method is written out in full inside the
artifact, step by step.
The disclosure policy was fixed before the read, not after it: an inconsistent result goes to the issuer's published contact first and is published unchanged 72 hours later regardless of reply.
Review by Kairo Vault Technologies, re-derived from the public ledger. NOT an audit, NOT an attestation, NOT a certification, NOT a solvency or reserve opinion. Every figure is labelled measured (re-derived by KVT from ≥2 independent nodes at the pinned ledger), reported (supplied by the subject or a third party, unverified here) or inferred (KVT's join of the two). Re-run the method yourself; trust the re-run, not KVT.