Monero Web Wallet Built on Official monero-wallet-rpc Adds Digest Authentication, Two-Phase Transfers and BigInt Precision

A developer created a non-custodial Monero web wallet that runs entirely on the user's machine and communicates only with a personal monero-wallet-rpc instance. The project retained all key-handling logic inside the official RPC daemon while adding a custom backend, frontend and supporting infrastructure. Eight practical challenges were documented, including HTTP Digest authentication that is tightly coupled to TCP connections and the silent loss of monetary precision caused by JSON.stringify on large numbers. The solution introduced two-phase transaction submission to reduce the risk of broadcast errors and replaced floating-point arithmetic with BigInt to guarantee exact handling of Monero amounts. The resulting implementation demonstrates how to expose a convenient web interface without introducing custodial risk or weakening the security model of the Monero wallet RPC.

HabrTranslated from Russian

Read at source

A developer published a detailed account of building a Monero web wallet that relies exclusively on the official monero-wallet-rpc daemon. The goal was to obtain a convenient browser-based interface while keeping every private key on the user's own machine and directing all traffic to a self-hosted node.

All cryptographic operations remained inside the trusted RPC process. The custom layer consisted of a Node.JS backend, a web frontend and the supporting infrastructure required to make the service usable in a browser.

One of the first obstacles was HTTP Digest authentication. The developer discovered that the authentication state is bound to the underlying TCP connection, which created unexpected failures when proxies or load balancers were introduced.

To mitigate broadcast risks, a two-phase submission flow was implemented. The first phase creates and signs the transaction; the second phase performs the actual broadcast only after the user has confirmed the details.

Monetary amounts proved especially fragile. The author found that JSON.stringify silently truncates precision for numbers exceeding JavaScript's safe integer range, leading to incorrect balances and failed transfers.

The fix replaced all floating-point and native Number usage with BigInt arithmetic, ensuring that every Monero denomination is handled exactly without rounding errors.

The article lists eight such engineering pitfalls and the concrete work-arounds adopted, providing a practical reference for anyone integrating monero-wallet-rpc into a web application.

Meridian digestThe week's most consequential security stories, distilled into one briefing.See the digest

More in Crypto & Financial Crime

Bitget Loses $351 Million in Record 2026 Crypto Theft After Attackers Forge Internal Transfers
Address Substitution Attacks Exploit Partial Address Checks in Crypto Wallets
Liquid Network Federation Wallet Drained of 4000 BTC in Alleged White-Hat Exploit Exposing L-BTC Minting Flaw