Commit Graph

209 Commits

Author SHA1 Message Date
Honza Rychnovský fe6b11c4ec
[#1413] Update ZecSend with Proposal
* [#1413] Update ZecSend with Proposal

- Closes #1413
- Changelog update
2024-03-14 14:40:40 +01:00
Honza Rychnovský 078e76a941
[#776] Enable ZIP 317 fees support
* [#776] Enable ZIP 317 fees support

* Deprecate ZcashSdk.MINERS_FEE

* Replace MINERS_FEE with Proposal API in Demo app

* Changelog update

* Bump SDK to 2.0.8 to produce snapshot version
2024-03-13 10:03:53 +01:00
Jack Grigg c8d0be8404 Add `Proposal.transactionCount` 2024-03-07 19:49:18 +00:00
Honza c4b45c2c2f Eliminate the suppressions 2024-03-06 20:17:58 +00:00
Honza 8bd009c98a Improve logging inside `txManager.submit()` 2024-03-06 20:17:58 +00:00
Honza 8e4c83627b Improve `createProposedTransactions` 2024-03-06 20:17:58 +00:00
Jack Grigg 99e91fa8b7 Migrate to `zcash_client_sqlite 0.9.0`
The backend now supports proposals that create multiple transactions.
It still does not generate such proposals itself, and we assert this
inside the now-deprecated APIs.
2024-03-06 20:17:58 +00:00
Jack Grigg abffb3f9ee Adjust `Synchronizer.proposeShielding` API
- Returns `null` when there are no funds to shield or the shielding
  threshold is not met.
- Throws an exception if there are funds to shield in more than one
  transparent receiver within the account.
- Has an optional parameter for specifying which transparent receiver
  to shield funds from.

Part of Electric-Coin-Company/zcash-android-wallet-sdk#680.
2024-03-06 20:17:41 +00:00
Jack Grigg e36bbdec7a Expose shielding threshold in `Synchronizer.proposeShielding`
`Synchronizer.shieldFunds` is not altered because it is deprecated.
2024-03-06 16:40:21 +01:00
Jack Grigg d2fa400531 Deprecate `Synchronizer.sendToAddress` and `Synchronizer.shieldFunds` 2024-03-06 16:40:21 +01:00
Jack Grigg a27fbda8c0 Expose APIs for working with transaction proposals
Closes Electric-Coin-Company/zcash-android-wallet-sdk#1359.
2024-03-06 16:40:21 +01:00
Jack Grigg 04f1f47957 Fix bug where mempool submission errors were being ignored 2024-03-06 16:40:21 +01:00
str4d 41bb83cb5e
Emit sync progress from `CBP.runSyncingAndEnhancingOnRange` after scan (#1361)
Downloading and scanning blocks are requirements for updating sync
progress, but block deletion from the cache is not. This change moves
block deletion into "the background" alongside transaction enhancement.

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-03-06 14:10:56 +00:00
Honza Rychnovský 381bd42b89
[#1393] Support server switching
- This ensures that the SDK supports apps switching between different lightwalletd servers
- Synchronizer.validateServerEndpoint API added
- Demo app updated to leverage this new feature
- Changelog update
- Closes #1393
2024-03-02 18:55:22 +01:00
Honza Rychnovský f5ab7d9d19
[#1400] Update public Memo class API
- Closes #1400
- Adds a few more minor changes
- Changelog update
2024-02-26 15:59:05 +01:00
Honza Rychnovský 19cca515fb
[#1385] Adopt `AccountBalance` fields in Kotlin layer
* [#1385] Adopt `AccountBalance` fields in Kotlin layer

- Adds the Kotlin side changes for #1380
- Changed WalletBalance to contain these three fields: available, changePending, and valuePending, instead of total and available, and change the transparent flow to StateFlow<Zatoshi>, as we don't distinguish there.
- Related connected APIs changed
- Closes #1385

* Add WalletBalanceFixture

Placed in the public directory to be visible for clients as well

* Changelog update

* Remove `getVerifiedTransparentBalance ` API entirely

Co-authored-by: str4d <jack@electriccoin.co>
2024-02-07 17:33:47 +01:00
str4d b617eb1bb3
backend-lib: Expose `AccountBalance` fields across the FFI
* backend-lib: Expose `AccountBalance` fields across the FFI

* Update related fixture class

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-02-05 16:16:13 +01:00
str4d 394ddefb16
Fix Rust crash when shielding (#1379)
* Migrate to `librustzcash` tag `ecc_sdk-20240130a`

This includes the fix to the empty transaction request serialization
bug, which was preventing shielding from working.

* Release zcash-android-wallet-sdk 2.0.6

* Fix ktlint warnings

* Other CBP minor/formatting changes

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2024-01-31 03:43:16 +01:00
Jack Grigg 9fd25a0197 CompactBlockProcessor: Add tracing 2024-01-30 17:23:37 +00:00
Jack Grigg 22407a593d Get `WalletSummary` on CBP start and use it to bound subtree roots
This improves performance in two ways:
- The `SdkSynchronizer` now reports balances of existing wallets and
  sync progress almost immediately, instead of after the first batch
  of blocks is scanned.
- In the steady state case, only a few subtree roots are downloaded,
  reducing the time until the first batch of blocks is scanned.

Closes Electric-Coin-Company/zcash-android-wallet-sdk#1310.
2024-01-30 17:23:37 +00:00
Jack Grigg a8965b01c6 Fix types of arguments to `GetSubtreeRoots` and `putSaplingSubtreeRoots` 2024-01-30 17:23:37 +00:00
Jack Grigg e0fcbbea3a Refresh wallet transparent balance flow from `WalletSummary`
Previously we only showed balance updates for the default address; this
could potentially undercount transparent balance in some cases.

We also now use the total zero-conf transparent balance for both "total"
and "available", because we only allow transparent balance to be
shielded, and we use a zero-conf transaction to do so.
2024-01-30 17:23:37 +00:00
Jack Grigg 55d0dd47d8 Deduplicate balance refreshing APIs 2024-01-30 17:23:37 +00:00
Jack Grigg 1f19360ca3 Expose the rest of `WalletSummary` across the FFI 2024-01-30 17:23:37 +00:00
Jack Grigg 7149def6f1 Expose `ScanSummary` across the FFI
Closes Electric-Coin-Company/zcash-android-wallet-sdk#1368.
2024-01-30 17:23:37 +00:00
Jack Grigg bb3733ec94 CompactBlockProcessor: Deduplicate sleep code
Closes Electric-Coin-Company/zcash-android-wallet-sdk#1252.
2024-01-30 17:23:37 +00:00
Jack Grigg 0f0cd81a12 Replace `Backend.{createToAddress, shieldToAddress}` with proposal-based methods
Closes Electric-Coin-Company/zcash-android-wallet-sdk#1338.
2024-01-30 17:23:37 +00:00
Jack Grigg 85af183cee backend-lib: Migrate to latest in-progress revision of Rust crates 2024-01-30 17:23:37 +00:00
Honza Rychnovský 68cfd21fe7
[#1287] Remove LightWalletEndpointExt public API
- Closes #1287
- This refactored out all the occurrences of LightWalletEndpointExt and its functions and variables from the SDK’s public API. It preserves it in tests, demo app, and in the PersistableWallet for backward compatibility, although it’s not available from outside of the SDK.
- Changelog updated
2024-01-08 14:45:47 +01:00
Honza Rychnovský d8902d11df
[#1248] Clean up unused exceptions
* [#1248] Clean up unused exceptions

Closes #1248

* Changelog update

* Suppress detekt warning

Creating these private functions is required by the compiler
2024-01-07 10:29:33 +01:00
Honza Rychnovský 1dd369167a
[#1316] Readable TxId on TransactionOverview
Closes #1316
2024-01-05 09:56:23 +01:00
Honza Rychnovský 73d7afc2a4
[#1327] Ktlint 1.1.0
* [#1327] Ktlint 1.1.0

Closes #1327

* [#1327] Autoformatting with Ktlint

* Ktlint formatting warnings fix
2024-01-04 21:21:32 +01:00
Honza Rychnovský 2ee4140080
[#1307] Gradle 8.5
* [#1307] Gradle 8.5

Closes #1307

* Changelog update

* Flank 23.10.1
2024-01-04 10:47:46 +01:00
Honza Rychnovský 7d7cf4f84f
[#1292] Expose Data database file path
- Implemented as part of synchronizer API
- Closes #1292
- Documentation updated
2023-11-08 12:27:14 +01:00
str4d ae2d7152aa
Replace Sapling balance and scan progress FFIs with wallet summary FFI
* Replace Sapling balance and scan progress FFIs with wallet summary FFI

Closes zcash/zcash-android-wallet-sdk#1282.

* Using test fixture for JniAccountBalance

* Minor documentation changes

* Fix typo

---------

Co-authored-by: Honza <rychnovsky.honza@gmail.com>
2023-11-08 10:57:23 +01:00
Honza Rychnovský ddffd170d1
[#1273] 10_000-ZAT Miners fee
- Removed all uses of the incorrect 1000-ZAT fee as defined with  deprecated zip-313
- Default is now 10k zatoshi, the minimum defined by zip-317
- Changelog updated
- Closes  #1273
2023-10-02 12:49:36 +02:00
Honza Rychnovský c8e5a7e125
[#1249] Continuity error rewind
* [#1249] Continuity error rewind

- Fixed the Rust FFI bug that caused us to be unable to catch the Continuity error
- Improved logging
- Moved handling the Continuity error to the outer synchronization loop, which works better with synchronization mutex
- Closes #1249

* Resolve minor comments from older PR #1247
2023-09-21 16:11:02 +02:00
Honza 38ee6a80e9 Link fetchTransaction pass txId twice TODO 2023-09-20 08:56:29 -06:00
Honza 83c69fdd9f FirstClassByteArray toString formatting 2023-09-20 15:51:37 +02:00
Honza 55222aad50 Poll UTXOs regularly 2023-09-20 14:10:11 +02:00
Jack Grigg 5e40ff6920 Fix bugs in `TransactionOverview.transactionState` initialization
- Off-by-one in determining whether a transaction is confirmed.
- Expiry logic was inverted for non-zero expiry heights.
  - Transactions with zero (disabled) expiry heights happened to work
    because this case is currently detected in the database logic and
    mapped to `null`, which the old code mapped to `Long.MAX_VALUE`
    which gave the correct result for the old conditional expression.
2023-09-19 23:22:47 +01:00
Jack Grigg 89eb42e473 Fix `BlockHeight` difference type
Block heights are absolute, not relative. Adding heights does not make
sense, and the difference between two heights is an integer.
2023-09-19 23:22:47 +01:00
Jack Grigg 905fb1e1a8 Improve debug printing of `FirstClassByteArray` 2023-09-19 22:59:31 +01:00
Jack Grigg 233acebc2f Migrate to Rust revision with fixes to table views
With the fixes to `v_transactions` and `v_tx_outputs`, there are
several more data fields that may have no data (for rows corresponding
to purely-transparent transactions); their fields are made nullable.
2023-09-19 22:59:31 +01:00
Honza Rychnovský c0c4506664
[#1241][#1243][#1222] Rewinding when ContinuityError
* [#1241] Remove rewind for every verify scan range

- The original solution comes from the pseudocode requirement: Download the blocks in `scan_range` into the block source, overwriting any existing blocks in this range.
- Removed

* [#1243] Rewind only after continuity-error

- Rewind is done only when Continuity-error appears now. In case of other sync failures, the sync loop sleeps for a short time and then retries. Internal actions like fetching subtree roots, fetching chain tip, downloading, scanning, etc., still have their internal retry mechanisms.
- For the calculation of the rewind height, we use the existing checkContinuityErrorResult method, originally used only for validation use cases but later incorrectly used for other failures too.
- Closes #1243
- Closes #1222 as it was created to determine which failure type comes and don’t rewind for all of them
- Tested manually in several scenarios, e.g. lost internet connection or app going to background

* Handle Continuity and other sync errors

- Call handleContinutyError and its rewind logic directly without checking failed attempts. This ensures that we keep trying to reorg.
- And return the correct type of error in that case.
- Add fail logic to the handling of the other types of errors.
2023-09-19 15:47:56 +02:00
Honza Rychnovský 9869fd4300
[#1239] Post-v2.0.0-rc1 cleanup
* Add JniScanProgressTest

* Remove unnecessary testnet workaround

As this was fixed with the last rust changes.

* Simplify batchCount calculating

* Fix ratio typo

* Docummentation comments changes
2023-09-18 16:51:26 +02:00
Honza Rychnovský 62fc5d7cfa
[#1242] ScanRange fails when no matching priority (#1246)
Tests added
2023-09-18 08:15:18 -06:00
Honza 11b031a6af Exit execution when retry limit reached 2023-09-12 19:27:20 +02:00
Honza 39ba2b48b0 Fix ktlint warning 2023-09-11 20:22:41 +02:00
Honza c7125f4183 Update createAccountAndGetSpendingKey API
- TypesafeBackend.createAccountAndGetSpendingKey now works with a type-safe TreeState model class instead of ByteArray.
- New type-safe TreeState added. Once we get the TreeState object from the lightwalletd server, potential validation comes into this object.
2023-09-11 19:11:03 +02:00