Show and tell: OMIKAMI WALLET — a strictly read-only viem app; feedback on transports, getLogs & untrusted-data decoding welcome #5006
Reprisal369
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi wevm community
I built OMIKAMI WALLET, a non-custodial, read-only Ethereum dashboard on the
Sepolia testnet with viem 2.55.10 (+ wagmi 3.7.4, Next.js static export). It reads
balances, tokens, recent activity, and allowances and shows a transfer preview
no signing, no transactions, no first-party contracts yet.
viem-specific things I'd love a sanity check on:
http(...)transports (Sepolia default +mainnet-for-ENS only) rather than relying on viem's default, so a default change
can't silently move egress. A build-time allowlist + CSP connect-src enforce the
same two hosts. Is this the idiomatic way to lock egress?
getLogsin small sequential block ranges (free RPCs cap ranges / rate-limit), fault-
tolerant per range. Any pitfalls in how I page / dedupe / handle partial failures?
width stripped) before render; unknown token contracts are quarantined and never
called; addresses are EIP-55 checksummed with an address-poisoning heuristic.
Anything I'm missing in decoding/rendering log args safely?
The read-only invariant is enforced by a build gate that fails on any write/sign
action (writeContract, sendTransaction, signMessage/TypedData, switchChain,
prepareTransactionRequest, …);
transactionsEnabledis false everywhere.Full scope, threat model, test evidence and one-page reproduction:
Small typed pnpm monorepo, pure unit-tested logic (unit 94 / e2e 38), full CI,
A+ headers, CodeQL 0 open, pnpm audit 0. Any pointers welcome - thanks for viem!
Reprisal
All reactions