Research / Chain files / Zcash
6 Zcash targets are scored and attested: the consensus-rule authority of Zcash itself, the funding streams, two custody vaults and a bridge. Zcash has no contract VM, so there is no oracle contract: the scores are committed in a transaction on Zcash Testnet, and the page says what that proves and what it does not.
Zcash has no contract VM, so the scores are committed in one transaction on Zcash Testnet. Three checks, with git, python3 and curl and nothing from us.
git clone --depth 1 https://github.com/RealSpap/authority-risk-oracle-showcase
cd authority-risk-oracle-showcase/chains/zcash/scripts
# 1. re-derive every leaf, the Merkle root and the commitment from the records, and check each inclusion proof
python3 attest_scores.py verify ../data/testnet_attestation_v2_six_live_2026-09-20.json
# 2. the commitment (the OP_RETURN data, ARO2 plus 32 bytes) is in the raw transaction 462de12bf72e5e635a1feed4a4cedb02c03f17745bd15176787f8f5f8fcd701c
curl -s https://api.testnet.cipherscan.app/api/tx/462de12bf72e5e635a1feed4a4cedb02c03f17745bd15176787f8f5f8fcd701c/raw | python3 -c "import json,sys; h=json.load(sys.stdin)['hex']; print('41524f32214f8105de87576532d84c10e86478c6228bb54a7e426dfb4c349f7dcaeb24ca' in h)"
# 3. when and where the transaction was mined
curl -s https://api.testnet.cipherscan.app/api/tx/462de12bf72e5e635a1feed4a4cedb02c03f17745bd15176787f8f5f8fcd701c | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['blockHeight'], d['blockTime'], d['status'])"Expected
1 -> 6 proofs OK, self re-derivation: MATCH, VERIFY PASS 2 -> True 3 -> 4371248 1789932225 confirmed
A script turns every target returned by the Zcash scorer into one commitment: a Merkle root over per-target records, hashed with a header, written as the 36-byte data of a single OP_RETURN output, the tag ARO2 followed by the commitment. The transaction is on Zcash Testnet and never on mainnet. Each target has an inclusion proof against the root, so one score can be checked without the others. The replay below re-derives the commitment from the published records, checks the six inclusion proofs and finds the commitment in the raw transaction.
# re-derive the commitment from the records and read the six scores
git clone --depth 1 https://github.com/RealSpap/authority-risk-oracle-showcase
cd authority-risk-oracle-showcase/chains/zcash/scripts
python3 attest_scores.py verify ../data/testnet_attestation_v2_six_live_2026-09-20.json | tail -4
python3 -c "import json; [print(r['target'][:12], r['compositeScore']) for r in json.load(open('../data/testnet_attestation_v2_six_live_2026-09-20.json'))['records']]"
# -> self re-derivation: MATCH, VERIFY PASS, then six targets with composites 34, 56, 56, 32, 32 and 7
# the commitment is in the raw transaction served by a testnet explorer
TX=462de12bf72e5e635a1feed4a4cedb02c03f17745bd15176787f8f5f8fcd701c
curl -s https://api.testnet.cipherscan.app/api/tx/$TX/raw | python3 -c "import json,sys; h=json.load(sys.stdin)['hex']; o=json.load(open('../data/testnet_attestation_v2_six_live_2026-09-20.json'))['opReturnDataHex']; print(o in h)"
# -> TrueSprout and Sapling use Groth16 proofs with a trusted setup, from a ceremony of 6 participants for Sprout and around 90 per round for Sapling; Orchard and Ironwood use Halo 2, which does not need one. If a ceremony's hidden structure were recovered, fake proofs could counterfeit funds in that pool. The note decides not to turn this into a 0 to 100 number: every other score here comes from a read that can be repeated today, while whether at least one participant was honest is an assumption about past conduct that no read can answer. A number would look as checkable as the others and would not be.
# the primary source: ZIP 224 on the Orchard proving system
curl -s https://zips.z.cash/zip-0224 | python3 -c "import sys,re; t=re.sub(r'\\s+',' ',re.sub(r'<[^>]+>',' ',sys.stdin.read())); i=t.find('does not require an SRS'); print(t[i-120:i+30])"
# -> a sentence that ends: ... a proving system that is both amenable to recursion and does not require an SRSReading the coinbase payout of the last 2000 blocks, the top three transparent addresses together receive more than half of them (57.9 percent on 26 September 2026). The two largest addresses without a published label, at 27.2 and 7.0 percent that day, could not be attributed: the note records a search through mining pool sites, block explorers and the Zcash forum, found no primary source naming either, and publishes that as a negative result instead of a guess. This concentration is part of the Zcash L1 score. The replay prints the shares of today's window.
# the tip of the chain, then the payout shares of the 2000 blocks before it git clone --depth 1 https://github.com/RealSpap/authority-risk-oracle-showcase cd authority-risk-oracle-showcase/chains/zcash/scripts HOST=zec.rocks:443 TIP=$(python3 zcash_read.py info $HOST | sed -n 's/^blockHeight=//p') python3 miner_concentration.py $HOST $((TIP-2010)) $((TIP-10)) | tail -3 # -> the three largest shares sum above 50 percent: addresses_to_exceed_50pct=3 (a changing window: the number can move)
6 targets are tracked on Zcash, scored and attested in a signed commitment on Zcash Testnet. Bands of the composite score:
| critical | 1 |
|---|---|
| weak | 3 |
| moderate | 2 |
Up to 6 targets, ordered by value where known, then by lowest score.
| Target | Composite | Band |
|---|---|---|
| zec.omft.near (NEAR PoA bridge, ZEC) | 7 | critical |
| ZCG funding stream (FS_FPF_ZCG_H3) | 32 | weak |
| ZIP 271 one-time lockbox disbursement | 32 | weak |
| Zcash L1 (consensus-rule-change authority) | 34 | weak |
| Maya Protocol Asgard vault mayapub1addwnpepqdgafgd6... (native ZEC custody, TSS) | 56 | moderate |
| Maya Protocol Asgard vault mayapub1addwnpepq24t2hk5... (native ZEC custody, TSS) | 56 | moderate |
Read from the public repository and the Watch at build, 2026-10-15 21:09 UTC. A finding is a dated reading with its replay, not an audit and not investment advice. All chain files ยท Dashboard.