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.


