Electric-Coin-Company / zcash-android-wallet-sdk

Native Android SDK for Zcash
MIT License
5 stars 9 forks source link

Integrate Orchard support #1418

Closed str4d closed 5 months ago

str4d commented 5 months ago

Closes Electric-Coin-Company/zcash-android-wallet-sdk#528. Closes Electric-Coin-Company/zcash-android-wallet-sdk#761.

Note This 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

[^1]: Code often looks different when reviewing the diff in a browser, making it easier to spot potential bugs. [^2]: While we aim for automated testing of the SDK, some aspects require manual testing. If you had to manually test something during development of this pull request, write those steps down. [^3]: _While we are not looking for perfect coverage, the tool can point out potential cases that have been missed. Code coverage can be generated with: ./gradlew check for Kotlin modules and ./gradlew connectedCheck -PIS_ANDROID_INSTRUMENTATION_TEST_COVERAGE_ENABLED=true for Android modules._ [^4]: Having your code up to date and squashed will make it easier for others to review. Use best judgement when squashing commits, as some changes (such as refactoring) might be easier to review as a separate commit. [^5]: In addition to a first pass using the code review guidelines, do a second pass using your best judgement and experience which may identify additional questions or comments. Research shows that code review is most effective when done in multiple passes, where reviewers look for different things through each pass. [^6]: While the CI server runs the demo app to look for build failures or crashes, humans running the demo app are more likely to notice unexpected log messages, UI inconsistencies, or bad output data. Perform this step last, after verifying the code changes are safe to run locally.

str4d commented 5 months ago

Force-pushed to implement the missing Orchard subtree fetch logic.

I'm now getting the following error in the demo app:

CompactBlockProcessor.scanBatchOfBlocks$zcash_android_sdk_2_0_8_release(): Failed while scanning batch BlockBatch(order=20, range=BlockHeight(value=2354647)..BlockHeight(value=2354746), blocks=100) with java.lang.RuntimeException:
Rust error while scanning blocks (limit 100):
The underlying datasource produced the following error:
An error occurred accessing or updating note commitment tree data:
An error occurred persisting or retrieving tree data:
Conflict at checkpoint id 2354646, tried to insert Checkpoint { tree_state: AtPosition(Position(48693728)), marks_removed: {} }, which is incompatible with existing state (AtPosition(Position(48693726)), None).
str4d commented 5 months ago

Rebased on #1411 after recent main was merged back into it.

str4d commented 5 months ago

Force-pushed to migrate to latest published crate versions (which include bugfixes identified via the Swift SDK), and to send change to the Orchard pool.