From 013101621455d0208bead0a11c69bb09b802133b Mon Sep 17 00:00:00 2001 From: fekt Date: Thu, 30 Jun 2022 01:53:12 -0400 Subject: [PATCH] Initial commit --- .editorconfig | 14 + .gitignore | 83 + .idea/.gitignore | 3 + .idea/.name | 1 + .idea/codeStyles/Project.xml | 134 ++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/runConfigurations/detektAll.xml | 21 + ...side-test-lib_connectedAndroidTest.run.xml | 53 + .run/_sdk-lib_test.run.xml | 23 + .run/_sdkLib_connectedCheck.run.xml | 53 + .run/assemble.run.xml | 23 + .run/assembleAndroidTest.run.xml | 21 + .run/clean.run.xml | 23 + .run/demo-app.run.xml | 60 + .run/dependencyUpdates.run.xml | 23 + .run/ktlint.run.xml | 21 + .run/lint.run.xml | 23 + .run/publishToMavenLocal.run.xml | 28 + CHANGELOG.md | 196 ++ CONTRIBUTING.md | 191 ++ LICENSE | 21 + MIGRATIONS.md | 53 + README.md | 226 +++ assets/build-variants.png | Bin 0 -> 9800 bytes assets/ndk-window.png | Bin 0 -> 242730 bytes assets/sdk-manager-icon.png | Bin 0 -> 8852 bytes assets/sdk_dev_pov_final.png | Bin 0 -> 158224 bytes assets/sdk_diagram_final.png | Bin 0 -> 455744 bytes build-conventions/build.gradle.kts | 34 + build-conventions/buildscript-gradle.lockfile | 45 + build-conventions/gradle.lockfile | 182 ++ build-conventions/settings.gradle.kts | 15 + .../zcash-sdk.android-conventions.gradle.kts | 102 + ...cash-sdk.dependency-conventions.gradle.kts | 15 + ...sh-sdk.emulator-wtf-conventions.gradle.kts | 33 + .../zcash-sdk.ktlint-conventions.gradle.kts | 41 + .../zcash-sdk.rosetta-conventions.gradle.kts | 47 + build.gradle.kts | 105 ++ darkside-test-lib/build.gradle.kts | 27 + .../src/androidTest/AndroidManifest.xml | 10 + .../darkside/MultiAccountIntegrationTest.kt | 88 + .../android/sdk/darkside/MultiAccountTest.kt | 75 + .../darkside/MultiRecipientIntegrationTest.kt | 196 ++ .../sdk/darkside/OutboundTransactionsTest.kt | 96 + .../darkside/TransparentIntegrationTest.kt | 25 + .../sdk/darkside/reorgs/InboundTxTests.kt | 102 + .../sdk/darkside/reorgs/ReorgBasicTest.kt | 53 + .../sdk/darkside/reorgs/ReorgLargeTest.kt | 239 +++ .../sdk/darkside/reorgs/ReorgSetupTest.kt | 46 + .../sdk/darkside/reorgs/ReorgSmallTest.kt | 61 + .../android/sdk/darkside/reorgs/SetupTest.kt | 75 + .../reproduce/ReproduceZ2TFailureTest.kt | 35 + .../android/sdk/darkside/test/DarksideApi.kt | 177 ++ .../android/sdk/darkside/test/DarksideTest.kt | 18 + .../darkside/test/DarksideTestCoordinator.kt | 311 +++ .../test/DarksideTestPrerequisites.kt | 57 + .../android/sdk/darkside/test/ScopedTest.kt | 91 + .../sdk/darkside/test/SimpleMnemonics.kt | 20 + .../android/sdk/darkside/test/TestWallet.kt | 175 ++ .../src/main/AndroidManifest.xml | 7 + .../src/main/res/values/bools.xml | 4 + demo-app/README.md | 76 + demo-app/assets/demo-app.png | Bin 0 -> 142839 bytes demo-app/build.gradle.kts | 123 ++ demo-app/lint-baseline.xml | 1320 +++++++++++++ demo-app/proguard-project.txt | 3 + .../sdk/sample/demoapp/SampleCodeTest.kt | 169 ++ demo-app/src/main/AndroidManifest.xml | 27 + .../cash/z/ecc/android/sdk/demoapp/App.kt | 18 + .../android/sdk/demoapp/BaseDemoFragment.kt | 97 + .../z/ecc/android/sdk/demoapp/MainActivity.kt | 161 ++ .../android/sdk/demoapp/SharedViewModel.kt | 34 + .../android/sdk/demoapp/StrictModeHelper.kt | 60 + .../demos/getaddress/GetAddressFragment.kt | 86 + .../demos/getbalance/GetBalanceFragment.kt | 101 + .../demos/getblock/GetBlockFragment.kt | 76 + .../getblockrange/GetBlockRangeFragment.kt | 118 ++ .../GetLatestHeightFragment.kt | 36 + .../getprivatekey/GetPrivateKeyFragment.kt | 92 + .../sdk/demoapp/demos/home/HomeFragment.kt | 117 ++ .../sdk/demoapp/demos/home/HomeViewModel.kt | 5 + .../ListTransactionsFragment.kt | 154 ++ .../listtransactions/TransactionAdapter.kt | 39 + .../listtransactions/TransactionViewHolder.kt | 41 + .../demos/listutxos/ListUtxosFragment.kt | 249 +++ .../demoapp/demos/listutxos/UtxoAdapter.kt | 39 + .../demoapp/demos/listutxos/UtxoViewHolder.kt | 33 + .../sdk/demoapp/demos/send/SendFragment.kt | 239 +++ .../android/sdk/demoapp/ext/FragmentExt.kt | 12 + .../z/ecc/android/sdk/demoapp/util/Ext.kt | 40 + .../android/sdk/demoapp/util/NetworkExt.kt | 13 + .../android/sdk/demoapp/util/SampleStorage.kt | 62 + .../sdk/demoapp/util/SimpleMnemonics.kt | 27 + .../drawable-v24/ic_launcher_foreground.xml | 31 + .../res/drawable/ic_baseline_check_24.xml | 10 + .../res/drawable/ic_baseline_close_24.xml | 10 + .../main/res/drawable/ic_baseline_edit_24.xml | 10 + .../drawable/ic_baseline_move_to_inbox_24.xml | 10 + .../main/res/drawable/ic_floating_action.xml | 5 + .../res/drawable/ic_launcher_background.xml | 171 ++ demo-app/src/main/res/drawable/ic_list.xml | 9 + .../src/main/res/drawable/ic_menu_address.xml | 10 + .../src/main/res/drawable/ic_menu_balance.xml | 10 + .../src/main/res/drawable/ic_menu_block.xml | 9 + .../main/res/drawable/ic_menu_block_range.xml | 9 + .../src/main/res/drawable/ic_menu_decrypt.xml | 9 + .../res/drawable/ic_menu_decrypt_range.xml | 9 + .../src/main/res/drawable/ic_menu_home.xml | 9 + .../res/drawable/ic_menu_latest_height.xml | 9 + .../src/main/res/drawable/ic_menu_memo.xml | 9 + .../main/res/drawable/ic_menu_private_key.xml | 9 + .../src/main/res/drawable/ic_menu_send.xml | 9 + demo-app/src/main/res/drawable/ic_receive.xml | 5 + demo-app/src/main/res/drawable/ic_send.xml | 5 + .../src/main/res/drawable/side_nav_bar.xml | 10 + .../src/main/res/layout/activity_main.xml | 26 + demo-app/src/main/res/layout/app_bar_main.xml | 34 + demo-app/src/main/res/layout/content_main.xml | 21 + .../src/main/res/layout/fragment_gallery.xml | 23 + .../main/res/layout/fragment_get_address.xml | 21 + .../main/res/layout/fragment_get_balance.xml | 31 + .../main/res/layout/fragment_get_block.xml | 84 + .../res/layout/fragment_get_block_range.xml | 82 + .../res/layout/fragment_get_latest_height.xml | 20 + .../res/layout/fragment_get_private_key.xml | 20 + .../src/main/res/layout/fragment_home.xml | 116 ++ .../main/res/layout/fragment_home_second.xml | 30 + .../res/layout/fragment_list_transactions.xml | 75 + .../main/res/layout/fragment_list_utxos.xml | 118 ++ .../src/main/res/layout/fragment_send.xml | 94 + .../main/res/layout/fragment_slideshow.xml | 23 + .../src/main/res/layout/item_transaction.xml | 64 + .../src/main/res/layout/nav_header_main.xml | 37 + .../main/res/menu/activity_main_drawer.xml | 49 + demo-app/src/main/res/menu/main.xml | 10 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes .../main/res/navigation/mobile_navigation.xml | 60 + demo-app/src/main/res/values-v21/styles.xml | 8 + demo-app/src/main/res/values/colors.xml | 9 + demo-app/src/main/res/values/dimens.xml | 8 + demo-app/src/main/res/values/strings.xml | 28 + demo-app/src/main/res/values/styles.xml | 29 + .../ecc/android/sdk/demoapp/DemoConstants.kt | 14 + .../src/zcashmainnet/res/values/strings.xml | 5 + .../ecc/android/sdk/demoapp/DemoConstants.kt | 14 + .../src/zcashtestnet/res/values/strings.xml | 5 + docs/-sdk-synchronizer/-init-.md | 24 + .../-sync-state/-cache-only/-init-.md | 14 + .../-sync-state/-cache-only/README.md | 26 + .../-cache-only/starting-block-height.md | 9 + .../-sync-state/-first-run.md | 8 + .../-sync-state/-ready-to-process/-init-.md | 12 + .../-sync-state/-ready-to-process/README.md | 24 + .../starting-block-height.md | 9 + docs/-sdk-synchronizer/-sync-state/README.md | 23 + docs/-sdk-synchronizer/README.md | 53 + docs/-sdk-synchronizer/active-transactions.md | 10 + docs/-sdk-synchronizer/all-transactions.md | 10 + docs/-sdk-synchronizer/balance.md | 10 + docs/-sdk-synchronizer/balances.md | 8 + docs/-sdk-synchronizer/cancel-send.md | 18 + docs/-sdk-synchronizer/cancel-spend.md | 16 + docs/-sdk-synchronizer/channel.md | 12 + .../-sdk-synchronizer/cleared-transactions.md | 8 + docs/-sdk-synchronizer/coroutine-scope.md | 12 + .../find-block-hash-as-hex.md | 5 + docs/-sdk-synchronizer/find-block-hash.md | 5 + docs/-sdk-synchronizer/get-address.md | 16 + docs/-sdk-synchronizer/get-server-info.md | 10 + .../get-transaction-count.md | 5 + docs/-sdk-synchronizer/index.md | 54 + docs/-sdk-synchronizer/is-connected.md | 10 + docs/-sdk-synchronizer/is-first-run.md | 15 + docs/-sdk-synchronizer/is-scanning.md | 10 + docs/-sdk-synchronizer/is-stale.md | 18 + docs/-sdk-synchronizer/is-started.md | 5 + docs/-sdk-synchronizer/is-syncing.md | 10 + .../is-valid-shielded-addr.md | 20 + .../is-valid-transparent-addr.md | 20 + docs/-sdk-synchronizer/last-balance.md | 11 + docs/-sdk-synchronizer/last-cleared.md | 11 + docs/-sdk-synchronizer/last-pending.md | 11 + docs/-sdk-synchronizer/latest-balance.md | 9 + docs/-sdk-synchronizer/latest-height.md | 11 + .../on-chain-error-handler.md | 9 + .../on-critical-error-handler.md | 12 + .../on-processor-error-handler.md | 10 + .../on-submission-error-handler.md | 11 + .../on-synchronizer-error-listener.md | 10 + .../on-transactions-changed.md | 5 + .../-sdk-synchronizer/pending-transactions.md | 9 + docs/-sdk-synchronizer/processor-info.md | 9 + docs/-sdk-synchronizer/processor.md | 13 + docs/-sdk-synchronizer/progress.md | 11 + .../received-transactions.md | 8 + docs/-sdk-synchronizer/refresh-balance.md | 9 + docs/-sdk-synchronizer/send-to-address.md | 26 + docs/-sdk-synchronizer/sent-transactions.md | 8 + docs/-sdk-synchronizer/start.md | 23 + docs/-sdk-synchronizer/status.md | 11 + docs/-sdk-synchronizer/stop.md | 10 + docs/-sdk-synchronizer/validate-address.md | 19 + .../validate-consensus-branch.md | 17 + .../-address-type/-invalid/-init-.md | 5 + .../-address-type/-invalid/index.md | 23 + .../-address-type/-invalid/reason.md | 5 + docs/-synchronizer/-address-type/-shielded.md | 11 + .../-address-type/-transparent.md | 11 + docs/-synchronizer/-address-type/-valid.md | 12 + docs/-synchronizer/-address-type/index.md | 28 + .../-address-type/is-not-valid.md | 5 + .../-status/-d-i-s-c-o-n-n-e-c-t-e-d.md | 9 + .../-status/-d-o-w-n-l-o-a-d-i-n-g.md | 8 + .../-status/-e-n-h-a-n-c-i-n-g.md | 9 + .../-synchronizer/-status/-s-c-a-n-n-i-n-g.md | 9 + docs/-synchronizer/-status/-s-t-o-p-p-e-d.md | 8 + docs/-synchronizer/-status/-s-y-n-c-e-d.md | 9 + .../-status/-v-a-l-i-d-a-t-i-n-g.md | 10 + docs/-synchronizer/-status/index.md | 19 + docs/-synchronizer/README.md | 52 + docs/-synchronizer/active-transactions.md | 8 + docs/-synchronizer/all-transactions.md | 8 + docs/-synchronizer/balance.md | 8 + docs/-synchronizer/balances.md | 8 + docs/-synchronizer/cancel-send.md | 16 + docs/-synchronizer/cancel-spend.md | 16 + docs/-synchronizer/cleared-transactions.md | 8 + docs/-synchronizer/get-address.md | 16 + docs/-synchronizer/get-server-info.md | 10 + docs/-synchronizer/index.md | 56 + docs/-synchronizer/is-connected.md | 9 + docs/-synchronizer/is-first-run.md | 13 + docs/-synchronizer/is-scanning.md | 9 + docs/-synchronizer/is-stale.md | 15 + docs/-synchronizer/is-syncing.md | 9 + docs/-synchronizer/is-valid-shielded-addr.md | 20 + .../is-valid-transparent-addr.md | 20 + docs/-synchronizer/last-balance.md | 9 + docs/-synchronizer/last-cleared.md | 9 + docs/-synchronizer/last-pending.md | 9 + docs/-synchronizer/latest-balance.md | 8 + docs/-synchronizer/latest-height.md | 8 + docs/-synchronizer/on-chain-error-handler.md | 9 + .../on-critical-error-handler.md | 13 + .../on-processor-error-handler.md | 13 + .../on-submission-error-handler.md | 14 + .../on-synchronizer-error-listener.md | 12 + docs/-synchronizer/pending-transactions.md | 9 + docs/-synchronizer/processor-info.md | 10 + docs/-synchronizer/progress.md | 10 + docs/-synchronizer/received-transactions.md | 8 + docs/-synchronizer/send-to-address.md | 26 + docs/-synchronizer/sent-transactions.md | 8 + docs/-synchronizer/start.md | 17 + docs/-synchronizer/status.md | 9 + docs/-synchronizer/stop.md | 15 + docs/-synchronizer/validate-address.md | 19 + .../validate-consensus-branch.md | 17 + docs/-twig/README.md | 38 + docs/-twig/clip.md | 8 + docs/-twig/index.md | 38 + docs/-twig/plant.md | 9 + docs/-twig/plus.md | 8 + docs/-twig/prune.md | 8 + docs/-twig/sprout.md | 8 + docs/-twig/twig.md | 8 + docs/Architecture.md | 1 + docs/CI.md | 52 + docs/CODE_REVIEW_GUIDELINES.md | 50 + docs/PUBLISHING.md | 93 + docs/Setup.md | 130 ++ docs/tests/Build.md | 23 + docs/tests/Darkside.md | 31 + docs/tests/Public APIs.md | 31 + gradle.properties | 113 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59821 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 234 +++ gradlew.bat | 89 + responsible_disclosure.md | 63 + sdk-lib/Cargo.lock | 1660 +++++++++++++++++ sdk-lib/Cargo.toml | 59 + sdk-lib/build.gradle.kts | 299 +++ sdk-lib/lint-baseline.xml | 48 + sdk-lib/lint.xml | 6 + sdk-lib/packages.md | 7 + sdk-lib/proguard-consumer.txt | 22 + sdk-lib/proguard-project.txt | 24 + .../1.json | 40 + .../2.json | 96 + .../3.json | 345 ++++ .../4.json | 345 ++++ .../5.json | 407 ++++ .../6.json | 419 +++++ .../7.json | 425 +++++ .../1.json | 118 ++ sdk-lib/src/androidTest/AndroidManifest.xml | 10 + .../checkpoint/badnet/1290000.json | 7 + .../checkpoint/badnet/1300000.json | 0 .../checkpoint/goodnet/1290000.json | 7 + .../checkpoint/goodnet/1300000.json | 7 + .../java/cash/z/ecc/android/sdk/AssetTest.kt | 103 + .../cash/z/ecc/android/sdk/InitializerTest.kt | 98 + .../z/ecc/android/sdk/PullRequestSuite.kt | 33 + .../android/sdk/annotation/MaintainedTest.kt | 29 + .../z/ecc/android/sdk/ext/TestExtensions.kt | 53 + .../ecc/android/sdk/integration/SanityTest.kt | 133 ++ .../ecc/android/sdk/integration/SmokeTest.kt | 62 + .../sdk/integration/TestnetIntegrationTest.kt | 144 ++ .../integration/service/ChangeServiceTest.kt | 138 ++ .../sdk/internal/SaplingParamToolTest.kt | 81 + .../sdk/internal/WalletBirthdayTest.kt | 30 + .../PersistentTransactionManagerTest.kt | 122 ++ .../z/ecc/android/sdk/jni/BranchIdTest.kt | 64 + .../z/ecc/android/sdk/jni/TransparentTest.kt | 88 + .../android/sdk/sample/ShieldFundsSample.kt | 39 + .../sdk/sample/TransparentRestoreSample.kt | 236 +++ .../cash/z/ecc/android/sdk/test/ScopedTest.kt | 91 + .../sdk/tool/WalletBirthdayToolTest.kt | 57 + .../android/sdk/util/AddressGeneratorUtil.kt | 58 + .../android/sdk/util/BalancePrinterUtil.kt | 196 ++ .../ecc/android/sdk/util/DataDbScannerUtil.kt | 142 ++ .../z/ecc/android/sdk/util/SimpleMnemonics.kt | 20 + .../cash/z/ecc/android/sdk/util/TestWallet.kt | 175 ++ .../sdk/util/TransactionCounterUtil.kt | 60 + .../z/ecc/fixture/WalletBirthdayFixture.kt | 36 + sdk-lib/src/androidTest/res/values/bools.xml | 4 + .../src/androidTest/resources/utils/seeds.txt | 18 + .../android/sdk/annotation/OpenForTesting.kt | 15 + sdk-lib/src/main/AndroidManifest.xml | 5 + .../checkpoint/mainnet/1000000.json | 7 + .../checkpoint/mainnet/1010000.json | 7 + .../checkpoint/mainnet/1020000.json | 7 + .../checkpoint/mainnet/1030000.json | 7 + .../checkpoint/mainnet/1040000.json | 7 + .../checkpoint/mainnet/1050000.json | 7 + .../checkpoint/mainnet/1060000.json | 7 + .../checkpoint/mainnet/1070000.json | 7 + .../checkpoint/mainnet/1080000.json | 7 + .../checkpoint/mainnet/1090000.json | 7 + .../checkpoint/mainnet/1100000.json | 7 + .../checkpoint/mainnet/1110000.json | 7 + .../checkpoint/mainnet/1120000.json | 7 + .../checkpoint/mainnet/1130000.json | 7 + .../checkpoint/mainnet/1140000.json | 7 + .../checkpoint/mainnet/1150000.json | 7 + .../checkpoint/mainnet/1160000.json | 7 + .../checkpoint/mainnet/1170000.json | 7 + .../checkpoint/mainnet/1180000.json | 7 + .../checkpoint/mainnet/1190000.json | 7 + .../checkpoint/mainnet/1200000.json | 7 + .../checkpoint/mainnet/1210000.json | 7 + .../checkpoint/mainnet/1220000.json | 7 + .../checkpoint/mainnet/1230000.json | 7 + .../checkpoint/mainnet/1240000.json | 7 + .../checkpoint/mainnet/1250000.json | 7 + .../checkpoint/mainnet/1260000.json | 7 + .../checkpoint/mainnet/1270000.json | 7 + .../checkpoint/mainnet/1280000.json | 7 + .../checkpoint/mainnet/1290000.json | 7 + .../checkpoint/mainnet/1300000.json | 7 + .../checkpoint/mainnet/1310000.json | 7 + .../checkpoint/mainnet/1320000.json | 7 + .../checkpoint/mainnet/1330000.json | 7 + .../checkpoint/mainnet/1340000.json | 7 + .../checkpoint/mainnet/1350000.json | 7 + .../checkpoint/mainnet/1360000.json | 7 + .../checkpoint/mainnet/1370000.json | 7 + .../checkpoint/mainnet/1380000.json | 7 + .../checkpoint/mainnet/1390000.json | 7 + .../checkpoint/mainnet/1400000.json | 7 + .../checkpoint/mainnet/1410000.json | 7 + .../checkpoint/mainnet/1420000.json | 7 + .../checkpoint/mainnet/1430000.json | 7 + .../checkpoint/mainnet/1440000.json | 7 + .../checkpoint/mainnet/1450000.json | 7 + .../checkpoint/mainnet/1460000.json | 7 + .../checkpoint/mainnet/1470000.json | 7 + .../checkpoint/mainnet/1480000.json | 7 + .../checkpoint/mainnet/1490000.json | 7 + .../checkpoint/mainnet/1500000.json | 7 + .../checkpoint/mainnet/1510000.json | 7 + .../checkpoint/mainnet/1520000.json | 7 + .../checkpoint/mainnet/1530000.json | 7 + .../checkpoint/mainnet/1540000.json | 7 + .../checkpoint/mainnet/1550000.json | 7 + .../checkpoint/mainnet/1560000.json | 7 + .../checkpoint/mainnet/1570000.json | 7 + .../checkpoint/mainnet/1580000.json | 7 + .../checkpoint/mainnet/1590000.json | 7 + .../checkpoint/mainnet/1600000.json | 7 + .../checkpoint/mainnet/1610000.json | 7 + .../checkpoint/mainnet/1620000.json | 7 + .../checkpoint/mainnet/1630000.json | 7 + .../checkpoint/mainnet/1640000.json | 7 + .../checkpoint/mainnet/1650000.json | 7 + .../checkpoint/mainnet/1660000.json | 7 + .../checkpoint/mainnet/1670000.json | 7 + .../checkpoint/mainnet/1680000.json | 7 + .../checkpoint/mainnet/1687104.json | 8 + .../checkpoint/mainnet/1690000.json | 8 + .../checkpoint/mainnet/1700000.json | 8 + .../checkpoint/mainnet/419200.json | 7 + .../checkpoint/mainnet/500000.json | 7 + .../checkpoint/mainnet/510000.json | 7 + .../checkpoint/mainnet/520000.json | 7 + .../checkpoint/mainnet/530000.json | 7 + .../checkpoint/mainnet/540000.json | 7 + .../checkpoint/mainnet/550000.json | 7 + .../checkpoint/mainnet/560000.json | 7 + .../checkpoint/mainnet/570000.json | 7 + .../checkpoint/mainnet/580000.json | 7 + .../checkpoint/mainnet/590000.json | 7 + .../checkpoint/mainnet/600000.json | 7 + .../checkpoint/mainnet/610000.json | 7 + .../checkpoint/mainnet/620000.json | 7 + .../checkpoint/mainnet/630000.json | 7 + .../checkpoint/mainnet/640000.json | 7 + .../checkpoint/mainnet/650000.json | 7 + .../checkpoint/mainnet/660000.json | 7 + .../checkpoint/mainnet/670000.json | 7 + .../checkpoint/mainnet/680000.json | 7 + .../checkpoint/mainnet/690000.json | 7 + .../checkpoint/mainnet/700000.json | 7 + .../checkpoint/mainnet/710000.json | 7 + .../checkpoint/mainnet/720000.json | 7 + .../checkpoint/mainnet/730000.json | 7 + .../checkpoint/mainnet/740000.json | 7 + .../checkpoint/mainnet/750000.json | 7 + .../checkpoint/mainnet/760000.json | 7 + .../checkpoint/mainnet/770000.json | 7 + .../checkpoint/mainnet/780000.json | 7 + .../checkpoint/mainnet/790000.json | 7 + .../checkpoint/mainnet/800000.json | 7 + .../checkpoint/mainnet/810000.json | 7 + .../checkpoint/mainnet/820000.json | 7 + .../checkpoint/mainnet/830000.json | 7 + .../checkpoint/mainnet/840000.json | 7 + .../checkpoint/mainnet/850000.json | 7 + .../checkpoint/mainnet/860000.json | 7 + .../checkpoint/mainnet/870000.json | 7 + .../checkpoint/mainnet/880000.json | 7 + .../checkpoint/mainnet/890000.json | 7 + .../checkpoint/mainnet/900000.json | 7 + .../checkpoint/mainnet/910000.json | 7 + .../checkpoint/mainnet/920000.json | 7 + .../checkpoint/mainnet/930000.json | 7 + .../checkpoint/mainnet/940000.json | 7 + .../checkpoint/mainnet/950000.json | 7 + .../checkpoint/mainnet/960000.json | 7 + .../checkpoint/mainnet/970000.json | 7 + .../checkpoint/mainnet/980000.json | 7 + .../checkpoint/mainnet/990000.json | 7 + .../checkpoint/testnet/1000000.json | 7 + .../checkpoint/testnet/1010000.json | 7 + .../checkpoint/testnet/1020000.json | 7 + .../checkpoint/testnet/1030000.json | 7 + .../checkpoint/testnet/1040000.json | 7 + .../checkpoint/testnet/1050000.json | 7 + .../checkpoint/testnet/1060000.json | 7 + .../checkpoint/testnet/1070000.json | 7 + .../checkpoint/testnet/1080000.json | 7 + .../checkpoint/testnet/1090000.json | 7 + .../checkpoint/testnet/1100000.json | 7 + .../checkpoint/testnet/1110000.json | 7 + .../checkpoint/testnet/1120000.json | 7 + .../checkpoint/testnet/1130000.json | 7 + .../checkpoint/testnet/1140000.json | 7 + .../checkpoint/testnet/1150000.json | 7 + .../checkpoint/testnet/1160000.json | 7 + .../checkpoint/testnet/1170000.json | 7 + .../checkpoint/testnet/1180000.json | 7 + .../checkpoint/testnet/1190000.json | 7 + .../checkpoint/testnet/1200000.json | 7 + .../checkpoint/testnet/1210000.json | 7 + .../checkpoint/testnet/1220000.json | 7 + .../checkpoint/testnet/1230000.json | 7 + .../checkpoint/testnet/1240000.json | 7 + .../checkpoint/testnet/1250000.json | 7 + .../checkpoint/testnet/1260000.json | 7 + .../checkpoint/testnet/1270000.json | 7 + .../checkpoint/testnet/1280000.json | 7 + .../checkpoint/testnet/1290000.json | 7 + .../checkpoint/testnet/1300000.json | 7 + .../checkpoint/testnet/1310000.json | 7 + .../checkpoint/testnet/1320000.json | 7 + .../checkpoint/testnet/1330000.json | 7 + .../checkpoint/testnet/1340000.json | 7 + .../checkpoint/testnet/1350000.json | 7 + .../checkpoint/testnet/1360000.json | 7 + .../checkpoint/testnet/1370000.json | 7 + .../checkpoint/testnet/1380000.json | 7 + .../checkpoint/testnet/1390000.json | 7 + .../checkpoint/testnet/1400000.json | 7 + .../checkpoint/testnet/1410000.json | 7 + .../checkpoint/testnet/1420000.json | 7 + .../checkpoint/testnet/1430000.json | 7 + .../checkpoint/testnet/1440000.json | 7 + .../checkpoint/testnet/1450000.json | 7 + .../checkpoint/testnet/1460000.json | 7 + .../checkpoint/testnet/1470000.json | 7 + .../checkpoint/testnet/1480000.json | 7 + .../checkpoint/testnet/1490000.json | 7 + .../checkpoint/testnet/1500000.json | 7 + .../checkpoint/testnet/1510000.json | 7 + .../checkpoint/testnet/1520000.json | 7 + .../checkpoint/testnet/1530000.json | 7 + .../checkpoint/testnet/1540000.json | 7 + .../checkpoint/testnet/1550000.json | 7 + .../checkpoint/testnet/1560000.json | 7 + .../checkpoint/testnet/1570000.json | 7 + .../checkpoint/testnet/1580000.json | 7 + .../checkpoint/testnet/1590000.json | 7 + .../checkpoint/testnet/1600000.json | 7 + .../checkpoint/testnet/1610000.json | 7 + .../checkpoint/testnet/1620000.json | 7 + .../checkpoint/testnet/1630000.json | 7 + .../checkpoint/testnet/1640000.json | 7 + .../checkpoint/testnet/1650000.json | 7 + .../checkpoint/testnet/1660000.json | 7 + .../checkpoint/testnet/1670000.json | 7 + .../checkpoint/testnet/1680000.json | 7 + .../checkpoint/testnet/1690000.json | 7 + .../checkpoint/testnet/1700000.json | 7 + .../checkpoint/testnet/1710000.json | 7 + .../checkpoint/testnet/1720000.json | 7 + .../checkpoint/testnet/1730000.json | 7 + .../checkpoint/testnet/1740000.json | 7 + .../checkpoint/testnet/1750000.json | 7 + .../checkpoint/testnet/1760000.json | 7 + .../checkpoint/testnet/1770000.json | 7 + .../checkpoint/testnet/1780000.json | 7 + .../checkpoint/testnet/1790000.json | 7 + .../checkpoint/testnet/1800000.json | 7 + .../checkpoint/testnet/1810000.json | 7 + .../checkpoint/testnet/1820000.json | 7 + .../checkpoint/testnet/1830000.json | 7 + .../checkpoint/testnet/1840000.json | 7 + .../checkpoint/testnet/1842420.json | 8 + .../checkpoint/testnet/1850000.json | 8 + .../checkpoint/testnet/1860000.json | 8 + .../checkpoint/testnet/1870000.json | 8 + .../checkpoint/testnet/1880000.json | 8 + .../checkpoint/testnet/1890000.json | 8 + .../checkpoint/testnet/1900000.json | 8 + .../checkpoint/testnet/1910000.json | 8 + .../checkpoint/testnet/280000.json | 7 + .../checkpoint/testnet/290000.json | 7 + .../checkpoint/testnet/300000.json | 7 + .../checkpoint/testnet/310000.json | 7 + .../checkpoint/testnet/320000.json | 7 + .../checkpoint/testnet/330000.json | 7 + .../checkpoint/testnet/340000.json | 7 + .../checkpoint/testnet/350000.json | 7 + .../checkpoint/testnet/360000.json | 7 + .../checkpoint/testnet/370000.json | 7 + .../checkpoint/testnet/380000.json | 7 + .../checkpoint/testnet/390000.json | 7 + .../checkpoint/testnet/400000.json | 7 + .../checkpoint/testnet/410000.json | 7 + .../checkpoint/testnet/420000.json | 7 + .../checkpoint/testnet/430000.json | 7 + .../checkpoint/testnet/440000.json | 7 + .../checkpoint/testnet/450000.json | 7 + .../checkpoint/testnet/460000.json | 7 + .../checkpoint/testnet/470000.json | 7 + .../checkpoint/testnet/480000.json | 7 + .../checkpoint/testnet/490000.json | 7 + .../checkpoint/testnet/500000.json | 7 + .../checkpoint/testnet/510000.json | 7 + .../checkpoint/testnet/520000.json | 7 + .../checkpoint/testnet/530000.json | 7 + .../checkpoint/testnet/540000.json | 7 + .../checkpoint/testnet/550000.json | 7 + .../checkpoint/testnet/560000.json | 7 + .../checkpoint/testnet/570000.json | 7 + .../checkpoint/testnet/580000.json | 7 + .../checkpoint/testnet/590000.json | 7 + .../checkpoint/testnet/600000.json | 7 + .../checkpoint/testnet/610000.json | 7 + .../checkpoint/testnet/620000.json | 7 + .../checkpoint/testnet/630000.json | 7 + .../checkpoint/testnet/640000.json | 7 + .../checkpoint/testnet/650000.json | 7 + .../checkpoint/testnet/660000.json | 7 + .../checkpoint/testnet/670000.json | 7 + .../checkpoint/testnet/680000.json | 7 + .../checkpoint/testnet/690000.json | 7 + .../checkpoint/testnet/700000.json | 7 + .../checkpoint/testnet/710000.json | 7 + .../checkpoint/testnet/720000.json | 7 + .../checkpoint/testnet/730000.json | 7 + .../checkpoint/testnet/740000.json | 7 + .../checkpoint/testnet/750000.json | 7 + .../checkpoint/testnet/760000.json | 7 + .../checkpoint/testnet/770000.json | 7 + .../checkpoint/testnet/780000.json | 7 + .../checkpoint/testnet/790000.json | 7 + .../checkpoint/testnet/800000.json | 7 + .../checkpoint/testnet/810000.json | 7 + .../checkpoint/testnet/820000.json | 7 + .../checkpoint/testnet/830000.json | 7 + .../checkpoint/testnet/840000.json | 7 + .../checkpoint/testnet/850000.json | 7 + .../checkpoint/testnet/860000.json | 7 + .../checkpoint/testnet/870000.json | 7 + .../checkpoint/testnet/880000.json | 7 + .../checkpoint/testnet/890000.json | 7 + .../checkpoint/testnet/900000.json | 7 + .../checkpoint/testnet/910000.json | 7 + .../checkpoint/testnet/920000.json | 7 + .../checkpoint/testnet/930000.json | 7 + .../checkpoint/testnet/940000.json | 7 + .../checkpoint/testnet/950000.json | 7 + .../checkpoint/testnet/960000.json | 7 + .../checkpoint/testnet/970000.json | 7 + .../checkpoint/testnet/980000.json | 7 + .../checkpoint/testnet/990000.json | 7 + .../cash/z/ecc/android/sdk/Initializer.kt | 511 +++++ .../cash/z/ecc/android/sdk/SdkSynchronizer.kt | 827 ++++++++ .../cash/z/ecc/android/sdk/Synchronizer.kt | 472 +++++ .../sdk/block/CompactBlockProcessor.kt | 1011 ++++++++++ .../z/ecc/android/sdk/db/entity/Account.kt | 21 + .../cash/z/ecc/android/sdk/db/entity/Block.kt | 34 + .../sdk/db/entity/CompactBlockEntity.kt | 27 + .../z/ecc/android/sdk/db/entity/Received.kt | 63 + .../cash/z/ecc/android/sdk/db/entity/Sent.kt | 71 + .../ecc/android/sdk/db/entity/Transactions.kt | 380 ++++ .../cash/z/ecc/android/sdk/db/entity/Utxo.kt | 71 + .../z/ecc/android/sdk/exception/Exceptions.kt | 313 ++++ .../z/ecc/android/sdk/ext/BatchMetrics.kt | 35 + .../cash/z/ecc/android/sdk/ext/BlockExt.kt | 22 + .../ecc/android/sdk/ext/ConsensusBranchId.kt | 32 + .../ecc/android/sdk/ext/CurrencyFormatter.kt | 367 ++++ .../java/cash/z/ecc/android/sdk/ext/Flow.kt | 62 + .../cash/z/ecc/android/sdk/ext/ZcashSdk.kt | 99 + .../android/sdk/internal/SaplingParamTool.kt | 139 ++ .../android/sdk/internal/SdkDispatchers.kt | 32 + .../cash/z/ecc/android/sdk/internal/Sma.kt | 43 + .../cash/z/ecc/android/sdk/internal/Twig.kt | 199 ++ .../android/sdk/internal/WalletBirthdayExt.kt | 37 + .../sdk/internal/block/CompactBlockDbStore.kt | 65 + .../internal/block/CompactBlockDownloader.kt | 163 ++ .../sdk/internal/block/CompactBlockStore.kt | 41 + .../android/sdk/internal/db/CompactBlockDb.kt | 53 + .../android/sdk/internal/db/DerivedDataDb.kt | 541 ++++++ .../sdk/internal/db/PendingTransactionDb.kt | 86 + .../ecc/android/sdk/internal/ext/BlockExt.kt | 11 + .../android/sdk/internal/ext/ContextExt.kt | 11 + .../z/ecc/android/sdk/internal/ext/Ext.kt | 44 + .../z/ecc/android/sdk/internal/ext/FileExt.kt | 9 + .../android/sdk/internal/ext/Placeholders.kt | 98 + .../android/sdk/internal/ext/WalletService.kt | 114 ++ .../internal/ext/android/ComputableFlow.kt | 36 + .../sdk/internal/ext/android/FlowPagedList.kt | 84 + .../ext/android/FlowPagedListBuilder.kt | 100 + .../sdk/internal/ext/android/README.md | 3 + .../service/LightWalletGrpcService.kt | 233 +++ .../internal/service/LightWalletService.kt | 92 + .../transaction/PagedTransactionRepository.kt | 227 +++ .../PersistentTransactionManager.kt | 314 ++++ .../transaction/TransactionEncoder.kt | 57 + .../transaction/TransactionManager.kt | 137 ++ .../transaction/TransactionRepository.kt | 102 + .../transaction/WalletTransactionEncoder.kt | 160 ++ .../android/sdk/jni/NativeLibraryLoader.kt | 44 + .../cash/z/ecc/android/sdk/jni/RustBackend.kt | 552 ++++++ .../ecc/android/sdk/jni/RustBackendWelding.kt | 138 ++ .../cash/z/ecc/android/sdk/model/Zatoshi.kt | 31 + .../z/ecc/android/sdk/tool/DerivationTool.kt | 155 ++ .../android/sdk/tool/WalletBirthdayTool.kt | 166 ++ .../z/ecc/android/sdk/type/AddressType.kt | 34 + .../android/sdk/type/ConsensusMatchType.kt | 41 + .../z/ecc/android/sdk/type/WalletTypes.kt | 87 + sdk-lib/src/main/proto/compact_formats.proto | 48 + sdk-lib/src/main/proto/darkside.proto | 117 ++ sdk-lib/src/main/proto/service.proto | 177 ++ sdk-lib/src/main/res/values/bools.xml | 4 + sdk-lib/src/main/res/values/strings.xml | 3 + sdk-lib/src/main/rust/lib.rs | 1182 ++++++++++++ sdk-lib/src/main/rust/local_rpc_types.rs | 786 ++++++++ sdk-lib/src/main/rust/utils.rs | 79 + sdk-lib/src/main/rust/utils/exception.rs | 124 ++ .../z/wallet/sdk/annotation/OpenForTesting.kt | 11 + .../z/ecc/android/sdk/ext/ConversionsTest.kt | 98 + .../z/ecc/android/sdk/model/ZatoshiTest.kt | 38 + .../src/test/java/cash/z/wallet/TestUtils.kt | 13 + .../org.mockito.plugins.MockMaker | 1 + sdk-lib/testing.gradle | 46 + settings.gradle.kts | 209 +++ tools/detekt-baseline.xml | 465 +++++ tools/detekt.yml | 701 +++++++ 703 files changed, 33394 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/runConfigurations/detektAll.xml create mode 100644 .run/_darkside-test-lib_connectedAndroidTest.run.xml create mode 100644 .run/_sdk-lib_test.run.xml create mode 100644 .run/_sdkLib_connectedCheck.run.xml create mode 100644 .run/assemble.run.xml create mode 100644 .run/assembleAndroidTest.run.xml create mode 100644 .run/clean.run.xml create mode 100644 .run/demo-app.run.xml create mode 100644 .run/dependencyUpdates.run.xml create mode 100644 .run/ktlint.run.xml create mode 100644 .run/lint.run.xml create mode 100644 .run/publishToMavenLocal.run.xml create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 MIGRATIONS.md create mode 100644 README.md create mode 100644 assets/build-variants.png create mode 100644 assets/ndk-window.png create mode 100644 assets/sdk-manager-icon.png create mode 100644 assets/sdk_dev_pov_final.png create mode 100644 assets/sdk_diagram_final.png create mode 100644 build-conventions/build.gradle.kts create mode 100644 build-conventions/buildscript-gradle.lockfile create mode 100644 build-conventions/gradle.lockfile create mode 100644 build-conventions/settings.gradle.kts create mode 100644 build-conventions/src/main/kotlin/zcash-sdk.android-conventions.gradle.kts create mode 100644 build-conventions/src/main/kotlin/zcash-sdk.dependency-conventions.gradle.kts create mode 100644 build-conventions/src/main/kotlin/zcash-sdk.emulator-wtf-conventions.gradle.kts create mode 100644 build-conventions/src/main/kotlin/zcash-sdk.ktlint-conventions.gradle.kts create mode 100644 build-conventions/src/main/kotlin/zcash-sdk.rosetta-conventions.gradle.kts create mode 100644 build.gradle.kts create mode 100644 darkside-test-lib/build.gradle.kts create mode 100644 darkside-test-lib/src/androidTest/AndroidManifest.xml create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountIntegrationTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/OutboundTransactionsTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/TransparentIntegrationTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/InboundTxTests.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgBasicTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgLargeTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSetupTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSmallTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/SetupTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reproduce/ReproduceZ2TFailureTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestCoordinator.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestPrerequisites.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/ScopedTest.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/SimpleMnemonics.kt create mode 100644 darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt create mode 100644 darkside-test-lib/src/main/AndroidManifest.xml create mode 100644 darkside-test-lib/src/main/res/values/bools.xml create mode 100644 demo-app/README.md create mode 100644 demo-app/assets/demo-app.png create mode 100644 demo-app/build.gradle.kts create mode 100644 demo-app/lint-baseline.xml create mode 100644 demo-app/proguard-project.txt create mode 100644 demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt create mode 100644 demo-app/src/main/AndroidManifest.xml create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/App.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/BaseDemoFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/SharedViewModel.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/StrictModeHelper.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getaddress/GetAddressFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getbalance/GetBalanceFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblock/GetBlockFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblockrange/GetBlockRangeFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getlatestheight/GetLatestHeightFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getprivatekey/GetPrivateKeyFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeViewModel.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/ListTransactionsFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionAdapter.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionViewHolder.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/ListUtxosFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoAdapter.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoViewHolder.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/send/SendFragment.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ext/FragmentExt.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/Ext.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/NetworkExt.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SampleStorage.kt create mode 100644 demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SimpleMnemonics.kt create mode 100644 demo-app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 demo-app/src/main/res/drawable/ic_baseline_check_24.xml create mode 100644 demo-app/src/main/res/drawable/ic_baseline_close_24.xml create mode 100644 demo-app/src/main/res/drawable/ic_baseline_edit_24.xml create mode 100644 demo-app/src/main/res/drawable/ic_baseline_move_to_inbox_24.xml create mode 100644 demo-app/src/main/res/drawable/ic_floating_action.xml create mode 100644 demo-app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 demo-app/src/main/res/drawable/ic_list.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_address.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_balance.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_block.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_block_range.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_decrypt.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_decrypt_range.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_home.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_latest_height.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_memo.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_private_key.xml create mode 100644 demo-app/src/main/res/drawable/ic_menu_send.xml create mode 100644 demo-app/src/main/res/drawable/ic_receive.xml create mode 100644 demo-app/src/main/res/drawable/ic_send.xml create mode 100644 demo-app/src/main/res/drawable/side_nav_bar.xml create mode 100644 demo-app/src/main/res/layout/activity_main.xml create mode 100644 demo-app/src/main/res/layout/app_bar_main.xml create mode 100644 demo-app/src/main/res/layout/content_main.xml create mode 100644 demo-app/src/main/res/layout/fragment_gallery.xml create mode 100644 demo-app/src/main/res/layout/fragment_get_address.xml create mode 100644 demo-app/src/main/res/layout/fragment_get_balance.xml create mode 100644 demo-app/src/main/res/layout/fragment_get_block.xml create mode 100644 demo-app/src/main/res/layout/fragment_get_block_range.xml create mode 100644 demo-app/src/main/res/layout/fragment_get_latest_height.xml create mode 100644 demo-app/src/main/res/layout/fragment_get_private_key.xml create mode 100644 demo-app/src/main/res/layout/fragment_home.xml create mode 100644 demo-app/src/main/res/layout/fragment_home_second.xml create mode 100644 demo-app/src/main/res/layout/fragment_list_transactions.xml create mode 100644 demo-app/src/main/res/layout/fragment_list_utxos.xml create mode 100644 demo-app/src/main/res/layout/fragment_send.xml create mode 100644 demo-app/src/main/res/layout/fragment_slideshow.xml create mode 100644 demo-app/src/main/res/layout/item_transaction.xml create mode 100644 demo-app/src/main/res/layout/nav_header_main.xml create mode 100644 demo-app/src/main/res/menu/activity_main_drawer.xml create mode 100644 demo-app/src/main/res/menu/main.xml create mode 100644 demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 demo-app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 demo-app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 demo-app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 demo-app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 demo-app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 demo-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 demo-app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 demo-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 demo-app/src/main/res/navigation/mobile_navigation.xml create mode 100644 demo-app/src/main/res/values-v21/styles.xml create mode 100644 demo-app/src/main/res/values/colors.xml create mode 100644 demo-app/src/main/res/values/dimens.xml create mode 100644 demo-app/src/main/res/values/strings.xml create mode 100644 demo-app/src/main/res/values/styles.xml create mode 100644 demo-app/src/zcashmainnet/java/cash/z/ecc/android/sdk/demoapp/DemoConstants.kt create mode 100644 demo-app/src/zcashmainnet/res/values/strings.xml create mode 100644 demo-app/src/zcashtestnet/java/cash/z/ecc/android/sdk/demoapp/DemoConstants.kt create mode 100644 demo-app/src/zcashtestnet/res/values/strings.xml create mode 100644 docs/-sdk-synchronizer/-init-.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-cache-only/-init-.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-cache-only/README.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-cache-only/starting-block-height.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-first-run.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-ready-to-process/-init-.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-ready-to-process/README.md create mode 100644 docs/-sdk-synchronizer/-sync-state/-ready-to-process/starting-block-height.md create mode 100644 docs/-sdk-synchronizer/-sync-state/README.md create mode 100644 docs/-sdk-synchronizer/README.md create mode 100644 docs/-sdk-synchronizer/active-transactions.md create mode 100644 docs/-sdk-synchronizer/all-transactions.md create mode 100644 docs/-sdk-synchronizer/balance.md create mode 100644 docs/-sdk-synchronizer/balances.md create mode 100644 docs/-sdk-synchronizer/cancel-send.md create mode 100644 docs/-sdk-synchronizer/cancel-spend.md create mode 100644 docs/-sdk-synchronizer/channel.md create mode 100644 docs/-sdk-synchronizer/cleared-transactions.md create mode 100644 docs/-sdk-synchronizer/coroutine-scope.md create mode 100644 docs/-sdk-synchronizer/find-block-hash-as-hex.md create mode 100644 docs/-sdk-synchronizer/find-block-hash.md create mode 100644 docs/-sdk-synchronizer/get-address.md create mode 100644 docs/-sdk-synchronizer/get-server-info.md create mode 100644 docs/-sdk-synchronizer/get-transaction-count.md create mode 100644 docs/-sdk-synchronizer/index.md create mode 100644 docs/-sdk-synchronizer/is-connected.md create mode 100644 docs/-sdk-synchronizer/is-first-run.md create mode 100644 docs/-sdk-synchronizer/is-scanning.md create mode 100644 docs/-sdk-synchronizer/is-stale.md create mode 100644 docs/-sdk-synchronizer/is-started.md create mode 100644 docs/-sdk-synchronizer/is-syncing.md create mode 100644 docs/-sdk-synchronizer/is-valid-shielded-addr.md create mode 100644 docs/-sdk-synchronizer/is-valid-transparent-addr.md create mode 100644 docs/-sdk-synchronizer/last-balance.md create mode 100644 docs/-sdk-synchronizer/last-cleared.md create mode 100644 docs/-sdk-synchronizer/last-pending.md create mode 100644 docs/-sdk-synchronizer/latest-balance.md create mode 100644 docs/-sdk-synchronizer/latest-height.md create mode 100644 docs/-sdk-synchronizer/on-chain-error-handler.md create mode 100644 docs/-sdk-synchronizer/on-critical-error-handler.md create mode 100644 docs/-sdk-synchronizer/on-processor-error-handler.md create mode 100644 docs/-sdk-synchronizer/on-submission-error-handler.md create mode 100644 docs/-sdk-synchronizer/on-synchronizer-error-listener.md create mode 100644 docs/-sdk-synchronizer/on-transactions-changed.md create mode 100644 docs/-sdk-synchronizer/pending-transactions.md create mode 100644 docs/-sdk-synchronizer/processor-info.md create mode 100644 docs/-sdk-synchronizer/processor.md create mode 100644 docs/-sdk-synchronizer/progress.md create mode 100644 docs/-sdk-synchronizer/received-transactions.md create mode 100644 docs/-sdk-synchronizer/refresh-balance.md create mode 100644 docs/-sdk-synchronizer/send-to-address.md create mode 100644 docs/-sdk-synchronizer/sent-transactions.md create mode 100644 docs/-sdk-synchronizer/start.md create mode 100644 docs/-sdk-synchronizer/status.md create mode 100644 docs/-sdk-synchronizer/stop.md create mode 100644 docs/-sdk-synchronizer/validate-address.md create mode 100644 docs/-sdk-synchronizer/validate-consensus-branch.md create mode 100644 docs/-synchronizer/-address-type/-invalid/-init-.md create mode 100644 docs/-synchronizer/-address-type/-invalid/index.md create mode 100644 docs/-synchronizer/-address-type/-invalid/reason.md create mode 100644 docs/-synchronizer/-address-type/-shielded.md create mode 100644 docs/-synchronizer/-address-type/-transparent.md create mode 100644 docs/-synchronizer/-address-type/-valid.md create mode 100644 docs/-synchronizer/-address-type/index.md create mode 100644 docs/-synchronizer/-address-type/is-not-valid.md create mode 100644 docs/-synchronizer/-status/-d-i-s-c-o-n-n-e-c-t-e-d.md create mode 100644 docs/-synchronizer/-status/-d-o-w-n-l-o-a-d-i-n-g.md create mode 100644 docs/-synchronizer/-status/-e-n-h-a-n-c-i-n-g.md create mode 100644 docs/-synchronizer/-status/-s-c-a-n-n-i-n-g.md create mode 100644 docs/-synchronizer/-status/-s-t-o-p-p-e-d.md create mode 100644 docs/-synchronizer/-status/-s-y-n-c-e-d.md create mode 100644 docs/-synchronizer/-status/-v-a-l-i-d-a-t-i-n-g.md create mode 100644 docs/-synchronizer/-status/index.md create mode 100644 docs/-synchronizer/README.md create mode 100644 docs/-synchronizer/active-transactions.md create mode 100644 docs/-synchronizer/all-transactions.md create mode 100644 docs/-synchronizer/balance.md create mode 100644 docs/-synchronizer/balances.md create mode 100644 docs/-synchronizer/cancel-send.md create mode 100644 docs/-synchronizer/cancel-spend.md create mode 100644 docs/-synchronizer/cleared-transactions.md create mode 100644 docs/-synchronizer/get-address.md create mode 100644 docs/-synchronizer/get-server-info.md create mode 100644 docs/-synchronizer/index.md create mode 100644 docs/-synchronizer/is-connected.md create mode 100644 docs/-synchronizer/is-first-run.md create mode 100644 docs/-synchronizer/is-scanning.md create mode 100644 docs/-synchronizer/is-stale.md create mode 100644 docs/-synchronizer/is-syncing.md create mode 100644 docs/-synchronizer/is-valid-shielded-addr.md create mode 100644 docs/-synchronizer/is-valid-transparent-addr.md create mode 100644 docs/-synchronizer/last-balance.md create mode 100644 docs/-synchronizer/last-cleared.md create mode 100644 docs/-synchronizer/last-pending.md create mode 100644 docs/-synchronizer/latest-balance.md create mode 100644 docs/-synchronizer/latest-height.md create mode 100644 docs/-synchronizer/on-chain-error-handler.md create mode 100644 docs/-synchronizer/on-critical-error-handler.md create mode 100644 docs/-synchronizer/on-processor-error-handler.md create mode 100644 docs/-synchronizer/on-submission-error-handler.md create mode 100644 docs/-synchronizer/on-synchronizer-error-listener.md create mode 100644 docs/-synchronizer/pending-transactions.md create mode 100644 docs/-synchronizer/processor-info.md create mode 100644 docs/-synchronizer/progress.md create mode 100644 docs/-synchronizer/received-transactions.md create mode 100644 docs/-synchronizer/send-to-address.md create mode 100644 docs/-synchronizer/sent-transactions.md create mode 100644 docs/-synchronizer/start.md create mode 100644 docs/-synchronizer/status.md create mode 100644 docs/-synchronizer/stop.md create mode 100644 docs/-synchronizer/validate-address.md create mode 100644 docs/-synchronizer/validate-consensus-branch.md create mode 100644 docs/-twig/README.md create mode 100644 docs/-twig/clip.md create mode 100644 docs/-twig/index.md create mode 100644 docs/-twig/plant.md create mode 100644 docs/-twig/plus.md create mode 100644 docs/-twig/prune.md create mode 100644 docs/-twig/sprout.md create mode 100644 docs/-twig/twig.md create mode 100644 docs/Architecture.md create mode 100644 docs/CI.md create mode 100644 docs/CODE_REVIEW_GUIDELINES.md create mode 100644 docs/PUBLISHING.md create mode 100644 docs/Setup.md create mode 100644 docs/tests/Build.md create mode 100644 docs/tests/Darkside.md create mode 100644 docs/tests/Public APIs.md create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 responsible_disclosure.md create mode 100644 sdk-lib/Cargo.lock create mode 100644 sdk-lib/Cargo.toml create mode 100644 sdk-lib/build.gradle.kts create mode 100644 sdk-lib/lint-baseline.xml create mode 100644 sdk-lib/lint.xml create mode 100644 sdk-lib/packages.md create mode 100644 sdk-lib/proguard-consumer.txt create mode 100644 sdk-lib/proguard-project.txt create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.CompactBlockDb/1.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.CompactBlockDb/2.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/3.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/4.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/5.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/6.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/7.json create mode 100644 sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.PendingTransactionDb/1.json create mode 100644 sdk-lib/src/androidTest/AndroidManifest.xml create mode 100644 sdk-lib/src/androidTest/assets/co.electriccoin.zcash/checkpoint/badnet/1290000.json create mode 100644 sdk-lib/src/androidTest/assets/co.electriccoin.zcash/checkpoint/badnet/1300000.json create mode 100644 sdk-lib/src/androidTest/assets/co.electriccoin.zcash/checkpoint/goodnet/1290000.json create mode 100644 sdk-lib/src/androidTest/assets/co.electriccoin.zcash/checkpoint/goodnet/1300000.json create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/AssetTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/InitializerTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/PullRequestSuite.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/annotation/MaintainedTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/ext/TestExtensions.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/SanityTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/SmokeTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/TestnetIntegrationTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/service/ChangeServiceTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/SaplingParamToolTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/WalletBirthdayTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManagerTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/jni/BranchIdTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/jni/TransparentTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/sample/ShieldFundsSample.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/sample/TransparentRestoreSample.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/test/ScopedTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/tool/WalletBirthdayToolTest.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/AddressGeneratorUtil.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/BalancePrinterUtil.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/DataDbScannerUtil.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/SimpleMnemonics.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TestWallet.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TransactionCounterUtil.kt create mode 100644 sdk-lib/src/androidTest/java/cash/z/ecc/fixture/WalletBirthdayFixture.kt create mode 100644 sdk-lib/src/androidTest/res/values/bools.xml create mode 100644 sdk-lib/src/androidTest/resources/utils/seeds.txt create mode 100644 sdk-lib/src/debug/java/cash/z/ecc/android/sdk/annotation/OpenForTesting.kt create mode 100644 sdk-lib/src/main/AndroidManifest.xml create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1000000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1010000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1020000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1030000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1040000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1050000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1060000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1070000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1080000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1090000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1100000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1110000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1120000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1130000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1140000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1150000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1160000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1170000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1180000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1190000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1200000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1210000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1220000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1230000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1240000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1250000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1260000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1270000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1280000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1290000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1300000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1310000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1320000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1330000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1340000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1350000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1360000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1370000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1380000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1390000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1400000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1410000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1420000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1430000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1440000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1450000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1460000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1470000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1480000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1490000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1500000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1510000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1520000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1530000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1540000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1550000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1560000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1570000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1580000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1590000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1600000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1610000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1620000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1630000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1640000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1650000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1660000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1670000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1680000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1687104.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1690000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/1700000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/419200.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/500000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/510000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/520000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/530000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/540000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/550000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/560000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/570000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/580000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/590000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/600000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/610000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/620000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/630000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/640000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/650000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/660000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/670000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/680000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/690000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/700000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/710000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/720000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/730000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/740000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/750000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/760000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/770000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/780000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/790000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/800000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/810000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/820000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/830000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/840000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/850000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/860000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/870000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/880000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/890000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/900000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/910000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/920000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/930000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/940000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/950000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/960000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/970000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/980000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/990000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1000000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1010000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1020000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1030000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1040000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1050000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1060000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1070000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1080000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1090000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1100000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1110000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1120000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1130000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1140000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1150000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1160000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1170000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1180000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1190000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1200000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1210000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1220000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1230000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1240000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1250000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1260000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1270000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1280000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1290000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1300000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1310000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1320000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1330000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1340000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1350000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1360000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1370000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1380000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1390000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1400000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1410000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1420000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1430000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1440000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1450000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1460000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1470000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1480000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1490000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1500000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1510000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1520000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1530000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1540000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1550000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1560000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1570000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1580000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1590000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1600000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1610000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1620000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1630000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1640000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1650000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1660000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1670000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1680000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1690000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1700000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1710000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1720000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1730000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1740000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1750000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1760000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1770000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1780000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1790000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1800000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1810000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1820000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1830000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1840000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1842420.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1850000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1860000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1870000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1880000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1890000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1900000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/1910000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/280000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/290000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/300000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/310000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/320000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/330000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/340000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/350000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/360000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/370000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/380000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/390000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/400000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/410000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/420000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/430000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/440000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/450000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/460000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/470000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/480000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/490000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/500000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/510000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/520000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/530000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/540000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/550000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/560000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/570000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/580000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/590000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/600000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/610000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/620000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/630000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/640000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/650000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/660000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/670000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/680000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/690000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/700000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/710000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/720000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/730000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/740000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/750000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/760000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/770000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/780000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/790000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/800000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/810000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/820000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/830000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/840000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/850000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/860000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/870000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/880000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/890000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/900000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/910000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/920000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/930000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/940000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/950000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/960000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/970000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/980000.json create mode 100644 sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/testnet/990000.json create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/Initializer.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/SdkSynchronizer.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/Synchronizer.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/Account.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/Block.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/CompactBlockEntity.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/Received.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/Sent.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/Transactions.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/entity/Utxo.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/exception/Exceptions.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BatchMetrics.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BlockExt.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/ConsensusBranchId.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/CurrencyFormatter.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Flow.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/ZcashSdk.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/SaplingParamTool.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/SdkDispatchers.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/Sma.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/Twig.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/WalletBirthdayExt.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDbStore.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDownloader.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockStore.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/CompactBlockDb.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/DerivedDataDb.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/PendingTransactionDb.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/BlockExt.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/ContextExt.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Ext.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/FileExt.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Placeholders.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/WalletService.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/ComputableFlow.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedList.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedListBuilder.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/README.md create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletGrpcService.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletService.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PagedTransactionRepository.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManager.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionEncoder.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionManager.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionRepository.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/WalletTransactionEncoder.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/jni/NativeLibraryLoader.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/jni/RustBackend.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/jni/RustBackendWelding.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/Zatoshi.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/tool/DerivationTool.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/tool/WalletBirthdayTool.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/type/AddressType.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/type/ConsensusMatchType.kt create mode 100644 sdk-lib/src/main/java/cash/z/ecc/android/sdk/type/WalletTypes.kt create mode 100644 sdk-lib/src/main/proto/compact_formats.proto create mode 100644 sdk-lib/src/main/proto/darkside.proto create mode 100644 sdk-lib/src/main/proto/service.proto create mode 100644 sdk-lib/src/main/res/values/bools.xml create mode 100644 sdk-lib/src/main/res/values/strings.xml create mode 100644 sdk-lib/src/main/rust/lib.rs create mode 100644 sdk-lib/src/main/rust/local_rpc_types.rs create mode 100644 sdk-lib/src/main/rust/utils.rs create mode 100644 sdk-lib/src/main/rust/utils/exception.rs create mode 100644 sdk-lib/src/release/java/cash/z/wallet/sdk/annotation/OpenForTesting.kt create mode 100644 sdk-lib/src/test/java/cash/z/ecc/android/sdk/ext/ConversionsTest.kt create mode 100644 sdk-lib/src/test/java/cash/z/ecc/android/sdk/model/ZatoshiTest.kt create mode 100644 sdk-lib/src/test/java/cash/z/wallet/TestUtils.kt create mode 100644 sdk-lib/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker create mode 100644 sdk-lib/testing.gradle create mode 100644 settings.gradle.kts create mode 100644 tools/detekt-baseline.xml create mode 100644 tools/detekt.yml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..70736b1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# Comma-separated list of rules to disable (Since 0.34.0) +# Note that rules in any ruleset other than the standard ruleset will need to be prefixed +# by the ruleset identifier. +disabled_rules=import-ordering,no-wildcard-imports + +# Defines the imports layout. The layout can be composed by the following symbols: +# "*" - wildcard. There must be at least one entry of a single wildcard to match all other imports. Matches anything after a specified symbol/import as well. +# "|" - blank line. Supports only single blank lines between imports. No blank line is allowed in the beginning or end of the layout. +# "^" - alias import, e.g. "^android.*" will match all android alias imports, "^" will match all other alias imports. +# import paths - these can be full paths, e.g. "java.util.List.*" as well as wildcard paths, e.g. "kotlin.**" +# Examples (we use ij_kotlin_imports_layout to set an imports layout for both ktlint and IDEA via a single property): +ij_kotlin_imports_layout=* # alphabetical with capital letters before lower case letters (e.g. Z before a), no blank lines +ij_kotlin_imports_layout=*,java.**,javax.**,kotlin.**,^ # default IntelliJ IDEA style, same as alphabetical, but with "java", "javax", "kotlin" and alias imports in the end of the imports list +ij_kotlin_imports_layout=android.**,|,^org.junit.**,kotlin.io.Closeable.*,|,*,^ # custom imports layout \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62a11d5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,83 @@ +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +.cargo/ +bin/ +gen/ +generated/ +out/ +target/ +jniLibs/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +.idea/assetWizardSettings.xml +.idea/caches +.idea/compiler.xml +.idea/deploymentTargetDropDown.xml +.idea/dictionaries +.idea/gradle.xml +.idea/libraries +.idea/misc.xml +.idea/modules.xml +.idea/tasks.xml +.idea/vcs.xml +.idea/workspace.xml +*.iml + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Rust / Cargo +fraget/ + +# other +DecompileChecker.kt +backup-dbs/ +*.db +.DS_Store diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..6a4bffd --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +zcash-android-sdk \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..4317c7f --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,134 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/detektAll.xml b/.idea/runConfigurations/detektAll.xml new file mode 100644 index 0000000..bc83a0b --- /dev/null +++ b/.idea/runConfigurations/detektAll.xml @@ -0,0 +1,21 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/_darkside-test-lib_connectedAndroidTest.run.xml b/.run/_darkside-test-lib_connectedAndroidTest.run.xml new file mode 100644 index 0000000..01075dd --- /dev/null +++ b/.run/_darkside-test-lib_connectedAndroidTest.run.xml @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/.run/_sdk-lib_test.run.xml b/.run/_sdk-lib_test.run.xml new file mode 100644 index 0000000..dee2b74 --- /dev/null +++ b/.run/_sdk-lib_test.run.xml @@ -0,0 +1,23 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/_sdkLib_connectedCheck.run.xml b/.run/_sdkLib_connectedCheck.run.xml new file mode 100644 index 0000000..e922487 --- /dev/null +++ b/.run/_sdkLib_connectedCheck.run.xml @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/.run/assemble.run.xml b/.run/assemble.run.xml new file mode 100644 index 0000000..2f8b486 --- /dev/null +++ b/.run/assemble.run.xml @@ -0,0 +1,23 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/assembleAndroidTest.run.xml b/.run/assembleAndroidTest.run.xml new file mode 100644 index 0000000..f7cd611 --- /dev/null +++ b/.run/assembleAndroidTest.run.xml @@ -0,0 +1,21 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/clean.run.xml b/.run/clean.run.xml new file mode 100644 index 0000000..269467e --- /dev/null +++ b/.run/clean.run.xml @@ -0,0 +1,23 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/demo-app.run.xml b/.run/demo-app.run.xml new file mode 100644 index 0000000..e0c3cf2 --- /dev/null +++ b/.run/demo-app.run.xml @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/.run/dependencyUpdates.run.xml b/.run/dependencyUpdates.run.xml new file mode 100644 index 0000000..98b02f0 --- /dev/null +++ b/.run/dependencyUpdates.run.xml @@ -0,0 +1,23 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/ktlint.run.xml b/.run/ktlint.run.xml new file mode 100644 index 0000000..dc63208 --- /dev/null +++ b/.run/ktlint.run.xml @@ -0,0 +1,21 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/lint.run.xml b/.run/lint.run.xml new file mode 100644 index 0000000..8d4552b --- /dev/null +++ b/.run/lint.run.xml @@ -0,0 +1,23 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/.run/publishToMavenLocal.run.xml b/.run/publishToMavenLocal.run.xml new file mode 100644 index 0000000..8bb712c --- /dev/null +++ b/.run/publishToMavenLocal.run.xml @@ -0,0 +1,28 @@ + + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8a34faa --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,196 @@ +Change Log +========== + +Upcoming +------------------------------------ +- Added `Zatoshi` typesafe object to represent amounts instead. + +Version 1.6.0-beta01 +------------------------------------ +- Updated checkpoints for Mainnet and Testnet +- Fix: SDK can now be used on Intel x86_64 emulators +- Prevent R8 warnings for apps consuming the SDK + +Version 1.5.0-beta01 +------------------------------------ +- New: Transactions can be created after NU5 activation. +- New: Support for receiving v5 transactions. +- Known issues: The SDK will not run on Intel 64-bit API 31+ emulators. Workarounds include: testing on a physical device, using an older 32-bit API version Intel emulator, or using an ARM emulator. + +Version 1.4.0-beta01 +------------------------------------ +- Main entrypoint to the SDK has changed. See [MIGRATIONS.md](MIGRATIONS.md) +- The minimum version of Android supported is now API 19 +- Updated checkpoints for Mainnet and Testnet +- Internal bugfixes around concurrent access to resources, which could cause transient failures and data corruption +- Added ProGuard rules so that SDK clients can use R8 to shrink their apps +- Updated dependencies, including Kotlin 1.6.21, Coroutines 1.6.1, GRPC 1.46.0, Okio 3.1.0, NDK 23 +- Known issues: The SDK will not run on Intel 64-bit API 31+ emulators. Workarounds include: testing on a physical device, using an older 32-bit API version Intel emulator, or using an ARM emulator. + +Version 1.3.0-beta20 +------------------------------------ +- New: Updated checkpoints for Mainnet and Testnet + +Version 1.3.0-beta19 +------------------------------------ +- New: Updated checkpoints for Mainnet and Testnet +- Fix: Repackaged internal classes to a new `internal` package name +- Fix: Testnet checkpoints have been corrected +- Updated dependencies + +Version 1.3.0-beta18 +------------------------------------ +- Fix: Corrected logic when calculating birthdates for wallets with zero received notes. + +Version 1.3.0-beta17 +------------------------------------ +- Fix: Autoshielding confirmation count error so funds are available after 10 confirmations. +- New: Allow developers to enable Rust logs. +- New: Accept GZIP compression from lightwalletd. +- New: Reduce the UTXO retry time. + +Version 1.3.0-beta16 +------------------------------------ +- Fix: Gracefully handle failures while fetching UTXOs. +- New: Expose StateFlows for balances. +- New: Make it easier to subscribe to transactions. +- New: Cleanup default logs. +- New: Convenience functions for WalletBalance objects. + +Version 1.3.0-beta15 +------------------------------------ +- Fix: Increase reconnection attempts on failed app restart. +- New: Updated checkpoints for testnet and mainnet. + +Version 1.3.0-beta14 +------------------------------------ +- New: Add separate flows for sapling, orchard and tranparent balances. +- Fix: Continue troubleshooting and fixing server disconnects. +- Updated dependencies. + +Version 1.3.0-beta12 +------------------------------------ +- New: Expose network height as StateFlow. +- Fix: Reconnect to lightwalletd when a service exception occurs. + +Version 1.3.0-beta11 +------------------------------------ +- Fix: Remove unused flag that was breaking new wallet creation for some wallets. + +Version 1.3.0-beta10 +------------------------------------ +- Fix: Make it safe to call the new prepare function more than once. + +Version 1.3.0-beta09 +------------------------------------ +- New: Add quick rewind feature, which makes it easy to rescan blocks after an upgrade. +- Fix: Repair complex data migration bug that caused crashes on upgrades. + +Version 1.3.0-beta08 +------------------------------------ +- Fix: Disable librustzcash logs by default. + +Version 1.3.0-beta07 +------------------------------------ +- Fix: Address issues with key migration, allowing wallets to reset viewing keys, when needed. + +Version 1.3.0-beta06 +------------------------------------ +- Fix: Repair publishing so that AARs work on Windows machines [issue #222]. +- Fix: Incorrect BranchId on 32-bit devics [issue #224]. +- Fix: Rescan should not go beyond the wallet checkpoint. +- New: Drop Android Jetifier since it is no longer used. +- Updated checkpoints, improved tests (added Test Suites) and better error messages. + +Version 1.3.0-beta05 +------------------------------------ +- Major: Consolidate product flavors into one library for the SDK instead of two. +- Major: Integrates with latest Librustzcash including full Data Access API support. +- Major: Move off of JCenter and onto Maven Central. +- New: Adds Ktlint [Credit: @nighthawk24] +- Fix: Added SaplingParamTool and ability to clear param files from cache [Credit: @herou] +- New: Added responsible disclosure document for vulnerabilities [Credit: @zebambam] +- New: UnifiedViewingKey concept. +- New: Adds support for autoshielding, including database migrations. +- New: Adds basic support for UTXOs, including refresh during scan. +- New: Support the ability to wipe all sqlite data and rebuild from keys. +- New: Switches to ZOMG lightwalletd instances. +- Fix: Only notify subscribers when a new block is detected. +- New: Add scan metrics and callbacks for apps to measure performance. +- Fix: Improve error handling and surface critical Initialization errors. +- New: Adds cleanup and removal of failed transactions. +- New: Improved logic for determining the wallet birthday. +- New: Add the ability to rewind and rescan blocks. +- New: Better safeguards against testnet v mainnet data contamination. +- New: Improved troubleshooting of ungraceful shutdowns. +- Docs: Update README to draw attention to the demo app. +- New: Expose transaction count. +- New: Derive sapling activation height from the active network. +- New: Latest checkpoints for mainnet and testnet. + +Version 1.2.1-beta04 +------------------------------------ +- New: Updated to latest versions of grpc, grpc-okhttp and protoc +- Fix: Addresses root issue of Android 11 crash on SSL sockets + +Version 1.2.1-beta03 +------------------------------------ +- New: Implements ZIP-313, reducing the default fee from 10,000 to 1,000 zats. +- Fix: 80% reduction in build warnings from 90 -> 18 and improved docs [Credit: @herou]. + +Version 1.2.1-beta02 +------------------------------------ +- New: Improve birthday configuration and config functions. +- Fix: Broken layout in demo app transaction list. + +Version 1.2.1-beta01 +------------------------------------ +- New: Added latest checkpoints for testnet and mainnet. +- New: Added display name for Canopy. +- New: Update to the latest lightwalletd service definition. +- Fix: Convert Initializer.Builder to Initializer.Config to simplify the constructors. + +Version 1.2.0-beta01 +------------------------------------ +- New: Added ability to erase initializer data. +- Fix: Updated to latest librustzcash, fixing send functionality on Canopy. + +Version 1.1.0-beta10 +------------------------------------ +- New: Modified visibility on a few things to facilitate partner integrations. + +Version 1.1.0-beta08 +------------------------------------ +- Fix: Publishing has been corrected by jcenter's support team. +- New: Minor improvement to initializer + +Version 1.1.0-beta05 +------------------------------------ +- New: Synchronizer can now be started with just a viewing key. +- New: Initializer improvements. +- New: Added tool for loading checkpoints. +- New: Added tool for deriving keys and addresses, statically. +- New: Updated and revamped the demo apps. +- New: Added a bit more (unofficial) t-addr support. +- Fix: Broken testnet demo app. +- Fix: Publishing configuration. + +Version 1.1.0-beta04 +------------------------------------ +- New: Add support for canopy on testnet. +- New: Change the default lightwalletd server. +- New: Add lightwalletd service for fetching t-addr transactions. +- New: prove the concept of local RPC via protobufs. +- New: Iterate on the demo app. +- New: Added new checkpoints. +- Fix: Minor enhancements. + +Version 1.1.0-beta03 +------------------------------------ +- New: Add robust support for transaction cancellation. +- New: Update to latest version of librustzcash. +- New: Expand test support. +- New: Improve and simplify intialization. +- New: Flag when rust is running in debug mode, causing a 10X slow down. +- New: Contributing guidelines. +- Fix: Minor cleanup and improvements. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..48f6a0f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,191 @@ +# Contributing Guidelines + +This document contains information and guidelines about contributing to this project. +Please read it before you start participating. + +**Topics** + +* [Asking Questions](#asking-questions) +* [Reporting Security Issues](#reporting-security-issues) +* [Reporting Non Security Issues](#reporting-other-issues) +* [Commit Messages](#commit-messages) +* [Developers Certificate of Origin](#developers-certificate-of-origin) + +## Asking Questions + +Questions are welcome! We encourage you to ask questions through GitHub issues. +Before doing so, please check that the project issues database doesn't already +include an answer to your question. Then open a new Issue and use the "Question" +label. + +## Reporting Security Issues + +If you have discovered an issue with this code that could present a security hazard or wish to discuss a sensitive issue with our security team, please contact security@z.cash [security.asc](https://z.cash/gpg-pubkeys/security.asc). Key fingerprint = AF85 0445 546C 18B7 86F9 2C62 88FB 8B86 D8B5 A68C + +## Reporting Non Security Issues + +A great way to contribute to the project +is to send a detailed issue when you encounter a problem. +We always appreciate a well-written, thorough bug report. + +Check that the project issues database +doesn't already include that problem or suggestion before submitting an issue. +If you find a match, add a quick "+1" or "I have this problem too." +Doing this helps prioritize the most common problems and requests. + +When reporting issues, please include the following: + +* The Android API you're using +* The device you're targeting +* The full output of any stack trace or compiler error +* A code snippet that reproduces the described behavior, if applicable +* Any other details that would be useful in understanding the problem + +This information will help us review and fix your issue faster. + +## Pull Requests + +We **love** pull requests! + +All contributions _will_ be licensed under the MIT license. + +Code/comments should adhere to the following rules: + +* Every Pull request must have an Issue associated to it. PRs with not +associated with an Issue will be closed +* Code build and Code Lint must pass. +* Names should be descriptive and concise. +* Although they are not mandatory, PRs that include significant testing will be +prioritized. +* All enhancements and bug fixes need to be documented in the CHANGELOG. +* When writing comments, use properly constructed sentences, including + punctuation. +* When documenting APIs and/or source code, don't make assumptions or make + implications about race, gender, religion, political orientation or anything + else that isn't relevant to the project. +* Remember that source code usually gets written once and read often: ensure + the reader doesn't have to make guesses. Make sure that the purpose and inner + logic are either obvious to a reasonably skilled professional, or add a + comment that explains it. + +## Commit Messages + +Commit history is an important part of the project's documentation. +Besides its obvious testimonial value, commits represent a point in time +in the project's lifetime in a given context. A good record of the changes that +occurred during the project's life helps to guarantee that it can outlive its +stakeholders no matter how foundational or crucial these individuals (or +groups) were. As any reading material, it is best appreciated and comprehended +when there's a visible structure that readers can follow and reason about. + +For that we've defined a structure for commit messages that all contributors must +follow to maintain coherence on the project's commit log. The proposed format +has been inspired by [this great article](https://cbea.ms/git-commit/) + + +### Preparing to contribute to the project +The first thing you should look for is an existing issue. It is possible +that the contribution you are planning to work on was already discussed +by other users and/or contributors in the past. If not present, file an +issue following the criteria described in the preceeding sections. + +Every contribution must reference an existing Issue. This issue is important +since it will be directly referenced in the title of your commit. + +Although we prefer small PR's. We encourage our contributors to use Squash +commits extensively. Maintainers prefer avoiding _merge commits_ when possible. +It is very much likely that _if accepted_, your contribution will be _squash merged_. + +When squashing commits, use your best judgement. In some situations, a refactoring may +be done before actual behavior changes are implemented. It is reasonable to keep such +a refactoring as a separate commit as it both makes review easier and allows for +these refactoring commit SHAs to be added to `.git-blame-ignore-revs`. + +### Structuring a PR Commit + +#### Commit Title +The first line of your commit message constitutes its _title_. Maintainers will +use commit titles to create release notes. Your contribution will be featured +in a public release of the project. Think of it as a newspaper headline. It +should be descriptive and provide the reader a broad idea of what the commit is +about. You can use a related github issue if it matches this criterion. + +**Preferred title format** + +`[#{issue_number}] {self_descriptive_title}` + +Example + +`[#258] - User can take the backup test successfully more than once` + +optionally you can append the PR # between parenthesis. + +#### Commit message's body + +Use the body of the commit to bring more context to the change. Usually the bulk +of the problem might be explained in the GitHub Issue. It's a good long term strategy +not to rely on such elements. If the project were to change its hosting, much of the +associated "Issues" and "pull requests" will be lost, yet the commit history will +probably be preserved and the context will also be. + +If there are followup issues for this commit, consider referencing those as well. + +**Use the tools on your favor!** + +When opening a Pull Request, GitHub will take the title of your commit as the PR's +title and the body of your PR its description. Having a proper structure on your +commit will make your day shorter. + + +### Example: + +```` +commit [some_hash] +Author: You +Date: some date + + [#258] User can take the backup test successfully more than once (#282) + + Closes #258 + + this checks that when the user taps the finished button on the phrase displayed it has definitely not passed the test before going to the recovery flow. + + Note: this should actually go to the next or previous screen according to the context that takes the user to the phrase display screen from that context. + + Add //TODO comment with the permanent fix for the problem +```` + +When you open a PR with a commit like this one the first line will land on the GUI's title field, +and the body will be added as the description of the PR. + +Adding the text `Closes #{issue_number}` will tell GitHub to close the issue when the PR is merged. + +Let the machines do their work. + +## Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +- (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +- (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +- (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +- (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. + +This contribution guide is inspired on great projects like [AlamoFire](https://github.com/Alamofire/Foundation/blob/master/CONTRIBUTING.md) and [CocoaPods](https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..51ce0d3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017-2021 Electric Coin Company + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/MIGRATIONS.md b/MIGRATIONS.md new file mode 100644 index 0000000..d5ce811 --- /dev/null +++ b/MIGRATIONS.md @@ -0,0 +1,53 @@ +Troubleshooting Migrations +========== + +Upcoming Migration to Version 1.7 from 1.6 +-------------------------------------- +Various APIs used `Long` value to represent Zatoshi currency amounts. Those APIs now use a typesafe `Zatoshi` class. When passing amounts, simply wrap Long values with the Zatoshi constructor `Zatoshi(Long)`. When receiving values, simply unwrap Long values with `Zatoshi.value`. + +`WalletBalance` no longer has uninitialized default values. This means that `Synchronizer` fields that expose a WalletBalance now use `null` to signal an uninitialized value. Specifically this means `Synchronizer.orchardBalances`, `Synchronzier.saplingBalances`, and `Synchronizer.transparentBalances` have nullable values now. + +`ZcashSdk.ZATOSHI_PER_ZEC` has been moved to `Zatoshi.ZATOSHI_PER_ZEC`. + +`ZcashSdk.MINERS_FEE_ZATOSHI` has been renamed to `ZcashSdk.MINERS_FEE` and the type has changed from `Long` to `Zatoshi`. + +Upcoming Migrating to Version 1.4.* from 1.3.* +-------------------------------------- +The main entrypoint to the SDK has changed. + +Previously, a Synchronizer was initialized with `Synchronizer(initializer)` and now it is initialized with `Synchronizer.new(initializer)` which is also now a suspending function. Helper methods `Synchronizer.newBlocking()` and `Initializer.newBlocking()` can be used to ease the transition. + +For clients needing more complex initialization, the previous default method arguments for `Synchronizer()` were moved to `DefaultSynchronizerFactory`. + +The minimum Android version supported is now API 19. + +Migrating to Version 1.3.0-beta18 from 1.3.0-beta19 +-------------------------------------- +Various APIs that have always been considered private have been moved into a new package called `internal`. While this should not be a breaking change, clients that might have relied on these internal classes should stop doing so. If necessary, these calls can be migrated by changing the import to the new `internal` package name. + +A number of methods have been converted to suspending functions, because they were performing slow or blocking calls (e.g. disk IO) internally. This is a breaking change. + +Migrating to Version 1.3.* from 1.2.* +-------------------------------------- +The biggest breaking changes in 1.3 that inspired incrementing the minor version number was simplifying down to one "network aware" library rather than two separate libraries, each dedicated to either testnet or mainnet. This greatly simplifies the gradle configuration and has lots of other benefits. Wallets can now set a network with code similar to the following: + +```kotlin +// Simple example +val network: ZcashNetwork = if (testMode) ZcashNetwork.Testnet else ZcashNetwork.Mainnet + +// Dependency Injection example +@Provides @Singleton fun provideNetwork(): ZcashNetwork = ZcashNetwork.Mainnet +``` +1.3 also adds a runtime check for wallets that are accessing properties before the synchronizer has started. By introducing a `prepare` step, we are now able to catch these errors proactively rather than allowing them to turn into subtle bugs that only surface later. We found this when code was accessing properties before database migrations completed, causing undefined results. Developers do not need to make any changes to enable these checks, they happen automatically and result in detailed error messages. + +| Error | Issue | Fix | +| ------------------------------- | ----------------------------------- | ------------------------ | +| No value passed for parameter 'network' | Many functions are now network-aware | pass an instance of ZcashNetwork, which is typically set during initialization | +| Unresolved reference: validate | The `validate` package was removed | instead of `cash.z.ecc.android.sdk.validate.AddressType`
import `cash.z.ecc.android.sdk.type.AddressType` | +| Unresolved reference: WalletBalance | WalletBalance was moved out of `CompactBlockProcessor` and up to the `type` package | instead of `cash.z.ecc.android.sdk.CompactBlockProcessor.WalletBalance`
import `cash.z.ecc.android.sdk.type.WalletBalance` | +| Unresolved reference: server | This was replaced by `setNetwork` | instead of `config.server(host, port)`
use `config.setNetwork(network, host, port)` | +| Unresolved reference: balances | 3 types of balances are now exposed | change `balances` to `saplingBalances` | +| Unresolved reference: latestBalance | There are now multiple balance types so this convenience function was removed in favor of forcing wallets to think about which balances they want to show. | In most cases, just use `synchronizer.saplingBalances.value` directly, instead | +| Type mismatch: inferred type is String but ZcashNetwork was expected | This function is now network aware | use `Initializer.erase(context, network, alias)` | +| Type mismatch: inferred type is Int? but ZcashNetwork was expected | This function is now network aware | use `WalletBirthdayTool.loadNearest(context, network, height)` instead | +| None of the following functions can be called with the arguments supplied:
public open fun deriveShieldedAddress(seed: ByteArray, network: ZcashNetwork, accountIndex: Int = ...): String defined in cash.z.ecc.android.sdk.tool.DerivationTool.Companion
public open fun deriveShieldedAddress(viewingKey: String, network: ZcashNetwork): String defined in cash.z.ecc.android.sdk.tool.DerivationTool.Companion | This function is now network aware | use `deriveShieldedAddress(seed, network)`| diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ce2b30 --- /dev/null +++ b/README.md @@ -0,0 +1,226 @@ +[![license](https://img.shields.io/github/license/zcash/zcash-android-wallet-sdk.svg?maxAge=2592000&style=plastic)](https://github.com/zcash/zcash-android-wallet-sdk/blob/master/LICENSE) +![Maven Central](https://img.shields.io/maven-central/v/cash.z.ecc.android/zcash-android-sdk?color=success&style=plastic) + +This is a beta build and is currently under active development. Please be advised of the following: + +- This code currently is not audited by an external security auditor, use it at your own risk +- The code **has not been subjected to thorough review** by engineers at the Electric Coin Company +- We **are actively changing** the codebase and adding features where/when needed + +🔒 Security Warnings + +- The Zcash Android Wallet SDK is experimental and a work in progress. Use it at your own risk. +- Developers using this SDK must familiarize themselves with the current [threat + model](https://zcash.readthedocs.io/en/latest/rtd_pages/wallet_threat_model.html), especially the known weaknesses described there. + +--- + +# Zcash Android SDK + +This lightweight SDK connects Android to Zcash. It welds together Rust and Kotlin in a minimal way, allowing third-party Android apps to send and receive shielded transactions easily, securely and privately. + +## Contents + +- [Requirements](#requirements) +- [Structure](#structure) +- [Overview](#overview) + - [Components](#components) +- [Quickstart](#quickstart) +- [Examples](#examples) +- [Compiling Sources](#compiling-sources) +- [Versioning](#versioning) +- [Examples](#examples) + +## Requirements + +This SDK is designed to work with [lightwalletd](https://github.com/zcash-hackworks/lightwalletd) + +## Structure + +From an app developer's perspective, this SDK will encapsulate the most complex aspects of using Zcash, freeing the developer to focus on UI and UX, rather than scanning blockchains and building commitment trees! Internally, the SDK is structured as follows: + +![SDK Diagram](assets/sdk_diagram_final.png?raw=true "SDK Diagram") + +Thankfully, the only thing an app developer has to be concerned with is the following: + +![SDK Diagram Developer Perspective](assets/sdk_dev_pov_final.png?raw=true "SDK Diagram Dev PoV") + +[Back to contents](#contents) + +## Overview + +At a high level, this SDK simply helps native Android codebases connect to Zcash's Rust crypto libraries without needing to know Rust or be a Cryptographer. Think of it as welding. The SDK takes separate things and tightly bonds them together such that each can remain as idiomatic as possible. Its goal is to make it easy for an app to incorporate shielded transactions while remaining a good citizen on mobile devices. + +Given all the moving parts, making things easy requires coordination. The [Synchronizer](docs/-synchronizer/README.md) provides that layer of abstraction so that the primary steps to make use of this SDK are simply: + +1. Start the [Synchronizer](docs/-synchronizer/README.md) +2. Subscribe to wallet data + +The [Synchronizer](docs/-synchronizer/README.md) takes care of + + - Connecting to the light wallet server + - Downloading the latest compact blocks in a privacy-sensitive way + - Scanning and trial decrypting those blocks for shielded transactions related to the wallet + - Processing those related transactions into useful data for the UI + - Sending payments to a full node through [lightwalletd](https://github.com/zcash/lightwalletd) + - Monitoring sent payments for status updates + +To accomplish this, these responsibilities of the SDK are divided into separate components. Each component is coordinated by the [Synchronizer](docs/-synchronizer/README.md), which is the thread that ties it all together. + +#### Components + +| Component | Summary | +| :----------------------------- | :---------------------------------------------------------------------------------------- | +| **LightWalletService** | Service used for requesting compact blocks | +| **CompactBlockStore** | Stores compact blocks that have been downloaded from the `LightWalletService` | +| **CompactBlockProcessor** | Validates and scans the compact blocks in the `CompactBlockStore` for transaction details | +| **OutboundTransactionManager** | Creates, Submits and manages transactions for spending funds | +| **Initializer** | Responsible for all setup that must happen before synchronization can begin. Loads the rust library and helps initialize databases. | +| **DerivationTool**, **BirthdayTool** | Utilities for deriving keys, addresses and loading wallet checkpoints, called "birthdays." | +| **RustBackend** | Wraps and simplifies the rust library and exposes its functionality to the Kotlin SDK | + +[Back to contents](#contents) + +## Quickstart + +Add flavors for testnet v mainnet. Since `productFlavors` cannot start with the word 'test' we recommend: + +build.gradle: +```groovy +flavorDimensions 'network' +productFlavors { + // would rather name them "testnet" and "mainnet" but product flavor names cannot start with the word "test" + zcashtestnet { + dimension 'network' + matchingFallbacks = ['zcashtestnet', 'debug'] + } + zcashmainnet { + dimension 'network' + matchingFallbacks = ['zcashmainnet', 'release'] + } +} +``` + +build.gradle.kts +```kotlin +flavorDimensions.add("network") + +productFlavors { + // would rather name them "testnet" and "mainnet" but product flavor names cannot start with the word "test" + create("zcashtestnet") { + dimension = "network" + matchingFallbacks.addAll(listOf("zcashtestnet", "debug")) + } + + create("zcashmainnet") { + dimension = "network" + matchingFallbacks.addAll(listOf("zcashmainnet", "release")) + } +} +``` + +Add the SDK dependency: + +```kotlin +implementation("cash.z.ecc.android:zcash-android-sdk:1.4.0-beta01") +``` + +Start the [Synchronizer](docs/-synchronizer/README.md) + +```kotlin +synchronizer.start(this) +``` + +Get the wallet's address + +```kotlin +synchronizer.getAddress() + +// or alternatively + +DerivationTool.deriveShieldedAddress(viewingKey) +``` + +Send funds to another address + +```kotlin +synchronizer.sendToAddress(spendingKey, zatoshi, address, memo) +``` + +[Back to contents](#contents) + +## Examples + +Full working examples can be found in the [demo app](demo-app), covering all major functionality of the SDK. Each demo strives to be self-contained so that a developer can understand everything required for it to work. Testnet builds of the demo app will soon be available to [download as github releases](https://github.com/zcash/zcash-android-wallet-sdk/releases). + +### Demos + +Menu Item|Related Code|Description +:-----|:-----|:----- +Get Private Key|[GetPrivateKeyFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getprivatekey/GetPrivateKeyFragment.kt)|Given a seed, display its viewing key and spending key +Get Address|[GetAddressFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getaddress/GetAddressFragment.kt)|Given a seed, display its z-addr +Get Balance|[GetBalanceFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getbalance/GetBalanceFragment.kt)|Display the balance +Get Latest Height|[GetLatestHeightFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getlatestheight/GetLatestHeightFragment.kt)|Given a lightwalletd server, retrieve the latest block height +Get Block|[GetBlockFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblock/GetBlockFragment.kt)|Given a lightwalletd server, retrieve a compact block +Get Block Range|[GetBlockRangeFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblockrange/GetBlockRangeFragment.kt)|Given a lightwalletd server, retrieve a range of compact blocks +List Transactions|[ListTransactionsFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/ListTransactionsFragment.kt)|Given a seed, list all related shielded transactions +Send|[SendFragment.kt](demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/send/SendFragment.kt)|Send and monitor a transaction, the most complex demo + + +[Back to contents](#contents) + +## Compiling Sources + +:warning: Compilation is not required unless you plan to submit a patch or fork the code. Instead, it is recommended to simply add the SDK dependencies via Gradle. + +In the event that you *do* want to compile the SDK from sources, please see [Setup.md](docs/Setup.md). + +[Back to contents](#contents) + +## Versioning + +This project follows [semantic versioning](https://semver.org/) with pre-release versions. An example of a valid version number is `1.0.4-alpha11` denoting the `11th` iteration of the `alpha` pre-release of version `1.0.4`. Stable releases, such as `1.0.4` will not contain any pre-release identifiers. Pre-releases include the following, in order of stability: `alpha`, `beta`, `rc`. Version codes offer a numeric representation of the build name that always increases. The first six significant digits represent the major, minor and patch number (two digits each) and the last 3 significant digits represent the pre-release identifier. The first digit of the identifier signals the build type. Lastly, each new build has a higher version code than all previous builds. The following table breaks this down: + +#### Build Types + +| Type | Purpose | Stability | Audience | Identifier | Example Version | +| :---- | :--------- | :---------- | :-------- | :------- | :--- | +| **alpha** | **Sandbox.** For developers to verify behavior and try features. Things seen here might never go to production. Most bugs here can be ignored.| Unstable: Expect bugs | Internal developers | 0XX | 1.2.3-alpha04 (10203004) | +| **beta** | **Hand-off.** For developers to present finished features. Bugs found here should be reported and immediately addressed, if they relate to recent changes. | Unstable: Report bugs | Internal stakeholders | 2XX | 1.2.3-beta04 (10203204) | +| **release candidate** | **Hardening.** Final testing for an app release that we believe is ready to go live. The focus here is regression testing to ensure that new changes have not introduced instability in areas that were previously working. | Stable: Hunt for bugs | External testers | 4XX | 1.2.3-rc04 (10203404) | +| **production** | **Delivery.** Deliver new features to end-users. Any bugs found here need to be prioritized. Some will require immediate attention but most can be worked into a future release. | Stable: Prioritize bugs | Public | 8XX | 1.2.3 (10203800) | + +[Back to contents](#contents) + +## Examples + +A primitive example to exercise the SDK exists in this repo, under [Demo App](demo-app). + +There's also a more comprehensive [Sample Wallet](https://github.com/zcash/zcash-android-wallet). + +[Back to contents](#contents) + +## Checkpoints +To improve the speed of syncing with the Zcash network, the SDK contains a series of embedded checkpoints. These should be updated periodically, as new transactions are added to the network. Checkpoints are stored under the [assets](sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint) directory as JSON files. Checkpoints for both mainnet and testnet are bundled into the SDK. + +To update the checkpoints, see [Checkmate](https://github.com/zcash-hackworks/checkmate). + +We generally recommend adding new checkpoints every few weeks. By convention, checkpoints are added in block increments of 10,000 which provides a reasonable tradeoff in terms of number of checkpoints versus performance. + +There are two special checkpoints, one for sapling activation and another for orchard activation. These are mentioned because they don't follow the "round 10,000" rule. + * Sapling activation + * Mainnet: 419200 + * Testnet: 280000 + * Orchard activation + * Mainnet: 1687104 + * Testnet: 1842420 + +## Publishing + +Publishing instructions for maintainers of this repository can be found in [PUBLISHING.md](PUBLISHING.md) + +[Back to contents](#contents) + +# Known Issues +1. During builds, a warning will be printed that says "Unable to detect AGP versions for included builds. All projects in the build should use the same AGP version." This can be safely ignored. The version under build-conventions is the same as the version used elsewhere in the application. +1. Android Studio will warn about the Gradle checksum. This is a [known issue](https://github.com/gradle/gradle/issues/9361) and can be safely ignored. diff --git a/assets/build-variants.png b/assets/build-variants.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9d5c5fa2b9edfb7f63930407a912bce3d539e8 GIT binary patch literal 9800 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 literal 0 HcmV?d00001 diff --git a/assets/ndk-window.png b/assets/ndk-window.png new file mode 100644 index 0000000000000000000000000000000000000000..545b085b8b9dd430840080393d5b7745674a1754 GIT binary patch literal 242730 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%0DZnO=FfpEgoH52%bBu{*9U%)9%I@qXXY5|v=S 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

?|cczN0m%gv;Jb>GaV~9zgT#fJkRm<}~ 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 Sa3Qm!byV||M%p2>8~+Pvxq65I literal 0 HcmV?d00001 diff --git a/assets/sdk_diagram_final.png b/assets/sdk_diagram_final.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec250c525cfd7ca22cd85bab115fe4f8c462125 GIT binary patch literal 455744 zcmeFZWmwef_CKs_Pyw+Jkwz&I92BI}1VKWOh5<8(Tzx>bc2+%bj(mvl0$b7 z49zff4$nRAll%Ps?tRX?=eoA9kes<=txv75kCK8k1sN^bi4!L%p2$2@K5^pgn-eF_ z%$zv|K4Y4@#&O~V^NA-9?>%=uxjc5d=y~7J?MdqADQ9jn>q|e%|LjA;|17`ZN`UU& z{D$#{EBBsV)VA>H`f#i93gSz?CsjaW;Gn_4ARPlS)vxfCy=uA14w|wZUc0EMgVwl4+fU!HJ4woH#KF9h_bR0SyLI~Q zwFRFrIQL&KG2usBbfk!6q7ssWFN*JO`QZ0wX3ylBEVu5Qb{J)&U3x8ePKfhalUE4o%p``x0 zwtu=_{dH~s)KdM`ZU1}^`>WgjnLhYexBWAv{I~D<3nc#;MD`a*{!^v=2ZQ(vB>yQQ z^%uAOGo}2u@A-?{{uv(g7q|U0rTn+=`Ad@eQ~JkWlGL9U5dV^-{tS=#OOpCCrTn+= z`Tw^hB~?!TG(nS<~H6Tkh8RPq_OgOyU;s2!@ojt6;x$z$!F zKaHqBqdyI02)n$mT8`EugyV|AM=$C?Ds`PZYI^QlgZf8XhI_LS)}d9xXa0OkkV+gT ziI(3f9P9H44EW9GXbY?1%0pg?(DiUZu6-llGBZJqS0?LCRBa7Q8~tkmeI8Tutcjko z?ma~-UB4u@QZRgJn4bsobA;o0pGfTlCo7A>kKK+gtNH$s1>M`D;Aax=l6LPBgNXgB zP7lZHKmR5F{{FsGzlvwNbWJIas3%R{uQ`N6eQwg<7cjj?SDe8z8loz<&0eodF9s3^ zUr)H){=;bSB%_SvHInt((r_ZZz`Q1TGU3H>;hO)?D5U55#jiv%d$Hu=oNsI965x#1 zNZe!O_WlxXTNGPgmTzb{x{JH>;@hvgs|c*E^sBy1Rqm2OgD%tj27`QsIQ((7->oZI zxdpP>g&iVY*_wsdH&Z<1{b~6#Jw)4b9Se=SY->r9jJ#{A zJmz>qNsdV7y3yfhk^qBr7jG!b-J&{Jt#n$hI#^W|TWqlM# z?^t=i+DX8^Y};IfNTM#fqg+7wUw8cXeIe{7FmIGmu^y-k&Mv!aW#(&>&if1LhHa5| z_@=$$Q&goS_GUsxlO5v%8AKb^s`phb3b*?6G12Dz5J>Y<5$}_{b^$Kek@grt6q_e^ zQRn@xa=W?t@k*Gzo@uH^Ic!J6Wj3sJ5wm;$lLs&&~eOWNVd80#vU(~NGfS09&T z3+!*L(80D><5XGIu6uf<$I}wdqxn&H^&y+9Wx*4uj(!Ibn&asQw4#_zNi!3JsQm~2 zehn5i9h(LX(*~+!?NY1q_tp6QC7GZ+Ja!^i7tyiz#_VtJRFx&T%KXR?Tgk$P8L(JD z4Ac~&0-q&IH@)y?)S}$BW+A`4-@#ux_9X=yXD6z5pkDn3^>tCQ>9NdD3SJ^DG3%S> zb($7$4P^vxOo%(bhTzc2$N17$L@d&Q{_s&ZyVd;qOL8-x?rjg-q2{|&<+=j9G$>N( z+`1RfEZ}A%^cp{0WHF|%a9HZk$2HP5<&})`3hdAFBpbDc^RRs&eWKC{ zj|1*zCcg7Wi{`mLn`35EUexiz%PwBzyW^Tu97;PT7uRS6$i1n5TH``92u7y(oeEWr zN&IQX59AQ!?Z-ikx@F22WxFXl;nk}ZWk-Rc(`6Fw20LSpT=%nPyXsS(gcy7ezE&<> z;REw#aQyJg_JrgWJvZF?ynfWy^&>M}tvCH8bYnp4@(^}sLh_u*T1^}8J)$tyV6}3W z&HN@_#AucKfe?DL$FK)l$=gZ-uJ?~(VqLYRcJEhCm9%PG4N1~S0hc`eiYO*XHyE0-~?H=pVNP`5r0C5sxb2L6RMQY%|G;7};lAyIX^(LX9Q^Vu z+15u=&tuOBV>)IvVu=p*IO1(3CVd`V15O`Zki`Bg<5H&~qX-SF@>#+cLbaIL49>yU zn~`<)tE0mGny?jQ*$GbWX-|g%UBR8W>sdUe{P|&OI(M>UvPnt7fjtaa zu~x)Ab$?HVQkMJqi3MQ+nFWht9ahhz^OCXJTP$NYlwZjSQd%O~1@h6>9+aF5hK|~V z-rLL;5&O&tv=@|kf{=|tis6`Zk36pSG*jD+guP~Pil+(1*1BqsJy0AI8Rh4T7h}^y z?jCMXmSE#83MqEQo*yY*A6UP%P_)TxDi zwik(4tLEZ`3~S!J<+4km3+XYVs@xf5!6d*})9kd^UPi<@b%^7Su<)jY22!aiAW~Zy)o=$D&$9T^knBz3elLDxfXr<4K_}GcSgOo)BU|_?UTF2 zKP!i-+?`0@CgWFB+_xPTdxd6uRSa7~Iir#XO|X?{MQYvWpJsxhe@UZy6o~EN$fdt~ zL#x4EW1Pq|Pr{J3nYk&dr5 zi!-ug;g0)${n}I=pLcP$FIQt?HJ;y2;^iu{OyXN&iM`F9wsA;huX2>ly??%3hl^{K zg%H`r-$Rz)-+#{vQkfGOF(Fz3+^=U<)qk8Rm)^Q_;&&CqrhaWJP$m`})PGmD``Pb0 z+poRjjX_LI?t!AYj%A;rg4W|=jw22O&Xf29!;N-<)@7L1$=SE$JpM@!yp6-vAFQP( zc=%E(if|H6xyd;bP|X6ea*@2l#pV&35SheJB+Bb5T1RQy{RKv?8W#BtX5N+T|3JP< zJSQhaml{%e{~hiAC*Qnr1E4VGfVVDe!B+PnMZ*tK@#5&Ux^w26xv6^G49=LSsHUUI zcju>@ITG5qvr_bz`g81jAh6{sSgqBLX&(Ygg(?mgnNt38`s{Zta>RRBkn{vCTP^q$jT+-nE6(ruU_lLy`E|N6(D`%9^SdUuE8f%M;j)c^g8q!OevGw&StC!E({ksv{^hP@Zsw9P$B{OVv+lc7k)T@|Yo?x3T$+#!hni)y zttPm42uID`EVQLL1&aHAnOkRKTYReOdHi9zWJ9!hZWLIvf5SEn7r$VzaSa!{$^PhS z>?QyRdaUWJc8W+3e&k@x6Ru<1+_sB6lUuOfLf{(62Z~X=Y!djH5TrBPX~JQoj)i-0 zf2|>MsoPyk4w^0*u}1l+-=EwTUHw4LQzcZGwb3r97kk_!*?4LxFX2C48s(RM@X{!| zFZ~xU&Fhksh!Lw!TkERTW~-htBfd~kvfW?Z_H}Wen%}$gA~)>L2p*xC?pO{NwH4S> zjKhzQZ2E^xOdRt-^S|@D=FOm6Vf(*8-5)!YxJ%TxU0Jw$U+bUe{~s6O-#<9k)AzVQ z-11}+fvsv?R%i{s#fRRwS=Pqe`jT=FsSfBQKnI^+K>%B^MDiLuL>_IA+%ay8yejD7<`2-)&QO_Bj6fHl zbfbn{kEjE})S<%tI(F^zqZuk)fqKjDC5|?GoL9C6O#Ds0{Yv@++v2^MKI@K@bd^|+ z(4e0P8f|MB2FwrU8|EXPg{`#v?P-Pu)4bc?MF*iJtt-P|ZU^mxA7e@>*&jYlU?k@$ zkm0WQem(#DXTL^eIS9>CZlMBq_2D{A&KZ6xPnSJtteA@}5-_$q(|zhJ?IW9lH;>w1 zjU!!Fu^xcy+a0HckqD0JziXp971QEk)@D-yF@L(U&y+=9?c~Zca4dFZIC(fXl{`Qt z_9vhNd@1z`h&P(OSQ(H@RPm%U>Y?zMElQ0kE-W#VKk-EHB(`9q!v-xcI7@NxKE^8Z z1931=U)U86>zJlN%W9!}Kt}K0`z+rCJ04~9R$gT?A8fQ7s1Vj`@QV4*1Vp|*&38IY zA&&OExd<;g)6U3=kCZHr{*;_ie)4^Fdy9bM_OTNS4SicRw5Aj)k@lu_+3Ne zuIl3>?4ZqD9A7IL$>~@RSF5vLE#}i+Zi*sPzYe~xqcG2GU$=HWme`+9w&`gXY$8xy z&a9*9co;UIPfbr8s7%F<&nlq=&Ti8b=LG6m)zt(z-lcL|J`7>MaEUIv+GBHdOjJ$R zD9jbBx6IJ(_7uH0(4*J{_Hk+K5S&9sI*YIOma9gr@`p3C`eDbzqV%@&Nw_U~d?Tm_ zsoPfN0|Yt~H#e77>Dq8dnkjBbLG7y!X0C5Qhw{AGu0E6+B{~h=F77!GYPg^Ii;%=xFx+~5we^~wSiNu z4pnL!Vw@2>2D)=H`v;O1gI})#x`e};B;0Zyi|T{Q(k~Y`v*$NpVx)Ig#|kr_KV6Qs zL$x1`Wsgm@LMrb@#HxxyBL=)M_t~HkeMU(6Vuf-yEO+{jZ8?4=V~IYe-h4sX?R{UL z+#h5=dmn+0q8r+4de;+hLK8-=BP|bM%LQs!VacXnL0`qn5n`g@R_QqHf^lS2sXZSK zE{PYafFPFJrV3o~>uXas%Qj7ql43r(Eot~$|RTCVH$H`Ol!W66Np)jr@cj2@<+q!u^d*l*xVb**mLkMZws$TMyY~&5`!f(MtmWQkD0q6tol?+`6K{%q7+|SY+BWU3GvB(zYsR z8$U$BF&c13s;d3PESZgK;-Cw$Y>zoje2(oIV&KbKPS_cX*vP`}Wsmho=y}k*JAJ-G zTusliSf;u+&MMn_J{<3n(x**ZkgA%oC=#!_6qT(E*|3}W{xQms0I%up_fNV%4x$Me z3L>TC5GZS}SdNr9&x7Acu*0<5*UI&|$D8mJ8W1Q0%)w@#^nNFXS$GB(SmTeu9Da!P#B`Bnlu{%7`08}9H!%I-)#gUCf|}{8ZrTxlsf1O*Tz^SW{anBB)IWb ztQIP+yw*f2RMUFYf0TZl6l1hA=)N-#5Rp-rdfb<@p2JU+_$w6zZzgPdOWxgWL`6HA z;g8np&ZEl!-oGn-0Hit~_2qG9F2do_0+!)8HZ0%ib8T!&ZOTgC)TWQZ_N}m02UeSs zD@D5~ZRc76opQt)$^gK;};g)s@ zx7J8sfACU)nP~DyIk#x)3DL?3KfZ{}6|D-Pn_AcYy}SMnFG<;uL^qD5H1PLmk&+Pl z9#AB|i+#yBNF(RbeqX8PR!o^xf1djB%CI>)@xeJxt@Wn1`qD8E*rxDm+3u7#lkqwA zl?_v{YK9gIm9X85(sys{vG6M=5C~lg6mh_T$ps+C3J;TPt>(gD*OaXC@Lu^pj zh196JM{tRk--8ET26W{<9p14sQL%j@(jmSxE^1eHGXa$ax?&{BsjyETaKz5|BSn1V z-fPZU^PTZZ^prGX6c7$cNJCp;I3P9qy*npS_NAGLKmFR#SoL~l)^yFgbG|rA_TFEQ zwB>3XG;ampbQu~XEa;ra^mBCa=4jR{&p&8(1YO=#r&xrVXu&vWDYsf8&r91Hacg^d zOjN7XDo&lfQ;0}X+dOCVCUKA1(fwnBy#WZq2higM6r>klhX#RKc1~h<@~WVfj`0c< zl>8x+II8w&{vTq2j6Oy$Iv&7QE0SM<>|ms(r|(H((9S4suu?n_s1PUe=m3C=E98)? z=%yf4dpkIhVo=w;S?9Spr_b95W|&hgXBM49VqD`V>B&J zFCo8m+0@G8u$cn~DC7)YJ|V-f(VufL{YeP>teV0TLGE-_^TmqPa^dvqrRLl1-ox7N z7!yB|D_<&M@1Q8Zy`jWFwRwdF*Xb{Yft^VnpyN7ZRH(YrU2bPlv5?jU1ntjg1HVU2fedzAJri#>osWSY?!yuP{b=PzuacIy z8Tfw?fr={^AT8BAWs#5=2V$rZ>0Jyct8gCmZxium$ncKn2!r3<-rt?X8`MDTnzd!$ zG<;uU?KpUi@8nEYUX`!k@!_0MpDzVpHtoTaie{J8Fg0HSNCm4X7Y{s2QvxwrXQy$GlTCBE zU@6x{-lAm4*aqiCjcJgh`SRq~y$!aA%TMtd9_6zJKz<9Ht#Ax5LO2Eho=UfXDT}`4 z&Yt?xE6R}HsQ6gkhh*XXMv?EMq#XByZJWuHr)MtFEq;1l&=V+%iI#mrd0e)KDcean z_77!#29wJ#`qsP!KZaR7${3!daE}Xg+JAGBBt-F3D?}7ae*ikk>Z$!~bT;VEg}?T= z!6!XWPv^Zm)nJm~E+9A5#?v7I(3Qd1Dq=;zu55AxcIrGtLrrC^3w}%|dWaF^=P@}% zbUmhPNR80pMLQUZnJ(`QT{XNJVVKhQLzBO)d5g_unSfcsfzsxnX>*IsAqCZ6k$~k0x?=818yO!7mt|E)?^Y&EglEEUVbCPb-EkCv)Tms}a%bGgR!(ET~tTbHIzt z2Ou57OW9>Rs|dsNILAztb!jv16{od(ryGL38GVaHStgoG%>=KFCHW3;s@c?M~k6{&w9K!85OwPQdr9XFU(_)-NBMj zL$5yYKG*I?9-3E!bmd7?4GfgPM80iiS}4T#Yg_pgo;sHe)+S)hEGy><^&u_@w^MzT zqkmst>*K&f&ei;X=mI0bnp={M0!k4pzkdP}oY_nBi+lO zN9N=0)0z$qXD(lg6fu$&1J0^V`vhJ)$-8Vd8pl1 zsjQGN+ng8LL2mHQwSHR}o>lw)B&#|V)%4zKLEOzPK>`;c2l3g2eyL1dY9+Y40IQg; zT+eHLt`DuGR#~45Q4|l$=!OM}+iny?vOHc2T)4QDU8pd+9t5v(}uqV`m#-5m^wyH z>w7kktOEf`IkHcFz0aLF)Sdb09i&=J#A)$4rP*3FXZchS{)mN*+sM-C9Ahk1ZnQ?l z$7Ns*J2g5hf2&P^RNOcxygOO0P#@X#>S0Psu^fIqBI*HOyme)tnoV=UajZ-7uD|S- z+oulmV->}KP>oN;6cy9Hk+)ymS9=y`m{+x}g)w6{-3koV2({vd^b>?ab!0KxGObk-G|)+q~oB`9D`0Cf7uRiac|RzsGwHO2yIW2~~! zxOIO35heQErPD!kD}GYh9lHsIbi`&fnlDU$f93VNCi{1#`EPrZN*LV)2F$BOsfwXe z=^#duoho#Ps3EvWf$3z2WY)C|R3O9h*^m2E`LQ&Udnk>y|K!dDoXMNX)0@n%Iu|BoSWTS{lo(U5 zRMVccSqfoylf5JS!Cb=}dneGT%jUn46LLW)bM~VZ5n#q4omD8xAX(#ldcN4W@z#bI zo<8SWx?&7JclD$aivV?$UCP=jzYqy}pKY~9)p`pTwZ$v}?-20h_Wl@lIs<-`r7up> zK=}$paWDa0oTMyE#*5Po!iZFY^M0p^k*?1BJSsc*lLP^OYPjJV_<%*sw4Zf>^a;MW(LQzA|8&oV@-3$mFm7w(L^;0#EVm0N50P;JO4{1&jSd8!W! zG`w#j9A)_>Tdfk=7CX;N9$o;(99Q91a-dkj7cO|O#P>!zYkJu6s#9@Y`GA+&sg`VR zjVnX}I4E*I+I+flXS|gT`<~9~syCCP1{8VK6Nr|#@y@H|Ke9Od5o&I-3Hc>wK)n$q zm&N^7Z&I~Dy-EJVdIKeR&;blDAjBe$%U1`0TK3T@H+n4G>W#?scNRket0IWe_7C3X z*b@P3q16JJKL!V}8=Et)jt9%+yf9Mlhqy{^fy^my}`+F9E2Tn6q;gH1u*+2+e0T)l@`Rzh z;jIE_I@QDO&kqV zwp1zLexcV}A%1ZH;04~Q-0IgZ*9#f9-)K*^uJ#~!Dedc7U+pZUyhKR33)a3xZL!No zhtlvodcD87VAGP34s;JcbBsKYh`jJ1_G4SF23Ip@Cv!hwJB08}(@sOb7PItsB;f+Yckaem!YmNRPfV;BW72)>v@ zpe^&E!x*_|53}uKDmEpLD5{ro5$l<0ROSlev!QKNM(a0GM*5CfII-yb`<*(B9jk1Y zUit4#1OK1iw4r=>1cZ}l$*IfOb9J4ppvSAF)d5A9?yp$RcP0_k@!=`Q3)9E|m7bv1hG#G7x$PMlk8lZmTV&!ty;?r*%CBg$ zSE_Wqi93uJ3IcUES!h36*;@M(fK!`TTPcgQaU++o#^Ro4vw*|O0T7f8UN*++R-2$S zfa$O}+@>=yV!V{Y7qZM4eu8(PB%n*m5J|1_wxN)QtDVrk9b^@F-apuEBVn&Q5oH1f&s?8{Ge|R^5M!K}uSLgv3^#>qioS5&NFq zIq{ttE1;?+LL)2*HUv;wcI$wD!VYdH_Ph{tE&{*53skhF0)z++QI2+T%ZJA)dU@9V zD+I4ul+Q!h4P$tGRIy~xJKx3UEykgA*VCTG*!vuVZ~yo*t(H-kDz9Jl&9BoBjAzNn zSBDTzPhiOUX}_lTbQTvDj5i3m8A6<97tn2JI&qzWg9X7zwOAanu5R~7aSnn&RohK3 zk0jy3bsb_+r&am|tnErunGG8Axo>^6xObyaOj>soDo!wtDFpg&it(S;10-~MPVzvr zy_M!TO*I^N1tRETj#*$MN{HYE4i>5B4Z3FKWM6qkm-SRnPvVu*=xcO<-SU{a zo;y_&1KjO!WiiVTzvtfDe(|Z72sy!VdZu>#WkG2_wq=;T7iY&~K4BY}S|7a`rPGoF zVzQ|gRSK3oz$b~?qOB;9OLAH7AF-aZf@&`Q?U*%;X%rx=|R7Bnx2UI?0;j zTm-xV>fzLvIEQ{s4k)99TljVl#W82IRR&Q)b>Z`EgZMLd`(ZXfigZEC*=?z7TSZax z80q`4g?|9GeA5G>GF900O!WM zp^|D@@t;?WBk68WlV)&vDaLF6>ToJ0!~oo*?2RgZDj>CP$UI@K9x+MS?d#WWdIWMx z$b)ehe*^v&pJ$P6Ya&9Cnzu21rQT0BQgVR06za17qsS(xe6<`Y`N&vYTEyD}!{_!Ho31UT@k-L2eeTWBlX*A6 zeOnXS-Yz)8t^CQ_(7F{;_!M)ka6eM>*=w*sjj%g8-=B*L-=HWNV2^nyEAnbNXU=tL zmcbU_upi1*LyR(z7*#|@DCn|wZ0kl_-17|dtZTJm zqoeGoWW*p(e8(S%(kbJHd+V({XaMm1bREa|x5rHq2+09-6B9h!N!0O1Kn>t$@!G{~ zSzC8cYn50;sa|#(buk$Q{Khlch}DWHZxUEiGKq6CsL$9E>n-0-&3( zY+~$6Jt;^T1cb}-puiR;s!B8rnlh18Mo?FL!W=V>*E8z?4%qqu4#3m`;7>9{XP zyz}*)FDQ9s;B$54h!5q-*iFimx3Hu6j78Gy&tut-?ejT~*Sa`k)nsu31&?VF*BZqa}-NZJ?DWXp_7&br6I#7zrSWGrAu` zPkiXRLjUG6>H=X3fMx9AF|giIANs_eWLP9x!N-X`27X42#^B;a+0=HQDT8nYm~(1xK_RKR zC4UeE(TAP^(HZK+z@d2}Lfk#2>7q9iBZ%-m61!ueAqL3H9k<=JND+rc`U5^-2oh4W zxLy^-hNxdoJv`W6nJZJ|SC8E9Q5>o>@8=dBubC$}dnw>JCGZ9g0L{M4wlfj9^8Cg{ z9w6KNsG^o5Zemzl79+erXozlH$_om=rQHw7^&KGO0^ET0!A2uD;&tWb69g@rRAL!X z6O)q;z2ojw6nx~AuFWH{?Lk8u9iTM$=^cJ9JKay~DMFTFo;f^X+j@)omR8XhhVAGY zF-n=NWBFL2JJ?;$YmQLMg#&5X$t-tWF_8Cn>0@hRQ?m6eKO*Qs>nbyU8{_zY!l~Qm ziK9{P3`JNyU2c8_LGOC&onbD#<5nMT=IaZaebe+uLC4zn3=|k(>lx_=5xPzR=?N~z z3aVKZZh($Qq0P%D-$voeNz?j7&8!LXzq+17AINL-J9LQdjLxe~s@M1AP455~Ejkm= zCiOEr(PML9_M z%RNUeRCJ1zY-angnwCvN_Uq*O?z#PM> z^UJyKT$DgIsEH-60yTJ-5PqxNnFuQSRO>Y1P7P*gT8>0<2<)^swmLzDvV5JCrkYzX zoncAI6k%B!U|%;QJQuJ1b=w=L2V9caAovg5UNY#m0kVJ;2IaZB4kX< zNwc0B6`bjK;Au_9`sQ$Jy_H40#gxnbotyC1Grco+pX*x@sEXk8D*FS~Z^iZtkMsU* zjOITjr_0iS0@~0QE0YirM1M#UdhNma0D#8C2~bd`nNf3uU>6cvO{kPD@Y;=mORZ5$ zXQNdLStz5{eEG2qlbK~pN?$12Nr<6P>%P86Z#($n4j|ab%m}EXCLu}-EC_a&AFm`* zlbOv$?C?7a4(#tkEpc=qO2Q9_3GF(mUr;?05e61uz=B~+P2(EDaAkrY+SIc5Xh1~ck}8PEaTW0Vu5o{*5`&?EY?lVtdpv|i7%#R_QMuEzQ z8@Tt5&`Y9dIX~)0rA7qilnmc2MAE+FOuBwF?B1`|LMJp*YRxpDW{#QQ= zmTk(dWMsDj=ns11OqjZ%KCq3V>dXMk2e|fnp@r2uf*Z{S&;I(2Y|AWj2ZX9YCX9{% zRK`6Bb4ba7!t7RiO_HAhP6MMkS7k_rQlEaycu48a4pcPz=m4ba_8JOA$7! zBUqI99FfoaIE5|fTgg2o!%FRH42PaP{vr7Xck!v6?Ck8 zkzpqFXA~EqyiX*jGzsIr7g@g9|`1JjHR3 zxLTKt&%IT!jO#XW@H8)AUJRUjhUCK%6$~SB( z+m1G;MJh{ISGl8;gCu+-pdP~5QTIb!lT9}uX?i@BccTTZH6gg0V>R)gn!Cwp+7~;&r8I}2fqazppndxJ0tngCJI*KB%wO}a2bV79 z0Jhy*ji;J`AG^n$55|v+@AaybOUnw30BOK*0t`=VI(0t=klIV_rUo#f7Xc$Arj`GZ z+Y?h0?&z~!R$-54_H-rt?cj)a&3$$)){{e#1nB;}Yb)7`sVAi9l)0?Sd>}-s>hLLA>m{RwJh`hN)dWRQJR^ip#!}Ar(1r8bUnjCDi zI&NK$x?p*gAY@hbJ!@kVq^=Sm<*bAVcpgAho@v+CB0$JJE3e!*@SWvAuC7Jd)cbtf zomGNqYv5%y1|}=QKWu8MPOP*aA9A>2%T30uC``HXJ`NEpADEt9xMS23>I^a=K<6be$UdwJoXOLJKLcCaRA7Z57YFB)u#f8Yf|?rRH#l z$cW=LnnJMNEGt*b@u>S6QQr-vmLE!J+#UG^t%@>Rt)GX3rRqS?^=?}`R9=aB?5-$? zUlL{)rU?*=vTPwOCi)@KcaT-zXpAS~;;wcxcC&ih>}K^z(k!rY9^?XnV|fXNMOZ(L zzMH`=hMoZ04x}QlNcqqev0_{=c1n{(o~jq1Xeb+0cV3jcl=eFpFzdj2N5WEA!$Mhk5g;gPiUawhhC-A$^^u}Df61tU z-;k<$e?3XJtgxoG*2SjBiLu1pW(t}kL6V2TR99G}5{Zc#b_oFHEhV2yi2RY3D?6Fu z&ks%K7oZ8#hK@ zZFMcvR3X@8jnL|^lm_69W;)y zoX+M$`CqxEbvZjLae*vF)xMy_hmynCtKm!=pJzv$h!HRi%WQs34*2pY`TsZvl01B+ z^IERP6sSLV`_4q|bXcXphlwJ@{hB6m^FxIu82wdRF(E$aty&aFxmE$=5joX+=<5c( z7X>0$yG-D+M^)~FG|u#(VNk%cM0bcvkC9n@=Qf(RD8s1@Rtf(WjjJ>>AC zgJVygu{F3N1X$Sc7346hp{}L`#-^!iQqSl*pCnYSSKamyK@%osS^%~qdO0Jn%+m=> zNEMP=v`Mpoivk8+ee4Su*q?ZmHd>C&p_{9_K`KVcO3Okyq}@OCp5`h?_1 z3c@j8(VR}fu|q)r&{gy>e(6E2YC;aVNH zE{(9+b4YkgrX>szeRSUdw3WV}ohtl9ccyAq+2$v?&mjEus9!$aiGnd!?!pil8EC_i zfj3=Fn4aB*FOQLy(W^$?p0o=&VaUu)O8j;ivAm!4f#rIE&uy~l8;Kv#MBmTeICDM5 zcd{in@m=!ScV%zhu`m-q5|Dl*aB}FQrN*~Q->x`*f*sGpF$lQ}S_k((L(0SZZ?N@zI@b4=C5bvn~1a-sL{89&soknRl zJl?~VAl@xb6ZKJja5@nMCQ2efjK=)J>fy))l+XHojRrY4V!7a26^ep_qB89!@bHez zG3^(aJ3Txd8J%2jl~%*uBCM)2ZvDYIQa$N(!c_I?Uf`K}N+Oj9dE+Np`yIfvQ^rki z8Zas7A0h6%Ph-Lwvld>8WXmqmM_)Dps%p=qI&_z^HEp9{2ZsMXtwi_Eu) zJVEm01`xV0`)nhhu-#F=-ue0YY6O#z-v@_A>=g9Dq+?rqrHHT{rcK?%)xr#j zjxzl>9Hf0-)?Ok3mQC&Jh13Xk^TYfxC&k9r3x{xPSCu--h`F{XN(p%9y%*rA1xBxY zMJ_RSrqrZH=!SFeC7t)UO#?#yQb?775rH9A&9zv&jwg*IF_a&iT4g9u;s+Ktb$kaK z=`2ID=T=I`!u`o18i`B^9OPCGb8>{@?;si_>SR@he@_SYp7>0WbRuO_9JF<1A;yBM zO3vg`rGu&{hDuh7OYEC21I#`Gi|IhBE?BM^CaAOt`h)GW^Vh z#k?MxjTjJbv6uej;TG@T9Fp|4hoNMm>Oz#@!2z&834=`fn?!L!tD9Pk?$tA;lL&ig z-Q7Rf$H#&P(j-mu*)pEl$Us z8--1{H|ru_#5sJzLCv5~x|Edmx#g4Nd) zz9~Y&pB^@9(;RS~f(SC~)xOQw#^~7<<8?|AgYh5)SOS4` z#@6_9n@C3}7CAd|W&w{Ulv@vV zMfw!({G3>CRsc8x#U_#US*Pz*OAZZJ|wPF|~u13A|l9@fU0l`pYt^u(*ofCQ3wX%~Hc|(bQI_}jk5TKFgPJ#RIv1{B&3S=FF=l6r=gEFUw1-W^cU!vW~;SJ&(_S&jKJmpn5_S zg;OB}p1VXeCbYV|GhkaP0o&g~*e{{9%>PgP^$!VM-+}~yxSZ=c|q5OmS(LddCU(f}i-=_hq}x~Aq#;=(LiGPANTofDgU zGgIJkrpkPyz0TucHO8XF4ltbUqh*siJ|DzqR`mtaEq+yghfvggJ>`{SWmZ269zrm?2K?25oa)VPIgXIUMY400k!ACr zn^S`v?mT1G^n{QIYQT>w#2ZkHk=$Ji*PvYoCLn}4;zUWAZ@_D6^MRCR0^|q{$_zKC z6%rVsGOU*>S1hgRa1u?6d&5Dfkc&?D>D2uvuykYjn9bw;yw~mg14TC0?UtD%PEKaI zYO)u>sf=lgJHl(NVoVezJtC}*hRi8`ekT2Mz?sb7D&2Vto;ksIwJ{(It|hV2#y6G7 z<95yE6Z8coL!3Lnh2KEzCT6sW5NIJ7KRRmR`cGdE!V=u?Cx^TTR};53hIQj`;a@K( z%8zpOSPV%xJHju6DF@1_IjW(yw$@l6_3TL^arVyn7JLs#d!hLQIHKWuTzaH+Y%cW= zebu}z=|~+^gGAQ9e;uz_V%NT)_%y&N_09!mB?(V3M0s6vp%9MqyFiH) z;jc#+y4mlH)q$RSXBh(Zm<@Xok$%Mrm+RyOB!FzIXGpt#AC9=^)YeYS&{|O_sU*Jz z$gyO+mdhs$QzBO#^0Kr!#>?3pcHURKWjk+CJR9D8<#3hUT&t)jjNUqv0zP;qb@u_u~3RH`#FeE}p?4C17Td|C{Yl!O|Y`O4G2fjl4 zg4u~P6TABZ50G~9HUx?T?&8Wo7&^px=Lv0*!_}V#n}y{6o9$Cmdd>=}(^s@Ia}K4k0@3;^lVt0M_7M%WW4_9Cw%m>O#g? z982JcxDFs|FCxYq$(`^k*5sp`ay(UKHM|W(xRe=&iDSG$nE)K4=y55xY}$9Gz>!38 zf7K}@AqZEP+%@(@YitJ$ReaQ$RaA#Y`R}N_j&tZIB|NF3;EA62;+L5?^-o^fXBtI4 z8Js)sB~j*iyYb^4!2Qg$CgAI}1@WD;isD<(tDHyD3=Mkoc*+v3U^qT_#CdobWZaCo zFRd&C%8g8*%>hay4AkX(-IHfvcp6 zi`2UGXnP9Cgx1bPrbx2wW`HIJ@s-#W*-BSaj#eOq5uU?vLD4{gLYmRxIT$jCQSqxk zb7B6OXKJ|C&E+C=VDqppY|LSb{4^8&^noGbyFV5_-UAi%|6}i~!>a1GerYiX#h^h@P-*Gjic%6PASK=1(y>J;DM31w z5&`Khl?LhV?rt`)*>`T=_Z$&@J>PfkKleV5{-Ik~d#$-f{6@_=hEm63fD|u7u^)VA znDeko@KDH7k?wQ0L&eVGX5ys-snB6~0tJql{bp2fsn_T!!Sx1d4`ec=*eUTd@GEbU z+8(Z7rE$FE3C^kUu$62+$WFIM)4JJa1Wd-h(n^n>bfrrec~h^KGqUV;BHB6jlXyAc z>}B}e9K8e$w_aNvMYwp$&q?4Q&$=#azsFlGG1^Yzb?+Uc4!CU69J@>`&^l?>r)aO_AFYiNY81U>lDLUE|RH%WmA ze>x(;96QGafA`9;!F?TGV0Q&{r&73jxCVS~Q^OhTQR#` zgBaswD}|l9*QlQ`>kz2aAf10j$Lf3DhgslE&5Yh458MN2s^eesHy(b{%eo}CpFT4H1*BqYQ}o>y8va5XGk zmvUJ5cSwQHx)x0LO@Xckr+JsltQh9Y_ac2)VWYg$Z?q@WKA37^lrXe4{l(S49D$V` zqw1sIZzy9XhVC~l`|BF@TyGPG+I6oXxVF32vIAWC__o@F8W=_`>d5kg$tOd)5C)!P zUvPPs@Fzl;>ikF)O*_+RW3iF5nPy{LU68mPbnx~0`c#iXrJTG9``LWwLr|H|FKaG# zcOOrsjZ0TC5l|HqD7Z;;1G!BK5XtmC@A=|(+>zYng7GXNJRHA|k4N>(U3^#fj&?om zu5YkjkdJiT0w&@J9G#RpXb&JBxtT~Indc3Oz|`DOEwk!;tp+#DA=({sG(-9%UuL4r z$Scgppc>%Nlz1o|R-DsD!`dsv(W*IUdEf~Sd88K=aUi=TRfH;Vf<*U#qc98iH5$^| zQf^-gL4o2U^Usna`#nk>HNfprmZu*%Jq5OB;356>DqgU2$Z3Kg4%^IOl4P-w;f6Ul z!Pg^YdNe9{_*SERkLWOj$+cJ`NV4jZr(#x3>4@Be0;eO`?4tPcc0_BJK;{UdVz--N zF$_{BREzZHl^#D@z-31o)4p-%)wAnT%ce2mG3<#0j1@{HqZxvkw~EeYo^$ZsJIDiLS( zj;3g@j`+>iTv3yFVmpiHL|GlIILPh`e4)`e+U13~c4OKRgZWuOxIv$7CH$_$3p!ku z^NTMCq|eR9+N$n-RdwtZ5K-MN>Am!dJvtzBRS-TeJ$`tW5xWxBYQ`>(WJp`ha9rsd!g1!pje&q(!^C3O(sPON058-tNFyJ zbfS0+#wA;PX$9DNgkBH%`n5FV);45;SOd`f<8@|aZ$yoCv0y{mgjxb4J;4KGyJtH~ z1ACzGe-?Rcm0_G(m8_&)U<1dS_HOM|fZc>>iicg&XfwxXnM{;f(J*MP=83F-7=yD9 zI8Cw^pJzeoVaR58I6rv9XE~sOUBq?SXuLktDXFNQ54f+l);`DB; zgVvdkN(n^EHt$O8D1$8pRmc!yf{ZWLX(4rBpXCmVBQol)qUo}1w_>iKy_88vQFvZ(^5Y(S)hGaLHy1Q6`i!Lk z11X5S>99D#*xUA&b|6}>^7W*^#cK_JL{c{on)HDapm@q5FE1PT1u8R$)z8-gB`U8PnAIv zsf8Y<2b3XS$enu(EL1eOHV%8>*t@59rlZQ<$ZloaP(>wUH|Vsnjaq^~pq~*JxUfh2aX8Ew5(d*y`W8 zj`6`^sNW2@Hm*Bci?;LPWpnI7|7;>bjq=-Oapx;LuILkD&LYm+Y2#HC`w#c_IV*`w z!SPZJ5;AFwa?pLkC_v+^zq$rr@mc}}Otf#7H7+$qo%gxq*3zx@Td}3CTL~JyD$h={ zXwC(qKo! zU#YRBYm^ZmsMrq6IkM4rRX=AKg|C>`U-f*U1CD#B@x&IXN}zb3HLHa0oTqiG-bTRO zDb9hsxZN@?ZB>jYX)yQW(`4(pj5cB3uuEplEEW^h=3gx8x~0CFJ=B&R2iA`B5aj$w zVoBk3f=Ah*S)KZ{EZ!+!Pg7>AtecX8Ou;!p!Nqjp=5y;(Y*(JzX)L#AJtR0=FsvK3 zHqGRm`owYwdquRfnsLFW8Y3(m!*b{}Et|xEmpA=7dz9;NEpIG1ji78lQmdUbM?^tg zZuL|J-4dGZRIzigd9995H+cQtA_3Um7VXq{bG(bq;gClWw`HUVj0e>M4G7=8bJ|yj#*l-67e#=^oSs0$f}A%*=%?tS&7?QU~msdy*NMZD8x=Cg4myTrw?CR-%LmU zI*gj;hO<)u{}*u3R(V5&uD)?68p1?jyVGQ3Pybg=r?uQo*6Vj_f{MlsoJsC;!PEG5 zh=Y+UF3v}=ad7V8G!kU+GvfzSubT44-aCM=Ix|IE?9Xd7v-iw(eJm*%1_b0^D(_Xz z52j!$8+*P6z;iV%F;q(PV@cz!aploN-3`O>^{LKQ3hReMC-{=G~UKUz6k(;6hau(C~HEI7tJp&5SW3=ae?xXM$LWhPt)7)nh zreYXicYjsza2#(ur-=yX+3+neX{5?-u^ER~`RSV{1hbJ0_4qR8P#z8}m%)uHNY5q$)2TOWJ z@=U8;WS9%jZh<{_?=hdK*mRo@1h`x@1-k;);!@(s8OxV)LRW6!)8UU=725TdenIZ{ zIa*&fQ&WFF5jC<`t6feJ$4)l{y3!)u11Ux`cEZ(`^Ax)ywrX6n(Nw&v!{YTD4wbzUKfdk(vom0uu1)kBPLvLqVi0v$QQOhXl zo*|$HWd2;k$hTkBVEx|VZ_|ZB--16JW}P$Gz7d~>ih&@4bL}gj_YSjBPx`_M-7rr)5dU@UYYK+8BN_z@6(-=giEg<`d-aQP@wtHU~|bJfloY zZXzS7{Hca;2n^J0uF{Cp=hRbe3ewUtRM>q(aS)^_AEZBZ&hK`ZvDye#HUoy+UT68< zq6mc}ef706yOeJq6XAZID^w zFEY{sMBiLBD-N1#QW1RI)umsmMI`+cb59|>xw{8+WPPikR1dM&z z_@&J0?ER(r-PI1~ed}KO-wkIc_sC5e3p?eZzt1{+U+VE^Tt5#s z{es#b=zxU$Veynx<0gY17# z2mAfiCy?z%FrfGC?a-3{hTb6;0lgbcd-eYtrIG+j)!3!HApUD!{+1B3kAYHMFI7qS zZ)!_4f4uA8 zE6@pT`vcd1;QE9}oRFV~|DPs9KE1dt_e3R)ftig>)&wQvM1Hgi`yBX_+eP&s*&n}z zOks_4l#*7NVZW?8*;=|8%L)X3JXR2+1Evhn@FkAzE{7f&X; ztIj6+H(!5w&P?~_2|oPzSm313VS+4GdD~fMRnIQ(>%)c{3M-|`CV3P;ywRK>)Rb0x zDj=@3eD!FNpMmP9+niW*%y~k>Mnu(Ugma%ECMFLoZ(*u{u1_xV$1bebugqzG5vDCv zv3%BjjI!}((T=Vxq2;LjV5A@hn1^BV10Q89&=QaYxFtY$1#q9yF!vowP-WW>o*9F}hem4g4V}u8<9De}>#$jBqtMiBZKdkDZ3o7Cu zq!KUxU-fhoBbdHRp2@Re-KJ?0_8^;$#i$brVXd3YK@=)cDk=SzsXGC>!(BVo$Cd%u zl6@FwO20eo%Afk%58*dsZvjaNnx6QfzXf6e#!N=2E;s1@v`_n$W!@A z;oGO`iHp-58plq9K!eUE9!-)+20J)ACKyE7{FnlU(6p@}`oXUhOZ`9-lyZ>WZYOzS zc$OOeIltY(Z-S|kkG6UW5B-D+G2e!UV}MZt1VMD1`=~{a_=;aYHUIg^r`h)7GP`y2 zN@AWg6)I6opLjOYnY?}1r)kq9`Nb-O26@gFXc$UJLX;@#^b$4%r26%U)o9VvIDd^` zA`#iJ))qqy&K2cTQ_kswC!hN|opor3{#etycw5ZJh;4S| zLET=Hf~PK()QYr~6~~zcB#Jo{jT%;&(QgyU5N3$b?~yc-2F=^rLH3&{Mop*3bi1xY zc>2}4v5UF+jk1l#A^bY5W86lHWPCXqQa)Z@CZ?F+!mXh&c(vI-LQ<1EU1O0p{c17l zxOx;~<{);2A2(rUL@ALYcu7e~)8U?kOq5q7!+n}ZA)285y|*OxF)VF!M}r}Dl~PB{7n4G35V*4~ zF(flBHseK4qC-F<-tPzkH9P}OE8^D%xGuZ8MO2$325}1Ml?BRwRrYaQB zvzz8S8IouoQ-&=M$U352*Qi^+TzGx2QbXd1`54%JTOl=p*OljVM|j~TsqF|`zlnYa zzglXQ%=Vq?)A;(x;Ut?+Lg@SFPW4d-nWT@oP42==K{kk}7r)iWiutP0Te4ml=|NV?%* zVqx6{ZDU5r?mR~HCuv$}`Ay*1vVF1f7>w1yz-B{E*WykQ4;6=FM?Dt}X{z(-v^bg$ zgL_5gTs(2B;R{}ZN1$cX-atSxjKZ2kQg6GFsZ}%8B6s@nqR%mIGVcIx?nS0bCT!H$ zaR_p8T?G5pO}(^E>UWze)c(o~l5b*+Sn)Y2#_=|Qml;uVntn^3y_oDAa*PxYBtfeY zQu#GS{PYu>wt*>QIj#NrK26uo8-ztcyY-W#!wvdSVoqho{EvjkfJKWo5D}0Wp_JHo zMGFSA>kSA$)Hq>NF?i^*+U{ZVyK1mzHU21TP!6D{=vP$jM(&U2NX{VY znxs=g^|HrnQ%%mvj{p%DW~4;bo_gk7s=F@ICoA+yXJa#Up75171q*8Racx49Wh)c{ z&cg{F>I#0aHfo+P9zs{UvFYx<{*l66!@R9# z!ow=x_q%!`Z)km2eW(Zu2srr#IqJf!Voy-jLg2DQ&5Ri(XS;Fn&@CEZ1Kt7~aQ@5o zq9KezgCsv&fkrSc(m#7o$n@||?@voi{!~WcbRD{-yZZjpzgY=g!Ja}al9&dhTEY}8 zcv`@`@FC`FyINdNn*P1)Zyz8cNF7kH8(+^)^mqCqoG_n$8#b*7w7lS{p$ceV6nVvt z-7gJh^X3|}TKwLm$y0nSMZTzKvjH$|niIE@K2xo=yTm2%B#SFXj)!-qbp{x;e~Zr? z9#pq-F{N=@E7hQZ0=`b#e&!erK^?siQpPOACmbNOuvbplsuaZ(Rr7dKw<)RT5@;l9 z55&D$dE2=`cf^h)q+tSP5$zvPY&BW53S$fWk;ZS7D9KA(c|GE6`Qij?18|yVUilec zYz;F?mZ&H@ZgCuB;`fFHTJ*BJtbNNje0W{Abj?0|ry-JMqSW*dj~~x=Kyyx4Yrzh) zou44aH5G}DQ*d96l9$7ap*eZ7h>HQ1fQUP*B>KZ5rZ0Qdt)y!0_kCF6s^n5xxtzui zJp!$nJ1F3N?N6pgt2cQYfwZ^`EJtrDB_ESVAeaz)j0qO!BSJwzGUeCJSCqSMsM71j z9;3ntzWxlaQ^IXUK0*J^b(Yoecbo(7FMrqkzf?#`UH`@*oX}-t-3i?5Be+wq=`neW zL^@Pua-*Tf(~=x?QN*)a7Ccd_%3L@nOo;QXK(b!Fx}AO}V^d(5%{-`-3nOxl!yB+2 zHLGj=P8=?1@@vAE}(>1WZcZ5w7 z{dO(UpYby(4gan0e}8aLqa?4Y(}Hnn*X_V2;ZA3BrWMn<;%ai&pNHyA`vUVX3CzEd zs`%{47`5=u3~61z7J1MVp7iA(_2{7~)E>}g-Q|eWEnP*CK8o{LkP` zj+U%jA1kvG-Y2-5b^@O$06rn5tf%^KDJx+D2L51%Kfi9NnOiRPFvqxr%YU&(;d1ND zDR@p46#$+eWG(5uSKUs{Bz(fjSmJV1EllACU&C#i`W8Jh+Iqp186WnkKYxO@n zQv(-Ns34a+j;25%0A>b6b1Iw+6KgOx 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�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

ZZa+rg`;H9+~C=b^;1`pUivC=I9C% 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%0DL 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 z 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%0A=C{q@p|$Ic#>n--4T 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.apply { + configureBaseExtension() + + defaultConfig { + minSdk = project.property("ANDROID_MIN_SDK_VERSION").toString().toInt() + targetSdk = project.property("ANDROID_TARGET_SDK_VERSION").toString().toInt() + + // en_XA and ar_XB are pseudolocales for debugging. + // The rest of the locales provides an explicit list of the languages to keep in the + // final app. Doing this will strip out additional locales from libraries like + // Google Play Services and Firebase, which add unnecessary bloat. + resourceConfigurations.addAll(listOf("en", "en-rUS", "en-rGB", "en-rAU", "en_XA", "ar_XB")) + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + if (project.property("IS_USE_TEST_ORCHESTRATOR").toString().toBoolean()) { + testInstrumentationRunnerArguments["clearPackageData"] = "true" + } + } + } +} + +pluginManager.withPlugin("com.android.library") { + project.the().apply { + configureBaseExtension() + + defaultConfig { + minSdk = project.property("ANDROID_MIN_SDK_VERSION").toString().toInt() + targetSdk = project.property("ANDROID_TARGET_SDK_VERSION").toString().toInt() + + // The last two are for support of pseudolocales in debug builds. + // If we add other localizations, they should be included in this list. + // By explicitly setting supported locales, we strip out unused localizations from third party + // libraries (e.g. play services) + resourceConfigurations.addAll(listOf("en", "en-rUS", "en-rGB", "en-rAU", "en_XA", "ar_XB")) + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("proguard-consumer.txt") + + if (project.property("IS_USE_TEST_ORCHESTRATOR").toString().toBoolean()) { + testInstrumentationRunnerArguments["clearPackageData"] = "true" + } + } + testCoverage { + jacocoVersion = project.property("JACOCO_VERSION").toString() + } + } +} + +fun com.android.build.gradle.BaseExtension.configureBaseExtension() { + compileSdkVersion(project.property("ANDROID_COMPILE_SDK_VERSION").toString().toInt()) + ndkVersion = project.property("ANDROID_NDK_VERSION").toString() + + compileOptions { + val javaVersion = JavaVersion.toVersion(project.property("ANDROID_JVM_TARGET").toString()) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + } + + buildTypes { + getByName("debug").apply { + isTestCoverageEnabled = project.property("IS_ANDROID_INSTRUMENTATION_TEST_COVERAGE_ENABLED") + .toString().toBoolean() + } + } + + signingConfigs { + val debugKeystorePath = project.property("ZCASH_DEBUG_KEYSTORE_PATH").toString() + val isExplicitDebugSigningEnabled = !debugKeystorePath.isNullOrBlank() + if (isExplicitDebugSigningEnabled) { + // If this block doesn't execute, the output will still be signed with the default keystore + getByName("debug").apply { + storeFile = File(debugKeystorePath) + } + } + } + + testOptions { + animationsDisabled = true + + if (project.property("IS_USE_TEST_ORCHESTRATOR").toString().toBoolean()) { + execution = "ANDROIDX_TEST_ORCHESTRATOR" + } + } + + if (this is CommonExtension<*, *, *, *>) { + kotlinOptions { + jvmTarget = project.property("ANDROID_JVM_TARGET").toString() + allWarningsAsErrors = project.property("ZCASH_IS_TREAT_WARNINGS_AS_ERRORS").toString().toBoolean() + freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn" + + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" + "-opt-in=kotlinx.coroutines.FlowPreview" + } + } +} + +fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { + (this as ExtensionAware).extensions.configure("kotlinOptions", block) +} diff --git a/build-conventions/src/main/kotlin/zcash-sdk.dependency-conventions.gradle.kts b/build-conventions/src/main/kotlin/zcash-sdk.dependency-conventions.gradle.kts new file mode 100644 index 0000000..bbdc79a --- /dev/null +++ b/build-conventions/src/main/kotlin/zcash-sdk.dependency-conventions.gradle.kts @@ -0,0 +1,15 @@ + +//dependencyLocking { +// lockAllConfigurations() +//} + +tasks { + register("resolveAll") { + doLast { + configurations.filter { + // Add any custom filtering on the configurations to be resolved + it.isCanBeResolved + }.forEach { it.resolve() } + } + } +} diff --git a/build-conventions/src/main/kotlin/zcash-sdk.emulator-wtf-conventions.gradle.kts b/build-conventions/src/main/kotlin/zcash-sdk.emulator-wtf-conventions.gradle.kts new file mode 100644 index 0000000..65feb9a --- /dev/null +++ b/build-conventions/src/main/kotlin/zcash-sdk.emulator-wtf-conventions.gradle.kts @@ -0,0 +1,33 @@ +// Emulator WTF has min and max values that might differ from our project's +// These are determined by `ew-cli --models` + +@Suppress("MagicNumber", "PropertyName", "VariableNaming") +val EMULATOR_WTF_MIN_SDK = 23 + +@Suppress("MagicNumber", "PropertyName", "VariableNaming") +val EMULATOR_WTF_MAX_SDK = 31 + +pluginManager.withPlugin("wtf.emulator.gradle") { + project.the().apply { + val tokenString = project.properties["ZCASH_EMULATOR_WTF_API_KEY"].toString() + if (tokenString.isNotEmpty()) { + token.set(tokenString) + } + + val libraryMinSdkVersion = run { + val buildMinSdk = project.properties["ANDROID_MIN_SDK_VERSION"].toString().toInt() + buildMinSdk.coerceAtLeast(EMULATOR_WTF_MIN_SDK).toString() + } + val targetSdkVersion = run { + val buildTargetSdk = project.properties["ANDROID_TARGET_SDK_VERSION"].toString().toInt() + buildTargetSdk.coerceAtMost(EMULATOR_WTF_MAX_SDK).toString() + } + + devices.set( + listOf( + mapOf("model" to "Pixel2", "version" to libraryMinSdkVersion), + mapOf("model" to "Pixel2", "version" to targetSdkVersion) + ) + ) + } +} \ No newline at end of file diff --git a/build-conventions/src/main/kotlin/zcash-sdk.ktlint-conventions.gradle.kts b/build-conventions/src/main/kotlin/zcash-sdk.ktlint-conventions.gradle.kts new file mode 100644 index 0000000..99808b6 --- /dev/null +++ b/build-conventions/src/main/kotlin/zcash-sdk.ktlint-conventions.gradle.kts @@ -0,0 +1,41 @@ +plugins { + id("java") +} + +val ktlint by configurations.creating + +dependencies { + ktlint("com.pinterest:ktlint:${project.property("KTLINT_VERSION")}") { + attributes { + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + } + } +} + +tasks { + val editorConfigFile = rootProject.file(".editorconfig") + val ktlintArgs = listOf("**/src/**/*.kt", "!**/build/**.kt", "--editorconfig=$editorConfigFile") + + register("ktlint", org.gradle.api.tasks.JavaExec::class) { + description = "Check code style with ktlint" + classpath = ktlint + mainClass.set("com.pinterest.ktlint.Main") + args = ktlintArgs + } + + register("ktlintFormat", org.gradle.api.tasks.JavaExec::class) { + // https://github.com/pinterest/ktlint/issues/1195#issuecomment-1009027802 + jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") + + description = "Apply code style formatting with ktlint" + classpath = ktlint + mainClass.set("com.pinterest.ktlint.Main") + args = listOf("-F") + ktlintArgs + } +} + +java { + val javaVersion = JavaVersion.toVersion(project.property("ANDROID_JVM_TARGET").toString()) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion +} \ No newline at end of file diff --git a/build-conventions/src/main/kotlin/zcash-sdk.rosetta-conventions.gradle.kts b/build-conventions/src/main/kotlin/zcash-sdk.rosetta-conventions.gradle.kts new file mode 100644 index 0000000..c5988b4 --- /dev/null +++ b/build-conventions/src/main/kotlin/zcash-sdk.rosetta-conventions.gradle.kts @@ -0,0 +1,47 @@ +import java.util.concurrent.TimeUnit +if (isRosetta()) { + logger.warn("This Gradle invocation is running under Rosetta. Use an ARM (aarch64) JDK to " + + "improve performance. One can be downloaded from https://adoptium.net/temurin/releases") +} + +@Suppress("MagicNumber") +private val maxTimeoutMillis = 5000L + +/** + * This method is safe to call from any operating system or CPU architecture. + * + * @return True if the application is running under Rosetta. + */ +fun isRosetta(): Boolean { + if (System.getProperty("os.name").toLowerCase(java.util.Locale.ROOT).startsWith("mac")) { + // Counterintuitive, but running under Rosetta is reported as Intel64 to the JVM + if (!System.getProperty("os.arch").toLowerCase(java.util.Locale.ROOT).contains("aarch64")) { + val outputValue = Runtime.getRuntime() + .exec("sysctl -in sysctl.proc_translated") + .scanOutputLine() + ?.toIntOrNull() + + if (1 == outputValue) { + return true + } + } + } + + return false +} + +fun Process.scanOutputLine(): String? { + var outputString = "" + + inputStream.use { inputStream -> + java.util.Scanner(inputStream).useDelimiter("\\A").use { scanner -> + while (scanner.hasNext()) { + outputString = scanner.next() + } + } + } + + waitFor(maxTimeoutMillis, TimeUnit.MILLISECONDS) + + return outputString.trim() +} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..e0398ac --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,105 @@ +buildscript { + repositories { + google() + gradlePluginPortal() + } + dependencies { + classpath(kotlin("gradle-plugin", version = libs.versions.kotlin.get())) + classpath(libs.gradle.plugin.rust) + classpath(libs.gradle.plugin.navigation) + } +} + +plugins { + id("com.github.ben-manes.versions") + id("com.osacky.fulladle") + id("io.gitlab.arturbosch.detekt") + id("zcash-sdk.ktlint-conventions") + id("zcash-sdk.rosetta-conventions") +} + +tasks { + register("detektAll", io.gitlab.arturbosch.detekt.Detekt::class) { + parallel = true + setSource(files(projectDir)) + include("**/*.kt") + include("**/*.kts") + exclude("**/resources/**") + exclude("**/build/**") + exclude("**/commonTest/**") + exclude("**/jvmTest/**") + exclude("**/androidTest/**") + config.setFrom(files("${rootProject.projectDir}/tools/detekt.yml")) + baseline.set(file("$rootDir/tools/detekt-baseline.xml")) + buildUponDefaultConfig = true + } + + withType { + gradleReleaseChannel = "current" + + resolutionStrategy { + componentSelection { + all { + if (isNonStable(candidate.version) && !isNonStable(currentVersion)) { + reject("Unstable") + } + } + } + } + } +} + +val unstableKeywords = listOf("alpha", "beta", "rc", "m", "ea", "build") + +fun isNonStable(version: String): Boolean { + val versionLowerCase = version.toLowerCase() + + return unstableKeywords.any { versionLowerCase.contains(it) } +} + +fladle { + // Firebase Test Lab has min and max values that might differ from our project's + // These are determined by `gcloud firebase test android models list` + @Suppress("MagicNumber", "PropertyName", "VariableNaming") + val FIREBASE_TEST_LAB_MIN_API = 23 + + @Suppress("MagicNumber", "PropertyName", "VariableNaming") + val FIREBASE_TEST_LAB_MAX_API = 30 + + val minSdkVersion = run { + val buildMinSdk = project.properties["ANDROID_MIN_SDK_VERSION"].toString().toInt() + buildMinSdk.coerceAtLeast(FIREBASE_TEST_LAB_MIN_API).toString() + } + val targetSdkVersion = run { + val buildTargetSdk = project.properties["ANDROID_TARGET_SDK_VERSION"].toString().toInt() + buildTargetSdk.coerceAtMost(FIREBASE_TEST_LAB_MAX_API).toString() + } + + val firebaseTestLabKeyPath = project.properties["ZCASH_FIREBASE_TEST_LAB_API_KEY_PATH"].toString() + val firebaseProject = project.properties["ZCASH_FIREBASE_TEST_LAB_PROJECT"].toString() + + if (firebaseTestLabKeyPath.isNotEmpty()) { + serviceAccountCredentials.set(File(firebaseTestLabKeyPath)) + } else if (firebaseProject.isNotEmpty()) { + projectId.set(firebaseProject) + } + + devices.addAll( + mapOf("model" to "Pixel2", "version" to minSdkVersion), + mapOf("model" to "Pixel2", "version" to targetSdkVersion) + ) + + @Suppress("MagicNumber") + flakyTestAttempts.set(2) + + flankVersion.set(libs.versions.flank.get()) + + filesToDownload.set(listOf( + "*/matrix_*/*test_results_merged\\.xml", + "*/matrix_*/*/artifacts/sdcard/googletest/test_outputfiles/*\\.png" + )) + + directoriesToPull.set(listOf( + "/sdcard/googletest/test_outputfiles" + )) +} diff --git a/darkside-test-lib/build.gradle.kts b/darkside-test-lib/build.gradle.kts new file mode 100644 index 0000000..bbff1b1 --- /dev/null +++ b/darkside-test-lib/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + id("com.android.library") + id("org.jetbrains.kotlin.android") + id("zcash-sdk.android-conventions") + id("kotlin-kapt") +} + +android { + defaultConfig { + //targetSdk = 30 //Integer.parseInt(project.property("targetSdkVersion")) + multiDexEnabled = true + } +} + +dependencies { + implementation(projects.sdkLib) + implementation(libs.kotlin.stdlib) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.androidx.multidex) + implementation(libs.bundles.grpc) + + androidTestImplementation(libs.bundles.androidx.test) + + androidTestImplementation(libs.zcashwalletplgn) + androidTestImplementation(libs.bip39) +} diff --git a/darkside-test-lib/src/androidTest/AndroidManifest.xml b/darkside-test-lib/src/androidTest/AndroidManifest.xml new file mode 100644 index 0000000..c6357e0 --- /dev/null +++ b/darkside-test-lib/src/androidTest/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountIntegrationTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountIntegrationTest.kt new file mode 100644 index 0000000..307de94 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountIntegrationTest.kt @@ -0,0 +1,88 @@ +package cash.z.ecc.android.sdk.darkside // package cash.z.ecc.android.sdk.integration +// +// import cash.z.ecc.android.sdk.test.ScopedTest +// import cash.z.ecc.android.sdk.internal.twigTask +// import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +// import kotlinx.coroutines.runBlocking +// import org.junit.BeforeClass +// import org.junit.Test +// +// class MultiAccountIntegrationTest : ScopedTest() { +// +// /** +// * Test multiple viewing keys by doing the following: +// * +// * - sync "account A" with 100 test blocks containing: +// * (in zatoshi) four 100_000 notes and one 10_000 note +// * - import a viewing key for "account B" +// * - send a 10_000 zatoshi transaction from A to B +// * - include that tx in the next block and mine that block (on the darkside), then scan it +// * - verify that A's balance reflects a single 100_000 note being spent but pending confirmations +// * - advance the chain by 9 more blocks to reach 10 confirmations +// * - verify that the change from the spent note is reflected in A's balance +// * - check B's balance and verify that it received the full 10_000 (i.e. that A paid the mining fee) +// * +// * Although we sent funds to an address, the synchronizer has both spending keys so it is able +// * to track transactions for both addresses! +// */ +// @Test +// fun testViewingKeyImport() = runBlocking { +// validatePreConditions() +// +// with(sithLord) { +// twigTask("importing viewing key") { +// synchronizer.importViewingKey(secondKey) +// } +// +// twigTask("Sending funds") { +// sithLord.createAndSubmitTx(10_000, secondAddress, "multi-account works!") +// chainMaker.applyPendingTransactions(663251) +// await(targetHeight = 663251) +// } +// // verify that the transaction block height was scanned +// validator.validateMinHeightScanned(663251) +// +// // balance before confirmations (the large 100_000 note gets selected) +// validator.validateBalance(310_000) +// +// // add remaining confirmations so that funds become spendable and await until they're scanned +// chainMaker.advanceBy(9) +// await(targetHeight = 663260) +// +// // balance after confirmations +// validator.validateBalance(390_000) +// +// // check the extra viewing key balance!!! +// // accountIndex 1 corresponds to the imported viewingKey for the address where we sent the funds! +// validator.validateBalance(available = 10_000, accountIndex = 1) +// } +// } +// +// /** +// * Verify that before the integration test begins, the wallet is synced up to the expected block +// * and contains the expected balance. +// */ +// private fun validatePreConditions() { +// with(sithLord) { +// twigTask("validating preconditions") { +// validator.validateMinHeightScanned(663250) +// validator.validateMinBalance(410_000) +// } +// } +// } +// +// +// companion object { +// private val sithLord = DarksideTestCoordinator() +// private val secondAddress = "zs15tzaulx5weua5c7l47l4pku2pw9fzwvvnsp4y80jdpul0y3nwn5zp7tmkcclqaca3mdjqjkl7hx" +// private val secondKey = "zxviews1q0w208wwqqqqpqyxp978kt2qgq5gcyx4er907zhczxpepnnhqn0a47ztefjnk65w2573v7g5fd3hhskrg7srpxazfvrj4n2gm4tphvr74a9xnenpaxy645dmuqkevkjtkf5jld2f7saqs3xyunwquhksjpqwl4zx8zj73m8gk2d5d30pck67v5hua8u3chwtxyetmzjya8jdjtyn2aum7au0agftfh5q9m4g596tev9k365s84jq8n3laa5f4palt330dq0yede053sdyfv6l" +// +// @BeforeClass +// @JvmStatic +// fun startAllTests() { +// sithLord.enterTheDarkside() +// sithLord.chainMaker.makeSimpleChain() +// sithLord.startSync(classScope).await() +// } +// } +// } diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountTest.kt new file mode 100644 index 0000000..6e696b7 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiAccountTest.kt @@ -0,0 +1,75 @@ +package cash.z.ecc.android.sdk.darkside + +// import cash.z.ecc.android.sdk.SdkSynchronizer +// import cash.z.ecc.android.sdk.db.entity.isSubmitSuccess +// import cash.z.ecc.android.sdk.test.ScopedTest +// import cash.z.ecc.android.sdk.internal.twig +// import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +// import kotlinx.coroutines.Job +// import kotlinx.coroutines.delay +// import kotlinx.coroutines.flow.launchIn +// import kotlinx.coroutines.flow.onEach +// import kotlinx.coroutines.runBlocking +// import org.junit.Assert.assertEquals +// import org.junit.BeforeClass +// import org.junit.Test + +// class MultiAccountTest : ScopedTest() { +// +// @Test +// fun testTargetBlock_sanityCheck() { +// with(sithLord) { +// validator.validateMinHeightScanned(663250) +// validator.validateMinBalance(200000) +// } +// } +// +// @Test +// fun testTargetBlock_send() = runBlocking { +// with(sithLord) { +// +// twig("<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>") +// synchronizer.importViewingKey(secondKey) +// twig("<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>") +// +// twig("IM GONNA SEND!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") +// sithLord.sendAndWait(testScope, spendingKey, 10000, secondAddress, "multi-account works!") +// chainMaker.applySentTransactions() +// await(targetHeight = 663251) +// +// twig("done waiting for 663251!") +// validator.validateMinHeightScanned(663251) +// +// // balance before confirmations +// validator.validateBalance(310000) +// +// // add remaining confirmations +// chainMaker.advanceBy(9) +// await(targetHeight = 663260) +// +// // balance after confirmations +// validator.validateBalance(390000) +// +// // check the extra viewing key balance!!! +// val account1Balance = (synchronizer as SdkSynchronizer).processor.getBalanceInfo(1) +// assertEquals(10000, account1Balance.totalZatoshi) +// twig("done waiting for 663261!") +// } +// } +// +// +// companion object { +// private const val blocksUrl = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt" +// private val sithLord = DarksideTestCoordinator() +// private val secondAddress = "zs15tzaulx5weua5c7l47l4pku2pw9fzwvvnsp4y80jdpul0y3nwn5zp7tmkcclqaca3mdjqjkl7hx" +// private val secondKey = "zxviews1q0w208wwqqqqpqyxp978kt2qgq5gcyx4er907zhczxpepnnhqn0a47ztefjnk65w2573v7g5fd3hhskrg7srpxazfvrj4n2gm4tphvr74a9xnenpaxy645dmuqkevkjtkf5jld2f7saqs3xyunwquhksjpqwl4zx8zj73m8gk2d5d30pck67v5hua8u3chwtxyetmzjya8jdjtyn2aum7au0agftfh5q9m4g596tev9k365s84jq8n3laa5f4palt330dq0yede053sdyfv6l" +// +// @BeforeClass +// @JvmStatic +// fun startAllTests() { +// sithLord.enterTheDarkside() +// sithLord.chainMaker.simpleChain() +// sithLord.startSync(classScope).await() +// } +// } +// } diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt new file mode 100644 index 0000000..80ea9c6 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt @@ -0,0 +1,196 @@ +package cash.z.ecc.android.sdk.darkside // package cash.z.ecc.android.sdk.integration +// +// import cash.z.ecc.android.sdk.test.ScopedTest +// import cash.z.ecc.android.sdk.internal.twig +// import cash.z.ecc.android.sdk.internal.twigTask +// import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +// import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +// import cash.z.ecc.android.sdk.util.SimpleMnemonics +// import cash.z.wallet.sdk.rpc.CompactFormats +// import cash.z.wallet.sdk.rpc.Service +// import io.grpc.* +// import kotlinx.coroutines.delay +// import kotlinx.coroutines.runBlocking +// import org.junit.Assert.assertEquals +// import org.junit.BeforeClass +// import org.junit.Ignore +// import org.junit.Test +// import java.util.concurrent.TimeUnit + +// class MultiRecipientIntegrationTest : ScopedTest() { +// +// @Test +// @Ignore +// fun testMultiRecipients() = runBlocking { +// with(sithLord) { +// val m = SimpleMnemonics() +// randomPhrases.map { +// m.toSeed(it.toCharArray()) +// }.forEach { seed -> +// twig("ZyZ4: I've got a seed $seed") +// initializer.apply { +// // delay(250) +// twig("VKZyZ: ${deriveViewingKeys(seed)[0]}") +// // delay(500) +// twig("SKZyZ: ${deriveSpendingKeys(seed)[0]}") +// // delay(500) +// twig("ADDRZyZ: ${deriveAddress(seed)}") +// // delay(250) +// } +// } +// } +// delay(500) +// } +// +// @Test +// fun loadVks() = runBlocking { +// with(sithLord) { +// viewingKeys.forEach { +// twigTask("importing viewing key") { +// synchronizer.importViewingKey(it) +// } +// } +// twigTask("Sending funds") { +// createAndSubmitTx(10_000, addresses[0], "multi-account works!") +// chainMaker.applyPendingTransactions(663251) +// await(targetHeight = 663251) +// } +// } +// } +// +// // private fun sendToMyHomies() { +// // twig("uno") +// // val rustPoc = LightWalletGrpcService(localChannel) +// // twig("dos") +// // val pong: Int = rustPoc.getLatestBlockHeight() +// // twig("tres") +// // assertEquals(800000, pong) +// // } +// +// +// private fun sendToMyHomies0() { +// val rustPoc = LocalWalletGrpcService(localChannel) +// val pong: Service.PingResponse = rustPoc.sendMoney(Service.PingResponse.newBuilder().setEntry(10).setEntry(11).build()) +// assertEquals(pong.entry, 12) +// } +// +// object localChannel : ManagedChannel() { +// private var _isShutdown = false +// get() { +// twig("zyz: returning _isShutdown") +// return field +// } +// private var _isTerminated = false +// get() { +// twig("zyz: returning _isTerminated") +// return field +// } +// +// override fun newCall( +// methodDescriptor: MethodDescriptor?, +// callOptions: CallOptions? +// ): ClientCall { +// twig("zyz: newCall") +// return LocalCall() +// } +// +// override fun isTerminated() = _isTerminated +// +// override fun authority(): String { +// twig("zyz: authority") +// return "none" +// } +// +// override fun shutdown(): ManagedChannel { +// twig("zyz: shutdown") +// _isShutdown = true +// return this +// } +// +// override fun isShutdown() = _isShutdown +// +// override fun shutdownNow() = shutdown() +// +// override fun awaitTermination(timeout: Long, unit: TimeUnit?): Boolean { +// twig("zyz: awaitTermination") +// _isTerminated = true +// return _isTerminated +// } +// } +// +// class LocalCall : ClientCall() { +// override fun sendMessage(message: RequestT) { +// twig("zyz: sendMessage: $message") +// } +// +// override fun halfClose() { +// twig("zyz: halfClose") +// } +// +// override fun start(responseListener: Listener?, headers: Metadata?) { +// twig("zyz: start") +// responseListener?.onMessage(Service.BlockID.newBuilder().setHeight(800000).build() as? ResponseT) +// responseListener?.onClose(Status.OK, headers) +// } +// +// override fun cancel(message: String?, cause: Throwable?) { +// twig("zyz: cancel: $message caused by $cause") +// } +// +// override fun request(numMessages: Int) { +// twig("zyz: request $numMessages") +// } +// } +// +// private fun sendToMyHomies1() = runBlocking { +// with(sithLord) { +// twigTask("Sending funds") { +// // createAndSubmitTx(200_000, addresses[0], "multi-account works!") +// chainMaker.applyPendingTransactions(663251) +// await(targetHeight = 663251) +// } +// } +// } +// +// companion object { +// private val sithLord = DarksideTestCoordinator(, "MultiRecipientInRust") +// +// private val randomPhrases = listOf( +// "profit save black expose rude feature early rocket alter borrow finish october few duty flush kick spell bean burden enforce bitter theme silent uphold", +// "unit ice dial annual duty feature smoke expose hard joy globe just accuse inner fog cash neutral forum strategy crash subject hurdle lecture sand", +// "average talent frozen work brand output major soldier witness keen brown bind indicate burden furnace long crime joke inhale chronic ordinary renew boat flame", +// "echo viable panic unaware stay magnet cake museum yellow abandon mountain height lunch advance tongue market bamboo cushion okay morning minute icon obtain december", +// "renew enlist travel stand trust execute decade surge follow push student school focus woman ripple movie that bitter plug same index wife spread differ" +// ) +// +// private val viewingKeys = listOf( +// "zxviews1qws7ryw7qqqqpqq77dmhl9tufzdsgy8hcjq8kxjtgkfwwgqn4a26ahmhmjqueptd2pmq3f73pm8uaa25aze5032qw4dppkx4l625xcjcm94d5e65fcq4j2uptnjuqpyu2rvud88dtjwseglgzfe5l4te2xw62yq4tv62d2f6kl4706c6dmfxg2cmsdlzlt9ykpvacaterq4alljr3efke7k46xcrg4pxc02ezj0txwqjjve23nqqp7t5n5qat4d8569krxgkcd852uqg2t2vn", +// "zxviews1qdtp7dwfqqqqpqq3zxegnzc6qtacjp4m6qhyz7typdw9h9smra3rn322dkhyfg8kktk66k7zaj9tt5j6e58enx89pwry4rxwmcuzqyxlsap965r5gxpt604chmjyuhder6xwu3tx0h608as5sgxapqdqa6v6hy6qzh9fft0ns3cj9f8zrhu0ukzf9gn2arr02kzdct0jh5ee3zjch3xscjv34pzkgpueuq0pyl706alssuchqu4jmjm22fcq3htlwxt3f3hdytne7mgscrz5m", +// "zxviews1qvfmgpzjqqqqpqqnpl2s9n774mrv72zsuw73km9x6ax2s26d0d0ua20nuxvkexa4lq5fsc6psl8csspyqrlwfeuele5crlwpyjufgkzyy6ffw8hc52hn04jzru6mntms8c2cm255gu200zx4pmz06k3s90jatwehazl465tf6uyj6whwarpcca9exzr7wzltelq5tusn3x3jchjyk6cj09xyctjzykp902w4x23zdsf46d3fn9rtkgm0rmek296c5nhuzf99a2x6umqr804k9", +// "zxviews1qv85jn3hqqqqpq9jam3g232ylvvhy8e5vdhp0x9zjppr49sw6awwrm3a3d8l9j9es2ed9h29r6ta5tzt53j2y0ex84lzns0thp7n9wzutjapq29chfewqz34q5g6545f8jf0e69jcg9eyv66s8pt3y5dwxg9nrezz8q9j9fwxryeleayay6m09zpt0dem8hkazlw5jk6gedrakp9z7wzq2ptf6aqkft6z02mtrnq4a5pguwp4m8xkh52wz0r3naeycnqllnvsn8ag5q73pqgd", +// "zxviews1qwhel8pxqqqqpqxjl3cqu2z8hu0tqdd5qchkrdtsjuce9egdqlpu7eff2rn3gknm0msw7ug6qp4ynppscvv6hfm2nkf42lhz8la5et3zsej84xafcn0xdd9ms452hfjp4tljshtffscsl68wgdv3j5nnelxsdcle5rnwkuz6lvvpqs7s2x0cnhemhnwzhx5ccakfgxfym0w8dxglq4h6pwukf2az6lcm38346qc5s9rgx6s988fr0kxnqg0c6g6zlxa2wpc7jh0gz7q4ysx0l" +// ) +// private val spendingKeys = listOf( +// "secret-extended-key-main1qws7ryw7qqqqpqq77dmhl9tufzdsgy8hcjq8kxjtgkfwwgqn4a26ahmhmjqueptd2pt49qhm63lt8v93tlqzw7psmkvqqfm6xdnc2qwkflfcenqs7s4sj2yn0c75n982wjrf5k5h37vt3wxwr3pqnjk426lltctrms2uqmqgkl4706c6dmfxg2cmsdlzlt9ykpvacaterq4alljr3efke7k46xcrg4pxc02ezj0txwqjjve23nqqp7t5n5qat4d8569krxgkcd852uqxj5ljt", +// "secret-extended-key-main1qdtp7dwfqqqqpqq3zxegnzc6qtacjp4m6qhyz7typdw9h9smra3rn322dkhyfg8kk26p0fcjuklryw0ed6falf6c7dwqehleca0xf6m6tlnv5zdjx7lqs4xmseqjz0fvk273aczatxxjaqmy3kv8wtzcc6pf6qtrjy5g2mqgs3cj9f8zrhu0ukzf9gn2arr02kzdct0jh5ee3zjch3xscjv34pzkgpueuq0pyl706alssuchqu4jmjm22fcq3htlwxt3f3hdytne7mgacmaq6", +// "secret-extended-key-main1qvfmgpzjqqqqpqqnpl2s9n774mrv72zsuw73km9x6ax2s26d0d0ua20nuxvkexa4lzc4n8a3zfvyn2qns37fx00avdtjewghmxz5nc2ey738nrpu4pqqnwysmcls5yek94lf03d5jtsa25nmuln4xjvu6e4g0yrr6xesp9cr6uyj6whwarpcca9exzr7wzltelq5tusn3x3jchjyk6cj09xyctjzykp902w4x23zdsf46d3fn9rtkgm0rmek296c5nhuzf99a2x6umqvf4man", +// "secret-extended-key-main1qv85jn3hqqqqpq9jam3g232ylvvhy8e5vdhp0x9zjppr49sw6awwrm3a3d8l9j9estq9a548lguf0n9fsjs7c96uaymhysuzeek5eg8un0fk8umxszxstm0xfq77x68yjk4t4j7h2xqqjf8nmkx0va3cphnhxpvd0l5dhzgyxryeleayay6m09zpt0dem8hkazlw5jk6gedrakp9z7wzq2ptf6aqkft6z02mtrnq4a5pguwp4m8xkh52wz0r3naeycnqllnvsn8ag5qru36vk", +// "secret-extended-key-main1qwhel8pxqqqqpqxjl3cqu2z8hu0tqdd5qchkrdtsjuce9egdqlpu7eff2rn3gknm0mdwr9358t3dlcf47vakdwewxy64k7ds7y3k455rfch7s2x8mfesjsxptyfvc9heme3zj08wwdk4l9mwce92lvrl797wmmddt65ygwcqlvvpqs7s2x0cnhemhnwzhx5ccakfgxfym0w8dxglq4h6pwukf2az6lcm38346qc5s9rgx6s988fr0kxnqg0c6g6zlxa2wpc7jh0gz7qx7zl33" +// ) +// private val addresses = listOf( +// "zs1d8lenyz7uznnna6ttmj6rk9l266989f78c3d79f0r6r28hn0gc9fzdktrdnngpcj8wr2cd4zcq2", +// "zs13x79khp5z0ydgnfue8p88fjnrjxtnz0gwxyef525gd77p72nqh7zr447n6klgr5yexzp64nc7hf", +// "zs1jgvqpsyzs90hlqz85qry3zv52keejgx0f4pnljes8h4zs96zcxldu9llc03dvhkp6ds67l4s0d5", +// "zs1lr428hhedq3yk8n2wr378e6ua3u3r4ma5a8dqmf3r64y96vww5vh6327jfudtyt7v3eqw22c2t6", +// "zs1hy7mdwl6y0hwxts6a5lca2xzlr0p8v5tkvvz7jfa4d04lx5uedg6ya8fmthywujacx0acvfn837" +// ) +// +// @BeforeClass +// @JvmStatic +// fun startAllTests() { +// sithLord.enterTheDarkside() +// sithLord.chainMaker.makeSimpleChain() +// sithLord.startSync(classScope).await() +// } +// } +// } diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/OutboundTransactionsTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/OutboundTransactionsTest.kt new file mode 100644 index 0000000..79d3364 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/OutboundTransactionsTest.kt @@ -0,0 +1,96 @@ +package cash.z.ecc.android.sdk.darkside // package cash.z.ecc.android.sdk.integration +// +// import cash.z.ecc.android.sdk.test.ScopedTest +// import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +// import org.junit.Before +// import org.junit.BeforeClass +// import org.junit.Test +// +// class OutboundTransactionsTest : ScopedTest() { +// +// @Before +// fun beforeEachTest() { +// testCoordinator.clearUnminedTransactions() +// } +// +// @Test +// fun testSendIncrementsTransaction() { +// validator.validateTransactionCount(initialTxCount) +// testCoordinator.sendTransaction(txAmount).awaitSync() +// validator.validatTransactionCount(initialTxCount + 1) +// } +// +// @Test +// fun testSendReducesBalance() { +// validator.validateBalance(initialBalance) +// testCoordinator.sendTransaction(txAmount).awaitSync() +// validator.validateBalanceLessThan(initialBalance) +// } +// +// @Test +// fun testTransactionPending() { +// testCoordinator.sendTransaction(txAmount).awaitSync() +// validator.validateTransactionPending(testCoordinator.lastTransactionId) +// } +// +// @Test +// fun testTransactionConfirmations_1() { +// testCoordinator.sendTransaction(txAmount).generateNextBlock().awaitSync() +// validator.validateConfirmations(testCoordinator.lastTransactionId, 1) +// validator.validateBalanceLessThan(initialBalance - txAmount) +// } +// +// @Test +// fun testTransactionConfirmations_9() { +// testCoordinator.sendTransaction(txAmount).generateNextBlock().advanceBlocksBy(8).awaitSync() +// validator.validateConfirmations(testCoordinator.lastTransactionId, 9) +// validator.validateBalanceLessThan(initialBalance - txAmount) +// } +// +// @Test +// fun testTransactionConfirmations_10() { +// testCoordinator.sendTransaction(txAmount).generateNextBlock().advanceBlocksBy(9).awaitSync() +// validator.validateConfirmations(testCoordinator.lastTransactionId, 10) +// validator.validateBalance(initialBalance - txAmount) +// } +// +// @Test +// fun testTransactionExpiration() { +// validator.validateBalance(initialBalance) +// +// // pending initially +// testCoordinator.sendTransaction(txAmount).awaitSync() +// val id = testCoordinator.lastTransactionId +// validator.validateTransactionPending(id) +// +// // still pending after 9 blocks +// testCoordinator.advanceBlocksBy(9).awaitSync() +// validator.validateTransactionPending(id) +// validator.validateBalanceLessThan(initialBalance) +// +// // expired after 10 blocks +// testCoordinator.advanceBlocksBy(1).awaitSync() +// validator.validateTransactionExpired(id) +// +// validator.validateBalance(initialBalance) +// } +// +// +// +// companion object { +// private const val blocksUrl = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt" +// private const val initialBalance = 1.234 +// private const val txAmount = 1.1 +// private const val initialTxCount = 3 +// private val testCoordinator = DarksideTestCoordinator() +// private val validator = testCoordinator.validator +// +// @BeforeClass +// @JvmStatic +// fun startAllTests() { +// testCoordinator +// .enterTheDarkside() +// .resetBlocks(blocksUrl) +// } +// } +// } diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/TransparentIntegrationTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/TransparentIntegrationTest.kt new file mode 100644 index 0000000..0c58b53 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/TransparentIntegrationTest.kt @@ -0,0 +1,25 @@ +package cash.z.ecc.android.sdk.darkside + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import cash.z.ecc.android.sdk.darkside.test.DarksideTest +import org.junit.Before +import org.junit.Ignore +import org.junit.Test +import org.junit.runner.RunWith + +/** + * Integration test to run in order to catch any regressions in transparent behavior. + */ +@RunWith(AndroidJUnit4::class) +class TransparentIntegrationTest : DarksideTest() { + @Before + fun setup() = runOnce { + sithLord.await() + } + + @Test + @Ignore("This test is broken") + fun sanityTest() { + validator.validateTxCount(5) + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/InboundTxTests.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/InboundTxTests.kt new file mode 100644 index 0000000..34f7f96 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/InboundTxTests.kt @@ -0,0 +1,102 @@ +package cash.z.ecc.android.sdk.darkside.reorgs + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +import cash.z.ecc.android.sdk.darkside.test.ScopedTest +import cash.z.ecc.android.sdk.internal.twig +import org.junit.BeforeClass +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class InboundTxTests : ScopedTest() { + + @Test + fun testTargetBlock_downloaded() { + validator.validateMinHeightDownloaded(firstBlock) + } + + @Test + fun testTargetBlock_scanned() { + validator.validateMinHeightScanned(targetTxBlock - 1) + } + + @Test + fun testLatestHeight() { + validator.validateLatestHeight(targetTxBlock - 1) + } + + @Test + fun testTxCountInitial() { + validator.validateTxCount(0) + } + + @Test + fun testTxCountAfter() { + twig("ADDING TRANSACTIONS!!!") + // add 2 transactions to block 663188 and 'mine' that block + addTransactions(targetTxBlock, tx663174, tx663188) + sithLord.await(timeout = 30_000L, targetHeight = targetTxBlock) + validator.validateTxCount(2) + } + + private fun addTransactions(targetHeight: Int, vararg txs: String) { + val overwriteBlockCount = 5 + chainMaker +// .stageEmptyBlocks(targetHeight, overwriteBlockCount) + .stageTransactions(targetHeight, *txs) + .applyTipHeight(targetHeight) + } + + companion object { + private const val blocksUrl = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt" + private const val tx663174 = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/0821a89be7f2fc1311792c3fa1dd2171a8cdfb2effd98590cbd5ebcdcfcf491f.txt" + private const val tx663188 = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/15a677b6770c5505fb47439361d3d3a7c21238ee1a6874fdedad18ae96850590.txt" + private const val txIndexReorg = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/tx-index-reorg/t1.txt" + private val txSend = arrayOf( + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/t-shielded-spend.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/c9e35e6ff444b071d63bf9bab6480409d6361760445c8a28d24179adb35c2495.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/72a29d7db511025da969418880b749f7fc0fc910cdb06f52193b5fa5c0401d9d.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/ff6ea36765dc29793775c7aa71de19fca039c5b5b873a0497866e9c4bc48af01.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/34e507cab780546f980176f3ff2695cd404917508c7e5ee18cc1d2ff3858cb08.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/6edf869063eccff3345676b0fed9f1aa6988fb2524e3d9ca7420a13cfadcd76c.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/de97394ae220c28a33ba78b944e82dabec8cb404a4407650b134b3d5950358c0.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/4eaa902279f8380914baf5bcc470d8b7c11d84fda809f67f517a7cb48912b87b.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/sent/73c5edf8ffba774d99155121ccf07e67fbcf14284458f7e732751fea60d3bcbc.txt" + ) + + private val txRecv = arrayOf( + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/8f064d23c66dc36e32445e5f3b50e0f32ac3ddb78cff21fb521eb6c19c07c99a.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/15a677b6770c5505fb47439361d3d3a7c21238ee1a6874fdedad18ae96850590.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/d2e7be14bbb308f9d4d68de424d622cbf774226d01cd63cc6f155fafd5cd212c.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/e6566be3a4f9a80035dab8e1d97e40832a639e3ea938fb7972ea2f8482ff51ce.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/0821a89be7f2fc1311792c3fa1dd2171a8cdfb2effd98590cbd5ebcdcfcf491f.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/e9527891b5d43d1ac72f2c0a3ac18a33dc5a0529aec04fa600616ed35f8123f8.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/4dcc95dd0a2f1f51bd64bb9f729b423c6de1690664a1b6614c75925e781662f7.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/75f2cdd2ff6a94535326abb5d9e663d53cbfa5f31ebb24b4d7e420e9440d41a2.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/7690c8ec740c1be3c50e2aedae8bf907ac81141ae8b6a134c1811706c73f49a6.txt", + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/recv/71935e29127a7de0b96081f4c8a42a9c11584d83adedfaab414362a6f3d965cf.txt" + ) + + private const val firstBlock = 663150 + private const val targetTxBlock = 663188 + private const val lastBlockHash = "2fc7b4682f5ba6ba6f86e170b40f0aa9302e1d3becb2a6ee0db611ff87835e4a" + private val sithLord = DarksideTestCoordinator() + private val validator = sithLord.validator + private val chainMaker = sithLord.chainMaker + + @BeforeClass + @JvmStatic + fun startAllTests() { + sithLord.enterTheDarkside() + + chainMaker + .resetBlocks(blocksUrl, startHeight = firstBlock, tipHeight = targetTxBlock) + .stageEmptyBlocks(firstBlock + 1, 100) + .applyTipHeight(targetTxBlock - 1) + + sithLord.synchronizer.start(classScope) + sithLord.await() + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgBasicTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgBasicTest.kt new file mode 100644 index 0000000..2cba645 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgBasicTest.kt @@ -0,0 +1,53 @@ +package cash.z.ecc.android.sdk.darkside.reorgs // package cash.z.ecc.android.sdk.integration +// +// import cash.z.ecc.android.sdk.test.ScopedTest +// import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +// import org.junit.Assert.assertFalse +// import org.junit.Assert.assertTrue +// import org.junit.BeforeClass +// import org.junit.Test +// +// class ReorgBasicTest : ScopedTest() { +// +// private var callbackTriggered = false +// +// @Test +// fun testReorgChangesBlockHash() { +// testCoordinator.resetBlocks(blocksUrl) +// validator.validateBlockHash(targetHeight, targetHash) +// testCoordinator.updateBlocks(reorgUrl) +// validator.validateBlockHash(targetHeight, reorgHash) +// } +// +// @Test +// fun testReorgTriggersCallback() { +// callbackTriggered = false +// testCoordinator.resetBlocks(blocksUrl) +// testCoordinator.synchronizer.registerReorgListener(reorgCallback) +// assertFalse(callbackTriggered) +// +// testCoordinator.updateBlocks(reorgUrl).awaitSync() +// assertTrue(callbackTriggered) +// testCoordinator.synchronizer.unregisterReorgListener() +// } +// +// fun reorgCallback() { +// callbackTriggered = true +// } +// +// companion object { +// private const val blocksUrl = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt" +// private const val reorgUrl = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/after-small-reorg.txt" +// private const val targetHeight = 663250 +// private const val targetHash = "tbd" +// private const val reorgHash = "tbd" +// private val testCoordinator = DarksideTestCoordinator() +// private val validator = testCoordinator.validator +// +// @BeforeClass +// @JvmStatic +// fun startAllTests() { +// testCoordinator.enterTheDarkside() +// } +// } +// } diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgLargeTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgLargeTest.kt new file mode 100644 index 0000000..8737386 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgLargeTest.kt @@ -0,0 +1,239 @@ +package cash.z.ecc.android.sdk.darkside.reorgs // package cash.z.ecc.android.sdk.integration +// +// import androidx.test.platform.app.InstrumentationRegistry +// import cash.z.ecc.android.sdk.Initializer +// import cash.z.ecc.android.sdk.SdkSynchronizer +// import cash.z.ecc.android.sdk.Synchronizer +// import cash.z.ecc.android.sdk.test.ScopedTest +// import cash.z.ecc.android.sdk.ext.import +// import cash.z.ecc.android.sdk.internal.twig +// import cash.z.ecc.android.sdk.darkside.test.DarksideApi +// import io.grpc.StatusRuntimeException +// import kotlinx.coroutines.delay +// import kotlinx.coroutines.flow.filter +// import kotlinx.coroutines.flow.first +// import kotlinx.coroutines.flow.onEach +// import kotlinx.coroutines.runBlocking +// import org.junit.Assert.* +// import org.junit.Before +// import org.junit.BeforeClass +// import org.junit.Test +// +// class ReorgHandlingTest : ScopedTest() { +// +// @Before +// fun setup() { +// timeout(30_000L) { +// synchronizer.awaitSync() +// } +// } +// +// @Test +// fun testBeforeReorg_minHeight() = timeout(30_000L) { +// // validate that we are synced, at least to the birthday height +// synchronizer.validateMinSyncHeight(birthdayHeight) +// } +// +// @Test +// fun testBeforeReorg_maxHeight() = timeout(30_000L) { +// // validate that we are not synced beyond the target height +// synchronizer.validateMaxSyncHeight(targetHeight) +// } +// +// @Test +// fun testBeforeReorg_latestBlockHash() = timeout(30_000L) { +// val latestBlock = getBlock(targetHeight) +// assertEquals("foo", latestBlock.header.toStringUtf8()) +// } +// +// @Test +// fun testAfterSmallReorg_callbackTriggered() = timeout(30_000L) { +// hadReorg = false +// triggerSmallReorg() +// assertTrue(hadReorg) +// } +// +// @Test +// fun testAfterSmallReorg_callbackTriggered() = timeout(30_000L) { +// hadReorg = false +// triggerSmallReorg() +// assertTrue(hadReorg) +// } +// // @Test +// // fun testSync_100Blocks()= timeout(10_000L) { +// // // validate that we are synced below the target height, at first +// // synchronizer.validateMaxSyncHeight(targetHeight - 1) +// // // then trigger and await more blocks +// // synchronizer.awaitHeight(targetHeight) +// // // validate that we are above the target height afterward +// // synchronizer.validateMinSyncHeight(targetHeight) +// // } +// +// private fun Synchronizer.awaitSync() = runBlocking { +// twig("*** Waiting for sync ***") +// status.onEach { +// twig("got processor status $it") +// assertTrue("Error: Cannot complete test because the server is disconnected.", it != Synchronizer.Status.DISCONNECTED) +// delay(1000) +// }.filter { it == Synchronizer.Status.SYNCED }.first() +// twig("*** Done waiting for sync! ***") +// } +// +// private fun Synchronizer.awaitHeight(height: Int) = runBlocking { +// twig("*** Waiting for block $height ***") +// // processorInfo.first { it.lastScannedHeight >= height } +// processorInfo.onEach { +// twig("got processor info $it") +// delay(1000) +// }.first { it.lastScannedHeight >= height } +// twig("*** Done waiting for block $height! ***") +// } +// +// private fun Synchronizer.validateMinSyncHeight(minHeight: Int) = runBlocking { +// val info = processorInfo.first() +// val lastDownloadedHeight = info.lastDownloadedHeight +// assertTrue("Expected to be synced beyond $minHeight but the last downloaded block was" + +// " $lastDownloadedHeight details: $info", lastDownloadedHeight >= minHeight) +// } +// +// private fun Synchronizer.validateMaxSyncHeight(maxHeight: Int) = runBlocking { +// val lastDownloadedHeight = processorInfo.first().lastScannedHeight +// assertTrue("Did not expect to be synced beyond $maxHeight but we are synced to" + +// " $lastDownloadedHeight", lastDownloadedHeight <= maxHeight) +// } +// +// private fun getBlock(height: Int) = +// lightwalletd.getBlockRange(height..height).first() +// +// private val lightwalletd +// get() = (synchronizer as SdkSynchronizer).processor.downloader.lightwalletService +// +// companion object { +// private const val port = 9067 +// private const val birthdayHeight = 663150 +// private const val targetHeight = 663200 +// private const val seedPhrase = "still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread" +// private val context = InstrumentationRegistry.getInstrumentation().context +// private val initializer = Initializer(context, host, port, "ReorgHandlingTests") +// private lateinit var synchronizer: Synchronizer +// private lateinit var sithLord: DarksideApi +// +// @BeforeClass +// @JvmStatic +// fun startOnce() { +// +// sithLord = DarksideApi(context, host, port) +// enterTheDarkside() +// +// // don't start until after we enter the darkside (otherwise the we find no blocks to begin with and sleep for an interval) +// synchronizer.start(classScope) +// } +// +// private fun enterTheDarkside() = runBlocking { +// // verify that we are on the darkside +// try { +// twig("entering the darkside") +// var info = synchronizer.getServerInfo() +// assertTrue( +// "Error: not on the darkside", +// info.chainName.contains("darkside") +// or info.vendor.toLowerCase().contains("darkside", true) +// ) +// twig("initiating the darkside") +// sithLord.initiate(birthdayHeight + 10) +// info = synchronizer.getServerInfo() +// assertTrue( +// "Error: server not configured for the darkside. Expected initial height of" + +// " $birthdayHeight but found ${info.blockHeight}", birthdayHeight <= info.blockHeight) +// twig("darkside initiation complete!") +// } catch (error: StatusRuntimeException) { +// fail("Error while fetching server status. Testing cannot begin due to:" + +// " ${error.message}. Verify that the server is running") +// } +// } +// } +// /* +// +// beginning to process new blocks (with lower bound: 663050)... +// downloading blocks in range 663202..663202 +// found 1 missing blocks, downloading in 1 batches of 100... +// downloaded 663202..663202 (batch 1 of 1) [663202..663202] | 10ms +// validating blocks in range 663202..663202 in db: /data/user/0/cash.z.ecc.android.sdk.test/databases/ReorgTest22_Cache.db +// offset = min(100, 10 * (1)) = 10 +// lowerBound = max(663201 - 10, 663050) = 663191 +// handling chain error at 663201 by rewinding to block 663191 +// chain error detected at height: 663201. Rewinding to: 663191 +// beginning to process new blocks (with lower bound: 663050)... +// downloading blocks in range 663192..663202 +// found 11 missing blocks, downloading in 1 batches of 100... +// downloaded 663192..663202 (batch 1 of 1) [663192..663202] | 8ms +// validating blocks in range 663192..663202 in db: /data/user/0/cash.z.ecc.android.sdk.test/databases/ReorgTest22_Cache.db +// offset = min(100, 10 * (2)) = 20 +// lowerBound = max(663191 - 20, 663050) = 663171 +// handling chain error at 663191 by rewinding to block 663171 +// chain error detected at height: 663191. Rewinding to: 663171 +// beginning to process new blocks (with lower bound: 663050)... +// downloading blocks in range 663172..663202 +// found 31 missing blocks, downloading in 1 batches of 100... +// downloaded 663172..663202 (batch 1 of 1) [663172..663202] | 15ms +// validating blocks in range 663172..663202 in db: /data/user/0/cash.z.ecc.android.sdk.test/databases/ReorgTest22_Cache.db +// scanning blocks for range 663172..663202 in batches +// batch scanned: 663202/663202 +// batch scan complete! +// Successfully processed new blocks. Sleeping for 20000ms +// +// */ +// // +// // @Test +// // fun testHeightChange() { +// // setTargetHeight(targetHeight) +// // synchronizer.validateSyncedTo(targetHeight) +// // } +// // +// // @Test +// // fun testSmallReorgSync() { +// // verifyReorgSync(smallReorgSize) +// // } +// // +// // @Test +// // fun testSmallReorgCallback() { +// // verifyReorgCallback(smallReorgSize) +// // } +// // +// // @Test +// // fun testLargeReorgSync() { +// // verifyReorgSync(largeReorgSize) +// // } +// // +// // @Test +// // fun testLargeReorgCallback() { +// // verifyReorgCallback(largeReorgSize) +// // } +// // +// // +// // // +// // // Helper Functions +// // // +// // +// // fun verifyReorgSync(reorgSize: Int) { +// // setTargetHeight(targetHeight) +// // synchronizer.validateSyncedTo(targetHeight) +// // getHash(targetHeight).let { initialHash -> +// // setReorgHeight(targetHeight - reorgSize) +// // synchronizer.validateSyncedTo(targetHeight) +// // assertNotEquals("Hash should change after a reorg", initialHash, getHash(targetHeight)) +// // } +// // } +// // +// // fun verifyReorgCallback(reorgSize: Int) { +// // setTargetHeight(targetHeight) +// // synchronizer.validateSyncedTo(targetHeight) +// // getHash(targetHeight).let { initialHash -> +// // setReorgHeight(targetHeight - 10) +// // synchronizer.validateReorgCallback() +// // } +// // } +// +// +// } +// diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSetupTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSetupTest.kt new file mode 100644 index 0000000..105dca8 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSetupTest.kt @@ -0,0 +1,46 @@ +package cash.z.ecc.android.sdk.darkside.reorgs + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +import cash.z.ecc.android.sdk.darkside.test.ScopedTest +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class ReorgSetupTest : ScopedTest() { + + private val birthdayHeight = 663150 + private val targetHeight = 663250 + + @Before + fun setup() { + sithLord.await() + } + + @Test + fun testBeforeReorg_minHeight() = timeout(30_000L) { + // validate that we are synced, at least to the birthday height + validator.validateMinHeightDownloaded(birthdayHeight) + } + + @Test + fun testBeforeReorg_maxHeight() = timeout(30_000L) { + // validate that we are not synced beyond the target height + validator.validateMaxHeightScanned(targetHeight) + } + + companion object { + + private val sithLord = DarksideTestCoordinator() + private val validator = sithLord.validator + + @BeforeClass + @JvmStatic + fun startOnce() { + sithLord.enterTheDarkside() + sithLord.synchronizer.start(classScope) + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSmallTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSmallTest.kt new file mode 100644 index 0000000..ae837ff --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/ReorgSmallTest.kt @@ -0,0 +1,61 @@ +package cash.z.ecc.android.sdk.darkside.reorgs + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +import cash.z.ecc.android.sdk.darkside.test.ScopedTest +import cash.z.ecc.android.sdk.internal.twig +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class ReorgSmallTest : ScopedTest() { + + private val targetHeight = 663250 + private val hashBeforeReorg = "09ec0d5de30d290bc5a2318fbf6a2427a81c7db4790ce0e341a96aeac77108b9" + private val hashAfterReorg = "tbd" + + @Before + fun setup() { + sithLord.await() + } + + @Test + fun testBeforeReorg_latestBlockHash() = timeout(30_000L) { + validator.validateBlockHash(targetHeight, hashBeforeReorg) + } + + @Test + fun testAfterReorg_callbackTriggered() = timeout(30_000L) { + hadReorg = false +// sithLord.triggerSmallReorg() + sithLord.await() + + twig("checking whether a reorg happened (spoiler: ${if (hadReorg) "yep" else "nope"})") + assertTrue(hadReorg) + } + + @Test + fun testAfterReorg_latestBlockHash() = timeout(30_000L) { + validator.validateBlockHash(targetHeight, hashAfterReorg) + } + + companion object { + + private val sithLord = DarksideTestCoordinator() + private val validator = sithLord.validator + private var hadReorg = false + + @BeforeClass + @JvmStatic + fun startOnce() { + sithLord.enterTheDarkside() + validator.onReorg { _, _ -> + hadReorg = true + } + sithLord.synchronizer.start(classScope) + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/SetupTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/SetupTest.kt new file mode 100644 index 0000000..fd70f0c --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reorgs/SetupTest.kt @@ -0,0 +1,75 @@ +package cash.z.ecc.android.sdk.darkside.reorgs + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator +import cash.z.ecc.android.sdk.darkside.test.ScopedTest +import cash.z.ecc.android.sdk.darkside.test.SimpleMnemonics +import cash.z.ecc.android.sdk.ext.toHex +import org.junit.Assert.assertEquals +import org.junit.Ignore +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class SetupTest : ScopedTest() { + +// @Test +// fun testFirstBlockExists() { +// validator.validateHasBlock( +// firstBlock +// ) +// } +// +// @Test +// fun testLastBlockExists() { +// validator.validateHasBlock( +// lastBlock +// ) +// } +// +// @Test +// fun testLastBlockHash() { +// validator.validateBlockHash( +// lastBlock, +// lastBlockHash +// ) +// } + + @Test + @Ignore("This test is broken") + fun tempTest() { + val phrase = "still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread" + val result = SimpleMnemonics().toSeed(phrase.toCharArray()).toHex() + assertEquals("abc", result) + } + + @Test + @Ignore("This test is broken") + fun tempTest2() { + val s = SimpleMnemonics() + val ent = s.nextEntropy() + val phrase = s.nextMnemonic(ent) + + assertEquals("a", "${ent.toHex()}|${String(phrase)}") + } + + companion object { + private const val blocksUrl = "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt" + private const val firstBlock = 663150 + private const val lastBlock = 663200 + private const val lastBlockHash = "2fc7b4682f5ba6ba6f86e170b40f0aa9302e1d3becb2a6ee0db611ff87835e4a" + private val sithLord = DarksideTestCoordinator() + private val validator = sithLord.validator + +// @BeforeClass +// @JvmStatic +// fun startAllTests() { +// sithLord +// .enterTheDarkside() +// // TODO: fix this +// // .resetBlocks(blocksUrl, startHeight = firstBlock, tipHeight = lastBlock) +// .startSync(classScope) +// .await() +// } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reproduce/ReproduceZ2TFailureTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reproduce/ReproduceZ2TFailureTest.kt new file mode 100644 index 0000000..1f6456e --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/reproduce/ReproduceZ2TFailureTest.kt @@ -0,0 +1,35 @@ +package cash.z.ecc.android.sdk.darkside.reproduce + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import cash.z.ecc.android.sdk.darkside.test.DarksideTest +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Ignore +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class ReproduceZ2TFailureTest : DarksideTest() { + @Before + fun setup() { + println("dBUG RUNNING") + } + + @Test + @Ignore("This test is broken") + fun once() { + } + + @Test + @Ignore("This test is broken") + fun twice() { + } + + companion object { + @JvmStatic + @BeforeClass + fun beforeAll() { + println("dBUG BEFOERE IOT ALL") + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt new file mode 100644 index 0000000..cb9ad27 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt @@ -0,0 +1,177 @@ +package cash.z.ecc.android.sdk.darkside.test + +import android.content.Context +import cash.z.ecc.android.sdk.R +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.type.ZcashNetwork +import cash.z.wallet.sdk.rpc.Darkside +import cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL +import cash.z.wallet.sdk.rpc.DarksideStreamerGrpc +import cash.z.wallet.sdk.rpc.Service +import io.grpc.ManagedChannel +import io.grpc.stub.StreamObserver +import java.lang.RuntimeException +import java.util.concurrent.TimeUnit +import kotlin.random.Random + +class DarksideApi( + private val channel: ManagedChannel, + private val singleRequestTimeoutSec: Long = 10L +) { + + constructor( + appContext: Context, + host: String, + port: Int = ZcashNetwork.Mainnet.defaultPort, + usePlainText: Boolean = appContext.resources.getBoolean( + R.bool.lightwalletd_allow_very_insecure_connections + ) + ) : this( + LightWalletGrpcService.createDefaultChannel( + appContext, + host, + port, + usePlainText + ) + ) + + // + // Service APIs + // + + fun reset( + saplingActivationHeight: Int = 419200, + branchId: String = "e9ff75a6", // Canopy, + chainName: String = "darkside${ZcashNetwork.Mainnet.networkName}" + ) = apply { + twig("resetting darksidewalletd with saplingActivation=$saplingActivationHeight branchId=$branchId chainName=$chainName") + Darkside.DarksideMetaState.newBuilder() + .setBranchID(branchId) + .setChainName(chainName) + .setSaplingActivation(saplingActivationHeight) + .build().let { request -> + createStub().reset(request) + } + } + + fun stageBlocks(url: String) = apply { + twig("staging blocks url=$url") + createStub().stageBlocks(url.toUrl()) + } + + fun stageTransactions(url: String, targetHeight: Int) = apply { + twig("staging transaction at height=$targetHeight from url=$url") + createStub().stageTransactions( + DarksideTransactionsURL.newBuilder().setHeight(targetHeight).setUrl(url).build() + ) + } + + fun stageEmptyBlocks(startHeight: Int, count: Int = 10, nonce: Int = Random.nextInt()) = apply { + twig("staging $count empty blocks starting at $startHeight with nonce $nonce") + createStub().stageBlocksCreate( + Darkside.DarksideEmptyBlocks.newBuilder().setHeight(startHeight).setCount(count).setNonce(nonce).build() + ) + } + + fun stageTransactions(txs: Iterator?, tipHeight: Int) { + if (txs == null) { + twig("no transactions to stage") + return + } + twig("staging transaction at height=$tipHeight") + val response = EmptyResponse() + createStreamingStub().stageTransactionsStream(response).apply { + txs.forEach { + twig("stageTransactions: onNext calling!!!") + onNext(it.newBuilderForType().setData(it.data).setHeight(tipHeight.toLong()).build()) // apply the tipHeight because the passed in txs might not know their destination height (if they were created via SendTransaction) + twig("stageTransactions: onNext called") + } + twig("stageTransactions: onCompleted calling!!!") + onCompleted() + twig("stageTransactions: onCompleted called") + } + response.await() + } + + fun applyBlocks(tipHeight: Int) { + twig("applying blocks up to tipHeight=$tipHeight") + createStub().applyStaged(tipHeight.toHeight()) + } + + fun getSentTransactions(): MutableIterator? { + twig("grabbing sent transactions...") + return createStub().getIncomingTransactions(Service.Empty.newBuilder().build()) + } +// fun setMetaState( +// branchId: String = "2bb40e60", // Blossom, +// chainName: String = "darkside", +// saplingActivationHeight: Int = 419200 +// ): DarksideApi = apply { +// createStub().setMetaState( +// Darkside.DarksideMetaState.newBuilder() +// .setBranchID(branchId) +// .setChainName(chainName) +// .setSaplingActivation(saplingActivationHeight) +// .build() +// ) +// } + +// fun setLatestHeight(latestHeight: Int) = setState(latestHeight, reorgHeight) +// +// fun setReorgHeight(reorgHeight: Int) +// = setState(latestHeight.coerceAtLeast(reorgHeight), reorgHeight) +// +// fun setState(latestHeight: Int = -1, reorgHeight: Int = latestHeight): DarksideApi { +// this.latestHeight = latestHeight +// this.reorgHeight = reorgHeight +// // TODO: change this service to accept ints as heights, like everywhere else +// createStub().darksideSetState( +// Darkside.DarksideState.newBuilder() +// .setLatestHeight(latestHeight.toLong()) +// .setReorgHeight(reorgHeight.toLong()) +// .build() +// ) +// return this +// } + + private fun createStub(): DarksideStreamerGrpc.DarksideStreamerBlockingStub = + DarksideStreamerGrpc + .newBlockingStub(channel) + .withDeadlineAfter(singleRequestTimeoutSec, TimeUnit.SECONDS) + + private fun createStreamingStub(): DarksideStreamerGrpc.DarksideStreamerStub = + DarksideStreamerGrpc + .newStub(channel) + .withDeadlineAfter(singleRequestTimeoutSec, TimeUnit.SECONDS) + + private fun String.toUrl() = Darkside.DarksideBlocksURL.newBuilder().setUrl(this).build() + private fun Int.toHeight() = Darkside.DarksideHeight.newBuilder().setHeight(this).build() + + class EmptyResponse : StreamObserver { + var completed = false + var error: Throwable? = null + override fun onNext(value: Service.Empty?) { + twig("<><><><><><><><> EMPTY RESPONSE: ONNEXT CALLED!!!!") + } + + override fun onError(t: Throwable?) { + twig("<><><><><><><><> EMPTY RESPONSE: ONERROR CALLED!!!!") + error = t + completed = true + } + + override fun onCompleted() { + twig("<><><><><><><><> EMPTY RESPONSE: ONCOMPLETED CALLED!!!") + completed = true + } + + fun await() { + while (!completed) { + twig("awaiting server response...") + Thread.sleep(20L) + } + if (error != null) throw RuntimeException("Server responded with an error: $error caused by ${error?.cause}") + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTest.kt new file mode 100644 index 0000000..2d484dc --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTest.kt @@ -0,0 +1,18 @@ +package cash.z.ecc.android.sdk.darkside.test + +open class DarksideTest(name: String = javaClass.simpleName) : ScopedTest() { + val sithLord = DarksideTestCoordinator() + val validator = sithLord.validator + + fun runOnce(block: () -> Unit) { + if (!ranOnce) { + sithLord.enterTheDarkside() + sithLord.synchronizer.start(classScope) + block() + ranOnce = true + } + } + companion object { + private var ranOnce = false + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestCoordinator.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestCoordinator.kt new file mode 100644 index 0000000..24652d4 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestCoordinator.kt @@ -0,0 +1,311 @@ +package cash.z.ecc.android.sdk.darkside.test + +import androidx.test.platform.app.InstrumentationRegistry +import cash.z.ecc.android.sdk.SdkSynchronizer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.type.ZcashNetwork +import io.grpc.StatusRuntimeException +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.runBlocking +import org.junit.Assert +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue + +class DarksideTestCoordinator(val wallet: TestWallet) { + constructor( + alias: String = "DarksideTestCoordinator", + seedPhrase: String = DEFAULT_SEED_PHRASE, + startHeight: Int = DEFAULT_START_HEIGHT, + host: String = COMPUTER_LOCALHOST, + network: ZcashNetwork = ZcashNetwork.Mainnet, + port: Int = network.defaultPort + ) : this(TestWallet(seedPhrase, alias, network, host, startHeight = startHeight, port = port)) + + private val targetHeight = 663250 + private val context = InstrumentationRegistry.getInstrumentation().context + + // dependencies: private + private lateinit var darkside: DarksideApi + + // dependencies: public + val validator = DarksideTestValidator() + val chainMaker = DarksideChainMaker() + + // wallet delegates + val synchronizer get() = wallet.synchronizer + val send get() = wallet::send + // + // High-level APIs + // + + /** + * Setup dependencies, including the synchronizer and the darkside API connection + */ + fun enterTheDarkside(): DarksideTestCoordinator = runBlocking { + // verify that we are on the darkside + try { + twig("entering the darkside") + initiate() + synchronizer.getServerInfo().apply { + assertTrue( + "Error: not on the darkside", + vendor.contains("dark", true) + or chainName.contains("dark", true) + ) + } + twig("darkside initiation complete!") + } catch (error: StatusRuntimeException) { + Assert.fail( + "Error while fetching server status. Testing cannot begin due to:" + + " ${error.message} Caused by: ${error.cause} Verify that the server is running!" + ) + } + this@DarksideTestCoordinator + } + + /** + * Setup the synchronizer and darksidewalletd with their initial state + */ + fun initiate() { + twig("*************** INITIALIZING TEST COORDINATOR (ONLY ONCE) ***********************") + val channel = synchronizer.channel + darkside = DarksideApi(channel) + darkside.reset() + } + +// fun triggerSmallReorg() { +// darkside.setBlocksUrl(smallReorg) +// } +// +// fun triggerLargeReorg() { +// darkside.setBlocksUrl(largeReorg) +// } + + // redo this as a call to wallet but add delay time to wallet join() function + /** + * Waits for, at most, the given amount of time for the synchronizer to download and scan blocks + * and reach a 'SYNCED' status. + */ + fun await(timeout: Long = 60_000L, targetHeight: Int = -1) = runBlocking { + ScopedTest.timeoutWith(this, timeout) { + twig("*** Waiting up to ${timeout / 1_000}s for sync ***") + synchronizer.status.onEach { + twig("got processor status $it") + if (it == Synchronizer.Status.DISCONNECTED) { + twig("waiting a bit before giving up on connection...") + } else if (targetHeight != -1 && (synchronizer as SdkSynchronizer).processor.getLastScannedHeight() < targetHeight) { + twig("awaiting new blocks from server...") + } + }.map { + // whenever we're waiting for a target height, for simplicity, if we're sleeping, + // and in between polls, then consider it that we're not synced + if (targetHeight != -1 && (synchronizer as SdkSynchronizer).processor.getLastScannedHeight() < targetHeight) { + twig("switching status to DOWNLOADING because we're still waiting for height $targetHeight") + Synchronizer.Status.DOWNLOADING + } else { + it + } + }.filter { it == Synchronizer.Status.SYNCED }.first() + twig("*** Done waiting for sync! ***") + } + } + +// /** +// * Send a transaction and wait until it has been fully created and successfully submitted, which +// * takes about 10 seconds. +// */ +// suspend fun createAndSubmitTx( +// zatoshi: Long, +// toAddress: String, +// memo: String = "", +// fromAccountIndex: Int = 0 +// ) = coroutineScope { +// +// wallet.send(toAddress, memo, zatoshi, fromAccountIndex) +// } + + fun stall(delay: Long = 5000L) = runBlocking { + twig("*** Stalling for ${delay}ms ***") + delay(delay) + } + + // + // Validation + // + + inner class DarksideTestValidator { + + fun validateHasBlock(height: Int) { + runBlocking { + assertTrue((synchronizer as SdkSynchronizer).findBlockHashAsHex(height) != null) + assertTrue((synchronizer as SdkSynchronizer).findBlockHash(height)?.size ?: 0 > 0) + } + } + + fun validateLatestHeight(height: Int) = runBlocking { + val info = synchronizer.processorInfo.first() + val networkBlockHeight = info.networkBlockHeight + assertTrue( + "Expected latestHeight of $height but the server last reported a height of" + + " $networkBlockHeight! Full details: $info", + networkBlockHeight == height + ) + } + + fun validateMinHeightDownloaded(minHeight: Int) = runBlocking { + val info = synchronizer.processorInfo.first() + val lastDownloadedHeight = info.lastDownloadedHeight + assertTrue( + "Expected to have at least downloaded $minHeight but the last downloaded block was" + + " $lastDownloadedHeight! Full details: $info", + lastDownloadedHeight >= minHeight + ) + } + + fun validateMinHeightScanned(minHeight: Int) = runBlocking { + val info = synchronizer.processorInfo.first() + val lastScannedHeight = info.lastScannedHeight + assertTrue( + "Expected to have at least scanned $minHeight but the last scanned block was" + + " $lastScannedHeight! Full details: $info", + lastScannedHeight >= minHeight + ) + } + + fun validateMaxHeightScanned(maxHeight: Int) = runBlocking { + val lastDownloadedHeight = synchronizer.processorInfo.first().lastScannedHeight + assertTrue( + "Did not expect to be synced beyond $maxHeight but we are synced to" + + " $lastDownloadedHeight", + lastDownloadedHeight <= maxHeight + ) + } + + fun validateBlockHash(height: Int, expectedHash: String) { + val hash = runBlocking { (synchronizer as SdkSynchronizer).findBlockHashAsHex(height) } + assertEquals(expectedHash, hash) + } + + fun onReorg(callback: (errorHeight: Int, rewindHeight: Int) -> Unit) { + synchronizer.onChainErrorHandler = callback + } + + fun validateTxCount(count: Int) { + val txCount = runBlocking { (synchronizer as SdkSynchronizer).getTransactionCount() } + assertEquals("Expected $count transactions but found $txCount instead!", count, txCount) + } + + fun validateMinBalance(available: Long = -1, total: Long = -1) { + val balance = synchronizer.saplingBalances.value + if (available > 0) { + assertTrue("invalid available balance. Expected a minimum of $available but found ${balance?.available}", available <= balance?.available?.value!!) + } + if (total > 0) { + assertTrue("invalid total balance. Expected a minimum of $total but found ${balance?.total}", total <= balance?.total?.value!!) + } + } + suspend fun validateBalance(available: Long = -1, total: Long = -1, accountIndex: Int = 0) { + val balance = (synchronizer as SdkSynchronizer).processor.getBalanceInfo(accountIndex) + if (available > 0) { + assertEquals("invalid available balance", available, balance.available) + } + if (total > 0) { + assertEquals("invalid total balance", total, balance.total) + } + } + } + + // + // Chain Creations + // + + inner class DarksideChainMaker { + var lastTipHeight = -1 + + /** + * Resets the darksidelightwalletd server, stages the blocks represented by the given URL, then + * applies those changes and waits for them to take effect. + */ + fun resetBlocks( + blocksUrl: String, + startHeight: Int = DEFAULT_START_HEIGHT, + tipHeight: Int = startHeight + 100 + ): DarksideChainMaker = apply { + darkside + .reset(startHeight) + .stageBlocks(blocksUrl) + applyTipHeight(tipHeight) + } + + fun stageTransaction(url: String, targetHeight: Int): DarksideChainMaker = apply { + darkside.stageTransactions(url, targetHeight) + } + + fun stageTransactions(targetHeight: Int, vararg urls: String): DarksideChainMaker = apply { + urls.forEach { + darkside.stageTransactions(it, targetHeight) + } + } + + fun stageEmptyBlocks(startHeight: Int, count: Int = 10): DarksideChainMaker = apply { + darkside.stageEmptyBlocks(startHeight, count) + } + + fun stageEmptyBlock() = stageEmptyBlocks(lastTipHeight + 1, 1) + + fun applyTipHeight(tipHeight: Int): DarksideChainMaker = apply { + twig("applying tip height of $tipHeight") + darkside.applyBlocks(tipHeight) + lastTipHeight = tipHeight + } + + /** + * Creates a chain with 100 blocks and a transaction in the middle. + * + * The chain starts at block 663150 and ends at block 663250 + */ + fun makeSimpleChain() { + darkside + .reset(DEFAULT_START_HEIGHT) + .stageBlocks("https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/tx-incoming/blocks.txt") + applyTipHeight(DEFAULT_START_HEIGHT + 100) + } + + fun advanceBy(numEmptyBlocks: Int) { + val nextBlock = lastTipHeight + 1 + twig("adding $numEmptyBlocks empty blocks to the chain starting at $nextBlock") + darkside.stageEmptyBlocks(nextBlock, numEmptyBlocks) + applyTipHeight(nextBlock + numEmptyBlocks) + } + + fun applyPendingTransactions(targetHeight: Int = lastTipHeight + 1) { + stageEmptyBlocks(lastTipHeight + 1, targetHeight - lastTipHeight) + darkside.stageTransactions(darkside.getSentTransactions()?.iterator(), targetHeight) + applyTipHeight(targetHeight) + } + } + + companion object { + /** + * This is a special localhost value on the Android emulator, which allows it to contact + * the localhost of the computer running the emulator. + */ + const val COMPUTER_LOCALHOST = "10.0.2.2" + + // Block URLS + private const val beforeReorg = + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt" + private const val smallReorg = + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/after-small-reorg.txt" + private const val largeReorg = + "https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/after-large-reorg.txt" + private const val DEFAULT_START_HEIGHT = 663150 + private const val DEFAULT_SEED_PHRASE = + "still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread" + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestPrerequisites.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestPrerequisites.kt new file mode 100644 index 0000000..c3e78b4 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideTestPrerequisites.kt @@ -0,0 +1,57 @@ +package cash.z.ecc.android.sdk.darkside.test + +import android.content.Context +import android.content.pm.ApplicationInfo +import android.content.pm.PackageManager +import android.os.Build +import androidx.test.core.app.ApplicationProvider +import org.junit.Before + +/** + * Subclass this to validate the environment for running Darkside tests. + */ +open class DarksideTestPrerequisites { + @Before + fun verifyEmulator() { + require(isProbablyEmulator(ApplicationProvider.getApplicationContext())) { + "Darkside tests are configured to only run on the Android Emulator. Please see https://github.com/zcash/zcash-android-wallet-sdk/blob/master/docs/tests/Darkside.md" + } + } + + companion object { + private fun isProbablyEmulator(context: Context): Boolean { + if (isDebuggable(context)) { + // This is imperfect and could break in the future + if (null == Build.DEVICE || + "generic" == Build.DEVICE || // $NON-NLS + ("generic_x86" == Build.DEVICE) // $NON-NLS + ) { + return true + } + } + + return false + } + + /** + * @return Whether the application running is debuggable. This is determined from the + * ApplicationInfo object (`BuildInfo` is useless for libraries.) + */ + private fun isDebuggable(context: Context): Boolean { + val packageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + context.packageManager.getPackageInfo( + context.packageName, + PackageManager.PackageInfoFlags.of(0L) + ) + } else { + @Suppress("Deprecation") + context.packageManager.getPackageInfo(context.packageName, 0) + } + + // Normally shouldn't be null, but could be with a MockContext + return packageInfo.applicationInfo?.let { + 0 != (it.flags and ApplicationInfo.FLAG_DEBUGGABLE) + } ?: false + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/ScopedTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/ScopedTest.kt new file mode 100644 index 0000000..09a05fd --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/ScopedTest.kt @@ -0,0 +1,91 @@ +package cash.z.ecc.android.sdk.darkside.test + +import android.content.Context +import androidx.test.platform.app.InstrumentationRegistry +import cash.z.ecc.android.sdk.internal.TroubleshootingTwig +import cash.z.ecc.android.sdk.internal.Twig +import cash.z.ecc.android.sdk.internal.twig +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.cancel +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.newFixedThreadPoolContext +import kotlinx.coroutines.runBlocking +import org.junit.After +import org.junit.AfterClass +import org.junit.Before +import org.junit.BeforeClass +import java.util.concurrent.TimeoutException + +open class ScopedTest(val defaultTimeout: Long = 2000L) : DarksideTestPrerequisites() { + protected lateinit var testScope: CoroutineScope + + // if an androidTest doesn't need a context, then maybe it should be a unit test instead?! + val context: Context = InstrumentationRegistry.getInstrumentation().context + + @Before + fun start() { + twig("===================== TEST STARTED ==================================") + testScope = CoroutineScope( + Job(classScope.coroutineContext[Job]!!) + newFixedThreadPoolContext( + 5, + this.javaClass.simpleName + ) + ) + } + + @After + fun end() = runBlocking { + twig("======================= TEST CANCELLING =============================") + testScope.cancel() + testScope.coroutineContext[Job]?.join() + twig("======================= TEST ENDED ==================================") + } + + fun timeout(duration: Long, block: suspend () -> Unit) = timeoutWith(testScope, duration, block) + + companion object { + @JvmStatic + lateinit var classScope: CoroutineScope + + init { + Twig.plant(TroubleshootingTwig()) + twig("================================================================ INIT") + } + + @BeforeClass + @JvmStatic + fun createScope() { + twig("======================= CLASS STARTED ===============================") + classScope = CoroutineScope( + SupervisorJob() + newFixedThreadPoolContext(2, this.javaClass.simpleName) + ) + } + + @AfterClass + @JvmStatic + fun destroyScope() = runBlocking { + twig("======================= CLASS CANCELLING ============================") + classScope.cancel() + classScope.coroutineContext[Job]?.join() + twig("======================= CLASS ENDED =================================") + } + + @JvmStatic + fun timeoutWith(scope: CoroutineScope, duration: Long, block: suspend () -> Unit) { + scope.launch { + delay(duration) + val message = "ERROR: Test timed out after ${duration}ms" + twig(message) + throw TimeoutException(message) + }.let { selfDestruction -> + scope.launch { + block() + selfDestruction.cancel() + } + } + } + } +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/SimpleMnemonics.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/SimpleMnemonics.kt new file mode 100644 index 0000000..3c24400 --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/SimpleMnemonics.kt @@ -0,0 +1,20 @@ +package cash.z.ecc.android.sdk.darkside.test + +import cash.z.android.plugin.MnemonicPlugin +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.Mnemonics.MnemonicCode +import cash.z.ecc.android.bip39.Mnemonics.WordCount +import cash.z.ecc.android.bip39.toEntropy +import cash.z.ecc.android.bip39.toSeed +import java.util.Locale + +class SimpleMnemonics : MnemonicPlugin { + override fun fullWordList(languageCode: String) = Mnemonics.getCachedWords(Locale.ENGLISH.language) + override fun nextEntropy(): ByteArray = WordCount.COUNT_24.toEntropy() + override fun nextMnemonic(): CharArray = MnemonicCode(WordCount.COUNT_24).chars + override fun nextMnemonic(entropy: ByteArray): CharArray = MnemonicCode(entropy).chars + override fun nextMnemonicList(): List = MnemonicCode(WordCount.COUNT_24).words + override fun nextMnemonicList(entropy: ByteArray): List = MnemonicCode(entropy).words + override fun toSeed(mnemonic: CharArray): ByteArray = MnemonicCode(mnemonic).toSeed() + override fun toWordList(mnemonic: CharArray): List = MnemonicCode(mnemonic).words +} diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt new file mode 100644 index 0000000..3490a5a --- /dev/null +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt @@ -0,0 +1,175 @@ +package cash.z.ecc.android.sdk.darkside.test + +import androidx.test.platform.app.InstrumentationRegistry +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.Initializer +import cash.z.ecc.android.sdk.SdkSynchronizer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.db.entity.isPending +import cash.z.ecc.android.sdk.internal.Twig +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.model.Zatoshi +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.WalletBalance +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.onCompletion +import kotlinx.coroutines.flow.takeWhile +import kotlinx.coroutines.launch +import kotlinx.coroutines.newFixedThreadPoolContext +import kotlinx.coroutines.runBlocking +import java.util.concurrent.TimeoutException + +/** + * A simple wallet that connects to testnet for integration testing. The intention is that it is + * easy to drive and nice to use. + */ +class TestWallet( + val seedPhrase: String, + val alias: String = "TestWallet", + val network: ZcashNetwork = ZcashNetwork.Testnet, + val host: String = network.defaultHost, + startHeight: Int? = null, + val port: Int = network.defaultPort +) { + constructor( + backup: Backups, + network: ZcashNetwork = ZcashNetwork.Testnet, + alias: String = "TestWallet" + ) : this( + backup.seedPhrase, + network = network, + startHeight = if (network == ZcashNetwork.Mainnet) backup.mainnetBirthday else backup.testnetBirthday, + alias = alias + ) + + val walletScope = CoroutineScope( + SupervisorJob() + newFixedThreadPoolContext(3, this.javaClass.simpleName) + ) + + // Although runBlocking isn't great, this usage is OK because this is only used within the + // automated tests + + private val context = InstrumentationRegistry.getInstrumentation().context + private val seed: ByteArray = Mnemonics.MnemonicCode(seedPhrase).toSeed() + private val shieldedSpendingKey = + runBlocking { DerivationTool.deriveSpendingKeys(seed, network = network)[0] } + private val transparentSecretKey = + runBlocking { DerivationTool.deriveTransparentSecretKey(seed, network = network) } + val initializer = runBlocking { + Initializer.new(context) { config -> + runBlocking { config.importWallet(seed, startHeight, network, host, alias = alias) } + } + } + val synchronizer: SdkSynchronizer = runBlocking { Synchronizer.new(initializer) } as SdkSynchronizer + val service = (synchronizer.processor.downloader.lightWalletService as LightWalletGrpcService) + + val available get() = synchronizer.saplingBalances.value?.available + val shieldedAddress = + runBlocking { DerivationTool.deriveShieldedAddress(seed, network = network) } + val transparentAddress = + runBlocking { DerivationTool.deriveTransparentAddress(seed, network = network) } + val birthdayHeight get() = synchronizer.latestBirthdayHeight + val networkName get() = synchronizer.network.networkName + val connectionInfo get() = service.connectionInfo.toString() + + suspend fun transparentBalance(): WalletBalance { + synchronizer.refreshUtxos(transparentAddress, synchronizer.latestBirthdayHeight) + return synchronizer.getTransparentBalance(transparentAddress) + } + + suspend fun sync(timeout: Long = -1): TestWallet { + val killSwitch = walletScope.launch { + if (timeout > 0) { + delay(timeout) + throw TimeoutException("Failed to sync wallet within ${timeout}ms") + } + } + if (!synchronizer.isStarted) { + twig("Starting sync") + synchronizer.start(walletScope) + } else { + twig("Awaiting next SYNCED status") + } + + // block until synced + synchronizer.status.first { it == Synchronizer.Status.SYNCED } + killSwitch.cancel() + twig("Synced!") + return this + } + + suspend fun send(address: String = transparentAddress, memo: String = "", amount: Zatoshi = Zatoshi(500L), fromAccountIndex: Int = 0): TestWallet { + Twig.sprout("$alias sending") + synchronizer.sendToAddress(shieldedSpendingKey, amount, address, memo, fromAccountIndex) + .takeWhile { it.isPending() } + .collect { + twig("Updated transaction: $it") + } + Twig.clip("$alias sending") + return this + } + + suspend fun rewindToHeight(height: Int): TestWallet { + synchronizer.rewindToNearestHeight(height, false) + return this + } + + suspend fun shieldFunds(): TestWallet { + twig("checking $transparentAddress for transactions!") + synchronizer.refreshUtxos(transparentAddress, 935000).let { count -> + twig("FOUND $count new UTXOs") + } + + synchronizer.getTransparentBalance(transparentAddress).let { walletBalance -> + twig("FOUND utxo balance of total: ${walletBalance.total} available: ${walletBalance.available}") + + if (walletBalance.available.value > 0L) { + synchronizer.shieldFunds(shieldedSpendingKey, transparentSecretKey) + .onCompletion { twig("done shielding funds") } + .catch { twig("Failed with $it") } + .collect() + } + } + + return this + } + + suspend fun join(timeout: Long? = null): TestWallet { + // block until stopped + twig("Staying alive until synchronizer is stopped!") + if (timeout != null) { + twig("Scheduling a stop in ${timeout}ms") + walletScope.launch { + delay(timeout) + synchronizer.stop() + } + } + synchronizer.status.first { it == Synchronizer.Status.STOPPED } + twig("Stopped!") + return this + } + + companion object { + init { + Twig.enabled(true) + } + } + + enum class Backups(val seedPhrase: String, val testnetBirthday: Int, val mainnetBirthday: Int) { + // TODO: get the proper birthday values for these wallets + DEFAULT("column rhythm acoustic gym cost fit keen maze fence seed mail medal shrimp tell relief clip cannon foster soldier shallow refuse lunar parrot banana", 1_355_928, 1_000_000), + SAMPLE_WALLET("input frown warm senior anxiety abuse yard prefer churn reject people glimpse govern glory crumble swallow verb laptop switch trophy inform friend permit purpose", 1_330_190, 1_000_000), + DEV_WALLET("still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread", 1_000_000, 991645), + ALICE("quantum whisper lion route fury lunar pelican image job client hundred sauce chimney barely life cliff spirit admit weekend message recipe trumpet impact kitten", 1_330_190, 1_000_000), + BOB("canvas wine sugar acquire garment spy tongue odor hole cage year habit bullet make label human unit option top calm neutral try vocal arena", 1_330_190, 1_000_000), + ; + } +} diff --git a/darkside-test-lib/src/main/AndroidManifest.xml b/darkside-test-lib/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b68a4b4 --- /dev/null +++ b/darkside-test-lib/src/main/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/darkside-test-lib/src/main/res/values/bools.xml b/darkside-test-lib/src/main/res/values/bools.xml new file mode 100644 index 0000000..4af1c12 --- /dev/null +++ b/darkside-test-lib/src/main/res/values/bools.xml @@ -0,0 +1,4 @@ + + + true + \ No newline at end of file diff --git a/demo-app/README.md b/demo-app/README.md new file mode 100644 index 0000000..0b5c414 --- /dev/null +++ b/demo-app/README.md @@ -0,0 +1,76 @@ +# Android demo app +This is a demo app that exercises code in https://github.com/zcash/zcash-android-wallet-sdk, which has all the Android-related functionalities necessary to build a mobile Zcash shielded wallet. + +It relies on [Lightwalletd](https://github.com/zcash/lightwalletd), a backend service that provides a bandwidth-efficient interface to the Zcash blockchain. There is an equivalent [iOS demo app](https://github.com/zcash/ZcashLightClientKit). + +## Contents + +- [Requirements](#requirements) +- [Installation](#installation) +- [Exploring the demo app](#exploring-the-demo-app) + - [Demos](#demos) +- [Getting started](#getting-started) +- [Resources](#resources) + +## Requirements +The demo app is built in Kotlin, and targets API 21. The demo pulls the pre-built SDK from jcenter so, unlike the SDK, it does not require Rust or the NDK! + +[Back to contents](#contents) + +## Installation +In short, you simply will need to: + +0. (pre-requisite) Install [Android Studio](https://developer.android.com/studio) and [setup an emulator](https://developer.android.com/studio/run/emulator#runningapp) or device +1. Clone this repo: https://github.com/zcash/zcash-android-wallet-sdk +2. Open the `demo-app` folder in Android Studio and [launch the app](https://developer.android.com/studio/run/emulator#runningapp) + (recommended build variant: `zcashmainnetDebug`) + +[Back to contents](#contents) + +## Exploring the demo app +After building the app, the emulator should launch with a basic app that exercises the SDK (see picture below). +To explore the app, click on each menu item, in order, and also look at the associated code. + +![The android demo app, running in Android Studio](assets/demo-app.png?raw=true "Demo App with Android Studio") + +The demo app is not trying to show what's possible, but to present how to accomplish the building blocks of wallet functionality in a simple way in code. It is comprised of the following self-contained demos. All data is reset between demos in order to keep the behavior repeatable and independent of state. + +### Demos + +Menu Item|Related Code|Description +:-----|:-----|:----- +Get Private Key|[GetPrivateKeyFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getprivatekey/GetPrivateKeyFragment.kt)|Given a seed, display its viewing key and spending key +Get Address|[GetAddressFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getaddress/GetAddressFragment.kt)|Given a seed, display its z-addr +Get Balance|[GetBalanceFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getbalance/GetBalanceFragment.kt)|Display the balance +Get Latest Height|[GetLatestHeightFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getlatestheight/GetLatestHeightFragment.kt)|Given a lightwalletd server, retrieve the latest block height +Get Block|[GetBlockFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblock/GetBlockFragment.kt)|Given a lightwalletd server, retrieve a compact block +Get Block Range|[GetBlockRangeFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblockrange/GetBlockRangeFragment.kt)|Given a lightwalletd server, retrieve a range of compact blocks +List Transactions|[ListTransactionsFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/ListTransactionsFragment.kt)|Given a seed, list all related shielded transactions +Send|[SendFragment.kt](app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/send/SendFragment.kt)|Send and monitor a transaction, the most complex demo + + +[Back to contents](#contents) + +## Getting started +We’re assuming you already have a brilliant app idea, a vision for the app’s UI, and know the ins and outs of the Android lifecycle. We’ll just stick to the Zcash app part of “getting started.” + +Similarly, the best way to build a functioning Zcash shielded app is to implement the functionalities that are listed in the demo app, in roughly that order: + +1. Generate and safely store your private key. +1. Get the associated address, and display it to the user on a receive screen. You may also want to generate a QR code from this address. +1. Make sure your app can talk to the lightwalletd server and check by asking for the latest height, and verify that it’s current with the Zcash network. +1. Try interacting with lightwalletd by fetching a block and processing it. Then try fetching a range of blocks, which is much more efficient. +1. Now that you have the blocks process them and list transactions that send to or are from that wallet, to calculate your balance. +1. With a current balance (and funds, of course), send a transaction and monitor its transaction status and update the UI with the results. + +[Back to contents](#contents) + +## Resources +You don’t need to do it all on your own. +* Chat with the wallet team: [Zcash discord community channel, wallet](https://discord.gg/efFG7UJ) +* Discuss ideas with other community members: [Zcash forum](https://forum.zcashcommunity.com/) +* Get funded to build a Zcash app: [Zcash foundation grants program](https://grants.zfnd.org/) +* Follow Zcash-specific best practices: [Zcash wallet developer checklist](https://zcash.readthedocs.io/en/latest/rtd_pages/ux_wallet_checklist.html) +* Get more information and see FAQs about the wallet: [Shielded resources documentation](https://zcash.readthedocs.io/en/latest/rtd_pages/shielded_support.html) + +[Back to contents](#contents) diff --git a/demo-app/assets/demo-app.png b/demo-app/assets/demo-app.png new file mode 100644 index 0000000000000000000000000000000000000000..49aad0286d331ecf3b52a6371c94842300ad4ac8 GIT binary patch literal 142839 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 M07*qoM6N<$g67w&(f|Me literal 0 HcmV?d00001 diff --git a/demo-app/build.gradle.kts b/demo-app/build.gradle.kts new file mode 100644 index 0000000..0d50555 --- /dev/null +++ b/demo-app/build.gradle.kts @@ -0,0 +1,123 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("zcash-sdk.android-conventions") + id("kotlin-parcelize") + id("androidx.navigation.safeargs") + id("com.osacky.fladle") +} + +android { + defaultConfig { + applicationId = "cash.z.ecc.android.sdk.demoapp" + minSdk = 21 // Different from the SDK min + versionCode = 1 + versionName = "1.0" + } + buildFeatures { + viewBinding = true + } + + flavorDimensions.add("network") + + productFlavors { + // would rather name them "testnet" and "mainnet" but product flavor names cannot start with the word "test" + create("zcashtestnet") { + dimension = "network" + applicationId = "cash.z.ecc.android.sdk.demoapp.testnet" + matchingFallbacks.addAll(listOf("zcashtestnet", "debug")) + } + + create("zcashmainnet") { + dimension = "network" + applicationId = "cash.z.ecc.android.sdk.demoapp.mainnet" + matchingFallbacks.addAll(listOf("zcashmainnet", "release")) + } + } + + buildTypes { + getByName("release").apply { + isMinifyEnabled = project.property("IS_MINIFY_APP_ENABLED").toString().toBoolean() + proguardFiles.addAll( + listOf( + getDefaultProguardFile("proguard-android-optimize.txt"), + File("proguard-project.txt") + ) + ) + } + } + + lint { + baseline = File("lint-baseline.xml") + } +} + +dependencies { + // SDK + implementation(projects.sdkLib) + + // sample mnemonic plugin + implementation(libs.zcashwalletplgn) + implementation(libs.bip39) + + // Android + implementation(libs.androidx.core) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.navigation.fragment) + implementation(libs.androidx.navigation.ui) + implementation(libs.material) + androidTestImplementation(libs.bundles.androidx.test) + + implementation(libs.bundles.grpc) +} + +fladle { +// Firebase Test Lab has min and max values that might differ from our project's +// These are determined by `gcloud firebase test android models list` + @Suppress("MagicNumber", "PropertyName", "VariableNaming") + val FIREBASE_TEST_LAB_MIN_API = 23 + + @Suppress("MagicNumber", "PropertyName", "VariableNaming") + val FIREBASE_TEST_LAB_MAX_API = 30 + + val minSdkVersion = run { + val buildMinSdk = + project.properties["ANDROID_MIN_SDK_VERSION"].toString().toInt() + buildMinSdk.coerceAtLeast(FIREBASE_TEST_LAB_MIN_API).toString() + } + val targetSdkVersion = run { + val buildTargetSdk = + project.properties["ANDROID_TARGET_SDK_VERSION"].toString().toInt() + buildTargetSdk.coerceAtMost(FIREBASE_TEST_LAB_MAX_API).toString() + } + + val firebaseTestLabKeyPath = project.properties["ZCASH_FIREBASE_TEST_LAB_API_KEY_PATH"].toString() + val firebaseProject = project.properties["ZCASH_FIREBASE_TEST_LAB_PROJECT"].toString() + + if (firebaseTestLabKeyPath.isNotEmpty()) { + serviceAccountCredentials.set(File(firebaseTestLabKeyPath)) + } else if (firebaseProject.isNotEmpty()) { + projectId.set(firebaseProject) + } + + configs { + create("sanityConfig") { + clearPropertiesForSanityRobo() + + debugApk.set( + project.provider { + "${buildDir}/outputs/apk/zcashmainnet/release/demo-app-zcashmainnet-release.apk" + } + ) + + testTimeout.set("5m") + + devices.addAll( + mapOf("model" to "Pixel2", "version" to minSdkVersion), + mapOf("model" to "Pixel2", "version" to targetSdkVersion) + ) + + flankVersion.set(libs.versions.flank.get()) + } + } +} \ No newline at end of file diff --git a/demo-app/lint-baseline.xml b/demo-app/lint-baseline.xml new file mode 100644 index 0000000..68319a3 --- /dev/null +++ b/demo-app/lint-baseline.xml @@ -0,0 +1,1320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo-app/proguard-project.txt b/demo-app/proguard-project.txt new file mode 100644 index 0000000..d371ddc --- /dev/null +++ b/demo-app/proguard-project.txt @@ -0,0 +1,3 @@ +# Allow for debuggable stacktraces +-keepattributes SourceFile,LineNumberTable +-renamesourcefileattribute SourceFile diff --git a/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt b/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt new file mode 100644 index 0000000..ffaf4a8 --- /dev/null +++ b/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt @@ -0,0 +1,169 @@ +package cash.z.wallet.sdk.sample.demoapp + +import androidx.test.platform.app.InstrumentationRegistry +import cash.z.ecc.android.sdk.Initializer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.db.entity.isFailure +import cash.z.ecc.android.sdk.ext.convertZecToZatoshi +import cash.z.ecc.android.sdk.ext.toHex +import cash.z.ecc.android.sdk.internal.TroubleshootingTwig +import cash.z.ecc.android.sdk.internal.Twig +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.BeforeClass +import org.junit.Ignore +import org.junit.Test + +/** + * Sample code to demonstrate key functionality without UI, inspired by: + * https://github.com/EdgeApp/eosjs-node-cli/blob/paul/cleanup/app.js + */ +class SampleCodeTest { + + // /////////////////////////////////////////////////// + // Seed derivation + @Ignore("This test is not implemented") + @Test + fun createBip39Seed_fromSeedPhrase() { + // TODO: log(seedPhrase.asRawEntropy().asBip39seed()) + } + + @Ignore("This test is not implemented") + @Test + fun createRawEntropy() { + // TODO: call: Mnemonic::from_phrase(seed_phrase, Language::English).unwrap().entropy() + // log(seedPhrase.asRawEntropy()) + } + + @Ignore("This test is not implemented") + @Test + fun createBip39Seed_fromRawEntropy() { + // get the 64 byte bip39 entropy + // TODO: call: bip39::Seed::new(&Mnemonic::from_entropy(&seed_bytes, Language::English).unwrap(), "") + // log(rawEntropy.asBip39Seed()) + } + + @Ignore("This test is not implemented") + @Test + fun deriveSeedPhraseFrom() { + // TODO: let mnemonic = Mnemonic::from_entropy(entropy, Language::English).unwrap(); + // log(entropy.asSeedPhrase()) + } + + // /////////////////////////////////////////////////// + // Derive Extended Spending Key + @Test fun deriveSpendingKey() { + val spendingKeys = runBlocking { + DerivationTool.deriveSpendingKeys( + seed, + ZcashNetwork.Mainnet + ) + } + assertEquals(1, spendingKeys.size) + log("Spending Key: ${spendingKeys?.get(0)}") + } + + // /////////////////////////////////////////////////// + // Get Address + @Test fun getAddress() = runBlocking { + val address = synchronizer.getAddress() + assertFalse(address.isNullOrBlank()) + log("Address: $address") + } + + // /////////////////////////////////////////////////// + // Derive address from Extended Full Viewing Key + @Test fun getAddressFromViewingKey() { + } + + // /////////////////////////////////////////////////// + // Query latest block height + @Test fun getLatestBlockHeightTest() { + val lightwalletService = LightWalletGrpcService(context, lightwalletdHost) + log("Latest Block: ${lightwalletService.getLatestBlockHeight()}") + } + + // /////////////////////////////////////////////////// + // Download compact block range + @Test fun getBlockRange() { + val blockRange = 500_000..500_009 + val lightwalletService = LightWalletGrpcService(context, lightwalletdHost) + val blocks = lightwalletService.getBlockRange(blockRange) + assertEquals(blockRange.count(), blocks.size) + + blocks.forEachIndexed { i, block -> + log("Block #$i: height:${block.height} hash:${block.hash.toByteArray().toHex()}") + } + } + + // /////////////////////////////////////////////////// + // Query account outgoing transactions + @Test fun queryOutgoingTransactions() { + } + + // /////////////////////////////////////////////////// + // Query account incoming transactions + @Test fun queryIncomingTransactions() { + } + +// // /////////////////////////////////////////////////// +// // Create a signed transaction (with memo) +// @Test fun createTransaction() = runBlocking { +// val rustBackend = RustBackend.init(context) +// val repository = PagedTransactionRepository(context) +// val encoder = WalletTransactionEncoder(rustBackend, repository) +// val spendingKey = DerivationTool.deriveSpendingKeys(seed, ZcashNetwork.Mainnet)[0] +// +// val amount = 0.123.convertZecToZatoshi() +// val address = "ztestsapling1tklsjr0wyw0d58f3p7wufvrj2cyfv6q6caumyueadq8qvqt8lda6v6tpx474rfru9y6u75u7qnw" +// val memo = "Test Transaction".toByteArray() +// +// val encodedTx = encoder.createTransaction(spendingKey, amount, address, memo) +// assertTrue(encodedTx.raw.isNotEmpty()) +// log("Transaction ID: ${encodedTx.txId.toHex()}") +// } + + // /////////////////////////////////////////////////// + // Create a signed transaction (with memo) and broadcast + @Test fun submitTransaction() = runBlocking { + val amount = 0.123.convertZecToZatoshi() + val address = "ztestsapling1tklsjr0wyw0d58f3p7wufvrj2cyfv6q6caumyueadq8qvqt8lda6v6tpx474rfru9y6u75u7qnw" + val memo = "Test Transaction" + val spendingKey = DerivationTool.deriveSpendingKeys(seed, ZcashNetwork.Mainnet)[0] + val transactionFlow = synchronizer.sendToAddress(spendingKey, amount, address, memo) + transactionFlow.collect { + log("pending transaction updated $it") + assertTrue("Failed to send funds. See log for details.", !it?.isFailure()) + } + } + + // ///////////////////////////////////////////////////// + // Utility Functions + // //////////////////////////////////////////////////// + + companion object { + private val seed = "Insert seed for testing".toByteArray() + private val lightwalletdHost: String = ZcashNetwork.Mainnet.defaultHost + + private val context = InstrumentationRegistry.getInstrumentation().targetContext + private val synchronizer: Synchronizer = run { + val initializer = runBlocking { Initializer.new(context) {} } + Synchronizer.newBlocking(initializer) + } + + @BeforeClass + @JvmStatic + fun init() { + Twig.plant(TroubleshootingTwig()) + } + + fun log(message: String?) = twig(message ?: "null") + } +} diff --git a/demo-app/src/main/AndroidManifest.xml b/demo-app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..d2f37c8 --- /dev/null +++ b/demo-app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/App.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/App.kt new file mode 100644 index 0000000..5fbafc1 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/App.kt @@ -0,0 +1,18 @@ +package cash.z.ecc.android.sdk.demoapp + +import android.app.Application +import cash.z.ecc.android.sdk.internal.TroubleshootingTwig +import cash.z.ecc.android.sdk.internal.Twig + +class App : Application() { + + override fun onCreate() { + super.onCreate() + + if (BuildConfig.DEBUG) { + StrictModeHelper.enableStrictMode() + } + + Twig.plant(TroubleshootingTwig()) + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/BaseDemoFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/BaseDemoFragment.kt new file mode 100644 index 0000000..93b2857 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/BaseDemoFragment.kt @@ -0,0 +1,97 @@ +package cash.z.ecc.android.sdk.demoapp + +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.viewbinding.ViewBinding +import cash.z.ecc.android.sdk.demoapp.util.mainActivity +import com.google.android.material.snackbar.Snackbar + +abstract class BaseDemoFragment : Fragment() { + + /** + * Since the lightwalletservice is not a component that apps typically use, directly, we provide + * this from one place. Everything that can be done with the service can/should be done with the + * synchronizer because it wraps the service. + */ + val lightwalletService get() = mainActivity()?.lightwalletService + + // contains view information provided by the user + val sharedViewModel: SharedViewModel by activityViewModels() + lateinit var binding: T + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = inflateBinding(layoutInflater) + return binding.root + } + + override fun onResume() { + super.onResume() + registerActionButtonListener() + } + + override fun onPause() { + super.onPause() + unregisterActionButtonListener() + (activity as? MainActivity)?.hideKeyboard() + } + + private fun registerActionButtonListener() { + (activity as? MainActivity)?.fabListener = this + } + + private fun unregisterActionButtonListener() { + (activity as? MainActivity)?.apply { + if (fabListener === this@BaseDemoFragment) fabListener = null + } + } + + /** + * Callback that gets invoked on the visible fragment whenever the floating action button is + * tapped. This provides a convenient placeholder for the developer to extend the + * behavior for a demo, for instance by copying the address to the clipboard, whenever the FAB + * is tapped on the address screen. + */ + open fun onActionButtonClicked() { + // Show a message so that it's easy for developers to find how to replace this behavior for + // each fragment. Simply override this [onActionButtonClicked] callback to add behavior to a + // demo. In other words, this function probably doesn't need to change because desired + // behavior should go in the child fragment, which overrides this. + Snackbar.make(requireView(), "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action") { /* auto-close */ }.show() + } + + /** + * Convenience function to the given text to the clipboard. + */ + open fun copyToClipboard(text: String, description: String = "Copied to clipboard!") { + (activity?.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager)?.let { cm -> + cm.setPrimaryClip(ClipData.newPlainText("DemoAppClip", text)) + } + toast(description) + } + + /** + * Convenience function to show a toast in the main activity. + */ + fun toast(message: String) { + Toast.makeText(activity, message, Toast.LENGTH_SHORT).show() + } + + /** + * Inflate the ViewBinding. Unfortunately, the `inflate` function is not part of the ViewBinding + * interface so the base class cannot take care of this behavior without some help. + */ + abstract fun inflateBinding(layoutInflater: LayoutInflater): T +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt new file mode 100644 index 0000000..61e6bc8 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt @@ -0,0 +1,161 @@ +package cash.z.ecc.android.sdk.demoapp + +import android.content.ClipboardManager +import android.content.Context +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.inputmethod.InputMethodManager +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.core.content.getSystemService +import androidx.drawerlayout.widget.DrawerLayout +import androidx.navigation.findNavController +import androidx.navigation.ui.AppBarConfiguration +import androidx.navigation.ui.navigateUp +import androidx.navigation.ui.setupActionBarWithNavController +import androidx.navigation.ui.setupWithNavController +import androidx.viewbinding.ViewBinding +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletService +import cash.z.ecc.android.sdk.type.ZcashNetwork +import com.google.android.material.floatingactionbutton.FloatingActionButton +import com.google.android.material.navigation.NavigationView + +class MainActivity : + AppCompatActivity(), + ClipboardManager.OnPrimaryClipChangedListener, + DrawerLayout.DrawerListener { + private lateinit var appBarConfiguration: AppBarConfiguration + private lateinit var clipboard: ClipboardManager + private var clipboardListener: ((String?) -> Unit)? = null + var fabListener: BaseDemoFragment? = null + + /** + * The service to use for all demos that interact directly with the service. Since gRPC channels + * are expensive to recreate, we set this up once per demo. A real app would hardly ever use + * this object because it would utilize the synchronizer, instead, which exposes APIs that + * automatically sync with the server. + */ + var lightwalletService: LightWalletService? = null + private set + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + clipboard.addPrimaryClipChangedListener(this) + setContentView(R.layout.activity_main) + val toolbar: Toolbar = findViewById(R.id.toolbar) + setSupportActionBar(toolbar) + + val fab: FloatingActionButton = findViewById(R.id.fab) + fab.setOnClickListener { view -> + onFabClicked(view) + } + val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) + val navView: NavigationView = findViewById(R.id.nav_view) + val navController = findNavController(R.id.nav_host_fragment) + // Passing each menu ID as a set of Ids because each + // menu should be considered as top level destinations. + appBarConfiguration = AppBarConfiguration( + setOf( + R.id.nav_home, R.id.nav_address, R.id.nav_balance, R.id.nav_block, R.id.nav_private_key, + R.id.nav_latest_height, R.id.nav_block_range, + R.id.nav_transactions, R.id.nav_utxos, R.id.nav_send + ), + drawerLayout + ) + setupActionBarWithNavController(navController, appBarConfiguration) + navView.setupWithNavController(navController) + drawerLayout.addDrawerListener(this) + + initService() + } + + override fun onDestroy() { + super.onDestroy() + lightwalletService?.shutdown() + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + // Inflate the menu; this adds items to the action bar if it is present. + menuInflater.inflate(R.menu.main, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return if (item.itemId == R.id.action_settings) { + val navController = findNavController(R.id.nav_host_fragment) + navController.navigate(R.id.nav_home) + true + } else { + super.onOptionsItemSelected(item) + } + } + + override fun onSupportNavigateUp(): Boolean { + val navController = findNavController(R.id.nav_host_fragment) + return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp() + } + + // + // Private functions + // + + private fun initService() { + if (lightwalletService != null) { + lightwalletService?.shutdown() + } + lightwalletService = LightWalletGrpcService(applicationContext, ZcashNetwork.fromResources(applicationContext)) + } + + private fun onFabClicked(view: View) { + fabListener?.onActionButtonClicked() + } + + // + // Helpers + // + + fun getClipboardText(): String? { + return with(clipboard) { + if (!hasPrimaryClip()) return null + return primaryClip!!.getItemAt(0)?.coerceToText(this@MainActivity)?.toString() + } + } + + override fun onPrimaryClipChanged() { + clipboardListener?.invoke(getClipboardText()) + } + + fun setClipboardListener(block: (String?) -> Unit) { + clipboardListener = block + block(getClipboardText()) + } + + fun removeClipboardListener() { + clipboardListener = null + } + + fun hideKeyboard() { + val windowToken = window.decorView.rootView.windowToken + getSystemService()?.hideSoftInputFromWindow(windowToken, 0) + } + + /* DrawerListener implementation */ + + override fun onDrawerStateChanged(newState: Int) { + } + + override fun onDrawerSlide(drawerView: View, slideOffset: Float) { + } + + override fun onDrawerClosed(drawerView: View) { + } + + override fun onDrawerOpened(drawerView: View) { + hideKeyboard() + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/SharedViewModel.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/SharedViewModel.kt new file mode 100644 index 0000000..78cf464 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/SharedViewModel.kt @@ -0,0 +1,34 @@ +package cash.z.ecc.android.sdk.demoapp + +import androidx.lifecycle.ViewModel +import cash.z.ecc.android.bip39.Mnemonics +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +/** + * Shared mutable state for the demo + */ +class SharedViewModel : ViewModel() { + + private val _seedPhrase = MutableStateFlow(DemoConstants.initialSeedWords) + + // publicly, this is read-only + val seedPhrase: StateFlow get() = _seedPhrase + + fun updateSeedPhrase(newPhrase: String?): Boolean { + return if (isValidSeedPhrase(newPhrase)) { + _seedPhrase.value = newPhrase!! + true + } else { + false + } + } + + private fun isValidSeedPhrase(phrase: String?): Boolean { + if (phrase.isNullOrEmpty()) return false + return try { + Mnemonics.MnemonicCode(phrase).validate() + true + } catch (t: Throwable) { false } + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/StrictModeHelper.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/StrictModeHelper.kt new file mode 100644 index 0000000..862de60 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/StrictModeHelper.kt @@ -0,0 +1,60 @@ +package cash.z.ecc.android.sdk.demoapp + +import android.annotation.SuppressLint +import android.os.Build +import android.os.Handler +import android.os.Looper +import android.os.StrictMode + +object StrictModeHelper { + + fun enableStrictMode() { + configureStrictMode() + + // Workaround for Android bug + // https://issuetracker.google.com/issues/36951662 + // Not needed if target O_MR1 and running on O_MR1 + // Don't really need to check target, because of Google Play enforcement on targetSdkVersion for app updates + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O_MR1) { + Handler(Looper.getMainLooper()).postAtFrontOfQueue { configureStrictMode() } + } + } + + @SuppressLint("NewApi") + private fun configureStrictMode() { + StrictMode.enableDefaults() + + StrictMode.setThreadPolicy( + StrictMode.ThreadPolicy.Builder().apply { + detectAll() + penaltyLog() + }.build() + ) + + // Don't enable missing network tags, because those are noisy. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + StrictMode.setVmPolicy( + StrictMode.VmPolicy.Builder().apply { + detectActivityLeaks() + detectCleartextNetwork() + detectContentUriWithoutPermission() + detectFileUriExposure() + detectLeakedClosableObjects() + detectLeakedRegistrationObjects() + detectLeakedSqlLiteObjects() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // Disable because this is mostly flagging Android X and Play Services + // builder.detectNonSdkApiUsage(); + } + }.build() + ) + } else { + StrictMode.setVmPolicy( + StrictMode.VmPolicy.Builder().apply { + detectAll() + penaltyLog() + }.build() + ) + } + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getaddress/GetAddressFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getaddress/GetAddressFragment.kt new file mode 100644 index 0000000..6f45b4b --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getaddress/GetAddressFragment.kt @@ -0,0 +1,86 @@ +package cash.z.ecc.android.sdk.demoapp.demos.getaddress + +import android.os.Bundle +import android.view.LayoutInflater +import androidx.lifecycle.lifecycleScope +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetAddressBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.UnifiedViewingKey +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking + +/** + * Displays the address associated with the seed defined by the default config. To modify the seed + * that is used, update the `DemoConfig.seedWords` value. + */ +class GetAddressFragment : BaseDemoFragment() { + + private lateinit var viewingKey: UnifiedViewingKey + private lateinit var seed: ByteArray + + /** + * Initialize the required values that would normally live outside the demo but are repeated + * here for completeness so that each demo file can serve as a standalone example. + */ + private fun setup() { + // defaults to the value of `DemoConfig.seedWords` but can also be set by the user + val seedPhrase = sharedViewModel.seedPhrase.value + + // Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already + // have the seed stored + seed = Mnemonics.MnemonicCode(seedPhrase).toSeed() + + // the derivation tool can be used for generating keys and addresses + viewingKey = runBlocking { DerivationTool.deriveUnifiedViewingKeys(seed, ZcashNetwork.fromResources(requireApplicationContext())).first() } + } + + private fun displayAddress() { + // a full fledged app would just get the address from the synchronizer + viewLifecycleOwner.lifecycleScope.launchWhenStarted { + val zaddress = DerivationTool.deriveShieldedAddress(seed, ZcashNetwork.fromResources(requireApplicationContext())) + val taddress = DerivationTool.deriveTransparentAddress(seed, ZcashNetwork.fromResources(requireApplicationContext())) + binding.textInfo.text = "z-addr:\n$zaddress\n\n\nt-addr:\n$taddress" + } + } + + // TODO: show an example with the synchronizer + + // + // Android Lifecycle overrides + // + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setup() + } + + override fun onResume() { + super.onResume() + displayAddress() + } + + // + // Base Fragment overrides + // + + override fun onActionButtonClicked() { + viewLifecycleOwner.lifecycleScope.launch { + copyToClipboard( + DerivationTool.deriveShieldedAddress( + viewingKey.extfvk, + ZcashNetwork.fromResources(requireApplicationContext()) + ), + "Shielded address copied to clipboard!" + ) + } + } + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetAddressBinding = + FragmentGetAddressBinding.inflate(layoutInflater) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getbalance/GetBalanceFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getbalance/GetBalanceFragment.kt new file mode 100644 index 0000000..cb41bf8 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getbalance/GetBalanceFragment.kt @@ -0,0 +1,101 @@ +package cash.z.ecc.android.sdk.demoapp.demos.getbalance + +import android.os.Bundle +import android.view.LayoutInflater +import androidx.lifecycle.lifecycleScope +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.Initializer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.block.CompactBlockProcessor +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetBalanceBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.ext.collectWith +import cash.z.ecc.android.sdk.ext.convertZatoshiToZecString +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.WalletBalance +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.runBlocking + +/** + * Displays the available balance && total balance associated with the seed defined by the default config. + * comments. + */ +class GetBalanceFragment : BaseDemoFragment() { + + private lateinit var synchronizer: Synchronizer + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetBalanceBinding = + FragmentGetBalanceBinding.inflate(layoutInflater) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setup() + } + + private fun setup() { + // defaults to the value of `DemoConfig.seedWords` but can also be set by the user + val seedPhrase = sharedViewModel.seedPhrase.value + + // Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already + // have the seed stored + val seed = Mnemonics.MnemonicCode(seedPhrase).toSeed() + + // converting seed into viewingKey + val viewingKey = runBlocking { DerivationTool.deriveUnifiedViewingKeys(seed, ZcashNetwork.fromResources(requireApplicationContext())).first() } + + // using the ViewingKey to initialize + runBlocking { + Initializer.new(requireApplicationContext(), null) { + it.setNetwork(ZcashNetwork.fromResources(requireApplicationContext())) + it.importWallet(viewingKey, network = ZcashNetwork.fromResources(requireApplicationContext())) + } + }.let { initializer -> + synchronizer = Synchronizer.newBlocking(initializer) + } + } + + override fun onResume() { + super.onResume() + // the lifecycleScope is used to dispose of the synchronize when the fragment dies + synchronizer.start(lifecycleScope) + monitorChanges() + } + + private fun monitorChanges() { + synchronizer.status.collectWith(lifecycleScope, ::onStatus) + synchronizer.progress.collectWith(lifecycleScope, ::onProgress) + synchronizer.processorInfo.collectWith(lifecycleScope, ::onProcessorInfoUpdated) + synchronizer.saplingBalances.filterNotNull().collectWith(lifecycleScope, ::onBalance) + } + + private fun onBalance(balance: WalletBalance) { + binding.textBalance.text = """ + Available balance: ${balance.available.convertZatoshiToZecString(12)} + Total balance: ${balance.total.convertZatoshiToZecString(12)} + """.trimIndent() + } + + private fun onStatus(status: Synchronizer.Status) { + binding.textStatus.text = "Status: $status" + val balance = synchronizer.saplingBalances.value + if (null == balance) { + binding.textBalance.text = "Calculating balance..." + } else { + onBalance(balance) + } + } + + private fun onProgress(i: Int) { + if (i < 100) { + binding.textStatus.text = "Downloading blocks...$i%" + } + } + + private fun onProcessorInfoUpdated(info: CompactBlockProcessor.ProcessorInfo) { + if (info.isScanning) binding.textStatus.text = "Scanning blocks...${info.scanProgress}%" + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblock/GetBlockFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblock/GetBlockFragment.kt new file mode 100644 index 0000000..4c494d3 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblock/GetBlockFragment.kt @@ -0,0 +1,76 @@ +package cash.z.ecc.android.sdk.demoapp.demos.getblock + +import android.os.Bundle +import android.text.Html +import android.view.LayoutInflater +import android.view.View +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetBlockBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.mainActivity +import cash.z.ecc.android.sdk.demoapp.util.toHtml +import cash.z.ecc.android.sdk.demoapp.util.toRelativeTime +import cash.z.ecc.android.sdk.demoapp.util.withCommas +import cash.z.ecc.android.sdk.ext.toHex + +/** + * Retrieves a compact block from the lightwalletd service and displays basic information about it. + * This demonstrates the basic ability to connect to the server, request a compact block and parse + * the response. + */ +class GetBlockFragment : BaseDemoFragment() { + + private fun setBlockHeight(blockHeight: Int) { + val blocks = + lightwalletService?.getBlockRange(blockHeight..blockHeight) + val block = blocks?.firstOrNull() + binding.textInfo.visibility = View.VISIBLE + binding.textInfo.text = Html.fromHtml( + """ + block height: ${block?.height.withCommas()} +
block time: ${block?.time.toRelativeTime(requireApplicationContext())} +
number of shielded TXs: ${block?.vtxCount} +
hash: ${block?.hash?.toByteArray()?.toHex()} +
prevHash: ${block?.prevHash?.toByteArray()?.toHex()} + ${block?.vtxList.toHtml()} + """.trimIndent() + ) + } + + private fun onApply(_unused: View? = null) { + try { + setBlockHeight(binding.textBlockHeight.text.toString().toInt()) + } catch (t: Throwable) { + toast("Error: $t") + } + mainActivity()?.hideKeyboard() + } + + private fun loadNext(offset: Int) { + val nextBlockHeight = (binding.textBlockHeight.text.toString().toIntOrNull() ?: -1) + offset + binding.textBlockHeight.setText(nextBlockHeight.toString()) + onApply() + } + + // + // Android Lifecycle overrides + // + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.buttonApply.setOnClickListener(::onApply) + binding.buttonPrevious.setOnClickListener { + loadNext(-1) + } + binding.buttonNext.setOnClickListener { + loadNext(1) + } + } + + // + // Base Fragment overrides + // + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetBlockBinding = + FragmentGetBlockBinding.inflate(layoutInflater) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblockrange/GetBlockRangeFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblockrange/GetBlockRangeFragment.kt new file mode 100644 index 0000000..c96ae82 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getblockrange/GetBlockRangeFragment.kt @@ -0,0 +1,118 @@ +package cash.z.ecc.android.sdk.demoapp.demos.getblockrange + +import android.os.Bundle +import android.text.Html +import android.view.LayoutInflater +import android.view.View +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.R +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetBlockRangeBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.mainActivity +import cash.z.ecc.android.sdk.demoapp.util.toRelativeTime +import cash.z.ecc.android.sdk.demoapp.util.withCommas + +/** + * Retrieves a range of compact block from the lightwalletd service and displays basic information + * about them. This demonstrates the basic ability to connect to the server, request a range of + * compact block and parse the response. This could be augmented to display metadata about certain + * block ranges for instance, to find the block with the most shielded transactions in a range. + */ +class GetBlockRangeFragment : BaseDemoFragment() { + + private fun setBlockRange(blockRange: IntRange) { + val start = System.currentTimeMillis() + val blocks = + lightwalletService?.getBlockRange(blockRange) + val fetchDelta = System.currentTimeMillis() - start + + // Note: This is a demo so we won't worry about iterating efficiently over these blocks + + binding.textInfo.text = Html.fromHtml( + blocks?.run { + val count = size + val emptyCount = count { it.vtxCount == 0 } + val maxTxs = maxByOrNull { it.vtxCount } + val maxIns = maxByOrNull { block -> + block.vtxList.maxOfOrNull { it.spendsCount } ?: -1 + } + val maxInTx = maxIns?.vtxList?.maxByOrNull { it.spendsCount } + val maxOuts = maxByOrNull { block -> + block.vtxList.maxOfOrNull { it.outputsCount } ?: -1 + } + val maxOutTx = maxOuts?.vtxList?.maxByOrNull { it.outputsCount } + val txCount = sumBy { it.vtxCount } + val outCount = sumBy { block -> block.vtxList.sumBy { it.outputsCount } } + val inCount = sumBy { block -> block.vtxList.sumBy { it.spendsCount } } + + val processTime = System.currentTimeMillis() - start - fetchDelta + @Suppress("MaxLineLength") + """ + total blocks: ${count.withCommas()} +
fetch time: ${if (fetchDelta > 1000) "%.2f sec".format(fetchDelta / 1000.0) else "%d ms".format(fetchDelta)} +
process time: ${if (processTime > 1000) "%.2f sec".format(processTime / 1000.0) else "%d ms".format(processTime)} +
block time range: ${first().time.toRelativeTime(requireApplicationContext())}
   to ${last().time.toRelativeTime(requireApplicationContext())} +
total empty blocks: ${emptyCount.withCommas()} +
total TXs: ${txCount.withCommas()} +
total outputs: ${outCount.withCommas()} +
total inputs: ${inCount.withCommas()} +
avg TXs/block: ${"%.1f".format(txCount / count.toDouble())} +
avg TXs (excluding empty blocks): ${"%.1f".format(txCount.toDouble() / (count - emptyCount))} +
avg OUTs [per block / per TX]: ${"%.1f / %.1f".format(outCount.toDouble() / (count - emptyCount), outCount.toDouble() / txCount)} +
avg INs [per block / per TX]: ${"%.1f / %.1f".format(inCount.toDouble() / (count - emptyCount), inCount.toDouble() / txCount)} +
most shielded TXs: ${if (maxTxs == null) "none" else "${maxTxs.vtxCount} in block ${maxTxs.height.withCommas()}"} +
most shielded INs: ${if (maxInTx == null) "none" else "${maxInTx.spendsCount} in block ${maxIns?.height.withCommas()} at tx index ${maxInTx.index}"} +
most shielded OUTs: ${if (maxOutTx == null) "none" else "${maxOutTx?.outputsCount} in block ${maxOuts?.height.withCommas()} at tx index ${maxOutTx?.index}"} + """.trimIndent() + } ?: "No blocks found in that range." + ) + } + + private fun onApply(_unused: View) { + val start = binding.textStartHeight.text.toString().toInt() + val end = binding.textEndHeight.text.toString().toInt() + if (start <= end) { + try { + with(binding.buttonApply) { + isEnabled = false + setText(R.string.loading) + binding.textInfo.setText(R.string.loading) + post { + setBlockRange(start..end) + isEnabled = true + setText(R.string.apply) + } + } + } catch (t: Throwable) { + setError(t.toString()) + } + } else { + setError("Invalid range") + } + mainActivity()?.hideKeyboard() + } + + private fun setError(message: String) { + binding.textInfo.text = "Error: $message" + } + + // + // Android Lifecycle overrides + // + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.buttonApply.setOnClickListener(::onApply) + } + + // + // Base Fragment overrides + // + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetBlockRangeBinding = + FragmentGetBlockRangeBinding.inflate(layoutInflater) + + override fun onActionButtonClicked() { + super.onActionButtonClicked() + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getlatestheight/GetLatestHeightFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getlatestheight/GetLatestHeightFragment.kt new file mode 100644 index 0000000..877939f --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getlatestheight/GetLatestHeightFragment.kt @@ -0,0 +1,36 @@ +package cash.z.ecc.android.sdk.demoapp.demos.getlatestheight + +import android.view.LayoutInflater +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetLatestHeightBinding + +/** + * Retrieves the latest block height from the lightwalletd server. This is the simplest test for + * connectivity with the server. Modify the `host` and the `port` inside of + * `App.instance.defaultConfig` to check the SDK's ability to communicate with a given lightwalletd + * instance. + */ +class GetLatestHeightFragment : BaseDemoFragment() { + + private fun displayLatestHeight() { + // note: this is a blocking call, a real app wouldn't do this on the main thread + // instead, a production app would leverage the synchronizer like in the other demos + binding.textInfo.text = lightwalletService?.getLatestBlockHeight().toString() + } + + // + // Android Lifecycle overrides + // + + override fun onResume() { + super.onResume() + displayLatestHeight() + } + + // + // Base Fragment overrides + // + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetLatestHeightBinding = + FragmentGetLatestHeightBinding.inflate(layoutInflater) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getprivatekey/GetPrivateKeyFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getprivatekey/GetPrivateKeyFragment.kt new file mode 100644 index 0000000..ac863fe --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/getprivatekey/GetPrivateKeyFragment.kt @@ -0,0 +1,92 @@ +package cash.z.ecc.android.sdk.demoapp.demos.getprivatekey + +import android.os.Bundle +import android.view.LayoutInflater +import androidx.lifecycle.lifecycleScope +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetPrivateKeyBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.launch + +/** + * Displays the viewing key and spending key associated with the seed used during the demo. The + * seedPhrase defaults to the value of`DemoConfig.seedWords` but can be set by the user on the + * HomeFragment. + */ +class GetPrivateKeyFragment : BaseDemoFragment() { + + private lateinit var seedPhrase: String + private lateinit var seed: ByteArray + + /** + * Initialize the required values that would normally live outside the demo but are repeated + * here for completeness so that each demo file can serve as a standalone example. + */ + private fun setup() { + // defaults to the value of `DemoConfig.seedWords` but can also be set by the user + seedPhrase = sharedViewModel.seedPhrase.value + + // Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already + // have the seed stored + seed = Mnemonics.MnemonicCode(seedPhrase).toSeed() + } + + private fun displayKeys() { + // derive the keys from the seed: + // demonstrate deriving spending keys for five accounts but only take the first one + lifecycleScope.launchWhenStarted { + val spendingKey = DerivationTool.deriveSpendingKeys( + seed, + ZcashNetwork.fromResources(requireApplicationContext()), + 5 + ).first() + + // derive the key that allows you to view but not spend transactions + val viewingKey = DerivationTool.deriveViewingKey( + spendingKey, + ZcashNetwork.fromResources(requireApplicationContext()) + ) + + // display the keys in the UI + binding.textInfo.setText("Spending Key:\n$spendingKey\n\nViewing Key:\n$viewingKey") + } + } + + // + // Android Lifecycle overrides + // + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + setup() + } + + override fun onResume() { + super.onResume() + displayKeys() + } + + // + // Base Fragment overrides + // + + override fun onActionButtonClicked() { + lifecycleScope.launch { + copyToClipboard( + DerivationTool.deriveUnifiedViewingKeys( + seed, + ZcashNetwork.fromResources(requireApplicationContext()) + ).first().extpub, + "ViewingKey copied to clipboard!" + ) + } + } + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetPrivateKeyBinding = + FragmentGetPrivateKeyBinding.inflate(layoutInflater) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeFragment.kt new file mode 100644 index 0000000..4e9328a --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeFragment.kt @@ -0,0 +1,117 @@ +package cash.z.ecc.android.sdk.demoapp.demos.home + +import android.content.res.ColorStateList +import android.graphics.Color +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentHomeBinding +import cash.z.ecc.android.sdk.demoapp.util.mainActivity +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch + +/** + * The landing page for the demo. Every time the app returns to this screen, it clears all demo + * data just for sanity. The goal is for each demo to be self-contained so that the behavior is + * repeatable and independent of pre-existing state. + */ +class HomeFragment : BaseDemoFragment() { + + private val homeViewModel: HomeViewModel by viewModels() + + override fun inflateBinding(layoutInflater: LayoutInflater) = + FragmentHomeBinding.inflate(layoutInflater) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.textSeedPhrase.setOnClickListener(::onEditSeedPhrase) + binding.buttonPaste.setOnClickListener(::onPasteSeedPhrase) + binding.buttonAccept.setOnClickListener(::onAcceptSeedPhrase) + binding.buttonCancel.setOnClickListener(::onCancelSeedPhrase) + } + + override fun onResume() { + super.onResume() + mainActivity()?.setClipboardListener(::updatePasteButton) + + lifecycleScope.launch { + sharedViewModel.seedPhrase.collect { + binding.textSeedPhrase.text = "Seed Phrase: ${it.toAbbreviatedPhrase()}" + } + } + } + + override fun onPause() { + super.onPause() + mainActivity()?.removeClipboardListener() + } + + private fun onEditSeedPhrase(unused: View) { + setEditShown(true) + binding.inputSeedPhrase.setText(sharedViewModel.seedPhrase.value) + binding.textLayoutSeedPhrase.helperText = "" + } + + private fun onAcceptSeedPhrase(unused: View) { + if (applySeedPhrase()) { + setEditShown(false) + binding.inputSeedPhrase.setText("") + } + } + + private fun onCancelSeedPhrase(unused: View) { + setEditShown(false) + } + + private fun onPasteSeedPhrase(unused: View) { + mainActivity()?.getClipboardText().let { clipboardText -> + binding.inputSeedPhrase.setText(clipboardText) + applySeedPhrase() + } + } + + private fun applySeedPhrase(): Boolean { + val newPhrase = binding.inputSeedPhrase.text.toString() + return if (!sharedViewModel.updateSeedPhrase(newPhrase)) { + binding.textLayoutSeedPhrase.helperText = "Invalid seed phrase" + binding.textLayoutSeedPhrase.setHelperTextColor(ColorStateList.valueOf(Color.RED)) + false + } else { + binding.textLayoutSeedPhrase.helperText = "valid seed phrase" + binding.textLayoutSeedPhrase.setHelperTextColor(ColorStateList.valueOf(Color.GREEN)) + true + } + } + + private fun setEditShown(isShown: Boolean) { + with(binding) { + textSeedPhrase.visibility = if (isShown) View.GONE else View.VISIBLE + textInstructions.visibility = if (isShown) View.GONE else View.VISIBLE + groupEdit.visibility = if (isShown) View.VISIBLE else View.GONE + } + } + + private fun updatePasteButton(clipboardText: String? = mainActivity()?.getClipboardText()) { + clipboardText.let { + val isEditing = binding.groupEdit.visibility == View.VISIBLE + if (isEditing && (it != null && it.split(' ').size > 2)) { + binding.buttonPaste.visibility = View.VISIBLE + } else { + binding.buttonPaste.visibility = View.GONE + } + } + } + + private fun String.toAbbreviatedPhrase(): String { + this.trim().apply { + val firstSpace = indexOf(' ') + val lastSpace = lastIndexOf(' ') + return if (firstSpace != -1 && lastSpace >= firstSpace) { + "${take(firstSpace)}...${takeLast(length - 1 - lastSpace)}" + } else this + } + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeViewModel.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeViewModel.kt new file mode 100644 index 0000000..217c329 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/home/HomeViewModel.kt @@ -0,0 +1,5 @@ +package cash.z.ecc.android.sdk.demoapp.demos.home + +import androidx.lifecycle.ViewModel + +class HomeViewModel : ViewModel() diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/ListTransactionsFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/ListTransactionsFragment.kt new file mode 100644 index 0000000..33296f4 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/ListTransactionsFragment.kt @@ -0,0 +1,154 @@ +package cash.z.ecc.android.sdk.demoapp.demos.listtransactions + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.Initializer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.block.CompactBlockProcessor +import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentListTransactionsBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.ext.collectWith +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.runBlocking + +/** + * List all transactions related to the given seed, since the given birthday. This begins by + * downloading any missing blocks and then validating and scanning their contents. Once scan is + * complete, the transactions are available in the database and can be accessed by any SQL tool. + * By default, the SDK uses a PagedTransactionRepository to provide transaction contents from the + * database in a paged format that works natively with RecyclerViews. + */ +class ListTransactionsFragment : BaseDemoFragment() { + private lateinit var initializer: Initializer + private lateinit var synchronizer: Synchronizer + private lateinit var adapter: TransactionAdapter + private lateinit var address: String + private var status: Synchronizer.Status? = null + private val isSynced get() = status == Synchronizer.Status.SYNCED + + /** + * Initialize the required values that would normally live outside the demo but are repeated + * here for completeness so that each demo file can serve as a standalone example. + */ + private fun setup() { + // defaults to the value of `DemoConfig.seedWords` but can also be set by the user + var seedPhrase = sharedViewModel.seedPhrase.value + + // Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already + // have the seed stored + val seed = Mnemonics.MnemonicCode(seedPhrase).toSeed() + + initializer = runBlocking { + Initializer.new(requireApplicationContext()) { + runBlocking { it.importWallet(seed, network = ZcashNetwork.fromResources(requireApplicationContext())) } + it.setNetwork(ZcashNetwork.fromResources(requireApplicationContext())) + } + } + address = runBlocking { + DerivationTool.deriveShieldedAddress( + seed, + ZcashNetwork.fromResources(requireApplicationContext()) + ) + } + synchronizer = Synchronizer.newBlocking(initializer) + } + + private fun initTransactionUI() { + binding.recyclerTransactions.layoutManager = + LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) + adapter = TransactionAdapter() + binding.recyclerTransactions.adapter = adapter + } + + private fun monitorChanges() { + // the lifecycleScope is used to stop everything when the fragment dies + synchronizer.status.collectWith(lifecycleScope, ::onStatus) + synchronizer.processorInfo.collectWith(lifecycleScope, ::onProcessorInfoUpdated) + synchronizer.progress.collectWith(lifecycleScope, ::onProgress) + synchronizer.clearedTransactions.collectWith(lifecycleScope, ::onTransactionsUpdated) + } + + // + // Change listeners + // + + private fun onProcessorInfoUpdated(info: CompactBlockProcessor.ProcessorInfo) { + if (info.isScanning) binding.textInfo.text = "Scanning blocks...${info.scanProgress}%" + } + + private fun onProgress(i: Int) { + if (i < 100) binding.textInfo.text = "Downloading blocks...$i%" + } + + private fun onStatus(status: Synchronizer.Status) { + this.status = status + binding.textStatus.text = "Status: $status" + if (isSynced) onSyncComplete() + } + + private fun onSyncComplete() { + binding.textInfo.visibility = View.INVISIBLE + } + + private fun onTransactionsUpdated(transactions: List) { + twig("got a new paged list of transactions") + adapter.submitList(transactions) + + // show message when there are no transactions + if (isSynced) { + binding.textInfo.apply { + if (transactions.isEmpty()) { + visibility = View.VISIBLE + text = + "No transactions found. Try to either change the seed words " + + "or send funds to this address (tap the FAB to copy it):\n\n $address" + } else { + visibility = View.INVISIBLE + text = "" + } + } + } + } + + // + // Android Lifecycle overrides + // + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + setup() + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initTransactionUI() + } + + override fun onResume() { + super.onResume() + // the lifecycleScope is used to dispose of the synchronizer when the fragment dies + synchronizer.start(lifecycleScope) + monitorChanges() + } + + // + // Base Fragment overrides + // + + override fun onActionButtonClicked() { + if (::address.isInitialized) copyToClipboard(address) + } + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentListTransactionsBinding = + FragmentListTransactionsBinding.inflate(layoutInflater) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionAdapter.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionAdapter.kt new file mode 100644 index 0000000..88cd721 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionAdapter.kt @@ -0,0 +1,39 @@ +package cash.z.ecc.android.sdk.demoapp.demos.listtransactions + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction +import cash.z.ecc.android.sdk.demoapp.R + +/** + * Simple adapter implementation that knows how to bind a recyclerview to ClearedTransactions. + */ +class TransactionAdapter : + ListAdapter>( + object : DiffUtil.ItemCallback() { + override fun areItemsTheSame( + oldItem: T, + newItem: T + ) = oldItem.minedHeight == newItem.minedHeight + + override fun areContentsTheSame( + oldItem: T, + newItem: T + ) = oldItem == newItem + } + ) { + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ) = TransactionViewHolder( + LayoutInflater.from(parent.context).inflate(R.layout.item_transaction, parent, false) + ) + + override fun onBindViewHolder( + holder: TransactionViewHolder, + position: Int + ) = holder.bindTo(getItem(position)) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionViewHolder.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionViewHolder.kt new file mode 100644 index 0000000..74b9fd0 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listtransactions/TransactionViewHolder.kt @@ -0,0 +1,41 @@ +package cash.z.ecc.android.sdk.demoapp.demos.listtransactions + +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView +import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction +import cash.z.ecc.android.sdk.db.entity.valueInZatoshi +import cash.z.ecc.android.sdk.demoapp.R +import cash.z.ecc.android.sdk.ext.convertZatoshiToZecString +import java.text.SimpleDateFormat +import java.util.Locale + +/** + * Simple view holder for displaying confirmed transactions in the recyclerview. + */ +class TransactionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val amountText = itemView.findViewById(R.id.text_transaction_amount) + private val infoText = itemView.findViewById(R.id.text_transaction_info) + private val timeText = itemView.findViewById(R.id.text_transaction_timestamp) + private val icon = itemView.findViewById(R.id.image_transaction_type) + private val formatter = SimpleDateFormat("M/d h:mma", Locale.getDefault()) + + fun bindTo(transaction: T?) { + val isInbound = transaction?.toAddress.isNullOrEmpty() + amountText.text = transaction?.valueInZatoshi.convertZatoshiToZecString() + timeText.text = + if (transaction == null || transaction?.blockTimeInSeconds == 0L) "Pending" + else formatter.format(transaction.blockTimeInSeconds * 1000L) + infoText.text = getMemoString(transaction) + + icon.rotation = if (isInbound) 0f else 180f + icon.rotation = if (isInbound) 0f else 180f + icon.setColorFilter(ContextCompat.getColor(itemView.context, if (isInbound) R.color.tx_inbound else R.color.tx_outbound)) + } + + private fun getMemoString(transaction: T?): String { + return transaction?.memo?.takeUnless { it[0] < 0 }?.let { String(it) } ?: "no memo" + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/ListUtxosFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/ListUtxosFragment.kt new file mode 100644 index 0000000..7ba37a9 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/ListUtxosFragment.kt @@ -0,0 +1,249 @@ +package cash.z.ecc.android.sdk.demoapp.demos.listutxos + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.Initializer +import cash.z.ecc.android.sdk.SdkSynchronizer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.block.CompactBlockProcessor +import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.DemoConstants +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentListUtxosBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.demoapp.util.mainActivity +import cash.z.ecc.android.sdk.ext.collectWith +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext + +/** + * =============================================================================================== + * NOTE: this is still a WIP because t-addrs are not officially supported by the SDK yet + * =============================================================================================== + * + * + * List all transactions related to the given seed, since the given birthday. This begins by + * downloading any missing blocks and then validating and scanning their contents. Once scan is + * complete, the transactions are available in the database and can be accessed by any SQL tool. + * By default, the SDK uses a PagedTransactionRepository to provide transaction contents from the + * database in a paged format that works natively with RecyclerViews. + */ +class ListUtxosFragment : BaseDemoFragment() { + private lateinit var seed: ByteArray + private lateinit var initializer: Initializer + private lateinit var synchronizer: Synchronizer + private lateinit var adapter: UtxoAdapter + private val address: String = "t1RwbKka1CnktvAJ1cSqdn7c6PXWG4tZqgd" + private var status: Synchronizer.Status? = null + + private val isSynced get() = status == Synchronizer.Status.SYNCED + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentListUtxosBinding = + FragmentListUtxosBinding.inflate(layoutInflater) + + /** + * Initialize the required values that would normally live outside the demo but are repeated + * here for completeness so that each demo file can serve as a standalone example. + */ + private fun setup() { + // Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already + // have the seed stored + seed = Mnemonics.MnemonicCode(sharedViewModel.seedPhrase.value).toSeed() + initializer = runBlocking { + Initializer.new(requireApplicationContext()) { + runBlocking { it.importWallet(seed, network = ZcashNetwork.fromResources(requireApplicationContext())) } + it.alias = "Demo_Utxos" + } + } + synchronizer = runBlocking { Synchronizer.new(initializer) } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setup() + } + + fun initUi() { + binding.inputAddress.setText(address) + binding.inputRangeStart.setText(ZcashNetwork.fromResources(requireApplicationContext()).saplingActivationHeight.toString()) + binding.inputRangeEnd.setText(DemoConstants.utxoEndHeight.toString()) + + binding.buttonLoad.setOnClickListener { + mainActivity()?.hideKeyboard() + downloadTransactions() + } + + initTransactionUi() + } + + fun downloadTransactions() { + binding.textStatus.text = "loading..." + binding.textStatus.post { + binding.textStatus.requestFocus() + val addressToUse = binding.inputAddress.text.toString() + val startToUse = binding.inputRangeStart.text.toString().toIntOrNull() ?: ZcashNetwork.fromResources(requireApplicationContext()).saplingActivationHeight + val endToUse = binding.inputRangeEnd.text.toString().toIntOrNull() ?: DemoConstants.utxoEndHeight + var allStart = now + twig("loading transactions in range $startToUse..$endToUse") + val txids = lightwalletService?.getTAddressTransactions(addressToUse, startToUse..endToUse) + var delta = now - allStart + updateStatus("found ${txids?.size} transactions in ${delta}ms.", false) + + txids?.map { + it.data.apply { + try { + runBlocking { initializer.rustBackend.decryptAndStoreTransaction(toByteArray()) } + } catch (t: Throwable) { + twig("failed to decrypt and store transaction due to: $t") + } + } + }?.let { txData -> + // Disabled during migration to newer SDK version; this appears to have been + // leveraging non-public APIs in the SDK so perhaps should be removed +// val parseStart = now +// val tList = LocalRpcTypes.TransactionDataList.newBuilder().addAllData(txData).build() +// val parsedTransactions = initializer.rustBackend.parseTransactionDataList(tList) +// delta = now - parseStart +// updateStatus("parsed txs in ${delta}ms.") + } + (synchronizer as SdkSynchronizer).refreshTransactions() +// val finalCount = (synchronizer as SdkSynchronizer).getTransactionCount() +// "found ${finalCount - initialCount} shielded outputs. + delta = now - allStart + updateStatus("Total time ${delta}ms.") + + lifecycleScope.launch { + withContext(Dispatchers.IO) { + finalCount = (synchronizer as SdkSynchronizer).getTransactionCount() + withContext(Dispatchers.Main) { + delay(100) + updateStatus("Also found ${finalCount - initialCount} shielded txs") + } + } + } + } + } + + private val now get() = System.currentTimeMillis() + + private fun updateStatus(message: String, append: Boolean = true) { + if (append) { + binding.textStatus.text = "${binding.textStatus.text} $message" + } else { + binding.textStatus.text = message + } + twig(message) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initUi() + } + + override fun onResume() { + super.onResume() + resetInBackground() + val seed = Mnemonics.MnemonicCode(sharedViewModel.seedPhrase.value).toSeed() + viewLifecycleOwner.lifecycleScope.launchWhenStarted { + binding.inputAddress.setText(DerivationTool.deriveTransparentAddress(seed, ZcashNetwork.fromResources(requireApplicationContext()))) + } + } + + var initialCount: Int = 0 + var finalCount: Int = 0 + fun resetInBackground() { + try { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + synchronizer.prepare() + initialCount = (synchronizer as SdkSynchronizer).getTransactionCount() + } + } + synchronizer.clearedTransactions.collectWith(lifecycleScope, ::onTransactionsUpdated) +// synchronizer.receivedTransactions.collectWith(lifecycleScope, ::onTransactionsUpdated) + } catch (t: Throwable) { + twig("failed to start the synchronizer!!! due to : $t") + } + } + + fun onResetComplete() { + initTransactionUi() + startSynchronizer() + monitorStatus() + } + + fun onClear() { + synchronizer.stop() + } + + private fun initTransactionUi() { + binding.recyclerTransactions.layoutManager = + LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) + adapter = UtxoAdapter() + binding.recyclerTransactions.adapter = adapter +// lifecycleScope.launch { +// // address = synchronizer.getAddress() +// synchronizer.receivedTransactions.onEach { +// onTransactionsUpdated(it) +// }.launchIn(this) +// } + } + + private fun startSynchronizer() { + lifecycleScope.apply { + synchronizer.start(this) + } + } + + private fun monitorStatus() { + synchronizer.status.collectWith(lifecycleScope, ::onStatus) + synchronizer.processorInfo.collectWith(lifecycleScope, ::onProcessorInfoUpdated) + synchronizer.progress.collectWith(lifecycleScope, ::onProgress) + } + + private fun onProcessorInfoUpdated(info: CompactBlockProcessor.ProcessorInfo) { + if (info.isScanning) binding.textStatus.text = "Scanning blocks...${info.scanProgress}%" + } + + private fun onProgress(i: Int) { + if (i < 100) binding.textStatus.text = "Downloading blocks...$i%" + } + + private fun onStatus(status: Synchronizer.Status) { + this.status = status + binding.textStatus.text = "Status: $status" + if (isSynced) onSyncComplete() + } + + private fun onSyncComplete() { + binding.textStatus.visibility = View.INVISIBLE + } + + private fun onTransactionsUpdated(transactions: List) { + twig("got a new paged list of transactions of size ${transactions.size}") + adapter.submitList(transactions) + } + + override fun onActionButtonClicked() { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + twig("current count: ${(synchronizer as SdkSynchronizer).getTransactionCount()}") + twig("refreshing transactions") + (synchronizer as SdkSynchronizer).refreshTransactions() + twig("current count: ${(synchronizer as SdkSynchronizer).getTransactionCount()}") + } + } + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoAdapter.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoAdapter.kt new file mode 100644 index 0000000..1009708 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoAdapter.kt @@ -0,0 +1,39 @@ +package cash.z.ecc.android.sdk.demoapp.demos.listutxos + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction +import cash.z.ecc.android.sdk.demoapp.R + +/** + * Simple adapter implementation that knows how to bind a recyclerview to ClearedTransactions. + */ +class UtxoAdapter : + ListAdapter>( + object : DiffUtil.ItemCallback() { + override fun areItemsTheSame( + oldItem: T, + newItem: T + ) = oldItem.minedHeight == newItem.minedHeight + + override fun areContentsTheSame( + oldItem: T, + newItem: T + ) = oldItem == newItem + } + ) { + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ) = UtxoViewHolder( + LayoutInflater.from(parent.context).inflate(R.layout.item_transaction, parent, false) + ) + + override fun onBindViewHolder( + holder: UtxoViewHolder, + position: Int + ) = holder.bindTo(getItem(position)) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoViewHolder.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoViewHolder.kt new file mode 100644 index 0000000..78006d9 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/listutxos/UtxoViewHolder.kt @@ -0,0 +1,33 @@ +package cash.z.ecc.android.sdk.demoapp.demos.listutxos + +import android.view.View +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction +import cash.z.ecc.android.sdk.db.entity.valueInZatoshi +import cash.z.ecc.android.sdk.demoapp.R +import cash.z.ecc.android.sdk.ext.convertZatoshiToZecString +import java.text.SimpleDateFormat +import java.util.Locale + +/** + * Simple view holder for displaying confirmed transactions in the recyclerview. + */ +class UtxoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val amountText = itemView.findViewById(R.id.text_transaction_amount) + private val infoText = itemView.findViewById(R.id.text_transaction_info) + private val timeText = itemView.findViewById(R.id.text_transaction_timestamp) + private val formatter = SimpleDateFormat("M/d h:mma", Locale.getDefault()) + + fun bindTo(transaction: T?) { + amountText.text = transaction?.valueInZatoshi.convertZatoshiToZecString() + timeText.text = + if (transaction == null || transaction?.blockTimeInSeconds == 0L) "Pending" + else formatter.format(transaction.blockTimeInSeconds * 1000L) + infoText.text = getMemoString(transaction) + } + + private fun getMemoString(transaction: T?): String { + return transaction?.memo?.takeUnless { it[0] < 0 }?.let { String(it) } ?: "no memo" + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/send/SendFragment.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/send/SendFragment.kt new file mode 100644 index 0000000..4a005c4 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/demos/send/SendFragment.kt @@ -0,0 +1,239 @@ +package cash.z.ecc.android.sdk.demoapp.demos.send + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView +import androidx.lifecycle.lifecycleScope +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.toSeed +import cash.z.ecc.android.sdk.Initializer +import cash.z.ecc.android.sdk.Synchronizer +import cash.z.ecc.android.sdk.block.CompactBlockProcessor +import cash.z.ecc.android.sdk.db.entity.PendingTransaction +import cash.z.ecc.android.sdk.db.entity.isCreated +import cash.z.ecc.android.sdk.db.entity.isCreating +import cash.z.ecc.android.sdk.db.entity.isFailedEncoding +import cash.z.ecc.android.sdk.db.entity.isFailedSubmit +import cash.z.ecc.android.sdk.db.entity.isMined +import cash.z.ecc.android.sdk.db.entity.isSubmitSuccess +import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment +import cash.z.ecc.android.sdk.demoapp.DemoConstants +import cash.z.ecc.android.sdk.demoapp.databinding.FragmentSendBinding +import cash.z.ecc.android.sdk.demoapp.ext.requireApplicationContext +import cash.z.ecc.android.sdk.demoapp.util.fromResources +import cash.z.ecc.android.sdk.demoapp.util.mainActivity +import cash.z.ecc.android.sdk.ext.collectWith +import cash.z.ecc.android.sdk.ext.convertZatoshiToZecString +import cash.z.ecc.android.sdk.ext.convertZecToZatoshi +import cash.z.ecc.android.sdk.ext.toZecString +import cash.z.ecc.android.sdk.internal.Twig +import cash.z.ecc.android.sdk.internal.twig +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.WalletBalance +import cash.z.ecc.android.sdk.type.ZcashNetwork +import kotlinx.coroutines.runBlocking + +/** + * Demonstrates sending funds to an address. This is the most complex example that puts all of the + * pieces of the SDK together, including monitoring transactions for completion. It begins by + * downloading, validating and scanning any missing blocks. Once that is complete, the wallet is + * in a SYNCED state and available to send funds. Calling `sendToAddress` produces a flow of + * PendingTransaction objects which represent the active state of the transaction that was sent. + * Any time the state of that transaction changes, a new instance will be emitted. + */ +class SendFragment : BaseDemoFragment() { + private lateinit var synchronizer: Synchronizer + + private lateinit var amountInput: TextView + private lateinit var addressInput: TextView + + // in a normal app, this would be stored securely with the trusted execution environment (TEE) + // but since this is a demo, we'll derive it on the fly + private lateinit var spendingKey: String + + /** + * Initialize the required values that would normally live outside the demo but are repeated + * here for completeness so that each demo file can serve as a standalone example. + */ + private fun setup() { + // defaults to the value of `DemoConfig.seedWords` but can also be set by the user + var seedPhrase = sharedViewModel.seedPhrase.value + + // Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already + // have the seed stored + val seed = Mnemonics.MnemonicCode(seedPhrase).toSeed() + + runBlocking { + Initializer.new(requireApplicationContext()) { + runBlocking { it.importWallet(seed, network = ZcashNetwork.fromResources(requireApplicationContext())) } + it.setNetwork(ZcashNetwork.fromResources(requireApplicationContext())) + } + }.let { initializer -> + synchronizer = Synchronizer.newBlocking(initializer) + } + spendingKey = runBlocking { DerivationTool.deriveSpendingKeys(seed, ZcashNetwork.fromResources(requireApplicationContext())).first() } + } + + // + // Observable properties (done without livedata or flows for simplicity) + // + + private var balance: WalletBalance? = null + set(value) { + field = value + onUpdateSendButton() + } + private var isSending = false + set(value) { + field = value + if (value) Twig.sprout("Sending") else Twig.clip("Sending") + onUpdateSendButton() + } + private var isSyncing = true + set(value) { + field = value + onUpdateSendButton() + } + + // + // Private functions + // + + private fun initSendUi() { + amountInput = binding.inputAmount.apply { + setText(DemoConstants.sendAmount.toZecString()) + } + addressInput = binding.inputAddress.apply { + setText(DemoConstants.toAddress) + } + binding.buttonSend.setOnClickListener(::onSend) + } + + private fun monitorChanges() { + synchronizer.status.collectWith(lifecycleScope, ::onStatus) + synchronizer.progress.collectWith(lifecycleScope, ::onProgress) + synchronizer.processorInfo.collectWith(lifecycleScope, ::onProcessorInfoUpdated) + synchronizer.saplingBalances.collectWith(lifecycleScope, ::onBalance) + } + + // + // Change listeners + // + + private fun onStatus(status: Synchronizer.Status) { + binding.textStatus.text = "Status: $status" + isSyncing = status != Synchronizer.Status.SYNCED + if (status == Synchronizer.Status.SCANNING) { + binding.textBalance.text = "Calculating balance..." + } else { + if (!isSyncing) onBalance(balance) + } + } + + private fun onProgress(i: Int) { + if (i < 100) { + binding.textStatus.text = "Downloading blocks...$i%" + binding.textBalance.visibility = View.INVISIBLE + } else { + binding.textBalance.visibility = View.VISIBLE + } + } + + private fun onProcessorInfoUpdated(info: CompactBlockProcessor.ProcessorInfo) { + if (info.isScanning) binding.textStatus.text = "Scanning blocks...${info.scanProgress}%" + } + + private fun onBalance(balance: WalletBalance?) { + this.balance = balance + if (!isSyncing) { + binding.textBalance.text = """ + Available balance: ${balance?.available.convertZatoshiToZecString(12)} + Total balance: ${balance?.total.convertZatoshiToZecString(12)} + """.trimIndent() + } + } + + private fun onSend(unused: View) { + isSending = true + val amount = amountInput.text.toString().toDouble().convertZecToZatoshi() + val toAddress = addressInput.text.toString().trim() + synchronizer.sendToAddress( + spendingKey, + amount, + toAddress, + "Funds from Demo App" + ).collectWith(lifecycleScope, ::onPendingTxUpdated) + mainActivity()?.hideKeyboard() + } + + private fun onPendingTxUpdated(pendingTransaction: PendingTransaction?) { + val id = pendingTransaction?.id ?: -1 + val message = when { + pendingTransaction == null -> "Transaction not found" + pendingTransaction.isMined() -> "Transaction Mined (id: $id)!\n\nSEND COMPLETE".also { isSending = false } + pendingTransaction.isSubmitSuccess() -> "Successfully submitted transaction!\nAwaiting confirmation..." + pendingTransaction.isFailedEncoding() -> "ERROR: failed to encode transaction! (id: $id)".also { isSending = false } + pendingTransaction.isFailedSubmit() -> "ERROR: failed to submit transaction! (id: $id)".also { isSending = false } + pendingTransaction.isCreated() -> "Transaction creation complete! (id: $id)" + pendingTransaction.isCreating() -> "Creating transaction!".also { onResetInfo() } + else -> "Transaction updated!".also { twig("Unhandled TX state: $pendingTransaction") } + } + twig("Pending TX Updated: $message") + binding.textInfo.apply { + text = "$text\n$message" + } + } + + private fun onUpdateSendButton() { + with(binding.buttonSend) { + when { + isSending -> { + text = "➡ sending" + isEnabled = false + } + isSyncing -> { + text = "⌛ syncing" + isEnabled = false + } + (balance?.available?.value ?: 0) <= 0 -> isEnabled = false + else -> { + text = "send" + isEnabled = true + } + } + } + } + + private fun onResetInfo() { + binding.textInfo.text = "Active Transaction:" + } + + // + // Android Lifecycle overrides + // + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + setup() + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initSendUi() + } + + override fun onResume() { + super.onResume() + // the lifecycleScope is used to dispose of the synchronizer when the fragment dies + synchronizer.start(lifecycleScope) + monitorChanges() + } + + // + // BaseDemoFragment overrides + // + + override fun inflateBinding(layoutInflater: LayoutInflater): FragmentSendBinding = + FragmentSendBinding.inflate(layoutInflater) +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ext/FragmentExt.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ext/FragmentExt.kt new file mode 100644 index 0000000..433e617 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ext/FragmentExt.kt @@ -0,0 +1,12 @@ +@file:Suppress("ktlint:filename") + +package cash.z.ecc.android.sdk.demoapp.ext + +import android.content.Context +import androidx.fragment.app.Fragment + +/** + * A safer alternative to [Fragment.requireContext], as it avoids leaking Fragment or Activity context + * when Application context is often sufficient. + */ +fun Fragment.requireApplicationContext(): Context = requireContext().applicationContext diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/Ext.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/Ext.kt new file mode 100644 index 0000000..44253ce --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/Ext.kt @@ -0,0 +1,40 @@ +package cash.z.ecc.android.sdk.demoapp.util + +import android.content.Context +import android.text.format.DateUtils +import androidx.fragment.app.Fragment +import cash.z.ecc.android.sdk.demoapp.MainActivity +import cash.z.wallet.sdk.rpc.CompactFormats + +/** + * Lazy extensions to make demo life easier. + */ + +fun Fragment.mainActivity() = context as? MainActivity + +/** + * Add locale-specific commas to a number, if it exists. + */ +fun Number?.withCommas() = this?.let { "%,d".format(it) } ?: "Unknown" + +/** + * Convert date time in seconds to relative time like (4 days ago). + */ +fun Int?.toRelativeTime(context: Context) = + this?.let { timeInSeconds -> + DateUtils.getRelativeDateTimeString( + context, + timeInSeconds * 1000L, + DateUtils.SECOND_IN_MILLIS, + DateUtils.WEEK_IN_MILLIS, + DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_YEAR or DateUtils.FORMAT_ABBREV_MONTH + ).toString() + } ?: "Unknown" + +fun List?.toHtml() = + this.takeUnless { it.isNullOrEmpty() }?.let { txs -> + buildString { + append("
transactions (shielded INs / OUTs):") + txs.forEach { append("
  tx${it.index}: ${it.spendsCount} / ${it.outputsCount}") } + } + } ?: "" diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/NetworkExt.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/NetworkExt.kt new file mode 100644 index 0000000..9c8bc76 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/NetworkExt.kt @@ -0,0 +1,13 @@ +@file:Suppress("ktlint:filename") + +package cash.z.ecc.android.sdk.demoapp.util + +import android.content.Context +import cash.z.ecc.android.sdk.demoapp.R +import cash.z.ecc.android.sdk.type.ZcashNetwork + +fun ZcashNetwork.Companion.fromResources(context: Context) = ZcashNetwork.valueOf( + context.getString( + R.string.network_name + ) +) diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SampleStorage.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SampleStorage.kt new file mode 100644 index 0000000..fad7029 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SampleStorage.kt @@ -0,0 +1,62 @@ +package cash.z.ecc.android.sdk.demoapp.util + +import android.content.Context + +@Deprecated( + message = "Do not use this! It is insecure and only intended for demo purposes to " + + "show how to bridge to an existing key storage mechanism. Instead, use the Android " + + "Keystore system or a 3rd party library that leverages it." +) +class SampleStorage(context: Context) { + + private val prefs = + context.applicationContext.getSharedPreferences("ExtremelyInsecureStorage", Context.MODE_PRIVATE) + + fun saveSensitiveString(key: String, value: String) { + prefs.edit().putString(key, value).apply() + } + + fun loadSensitiveString(key: String): String? = prefs.getString(key, null) + + fun saveSensitiveBytes(key: String, value: ByteArray) { + saveSensitiveString(key, value.toString(Charsets.ISO_8859_1)) + } + + fun loadSensitiveBytes(key: String): ByteArray? = + prefs.getString(key, null)?.toByteArray(Charsets.ISO_8859_1) +} + +/** + * Simple demonstration of how to take existing code that securely stores data and bridge it into + * the SDK. This class delegates to the storage object. For demo purposes, we're using an insecure + * SampleStorage implementation but this can easily be swapped for a truly secure storage solution. + */ +class SampleStorageBridge(context: Context) { + private val delegate = SampleStorage(context.applicationContext) + + /** + * Just a sugar method to help with being explicit in sample code. We want to show developers + * our intention that they write simple bridges to secure storage components. + */ + fun securelyStoreSeed(seed: ByteArray): SampleStorageBridge { + delegate.saveSensitiveBytes(KEY_SEED, seed) + return this + } + + /** + * Just a sugar method to help with being explicit in sample code. We want to show developers + * our intention that they write simple bridges to secure storage components. + */ + fun securelyStorePrivateKey(key: String): SampleStorageBridge { + delegate.saveSensitiveString(KEY_PK, key) + return this + } + + val seed: ByteArray get() = delegate.loadSensitiveBytes(KEY_SEED)!! + val key get() = delegate.loadSensitiveString(KEY_PK)!! + + companion object { + private const val KEY_SEED = "cash.z.ecc.android.sdk.demoapp.SEED" + private const val KEY_PK = "cash.z.ecc.android.sdk.demoapp.PK" + } +} diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SimpleMnemonics.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SimpleMnemonics.kt new file mode 100644 index 0000000..f1f62d9 --- /dev/null +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/util/SimpleMnemonics.kt @@ -0,0 +1,27 @@ +package cash.z.ecc.android.sdk.demoapp.util + +import cash.z.android.plugin.MnemonicPlugin +import cash.z.ecc.android.bip39.Mnemonics +import cash.z.ecc.android.bip39.Mnemonics.MnemonicCode +import cash.z.ecc.android.bip39.Mnemonics.WordCount +import cash.z.ecc.android.bip39.toEntropy +import cash.z.ecc.android.bip39.toSeed +import java.util.Locale + +/** + * A sample implementation of a plugin for handling Mnemonic phrases. Any library can easily be + * plugged into the SDK in this manner. In this case, we are wrapping a few example 3rd party + * libraries with a thin layer that converts from their API to ours via the MnemonicPlugin + * interface. We do not endorse these libraries, rather we just use them as an example of how to + * take existing infrastructure and plug it into the SDK. + */ +class SimpleMnemonics : MnemonicPlugin { + override fun fullWordList(languageCode: String) = Mnemonics.getCachedWords(Locale.ENGLISH.language) + override fun nextEntropy(): ByteArray = WordCount.COUNT_24.toEntropy() + override fun nextMnemonic(): CharArray = MnemonicCode(WordCount.COUNT_24).chars + override fun nextMnemonic(entropy: ByteArray): CharArray = MnemonicCode(entropy).chars + override fun nextMnemonicList(): List = MnemonicCode(WordCount.COUNT_24).words + override fun nextMnemonicList(entropy: ByteArray): List = MnemonicCode(entropy).words + override fun toSeed(mnemonic: CharArray): ByteArray = MnemonicCode(mnemonic).toSeed() + override fun toWordList(mnemonic: CharArray): List = MnemonicCode(mnemonic).words +} diff --git a/demo-app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/demo-app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..95bbf45 --- /dev/null +++ b/demo-app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/demo-app/src/main/res/drawable/ic_baseline_check_24.xml b/demo-app/src/main/res/drawable/ic_baseline_check_24.xml new file mode 100644 index 0000000..0432fa6 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_baseline_check_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_baseline_close_24.xml b/demo-app/src/main/res/drawable/ic_baseline_close_24.xml new file mode 100644 index 0000000..16d6d37 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_baseline_close_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_baseline_edit_24.xml b/demo-app/src/main/res/drawable/ic_baseline_edit_24.xml new file mode 100644 index 0000000..2844baf --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_baseline_edit_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_baseline_move_to_inbox_24.xml b/demo-app/src/main/res/drawable/ic_baseline_move_to_inbox_24.xml new file mode 100644 index 0000000..0002cb9 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_baseline_move_to_inbox_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_floating_action.xml b/demo-app/src/main/res/drawable/ic_floating_action.xml new file mode 100644 index 0000000..7bd5af3 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_floating_action.xml @@ -0,0 +1,5 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_launcher_background.xml b/demo-app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..74852f7 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo-app/src/main/res/drawable/ic_list.xml b/demo-app/src/main/res/drawable/ic_list.xml new file mode 100644 index 0000000..4c2fb88 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_list.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_address.xml b/demo-app/src/main/res/drawable/ic_menu_address.xml new file mode 100644 index 0000000..66720aa --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_address.xml @@ -0,0 +1,10 @@ + + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_balance.xml b/demo-app/src/main/res/drawable/ic_menu_balance.xml new file mode 100644 index 0000000..3d2cbf8 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_balance.xml @@ -0,0 +1,10 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_block.xml b/demo-app/src/main/res/drawable/ic_menu_block.xml new file mode 100644 index 0000000..c428d72 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_block.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_block_range.xml b/demo-app/src/main/res/drawable/ic_menu_block_range.xml new file mode 100644 index 0000000..ab36b07 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_block_range.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_decrypt.xml b/demo-app/src/main/res/drawable/ic_menu_decrypt.xml new file mode 100644 index 0000000..6f1ccb6 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_decrypt.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_decrypt_range.xml b/demo-app/src/main/res/drawable/ic_menu_decrypt_range.xml new file mode 100644 index 0000000..d60cda4 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_decrypt_range.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_home.xml b/demo-app/src/main/res/drawable/ic_menu_home.xml new file mode 100644 index 0000000..70fb291 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_latest_height.xml b/demo-app/src/main/res/drawable/ic_menu_latest_height.xml new file mode 100644 index 0000000..5e776be --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_latest_height.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_memo.xml b/demo-app/src/main/res/drawable/ic_menu_memo.xml new file mode 100644 index 0000000..99b5867 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_memo.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_private_key.xml b/demo-app/src/main/res/drawable/ic_menu_private_key.xml new file mode 100644 index 0000000..2eddd16 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_private_key.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_menu_send.xml b/demo-app/src/main/res/drawable/ic_menu_send.xml new file mode 100644 index 0000000..e145ca8 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_menu_send.xml @@ -0,0 +1,9 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_receive.xml b/demo-app/src/main/res/drawable/ic_receive.xml new file mode 100644 index 0000000..e10be10 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_receive.xml @@ -0,0 +1,5 @@ + + + diff --git a/demo-app/src/main/res/drawable/ic_send.xml b/demo-app/src/main/res/drawable/ic_send.xml new file mode 100644 index 0000000..f3f6d70 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_send.xml @@ -0,0 +1,5 @@ + + + diff --git a/demo-app/src/main/res/drawable/side_nav_bar.xml b/demo-app/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 0000000..fff4e1e --- /dev/null +++ b/demo-app/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,10 @@ + + + diff --git a/demo-app/src/main/res/layout/activity_main.xml b/demo-app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..9bfb2ed --- /dev/null +++ b/demo-app/src/main/res/layout/activity_main.xml @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/demo-app/src/main/res/layout/app_bar_main.xml b/demo-app/src/main/res/layout/app_bar_main.xml new file mode 100644 index 0000000..0ad1127 --- /dev/null +++ b/demo-app/src/main/res/layout/app_bar_main.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/demo-app/src/main/res/layout/content_main.xml b/demo-app/src/main/res/layout/content_main.xml new file mode 100644 index 0000000..5572c74 --- /dev/null +++ b/demo-app/src/main/res/layout/content_main.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/demo-app/src/main/res/layout/fragment_gallery.xml b/demo-app/src/main/res/layout/fragment_gallery.xml new file mode 100644 index 0000000..35aa584 --- /dev/null +++ b/demo-app/src/main/res/layout/fragment_gallery.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/demo-app/src/main/res/layout/fragment_get_address.xml b/demo-app/src/main/res/layout/fragment_get_address.xml new file mode 100644 index 0000000..53ae43b --- /dev/null +++ b/demo-app/src/main/res/layout/fragment_get_address.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/demo-app/src/main/res/layout/fragment_get_balance.xml b/demo-app/src/main/res/layout/fragment_get_balance.xml new file mode 100644 index 0000000..2a7d8e1 --- /dev/null +++ b/demo-app/src/main/res/layout/fragment_get_balance.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/demo-app/src/main/res/layout/fragment_get_block.xml b/demo-app/src/main/res/layout/fragment_get_block.xml new file mode 100644 index 0000000..cc57b08 --- /dev/null +++ b/demo-app/src/main/res/layout/fragment_get_block.xml @@ -0,0 +1,84 @@ + + + + + + + + +

$AZT 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