After an LN payment channel is open there is a constant need to monitor if 
it's P2WSH output has been spent, I use `addWatchedScripts` for that and it 
works great. The only UX level problem with this approach is when P2WSH 
output does get spent a user will see a strange spending tx which changes 
nothing in wallet, this may confuse many.  

So what is needed is a way to filter out purely watched transactions before 
displaying a tx list on a UI. Currently I do this as follows: 
https://github.com/btcontract/bitcoinj/commit/8475c850ef7b5d07ae7b30d605362c2dbea8d0d5,
 
the code is based on a fact that a purely watched tx does not change 
wallet's balance so it's `getValue` is 0 when watched outputs and inputs 
are excluded so we can use that when deciding if a given tx should be 
displayed.

This works but I don't like an approach because it feels hacky (`getValue` 
is essentially duplicated in `getExcludeWatchedValue`), perhaps there are 
much better ways to do that?

Other simple approaches I was thinking of which won't do:

- Immediately stop watching a P2WSH output script once it is spent so a 
related watched tx won't be shown anymore (won't do because a peer may 
attempt to spend a P2WSH output multiple times using different commit txs 
which will create a race of double spends and there's no telling which of 
them will win, so we need to continue watching a script even after the 
first spend is seen to react accordingly).

- Just filter out all txs which contain a watched P2WSH output in their 
inputs (won't do since that will filter out mutual closing tx which does 
spend a P2WSH output but is legitimate since it sends money back to user's 
wallet)

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to