Dev Update 23 Sep 2025

Last week by the numbers

neptune-core

neptune-proton

Neptune Happenings

This week was all about wallet development.

QR Codes in neptune-proton wallet.

@danda added a prototype implementation of QR codes to neptune-proton this week. Both Generation Addresses and symmetric key “addresses” are supported.

important: symmetric key “addresses” are only intended for sending to self, since anyone with the key can spend the funds. They are normally used as change addresses since they require much less blockchain space for the associated announcement.

Neptune’s default address-type is called a Generation Address. These addresses, when bech32m encoded, are over 3600 ascii (7-bit) chars. This barely fits into the very largest QR code level (level 40) at the lowest level of error correction. In preliminary testing, it was determined that some typical laptop webcams do not have sufficient resolution to reliably read addresses encoded in this manner. Another solution is needed.

Two primary options present themselves:

  1. JabCodes. a barcode format that uses color and can encode much more data.
  2. Animated QR. break the data into multiple QR images displayed in sequence.

Unfortunately JabCodes do not presently have a pure rust implementation, which means they cannot be compiled for wasm32, which the neptune-proton wallet uses for the web platform.

This leaves Animated QR as the easiest solution to implement, at least for now.

The custom implementation for neptune-proton creates animated SVG files. SVG is chosen (over PNG) because it is a vector format that scales well to any display size on any device. Modern web browsers are able to display animated SVG files correctly.

Future work

  1. It seems worthwhile to refactor and extract some of the QR generation and scanning code into its own rust crate. This would be useful for anyone working on a neptune wallet.
  2. Determine optimal chunk size, number of frames, and time per frame for a generation address. Present values are somewhat arbitrary. Not critical since scanning works with any sensible variation.
  3. Evaluate if it makes sense to conform to either of these animated QR formats created in the bitcoin ecosystem:

VxBlocks Wallet merged PR for compatibility with neptune-core 0.3.0 plus. (post chain reset)

The blockchain reset introduced functionality in neptune-core (including block-proof in the block’s hash) that broke the VxBlocks Wallet. @sword-smith looked into the matter and was able to provide a fix. He also implemented a privacy-preserving method for the wallet to request membership proofs from the server without leaking privacy or amount information, by sending only the absolute index set, which is data that would eventually appear on the blockchain anyway.

Anyone interested in the details can have a look at the PR:

Another security related PR has been raised here:

Improvements to neptune-dashboard CLI wallet

@aszepieniec has been buried deep in slide preparation for an upcoming presentation but found time between slides to fix some pet peeves in the neptune-dashboard wallet, which is included with neptune-core. He simplified the mempool table display and added a UTXOs screen that provides an overview of all known UTXOs. He also fixed a sign error in neptune-core that was appearing in the dashboard.

Reminder: 0.5.0 Feature Wishlist

A wishlist has been created for the next version of neptune-core. The team is soliciting community feedback, so please add your desired features on github, or just comment in this thread.

Contributor Updates:

@aszepieniec

  • slides
  • dashboard improvements

@danda

neptune-proton wallet:

  • got desktop build working
  • implemented QR codes for wasm32 and desktop environments
1 Like