-
-
Notifications
You must be signed in to change notification settings - Fork 135
Spark Wallet #2575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Spark Wallet #2575
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
da6434d to
983a638
Compare
b648893 to
f2dab0c
Compare
|
Hey @dangeross, since you mentioned to keep you updated, I hope you can help me with this: I read in the TG group that the public beta is next week. Is this related to the error I'm seeing in this video when calling
2025-09-28.23-23-39.mp4In the video, I am using a regtest invoice but it also happens with a mainnet invoice. The relevant code is in wallets/client/protocols/spark.js of this PR. |
Hey. It changed to |
|
But I am using |
|
Yep, I think only the latest includes it |
|
Ok, cool, this worked! I updated to v0.2.1. I also had to change I now get this expected error for regtest invoices:
When I try a mainnet invoice,
but it actually succeeds to pay the invoice! |
Can you raise this in Telegram if this is still an issue? |
3afe69a to
e0ea694
Compare
8e61892 to
e13ecf3
Compare
02eab51 to
8066f79
Compare
5c9bb26 to
7697875
Compare
b2bc871 to
8ff4785
Compare
We proxy all invoices so it should be relatively cool ... timing analysis is still possible though, but that's harder to communicate. afaict so long as they aren't importing their seed into another wallet, and assuming someone does timing analysis and our feature set remains the same, the privacy loss they might suffer is limited to:
I might be missing something but it'd be nice to enumerate all these. (1) and (2) probably can't be fixed by us. (4) we might be able to proxy. (3) we can outright prevent if need be. |
|
To give stackers the option to unilaterally exit we might need to store additional data: https://docs.spark.money/learn/withdrawals#unilateral-exit
Then step 3:
To provide unilateral exits, it sounds like we need to store this additional state after each payment. |
Sounds pretty complete to me, but I will think more about it. Fwiw, I just verified that anyone can indeed find out my balance using my Blitz lightning address ([email protected]) as described here. I sent 444 sats to it and then waited (might take a few minutes) until the tx shows up here with my Spark address next to it.
Ohhh, good catch |
Description
close #2538
TODO
🪲 fix "Channel has been shut down" thrown bywasn't an issue with the SDK but withwallet.createLightningInvoice()grpc_proxy🚧 'next' button of send form does not always pulse to indicate loadingunrelated to this PRTODOs out-of-scope of this PR
Privacy
We could deduct a small randomized amount from the amount we forward, but I think the anonymity set on the statechain will be too small (for now?) anyway, especially for small forwarded amounts, and this will be terrible UX and requires explaining it to the user.
Also, it's a bandaid and it should be fixed on the protocol level by not reusing addresses or buildonspark/sip#2.
What works in our favor here is that we don't tell senders which wallet a receiver is using.
So maybe all we can do here is to warn users that their balance is basically public.
Screenshot
Checklist
Are your changes backward compatible? Please answer below:
yes
On a scale of 1-10 how well and how have you QA'd this change and any features it might affect? Please answer below:
7. I tested with Phoenix on mainnet and this patch:For frontend changes: Tested on mobile, light and dark mode? Please answer below:
n/a
Did you introduce any new environment variables? If so, call them out explicitly here:
no
Did you use AI for this? If so, how much did it assist you?
no
Note
Add Spark wallet support (send via mnemonic, receive via identity public key) with schema/models, client/server integration, validation, and UI warning.
upsertWalletSendSpark,upsertWalletRecvSpark,testWalletRecvSpark; extendWalletProtocolConfigwithWalletSendSpark/WalletRecvSparktypes.SPARKto enums; create tablesWalletSendSpark(mnemonic vault) andWalletRecvSpark(identityPublicKey); insertWalletTemplateforSPARK; map resolve types.SPARKcreateInvoice/test using Spark SDK and random wallet.SPARKsend (poll status, return preimage) and test (returnsidentityPublicKey).initial; prefill/propagateSPARKidentityPublicKey; add wallet warning banner; include Spark in selector.encryptedMnemonicandidentityPublicKeyin wallet fragments.bip39; addidentityPublicKeyvalidator.spark.svg(and*-dark.svg) and entry inwallets.jsonwith warning.@buildonspark/spark-sdk,bip39.Written by Cursor Bugbot for commit 0ba7b8f. This will update automatically on new commits. Configure here.