Skip to content
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

Design user flow for automated test transactions for large payments #112

Open
rabbitholiness opened this issue Jul 10, 2024 · 6 comments
Open
Assignees
Labels

Comments

@rabbitholiness
Copy link
Contributor

rabbitholiness commented Jul 10, 2024

Based on this comment, this issue is about designing a user flow for automated test transactions.

The basic idea is that if a transaction value is higher than a certain amount, or a certain percentage of the wallet's balance, the app would allow users to send a small test payment before sending the full amount. Such a feature could help users be more comfortable when making large payments.

Sending test transactions is already a common practice for large transactions. Reason for this dedicated feature is that there is anxiety around making a mistake setting up the follow-up transaction. That anxiety could be removed by making this simple logic a formal wallet feature. This might lead to more people doing test transactions and therefore fewer losses related to them. Of course, there's the downside of paying fees for two transactions.

This idea is probably more of future addition beyond the MVP. The goal for this issue is to create a design exploration as a reference for future implementation, as well as to get some feedback on the feature's usefulness.

test_transaction_screenshot

@rabbitholiness
Copy link
Contributor Author

I have created an initial prototype of how this could look like in this Figma prototype

@GBKS
Copy link
Contributor

GBKS commented Jul 10, 2024

Worth mentioning your social post and the feedback you received about alternative methods. It would be nice to somehow avoid one of the fees by cleverly using the mempool, replace-by-fee, etc. Not sure I can actually piece together a proper way of making that work technically...

@rabbitholiness
Copy link
Contributor Author

rabbitholiness commented Jul 10, 2024

I posted a short video walkthrough on TwiX and got some interesting comments. One of them was this one, where Jason suggests to:

  1. Create a low fee transaction first , just to get in the mempool.
  2. Confirm with the recipient that they see the transaction
  3. Use RBF to bump the fee and send

Here is another suggestion, following the same direction.

@rabbitholiness
Copy link
Contributor Author

Worth mentioning your social post and the feedback you received about alternative methods. It would be nice to somehow avoid one of the fees by cleverly using the mempool, replace-by-fee, etc. Not sure I can actually piece together a proper way of making that work technically...

I was just doing that, while you were posting your reply

@rabbitholiness
Copy link
Contributor Author

I mocked up a version that uses RBF instead of a dedicated test transaction. Makes for smoother UX and lower fees. Also posted it on X and Nostr to see what people think.

RBF.for.large.transactions.mp4

@GBKS
Copy link
Contributor

GBKS commented Jan 7, 2025

Related to this, Kraken these days requires a so-called Satoshi test transaction to verify ownership of a self-custodial wallet. Users are asked to transfer a specific amount of sats to Kraken, in order to prove that they control the wallet. After that they can transfer the full amount. Not exactly this feature we're discussing here, but similar.

Not really sure how this work when someone properly manages their UTXOs and deals with many separate addresses. The test only validates a specific address, not a whole wallet. Is the test necessary per unique address? The language used in the help page linked above is not clear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants