Transparent and Spark View Key Support

Monero has a feature, and several implementations, where you can give a payment processor a "view only key” and from this key you can generate unique deposit addresses and detect incoming payments, but it cannot spend anything or monitor the total balance of the wallet. The private key stays with the merchant rather than live on a remote server, greatly reducing the risk of exposure or compromise.

This doesn’t exist in any current Firo payment processors that I’m aware of for transparent or Spark addresses. The screenshots show how Firo displays the current balance which should not be available in a view only implementation.

I’ve implemented the on server method with my own payment processor using a Monero view only key, but a Firo wallet has to live on the server with the ability to spend for transparent or Spark payments to work. In my opinion, transparent and Spark should have this for third party view only integrations.

Summary: While working on the current RPC proposal it’s become clear that there is a part 2 and 3 that would be very useful to have.

  1. A TypeScript HD wallet library for transparent addresses (necessary for a transparent view only key merchant system).

  2. A separate implementation that is 100% unique to Spark that is also capable of generating unique addresses from a view only key.

If I’m mistaken and someone would be willing to discuss this it would be much appreciated. If not, I personally would really like to do the transparent implementation following the acceptance of my current work, which can be discussed later if there is interest. Currently just seeking feedback.

1 Like

The technical implementation stems from the existence of both Spark addresses and the transparent nature of certain funds. To the best of my knowledge, Firo does not currently offer functionality analogous to Monero View keys or Bitcoin’s xpub/ypub/zpub’s extended public keys. Is that right?

Although supposedly according to official Firo documentation:

Spark allows incoming and full view keys that provide flexibility in transaction visibility. With view keys, wallet owners can grant third parties opt-in visibility into incoming and/or outgoing transactions to their wallet addresses.

Presenting Lelantus Spark, Firo’s Flexible New Privacy Protocol | Firo - Privacy-preserving cryptocurrency

However I have not found I have been unable to locate any wallet software particularly desktop wallets that facilitates the generation of “view-only wallets” for Firo???

A desktop based solution would be strongly preferable, as one could readily remove the Wi-Fi card to establish a fully air-gapped environment. Mobile devices should be regarded as a last resort for generating offline view-only wallets, given the nature of phoning home. That said, importing a view-only wallet generated on an air-gapped device into a mobile wallet via QR code is considered very safe. If the phone became a compromised device, attackers would not possess the capacity exfilarating funds and can’t spend the funds.

If such functionality of view keys/view only wallets exist, it ought to be comprehensively documented, with clear guidance as to which wallets currently support this feature. Given you mentioned the merchant side of view keys the other aspect is the secure savings side.

People can use hardware wallets but their is risks to them, though I might be paranoid, one of them…is most HW wallets like ledger are USB (HID) so iykyk.

There is a view key in Firo Core wallet and Stack wallet shows view keys as well for Spark, so I assume Campfire as well based on what I’m looking at. There are RPC methods around this that I’m working on adding to the RPC library currently. So I know it exists, what I’m not sure of is if the smaller tool to create unique addresses per invoice exists.

Transparent would require a similar tool to some that exist for Bitcoin, so it’s not a huge task I don’t think. However, Spark would require quite a bit more effort, or at least Spark specific knowledge for someone to make. I’m not sure I’m there yet, which is part of why I ask.

We already have a Spark view key support which is in Stack wallet that acts like a full view key (sees all incoming/outgoing and amounts) without giving spend authority.

I did see that in the electrumx repo after some digging, it is there. Thanks. You can’t use a regular node though correct, it needs to run with electrum like stack does correct? My main question was more specifically pertained to whether it’s possible to have a view key and use it in a regular node to detect transactions and derive unique addresses. I know Spark does work within the electrum integration for the wallet.