Private eth_getBalance
Look up an Ethereum balance from a server that cannot tell which account you asked about. The query is built here, in your browser, as LWE ciphertext; the address never leaves this page.
Setting up the private client
Loading…
This downloads the PIR hint — the preprocessed public matrix that lets your browser decode an answer without telling anyone what it asked. It is the price of the privacy: the alternative is a server that simply reads your address. It is downloaded once per session and never sent back.
What this does not protect
-
The code you are running. This page and its WebAssembly came from the
same server you are querying. PIR stops that server from learning your address
if the client is honest — but whoever serves the page chooses what the client
is. Over plain HTTP, so does anyone on the network path. For a stronger guarantee, run
the client yourself:
risepir-rpc client --pir-url …puts the same rewind client on your own machine, and the wasm here is built from that same Rust. - Who is asking. The cryptography hides which account, not who wants to know. The server sees your IP address, the time, and how often you ask. Use Tor (or any anonymising transport) if that matters to you; this client works fine over one.
- Freshness. Answers are as of the latest finalized block, roughly 13 minutes behind what a block explorer shows. That is deliberate: finalized blocks do not reorganise, so an answer cannot be quietly invalidated. A balance that changed in the last few minutes will not appear yet.
-
Partial data set. This server only tracks accounts that have been
touched since it started, so most addresses will return “not in the tracked set”.
That is an error, never
0— for an untracked account, absence tells you nothing about the balance, and answering zero would be a wrong answer.