-
Notifications
You must be signed in to change notification settings - Fork 16
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
[#1092] Adopt proposal API #1117
[#1092] Adopt proposal API #1117
Conversation
For ZIP 320 support, the case where only the first transaction succeeds is essentially identical to the case where the exchange sends back the funds: both leave the funds in the ephemeral t-addr. I was under the impression that handling the latter was required for Zashi 1.0. So why can't we handle the former correctly? |
For ZIP 320 support, from a control of funds position, yes. But they are semantically two very different cases, and we have not done the UX work to distinguish them, or handle how the resulting transaction history is conveyed to users.
I was not: my understanding is that we need to be able to send to TEX addresses (which covers the majority use case), but not that we need to handle exchanges sending funds back (which is an edge case). I think we should handle both exchanges sending funds back, and transaction submission failures, in-app eventually. But I also think that handling this properly with good UX requires more engineering than we have time for in the 1.0 timeline, so it would go in a post-1.0 release. Having an error indicating to users when they have hit this edge case is the minimal amount of engineering we can do here, while avoiding those edge case users believing they have lost funds.
There are at least four different states we could be in here that I can think of (for ZIP 320 proposals; more if we also consider arbitrary proposals which the SDK might generate or need to handle in future):
Each state needs to be handled differently; some states have multiple possible resolutions. None of this has been discussed or planned yet, and I don't think we have time to do so for 1.0. |
I completely agree that an ideal UX would distinguish those (except possibly that the refund and drive-by cases might sometimes be indistinguishable), and that an ideal UX for this in Zashi can wait until after 1.0. Where I disagree is that I don't think any of them need to result in any possibility of funds loss. Just allocate the ephemeral address in a way that guarantees that we scan it. That's a matter of how zcash_client_backend interacts with the protocol, not a UX decision for Zashi. |
0e03acc
to
633979c
Compare
modules/Sources/Dependencies/SupportDataGenerator/SupportDataGenerator.swift
Outdated
Show resolved
Hide resolved
modules/Sources/Features/BalanceBreakdown/BalanceBreakdownView.swift
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK modulo text changes.
I agree, and am not arguing for this!
I agree with "Just allocate the ephemeral address in a way that guarantees that we can scan it" - this is sufficient to guarantee no loss of funds. I disagree with actually scanning it in 1.0, because per my comment above that would require UX work to explain to the user what is going on in all of the different states that scan might occur from, that we do not have time for. Only one of the four states I outlined is transient (it decays to the second state after about an hour), but three of the states are permanent, distinguishable, and "automatically re-shield" is not necessarily the correct resolution to all three. (Plus it opens us up to race conditions in other edge cases, the avoidance of which requires more engineering that we don't have time for.) For 1.0, informing the user and telling them to contact us means that a) we don't make permanent changes to their wallet history that might be undesirable, and b) means that we learn about these edge cases if they occur, which helps us to craft better UX here. |
633979c
to
b06825f
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted
5a6dc97
to
00157f1
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change
00157f1
to
1149429
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup
1149429
to
4253ca5
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup
4253ca5
to
4a8b334
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - proposed total fee
4a8b334
to
1fb2221
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - proposed total fee
1fb2221
to
34fec3f
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - proposed total fee
34fec3f
to
1bf484c
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - proposed total fee [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - Final copy
c67323d
to
7febbd5
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - proposed total fee [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - Final copy [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - Transaction statuses added
7febbd5
to
5a4fde8
Compare
- TCA sdkSYnchronizer dependency extended with 3 new Proposal APIs - proposeTransfer tested, works as expected [Electric-Coin-Company#1092] Adopt proposal API - send transaction via new proposal API implemented [Electric-Coin-Company#1092] Adopt proposal API - code cleaned up and finished [Electric-Coin-Company#1092] Adopt proposal API - unit tests fixed [Electric-Coin-Company#1092] Adopt proposal API - Typical Fee < 0.001 localized and updated in the UI [Electric-Coin-Company#1092] Adopt proposal API - awaiting all transaction results with use of new proposal.transactionCount() method [Electric-Coin-Company#1092] Adopt proposal API - Implemented new PartialProposalError reducer and view - Contact support mail with transaction IDs logic implemented - Fallback to share logic implemented - PPE integrated into SendFlow - PPE integrated into Shielding [Electric-Coin-Company#1092] Adopt proposal API - Changelog updated [Electric-Coin-Company#1092] Adopt proposal API - SDK's fee constant removed [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - debug code reverted [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - copy change [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - code cleanup [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - proposed total fee [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - Final copy [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - Transaction statuses added [Electric-Coin-Company#1092] Adopt proposal API (Electric-Coin-Company#1117) - tests fixed
5a4fde8
to
28a88a9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving with two non-blocking questions inline. Thank you.
Closes #1092
Typical Fee < 0.001
localized and updated in the UIPPE
integrated into SendFlowPPE
integrated into ShieldingThis code review checklist is intended to serve as a starting point for the author and reviewer, although it may not be appropriate for all types of changes (e.g. fixing a spelling typo in documentation). For more in-depth discussion of how we think about code review, please see Code Review Guidelines.
Author
Reviewer