Skip to content
Back to the list

Rust core · Android + web

VDG FundTrail

Scanning approval traps on USDT TRC20 wallets

People watch their balance, but on TRON the dangerous thing is the list of allowances already granted. An unlimited approval signed months ago is still live, and every USDT arriving in the wallet can be pulled straight out. The app scans exactly there.

Installed software — no public demo.

  • Rust
  • TRON / TRC20
  • Android
  • Web

§ 01Algorithm

Quét approval TRC20 — rủi ro nằm ở quyền đã cấp, không ở số dư
# Trên TRON, ví bị rút sạch KHÔNG cần chữ ký mới:
# chỉ cần trước đó đã cấp approval không giới hạn cho một spender.
# Nên thứ phải quét là DANH SÁCH QUYỀN, không phải số dư.

scan(wallet):
  approvals ← on_chain_allowances(wallet, TRC20)
  for a in approvals:
      a.risk ← 'nguy hiểm'  nếu a.allowance = ∞
                            hoặc a.spender ∉ {owner, hợp đồng đã biết}
                            hoặc a.spender ∈ blacklist
  return approvals where risk = 'nguy hiểm'      # "24 bẫy đang mở"

# Mỗi bẫy hiển thị đủ bằng chứng để tự kiểm chứng ngoài app:
#   spender · hạn mức đã cấp · txid cấp quyền · thời gian · số ngày còn hiệu lực
#   → kèm link mở thẳng Tronscan

capabilities:
  ✓ đọc on-chain của CHÍNH ví người dùng
  ✗ private key   ✗ seed phrase   ✗ ký giao dịch
# Thu hồi quyền phải tự làm ở ví thật — app chỉ hướng dẫn.

§ 02Highlights

  • Scans open TRC20 approvals, flagging unlimited allowances and unknown spenders
  • Every trap comes with evidence: spender, allowance, granting txid, timestamp, days live
  • Cross-checks spenders against an address blacklist
  • Direct Tronscan links so findings can be verified outside the app
  • No private key, no seed phrase, no transaction signing
  • Shared Rust core across web and Android clients

§ 03Screens

VDG FundTrail01
VDG FundTrail02