dumbtv
dumbtv가 ADB로 Fire TV에서 광고·추적·업데이트 알림을 제거, 루트·앱 변경 없이, 무료 오픈소스
보호된 Zcash 활동의 왕복 거래·빠른 출금·지문 금액을 찾아보고, 인출 전 확인할 수 있습니다
Find the round trips, quick exits and fingerprint amounts that link your shielded Zcash activity, and check a withdrawal before you make it.
보안TypeScript · HTMLGitHub @luoy16002-svg온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A privacy checkup for Zcash wallets: finds the round trips, quick exits and fingerprint amounts that link shielded activity, and checks a withdrawal before you make it.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A privacy checkup for Zcash wallets. Shielded transactions hide who paid whom and how much. How you enter and leave the shielded pool can still link your addresses together. Tells reads a wallet's history through its viewing key, on your own machine, and shows what an outside observer can connect. Run it before a withdrawal and it proposes a safer way to make it.
The first studies of the Zcash chain found that simple patterns undo most of the privacy people think they have:README 전문 보기 ↗A privacy checkup for Zcash wallets. Shielded transactions hide who paid whom and how much. How you enter and leave the shielded pool can still link your addresses together. Tells reads a wallet's history through its viewing key, on your own machine, and shows what an outside observer can connect. Run it before a withdrawal and it proposes a safer way to make it.
Live: https://luoy16002-svg.github.io/tells/
The first studies of the Zcash chain found that simple patterns undo most of the privacy people think they have:
Wallets today warn about transparent addresses, but nothing tells a user "this withdrawal will link you to the deposit you made an hour ago." Tells does, before the transaction exists.
Only three things cross the pool boundary in public: an amount, a block time and a transparent address. Every rule uses nothing else, so every finding is something anyone reading the chain can also find.
| Rule | What it catches | Severity |
|---|---|---|
| Round trip | An exit within a fee (or 0.1%) of an earlier entry | Critical under 2 h, high under a day; up for unique amounts, down for round ones |
| Sum match | An exit equal to two or three recent entries added together | Like round trips |
| Quick exit | Leaving the pool within a day of entering, even with different amounts | High under 1 h |
| Fingerprint amounts | Crossings with four or more decimals (round amounts minus a fee count as round) | Low to medium |
| Address reuse | One transparent address on several crossings | Low to medium |
| Transparent payments | Transparent-to-transparent spends | Low to medium |
| Pool migrations | Sapling, Orchard and Ironwood moves publish their amount | Low |
| Crowd size | Other people's look-alike entries and exits in the same window: exits from compact blocks, entry amounts by resolving each shielding transaction's transparent inputs | Lowers a link by one or two levels |
Measured on mainnet blocks 3,504,400–3,504,495 (about two hours), Tells resolved all 50 shielding transactions: 36 had no look-alike entry, 10 had one and 4 had three. The first run fetched 162 transactions in 45 seconds; a repeat run reads them from the on-disk cache in under a second.
Pre-flight takes a planned withdrawal (amount, time, destination), runs the same rules as if it had happened, and if it is risky proposes alternatives: wait, send a round amount and keep the remainder shielded, split, or use a fresh address. Every alternative is re-checked before it is shown.
Open the live page, look at the sample wallets, try the pre-flight, or drop your own history.json (made below). The page runs entirely client-side.
You need a unified full viewing key (uview1...), which can see your history but cannot spend, and the wallet's birthday height. With Node 22 or newer:
npx github:luoy16002-svg/tells scan --ufvk uview1... --birthday 2726400 --out history.json
This creates a view-only wallet in a temporary folder, syncs it from lightwalletd (zec.rocks by default) with zcash-devtool, prints the checkup and writes history.json for the web page. If zcash-devtool is not on your PATH and you pass no --devtool, Tells downloads a build of the pinned upstream commit made by this repository's public scanner workflow, and checks it against the release's SHA256SUMS. Behind a proxy, set HTTPS_PROXY and NODE_USE_ENV_PROXY=1.
Other commands:
tells report <wallet-dir | history.json>
tells preflight <wallet-dir | history.json> --amount 0.75 --at 2026-10-04T12:00Z --to t1...
tells export <wallet-dir> --out history.json
The rules are a dependency-free TypeScript package (packages/core) that runs in a browser, Node or a mobile JavaScript engine:
import { preflight } from '@tells/core';
const check = preflight(history, { amount: 54_311_000, time: Date.now() / 1000, address: recipient });
if (check.verdict === 'risky') showWarning(check.findings[0].title, check.alternatives);
packages/core rules, scoring, pre-flight (TypeScript, no dependencies, tested with vitest)
packages/cli reads a zcash_client_sqlite wallet (Node's built-in SQLite), drives zcash-devtool for scans
apps/web the checkup page (Vite, plain TypeScript, hand-drawn SVG timeline)
demo/ testnet histories made with real transactions
The CLI reads v_received_outputs, v_received_output_spends and sent_notes from the wallet database to rebuild, per transaction, what the account spent and received in each pool (transparent, Sapling, Orchard, Ironwood). Crossings are derived from those flows the way an observer sees them: value entering or leaving the shielded pools, and moves between them.
zcash-devtool on your machine, which talks to a lightwalletd server like any light wallet does. Use --server to choose one you trust, or route over Tor with zcash-devtool's --connection tor.history.json is read in the browser and never sent anywhere.--entry-crowd-max-blocks and --entry-crowd-max-transactions). A window that hits a cap or a fetch error is reported as incomplete and never lowers a severity.MIT. Built by Kai Chen for the Colosseum Crypto World's Fair (Zcash track).