2023-09-08 16:09:49 -07:00
# Changelog
All notable changes to this library will be documented in this file.
The format is based on [Keep a Changelog ](https://keepachangelog.com/en/1.0.0/ ),
and this library adheres to [Semantic Versioning ](https://semver.org/spec/v2.0.0.html ).
2024-02-20 16:54:34 -08:00
# Unreleased
2024-03-26 10:03:01 -07:00
2024-03-27 15:18:57 -07:00
# 2.1.2 - 2024-03-27
## Fixed
- Bug in note selection when sending to a transparent recipient.
2024-03-27 08:30:28 -07:00
# 2.1.1 - 2024-03-27
## Fixed
- Bug in an SQL query that prevented shielding of transparent funds.
2024-03-26 10:03:01 -07:00
# 2.1.0 - 2024-03-26
2024-02-19 12:25:10 -08:00
### [#1379] Fulfill Payment from a valid ZIP-321 request
New API implemented that allows clients to use a ZIP-321 Payment URI to create transaction.
```
func fulfillPaymentURI(
_ uri: String,
spendingKey: UnifiedSpendingKey
) async throws -> ZcashTransaction.Overview
```
Possible errors:
- `ZcashError.rustProposeTransferFromURI`
- Other errors that `sentToAddress` can throw
2024-02-20 16:54:34 -08:00
2024-03-15 07:23:25 -07:00
## Removed
- `SDKSynchronizer.latestUTXOs`
2024-03-26 09:51:24 -07:00
## Checkpoints
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2430000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2447500.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2750000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2770000.json
````
2024-03-08 07:43:30 -08:00
# 2.0.11 - 2024-03-08
2024-02-29 04:31:27 -08:00
## Changed
2024-03-07 16:24:29 -08:00
- Migrated to `zcash-light-client-ffi 0.6.0` .
2024-02-29 04:31:27 -08:00
### [#1186] Enable ZIP 317 fees
- The SDK now generates transactions using [ZIP 317 ](https://zips.z.cash/zip-0317 ) fees,
instead of a fixed fee of 10,000 Zatoshi. Use `Proposal.totalFeeRequired` to check the
total fee for a transfer before creating it.
2024-02-20 16:54:34 -08:00
## Added
### [#1204] Expose APIs for working with transaction proposals
New `Synchronizer` APIs that enable constructing a proposal for transferring or
shielding funds, and then creating transactions from a proposal. The intermediate
proposal can be used to determine the required fee, before committing to producing
transactions.
2024-02-20 17:15:01 -08:00
The old `Synchronizer.sendToAddress` and `Synchronizer.shieldFunds` APIs have been
deprecated, and will be removed in 2.1.0 (which will create multiple transactions
at once for some recipients).
2024-03-08 07:43:30 -08:00
## Checkpoints
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2402500.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2427500.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2690000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2740000.json
````
2024-02-12 10:48:34 -08:00
# 2.0.10 - 2024-02-12
## Added
### [#1153] Allow runtime switch of lightwalletd servers
New API implemented that allows clients to change the `mainnet` endpoint. Use `func switchTo(endpoint: LightWalletEndpoint) async throws` .
Possible errors:
2024-02-12 11:07:19 -08:00
- `ZcashError.synchronizerServerSwitch` will perform a check to ensure that it's possible to communicate with the specified lightwalletd server, which may result in an an error. If this check fails, the user should be prompted to check the address, port and verify that the `address:port` format is respected.
2024-02-12 11:07:12 -08:00
- Switching endpoints causes a call to `synchronizer.Start()` , which may throw a `ZcashError` .
2024-01-31 10:16:39 -08:00
## Changed
2024-02-06 01:38:38 -08:00
### [#1369] SynchronizerState refactor and balances cleanup
`SynchronizerState` cleaned up and changed to provide only `AccountBalance` . This struct holds `saplingBalance: PoolBalance` which represents shielded balance for both total and spendable. Also holds `unshielded: Zatoshi` which represents transparent balance.
## Removed
### [#1369] SynchronizerState refactor and balances cleanup
- `WalletBalance` has been removed from the SDK, replaced with `AccountBalance` .
- `getTransparentBalance(accountIndex: Int)` , use `getAccountBalance(accountIndex: Int = 0)` instead
- `getShieldedBalance(accountIndex: Int)` , use `getAccountBalance(accountIndex: Int = 0)` instead
- `getShieldedVerifiedBalance(accountIndex: Int)` , use `getAccountBalance(accountIndex: Int = 0)` instead
# 2.0.9 - 2024-01-31
## Changed
2024-01-31 10:16:39 -08:00
### [#1363] Account balances in the SynchronizerState
`shieldedBalance: WalletBalance` has been replaced with `accountBalances: AccountBalance` . `AccountBalance` provides the same values as `shieldedBalance` but adds up a pending changes. Under the hood this calls rust's `getWalletSummary` which improved also the syncing initial values of % and balances.
2024-02-07 02:48:59 -08:00
## Added
### [#1153] Allow runtime switch of lightwalletd servers
New API implemented that allows clients to change the `mainnet` endpoint. Use `func switchTo(endpoint: LightWalletEndpoint) async throws` .
Possible errors:
- `ZcashError.synchronizerServerSwitch` : endpoint fails, check the address, port and format address:port,
- Some `ZcashError` related to `synchronizer.Start()` : the switch calls `start()` at the end and that is the only throwing function except the validation.
2024-01-30 18:03:52 -08:00
# 2.0.8 - 2024-01-30
Adopt `zcash-light-client-ffi 0.5.1` . This fixes a serialization problem
broke shielding.
2024-01-30 08:21:52 -08:00
# 2.0.7 - 2024-01-29
## Added
- `Model.ScanSummary`
- `Model.WalletSummary.{PoolBalance, AccountBalance, WalletSummary}`
## Changed
- The `ZcashError` type has changed.
- Added variant `rustGetWalletSummary`
- Removed variants:
- `rustGetVerifiedBalance` (expect `rustGetWalletSummary` instead)
- `rustGetScanProgress` (expect `rustGetWalletSummary` instead)
- `rustGetBalance` (expect `rustGetWalletSummary` instead)
- The performance of `getWalletSummary` and `scanBlocks` have been improved.
2024-01-28 08:52:35 -08:00
# 2.0.6 - 2024-01-28
2024-01-24 07:22:29 -08:00
## Changed
### [#1346] Troubleshooting synchronization
We focused on performance of the synchronization and found out a root cause in progress reporting. Simple change reduced the synchronization significantly by reporting less frequently. This affect the UX a bit because the % of the sync is updated only every 500 scanned blocks instead of every 100. Proper solution is going to be handled in #1353 .
2024-01-24 05:58:48 -08:00
### [#1351] Recover from block stream issues
2024-01-30 08:21:52 -08:00
Async block stream grpc calls sometimes fail with unknown error 14, most of the times represented as `Transport became inactive` or `NIOHTTP2.StreamClosed` . Unless the service is truly down, these errors are usually false positive ones. The SDK was able to recover from this error with the next sync triggered but it takes 10-30s to happen. This delay is unnecessary so we made 2 changes. When these errors are caught the next sync is triggered immediately (at most 3 times) + the error state is not passed to the clients.
2024-01-24 05:58:48 -08:00
2024-01-28 08:43:16 -08:00
## Checkpoints
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2332500.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2382500.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2640000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2690000.json
````
2023-12-14 23:12:53 -08:00
# 2.0.5 - 2023-12-15
## Added
### [#1336] Tweaks for sdk metrics
2024-01-30 08:21:52 -08:00
Shielded verified and total balances are logged for every sync of `SDKMetrics` .
2023-12-14 23:12:53 -08:00
## Checkpoints
Mainnet
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2330000.json
Testnet
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2630000.json
2023-12-12 09:27:42 -08:00
# 2.0.4 - 2023-12-12
2023-12-08 02:45:19 -08:00
## Changed
2024-01-30 08:21:52 -08:00
The `SDKMetrics` logs data using os_log. The public API `enableMetrics()` and `disableMetrics()` no longer exist. All metrics are automatically logged for every sync run. Extraction of the metrics is up to the client/dev - done by using `OSLogStore` .
2023-12-08 02:45:19 -08:00
## Added
### [#1325] Log metrics
2024-01-30 08:21:52 -08:00
The sync process is measured and detailed metrics are logged for every sync run. The data are logged using os_log so any client can export it. Verbose logs are under `sdkLogs_default` category, `default` level. Sync specific logs use `error` level.
2023-12-08 02:45:19 -08:00
## Checkpoints
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2270000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2327500.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2560000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2620000.json
````
2023-10-20 00:48:51 -07:00
# 2.0.3 - 2023-10-20
## Fixed
### [#1308] Enhancing seems to not process all ranges
2023-10-20 01:16:52 -07:00
The enhancing of the transactions now processes all the blocks suggested by scan ranges. The issue was that when new scan ranges were suggested the value that drives the enhancing range computation wasn't reset, so when higher ranges were processed, the lower ranges were skipped. This fix ensures all transaction data are properly set, as well as fixing eventStream `.foundTransaction` reporting.
2023-10-20 00:48:51 -07:00
2023-10-20 01:51:41 -07:00
### Fix incorrect note deduplication in v_transactions (librustzcash)
2024-01-30 08:21:52 -08:00
This is a fix in the rust layer. The amount sent in the transaction was incorrectly reported even though the actual amount was sent properly. Now clients should see the amount they expect to see in the UI.
2023-10-20 01:51:41 -07:00
## Checkpoints
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2250000.json
...
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2267500.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2540000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2550000.json
````
2023-10-12 11:33:19 -07:00
# 2.0.2 - 2023-10-12
2023-10-12 09:10:07 -07:00
## Changed
### [#1303] Don't invalidate the timer with the error
2024-01-30 08:21:52 -08:00
The SDK has some simple logic of retrying when some erros occurs. There were 5 attempts of retry until the SDK stopped the synchronization process completely. (The timer is not restarted after those). That approach led to some annoying UX issue of manually starting the SDKSynchronizer from the client, shifting the responsibility to the devs/clients. This has been changed, the SDK never stops the timer unless `synchronizer.stop()` is called.
2023-10-12 09:10:07 -07:00
## Fixed
### [#1301] foundTransactions don't emit after rewind
2024-01-30 08:21:52 -08:00
The `.foundTransactions` observed on eventStream worked well during the sync until the rewind was called. That API missed reset of the ActionContext in the CompactBlockProcesser and that led to never observing the same transactions again. This ticket fixed the problem, reset is called in the rewind and new sync passes the transactions to the stream.
2023-10-12 09:10:07 -07:00
2023-10-02 22:53:36 -07:00
# 2.0.1 - 2023-10-03
2023-09-29 09:16:54 -07:00
## Changed
### [#1294] Remove all uses of the incorrect 1000-ZAT fee
The 1000 Zatoshi fee proposed in ZIP-313 is deprecated now and so the minimum is 10k Zatoshi, defined in ZIP-317.
2024-01-30 08:21:52 -08:00
The SDK has been cleaned up from deprecated fee but note, real fee is handled in a rust layer.
2023-09-29 09:16:54 -07:00
The public API `NetworkConstants.defaultFee(for: BlockHeight)` has been refactored to `NetworkConstants.defaultFee()` .
2024-01-30 08:21:52 -08:00
2023-09-25 14:40:22 -07:00
# 2.0.0 - 2023-09-25
2023-09-08 16:09:49 -07:00
## Notable Changes
This release updates `ZcashLightClientKit` to implement the Spend-Before-Sync fast
synchronization algorithm.
## Changed
2024-01-30 08:21:52 -08:00
Updated dependencies:
2023-09-25 14:40:22 -07:00
- `zcash-light-client-ffi 0.4.0`
2023-05-21 09:48:29 -07:00
2023-09-11 00:37:47 -07:00
`CompactBlockProcessor` now processes compact blocks from the lightwalletd server with Spend-before-Sync algorithm (i.e. non-linear order). This feature shortens the time after which a wallet's spendable balance can be used.
2023-08-09 23:51:46 -07:00
### [#1196] Check logging level priorities
The levels for logging have been updated according to Log Levels in Swift. (https://www.swift.org/server/guides/libraries/log-levels.html).
2023-09-08 16:09:49 -07:00
There's one naming difference, instead of `notice` we use `event` . So the order is debug, info, event, warning, error.
2023-08-09 23:51:46 -07:00
2023-05-21 09:48:29 -07:00
### [#1111] Change how the sync progress is stored inside the SDK
2023-09-08 16:09:49 -07:00
`Initializer` has now a new parameter called `generalStorageURL` . This URL is the location of the directory
where the SDK can store any information it needs. A directory doesn't have to exist. But the SDK must
2023-05-21 09:48:29 -07:00
be able to write to this location after it creates this directory. It is suggested that this directory is
a subdirectory of the `Documents` directory. If this information is stored in `Documents` then the
system itself won't remove these data.
2023-09-08 16:09:49 -07:00
Synchronizer's prepare(...) public API changed: `viewingKeys:
[UnifiedFullViewingKey]` has been removed and `for walletMode: WalletInitMode`
added. `WalletInitMode` is an enum with 3 cases: .newWallet, .restoreWallet and
.existingWallet. Use `.newWallet` when preparing the SDKSynchronizer for a
brand new wallet that has been generated. Use `.restoreWallet` when wallet is
about to be restored from a seed and `.existingWallet` for all other scenarios.
2023-09-08 06:40:52 -07:00
2023-09-08 16:09:49 -07:00
## Removed
2023-08-10 07:08:01 -07:00
### [#1181] Correct computation of progress for Spend before Sync
`latestScannedHeight` and `latestScannedTime` have been removed from `SynchronizerState` . With multiple algorithms
of syncing the amount of data provided is reduced so it's consistent. Spend before Sync is done in non-linear order
2023-09-08 16:09:49 -07:00
so both Height and Time don't make sense anymore.
2023-08-10 07:08:01 -07:00
2023-09-07 03:54:47 -07:00
### [#1230] Remove linear sync from the SDK
2023-09-08 16:09:49 -07:00
- `latestScannedHeight` and `latestScannedTime` have been removed from the
2024-01-30 08:21:52 -08:00
SynchronizerState.
- The concept of pending transaction has changed: `func allPendingTransactions()`
2023-09-08 16:09:49 -07:00
is no longer available. Use `public func allTransactions()` instead.
2023-09-07 03:54:47 -07:00
2023-05-22 11:21:21 -07:00
# 0.22.0-beta
2023-03-29 11:28:24 -07:00
2023-05-22 11:21:21 -07:00
## Checkpoints
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2057500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2060000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2062500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2065000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2067500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2070000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2072500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2075000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2077500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2080000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2082500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2085000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2087500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2090000.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2320000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2330000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2340000.json
````
2023-09-08 16:09:49 -07:00
## Fixed
2023-05-22 11:21:21 -07:00
2023-09-08 16:09:49 -07:00
- [#1037] Empty string memo throws `ZcashError.memoTextInputEndsWithNullBytes`
2023-05-22 11:21:21 -07:00
- [#1016] Rebuild download stream periodically while downloading
This fixes a memory consumption issue coming from GRPC-Swift.
- [#1019] Memo has trailing garbled text
2023-09-08 16:09:49 -07:00
2023-05-21 09:48:29 -07:00
### [#1111] Change how the sync progress is stored inside the SDK
2023-09-08 16:09:49 -07:00
`Initializer` has now a new parameter called `generalStorageURL` . This URL is the location of the directory
where the SDK can store any information it needs. A directory doesn't have to exist. But the SDK must
2023-05-21 09:48:29 -07:00
be able to write to this location after it creates this directory. It is suggested that this directory is
a subdirectory of the `Documents` directory. If this information is stored in `Documents` then the
system itself won't remove these data.
### [#1019] Memo has trailing garbled text
2023-09-08 16:09:49 -07:00
2023-05-05 11:51:50 -07:00
Changes the way unpadded bytes are turned into a UTF-8 Swift String
without using cString assuming APIs that would overflow memory and
add garbled trailing bytes.
2023-09-08 16:09:49 -07:00
- [#781] This fixes test `testMaxAmountMinusOneSend` by creating two separate tests:
- testMaxAmountMinusOneSendFails
- testMaxAmountSend
Also includes new functionality that tracks sent transactions so
that users can be notified specifically when they are mined and uses "idea B" of
issue #1033 .
2023-05-22 11:21:21 -07:00
2023-09-08 16:09:49 -07:00
closes #1033
closes #781
2023-05-22 11:21:21 -07:00
2023-09-08 16:09:49 -07:00
### [#1001] Remove PendingDb in favor of `v_transactions` and `v_tx_output` Views
2023-05-22 11:21:21 -07:00
2023-09-08 16:09:49 -07:00
## Changed
2023-05-22 11:21:21 -07:00
2023-05-05 10:30:47 -07:00
- `WalletTransactionEncoder` now uses a `LightWalletService` to submit the
encoded transactions.
- Functions returning or receiving `ZcashTransaction.Sent` or `ZcashTransaction.Received` now
2023-09-08 16:09:49 -07:00
will be simplified by returning `ZcashTransaction.Overview` or be replaced by their Overview
2023-05-05 10:30:47 -07:00
counterparts
2023-09-08 16:09:49 -07:00
## Added
2023-05-05 10:30:47 -07:00
- `ZcashTransaction.Overview` can be checked for "pending-ness" by calling`.isPending(latestHeight:)` latest height must be provided so that minedHeight
2023-09-08 16:09:49 -07:00
can be compared with the lastest and the `defaultStaleTolerance` constant.
2023-05-05 10:30:47 -07:00
2023-09-08 16:09:49 -07:00
- `TransactionRecipient` is now a public type.
2023-05-05 10:30:47 -07:00
2023-09-08 16:09:49 -07:00
- `ZcashTransaction.Output` can be queried to know the inner details of a
`ZcashTransaction.Overview` . It will return an array with all the tracked
outputs for that transaction so that they can be shown to users who request them
2023-05-05 10:30:47 -07:00
2023-09-08 16:09:49 -07:00
- `ZcashTransaction.Overview.State` is introduced to represent `confirmed` ,
`pending` or `expired` states. This State is relative to the current height
of the chain that is passed to the function `getState(for currentHeight: BlockHeight)` .
2023-05-05 10:30:47 -07:00
State should be a transient value and it's not adviced to store it unless
transactions have stale values such as `confirmed` or `expired` .
2023-09-08 16:09:49 -07:00
### Synchronizer Changes
2023-05-05 10:30:47 -07:00
- `public func getTransactionOutputs(transaction) async -> [ZcashTransaction.Output]` is added to
2023-09-08 16:09:49 -07:00
get the outputs related to the given transaction. You can use this to know every detail of the
2023-05-05 10:30:47 -07:00
transaction Overview and show it in a more fine-grained UI.
2023-09-08 16:09:49 -07:00
- `TransactionRecipient` is returned on `getRecipients(for:)` .
## Renamed
2023-05-05 10:30:47 -07:00
- `AccountEntity` called `Account` is now `DbAccount`
2023-09-08 16:09:49 -07:00
## Removed
2023-05-05 10:30:47 -07:00
- `ZcashTransaction.Received` and `ZcashTransaction.Sent` are removed
2023-09-08 16:09:49 -07:00
and replaced by `Overview` since the notion of Sent and received is
not entirely applicable to Zcash transactions where value can be
sent and received at the same time. Transactions with negative value
will be considered as "sent" but that won't be enforced with a type
anymore
2023-05-05 10:30:47 -07:00
- `cancelSpend()` : support for cancel spend was removed since its
2023-09-08 16:09:49 -07:00
completion was not guaranteed
2023-05-05 10:30:47 -07:00
- `PendingTransactionEntity` and all of its related components.
2023-09-08 16:09:49 -07:00
Pending items are still tracked and visualized by the existing APIs
but they are retrieved from the `TransactionRepository` instead by
returning `ZcashTransaction.Overview` instead.
2023-05-05 10:30:47 -07:00
- `pendingDbURL` is removed from every place it was required. Its
2023-09-08 16:09:49 -07:00
deletion is responsibility of wallet developers.
- `ClearedTransactions` are now just `transactions` .`MigrationManager`
is deleted. Now all migrations are in charge of the rust welding layer.
2023-05-05 10:30:47 -07:00
- `PendingTransactionDao.swift` is removed.
- `PendingTransactionRepository` protocol is removed.
- `TransactionManagerError`
- `PersistentTransactionManager`
- `OutboundTransactionManager` is deleted and replaced by `TransactionEncoder`
2023-09-08 16:09:49 -07:00
which now incorporates `submit(encoded:)` functionality
2023-05-05 10:30:47 -07:00
- `DatabaseMigrationManager` is remove since it's no longer needed all Database
2023-09-08 16:09:49 -07:00
migrations shall be hanlded by the rust layer.
- `ZcashSDK.defaultPendingDbName` along with any sibling members
- `TransactionRepository`
2023-05-05 10:30:47 -07:00
- `findMemos(for receivedTransaction: ZcashTransaction.Received)`
- `findMemos(for sentTransaction: ZcashTransaction.Sent)`
2023-05-02 12:59:49 -07:00
### [#1013] Enable more granular control over logging behavior
Now the SDK allows for more fine-tuning of its logging behavior. The `LoggingPolicy` enum
provides for three options: `.default(OSLogger.LogLevel)` wherein the SDK will use its own logger, with the option
2023-09-08 16:09:49 -07:00
to customize the log level by passing an `OSLogger.LogLevel` to the enum case.
2023-05-02 12:59:49 -07:00
`custom` allows one to pass a custom `Logger` implementation for completely customized logging.
Lastly, `noLogging` disables logging entirely.
To utilize this new configuration option, pass a `loggingPolicy` into the `Initializer` . If unspecified, the SDK
will utilize an internal `Logger` implementation with an `OSLogger.LogLevel` of `.debug`
2023-03-29 11:28:24 -07:00
### [#442] Implement parallel downloading and scanning
The SDK now parallelizes the download and scanning of blocks. If the network connection of the client device is fast enough then the scanning
2023-09-08 16:09:49 -07:00
process doesn't have to wait for blocks to be downloaded. This makes the whole sync process faster.
2023-03-29 11:28:24 -07:00
`Synchronizer.stop()` method is not async anymore.
2023-05-22 11:21:21 -07:00
### [#361] Redesign errors inside the SDK
2023-09-08 16:09:49 -07:00
Now the SDK uses only one error type - `ZcashError` . Each method that throws now throws only `ZcashError` .
2023-05-22 11:21:21 -07:00
Each publisher (or stream) that can emit error now emitts only `ZcashError` .
Each symbol in `ZcashError` enum represents one error. Each error is used only in one place
inside the SDK. Each error has assigned unique error code (`ZcashErrorCode`) which can be used in logs.
2023-04-19 10:32:48 -07:00
# 0.21.0-beta
2023-09-08 16:09:49 -07:00
## Checkpoints
2023-04-19 10:32:48 -07:00
Mainnet:
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2032500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2035000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2037500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2040000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2042500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2045000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2047500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2050000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2052500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2055000.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2290000.json
````
2023-09-08 16:09:49 -07:00
2023-04-19 10:32:48 -07:00
### [#969] Clear cache on error to avoid discontinuities when verifying
This change drops the file-system cache whenever an error occurs when storing blocks
2023-09-08 16:09:49 -07:00
so that there is not a discontinuity in the cached block range that could cause a
2023-04-19 10:32:48 -07:00
discontinuity error on libzcashlc when calling `scan_blocks` . This will have a setback of
at most 100 blocks that would have to be re-downloaded when resuming sync.
2023-04-18 05:10:56 -07:00
2023-09-08 16:09:49 -07:00
### [#959] and [#914] Value of outbound transactions does not match user intended tx input
2023-04-18 05:10:56 -07:00
2023-09-08 16:09:49 -07:00
This change switches to a new (future) version of the rust crates that will get
rid of the sent and received transactions Views in favor of a v_transaction
view that will do better accounting of outgoing and incoming funds.
Additionally it will support an outputs view for seeing the inner details of
transactions enabling the SDKs tell the users the precise movement of value
that a tx causes in its multiple possible ways according to the protocol.
2023-04-18 05:10:56 -07:00
the v_tx_outputs view is not yet implemented.
2023-09-08 16:09:49 -07:00
Sent and Received transaction sub-types are kept for compatibility purposes but
they are generated from Overviews instead of queried from a specific view.
2023-04-18 05:10:56 -07:00
2023-09-08 16:09:49 -07:00
In the transaction Overview the value represents the whole value transfer for
the transaction from the point of view of a given account including fees. This
means that the value for a single transaction Overview struct represents the
addition or subtraction of ZEC value to the account's balance.
2023-04-18 05:10:56 -07:00
2023-09-08 16:09:49 -07:00
Future updates will give clients the possibility to drill into the inner
workings of those value changes in a per-output basis for each transaction.
2023-04-18 05:10:56 -07:00
2023-09-08 16:09:49 -07:00
Also, the field pending_unmined field was added to v_transactions so that
wallets can query DataDb for pending but yet unmined txs
2023-04-18 05:10:56 -07:00
This will prepare the field for removing the notion of a "PendingDb" and its nuances.
2023-03-31 10:10:35 -07:00
### [#888] Updates to layer between Swift and Rust
This is mostly internal change. But it also touches the public API.
`KeyDeriving` protocol is changed. And therefore `DerivationTool` is changed. `deriveUnifiedSpendingKey(seed:accountIndex:)` and
`deriveUnifiedFullViewingKey(from:)` methods are now async. `DerivationTool` offers alternatives for these methods. Alternatives are using either
2023-09-08 16:09:49 -07:00
closures or Combine.
2023-03-31 10:10:35 -07:00
2023-03-30 03:49:28 -07:00
### [#469] ZcashRustBackendWelding to Async
This is mostly internal change. But it also touches the public API.
These methods previously returned Optional and now those methods return non-optional value and those methods can an throw error:
- `getSaplingAddress(accountIndex: Int) async throws -> SaplingAddress`
- `func getUnifiedAddress(accountIndex: Int) async throws -> UnifiedAddress`
- `func getTransparentAddress(accountIndex: Int) async throws -> TransparentAddress`
These methods are now async:
- `func getShieldedBalance(accountIndex: Int) async throws -> Zatoshi`
- `func getShieldedVerifiedBalance(accountIndex: Int) async throws -> Zatoshi`
`Initializer` no longer have methods to get balance. Use `SDKSynchronizer` (or it's alternative APIs) to get balance.
2023-03-30 03:45:42 -07:00
# 0.20.0-beta
2023-09-08 16:09:49 -07:00
## Checkpoints:
2023-03-30 03:45:42 -07:00
Mainnet:
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2012500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2015000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2017500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2020000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2022500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2025000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2027500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2030000.json
````
Testnet:
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2260000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2270000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2280000.json
````
2023-03-28 11:56:14 -07:00
2023-09-08 16:09:49 -07:00
## Deprecations made effective:
Synchronizer:
2023-03-28 11:56:14 -07:00
- `func getShieldedBalance(accountIndex: Int) -> Int64`
- `func getShieldedVerifiedBalance(accountIndex: Int) -> Int64`
2023-09-08 16:09:49 -07:00
use the API retuning Zatoshi instead. If needed `zatoshi.amount` would return an
Int64 value.
2023-03-28 11:56:14 -07:00
Initializer:
- `func getBalance(account index: Int = 0) -> Int64`
2023-09-08 16:09:49 -07:00
use the API retuning Zatoshi instead. If needed `zatoshi.amount` would return an
Int64 value.
2023-03-28 11:56:14 -07:00
- `func getVerifiedBalance(account index: Int = 0) -> Int64`
2023-09-08 16:09:49 -07:00
use the API retuning Zatoshi instead. If needed `zatoshi.amount` would return an
Int64 value.
2023-03-28 11:56:14 -07:00
ZcashSDK.NetworkConstants:
- `func defaultFee(for height: BlockHeight) -> Int64`
2023-09-08 16:09:49 -07:00
use the API retuning Zatoshi instead. If needed `zatoshi.amount` would return an
Int64 value.
2023-03-28 11:56:14 -07:00
ZcashRustBackendWelding:
- `func getReceivedMemoAsUTF8(dbData:idNote:networkType:) -> String?`
2023-09-08 16:09:49 -07:00
Use `getReceivedMemo(dbData:idNote:networkType)` instead
2023-03-28 11:56:14 -07:00
- `func getSentMemoAsUTF8(dbData:idNote:networkType:) -> String?`
2023-09-08 16:09:49 -07:00
Use `getSentMemo(dbData:idNote:networkType)` instead
## Changed
2023-03-28 11:56:14 -07:00
2023-03-22 05:47:32 -07:00
### [#209] Support Initializer Aliases
2023-03-16 02:11:18 -07:00
2023-03-22 05:47:32 -07:00
Added `ZcashSynchronizerAlias` enum which is used to identify an instance of the `SDKSynchronizer` . All the paths
2023-09-08 16:09:49 -07:00
to all resources (databases, filesystem block storage...) are updated automatically inside the SDK according to the
alias. So it's safe to create multiple instances of the `SDKSynchronizer` . Each instance must have unique Alias. If
2023-03-22 05:47:32 -07:00
the `default` alias is used then the SDK works the same as before this change was introduced.
2023-09-08 16:09:49 -07:00
The SDK now also checks which aliases are used and it prevents situations when two instances of the `SDKSynchronizer`
2023-03-22 05:47:32 -07:00
has the same alias. Methods `prepare()` and `wipe()` do checks for used alias. And those methods fail
with `InitializerError.aliasAlreadyInUse` if the alias is already used.
2023-09-08 16:09:49 -07:00
If the alias check fails in the `prepare()` method then the status of the `SDKSynchronizer` isn't switched from `unprepared` .
2023-03-22 05:47:32 -07:00
These methods newly throw `SynchronizerError.notPrepared` error when the status is `unprepared` :
- `sendToAddress(spendingKey:zatoshi:toAddress:memo:) async throws -> PendingTransactionEntity`
- `shieldFundsspendingKey:memo:shieldingThreshold:) async throws -> PendingTransactionEntity`
- `latestUTXOs(address:) async throws -> [UnspentTransactionOutputEntity]`
- `refreshUTXOs(address:from:) async throws -> RefreshedUTXOs`
- `rewind(policy:) -> AnyPublisher<Void, Error>`
2023-09-08 16:09:49 -07:00
Provided file URLs to resources (databases, filesystem block storage...) are now parsed inside the SDK and updated
according to the alias. If some error during this happens then `SDKSynchronzer.prepare()` method throws
2023-03-22 05:47:32 -07:00
`InitializerError.cantUpdateURLWithAlias` error.
### [#831] Add support for alternative APIs
2023-09-08 16:09:49 -07:00
There are two new protocols (`ClosureSynchronizer` and `CombineSynchronizer` ). And there are two new
2023-03-16 02:11:18 -07:00
objects which conform to respective protocols (`ClosureSDKSynchronizer` and `CombineSDKSynchronizer` ). These
2023-09-08 16:09:49 -07:00
new objects offer alternative API for the `SDKSynchronizer` . Now the client app can choose which technology
2023-03-16 02:11:18 -07:00
it wants to use to communicate with Zcash SDK and it isn't forced to use async.
These methods in the `SDKSynchronizer` are now async:
- `prepare(with:viewingKeys:walletBirthday:)`
- `start(retry:)`
- `stop()`
2023-03-27 07:12:06 -07:00
- `cancelSpend(transaction:)`
- All the variants of the `getMemos(for:)` method.
- All the variants fo the `getRecipients(for:)` method.
- `allConfirmedTransactions(from:limit:)`
These properties in the `SDKSynchronizer` are now async:
- `pendingTransactions`
- `clearedTransactions`
- `sentTransactions`
- `receivedTransactions`
2023-03-16 02:11:18 -07:00
Non async `SDKsynchronizer.latestHeight(result:)` were moved to `ClosureSDKSynchronizer` .
2023-03-22 05:47:32 -07:00
### [#724] Switch from event based notifications to state based notifications
2023-03-15 04:17:43 -07:00
2023-03-22 05:47:32 -07:00
The `SDKSynchronizer` no longer uses `NotificationCenter` to send notifications.
2023-03-15 04:17:43 -07:00
Notifications are replaced with `Combine` publishers. Check the migrating document and
documentation in the code to get more information.
2023-03-22 05:47:32 -07:00
### [#826] Change how the SDK is initialized
2023-09-08 16:09:49 -07:00
- `viewingKeys` and `walletBirthday` are removed from `Initializer` constuctor. These parameters moved to
`SDKSynchronizer.prepare` function.
2023-03-22 05:47:32 -07:00
- Constructor of the `SDKSynchronizer` no longer throws exception.
- Any value emitted from `lastState` stream before `SDKSynchronizer.prepare` is called has `latestScannedHeight` set to 0.
2023-09-08 16:09:49 -07:00
- `Initializer.initialize` function isn't public anymore. To initialize SDK call `SDKSynchronizer.prepare` instead.
2023-03-10 03:58:28 -08:00
2023-03-10 06:16:12 -08:00
# 0.19.1-beta
2023-09-08 16:09:49 -07:00
## Checkpoints added
2023-03-10 06:16:12 -08:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2002500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2005000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2007500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2010000.json
````
2023-03-09 10:40:06 -08:00
2023-03-10 06:16:12 -08:00
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2250000.json
````
2023-09-08 16:09:49 -07:00
2023-03-10 06:16:12 -08:00
## Fixed
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
### [#821] `failedToWriteMetadata` at sync startup
2023-09-08 16:09:49 -07:00
No public API changes.
2023-03-09 10:40:06 -08:00
Adds `func shouldClearBlockCacheAndUpdateInternalState() -> BlockHeight?` to `SyncRanges`
so that the compact block processor can advert internal states that are not consistent and
2023-09-08 16:09:49 -07:00
recover from such state.
2023-03-09 10:40:06 -08:00
For concrete examples check out the tests in:
`Tests/NetworkTests/CompactBlockProcessorTests.swift`
2023-03-10 06:16:12 -08:00
## Deleted
Removed linter binary from repository
2023-03-02 13:51:36 -08:00
# 0.19.0-beta
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
### [#816] Improve how rewind call can be used
2023-03-02 04:19:25 -08:00
2023-03-22 05:47:32 -07:00
`SDKSynchronizer.rewind(policy:)` function can be now called anytime. It returns `AnyPublisher` which
2023-09-08 16:09:49 -07:00
completes or fails when the rewind is done. For more details read the documentation for this method
2023-03-02 04:19:25 -08:00
in the code.
2023-03-22 05:47:32 -07:00
### [#801] Improve how wipe call can be used
2023-02-20 01:53:04 -08:00
2023-03-22 05:47:32 -07:00
`SDKSynchronizer.wipe()` function can be now called anytime. It returns `AnyPublisher` which
2023-09-08 16:09:49 -07:00
completes or fails when the wipe is done. For more details read the documentation for this method
2023-02-20 01:53:04 -08:00
in the code.
2023-03-22 05:47:32 -07:00
### [#793] Send synchronizerStopped notification only when sync process stops
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
`synchronizerStopped` notification is now sent after the sync process stops. It's
2023-02-15 06:13:50 -08:00
not sent right when `stop()` method is called.
2023-03-22 05:47:32 -07:00
### [#795] Include sapling-spend file into bundle for tests
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
This is only an internal change and doesn't change the behavior of the SDK. `Initializer` 's
2023-09-08 16:09:49 -07:00
constructor has a new parameter `saplingParamsSourceURL` . Use `SaplingParamsSourceURL.default`
2023-02-16 08:27:49 -08:00
value for this parameter.
2023-03-22 05:47:32 -07:00
### [#764] Refactor communication between components inside th SDK
2023-02-07 05:22:28 -08:00
2023-03-22 05:47:32 -07:00
This is mostly an internal change. A consequence of this change is that all the notifications
2023-02-07 05:22:28 -08:00
delivered via `NotificationCenter` with the prefix `blockProcessor` are now gone. If affected
2023-09-08 16:09:49 -07:00
notifications were used in your code use notifications with the prefix `synchronizer` now.
2023-02-07 05:22:28 -08:00
These notifications are defined in `SDKSynchronizer.swift` .
2023-03-22 05:47:32 -07:00
### [#759] Remove Jazz-generated HTML docs
2023-02-06 09:29:22 -08:00
2023-03-22 05:47:32 -07:00
We remove these documents since they are outdated and we rely on the docs in the code itself.
2023-02-02 08:58:12 -08:00
2023-03-22 05:47:32 -07:00
### [#726] Modularize GRPC layer
2023-02-07 05:22:28 -08:00
2023-03-22 05:47:32 -07:00
This is mostly internal change. `LightWalletService` is no longer public. If it
2023-02-03 02:23:35 -08:00
is used in your code replace it by using `SDKSynchronizer` API.
2023-03-22 05:47:32 -07:00
### [#770] Update GRPC swift library
This updates to GRPC-Swift 1.14.0.
2023-03-02 13:51:36 -08:00
2023-09-08 16:09:49 -07:00
## Checkpoints added:
2023-03-02 13:51:36 -08:00
Mainnet:
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1965000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1967500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1970000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1972500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1975000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1977500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1980000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1982500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1985000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1987500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1990000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1992500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1995000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1997500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2000000.json
````
Testnet:
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2210000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2220000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2230000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2240000.json
````
2023-02-02 08:58:12 -08:00
## File system backed block cache
File system based block cache. Compact blocks will now be stored
2023-09-08 16:09:49 -07:00
on the file system. Caller must provide a `URL` pointing to the
2023-02-02 08:58:12 -08:00
filesystem root directory where the fsBlock cache is. this directory
is expected to contain a `/blocks` sub-directory with the blocks stored
in the convened filename format `{height}-{hash}-compactblock` . This directory
must be granted both read and write permissions.
the file system cache will have a "bookkeeping" database that the rust
2023-09-08 16:09:49 -07:00
welding layer will use to know the state of the cache and locate the
2023-02-02 08:58:12 -08:00
cached compact blocks. This directory can be deleted provided that the
2023-09-08 16:09:49 -07:00
Compactblock processor or Synchronizer are not running. Upon deletion
caller is responsible for initializing these objects for the cache to
be created.
2023-02-02 08:58:12 -08:00
2023-09-08 16:09:49 -07:00
Implementation notes: Users of the SDK will know the path they will
provide but must assume no behavior whatsoever or rely on the cached
information in any way, since it is an internal state of the SDK.
2023-02-02 08:58:12 -08:00
Maintainers might provide no support for problems related to speculative
use of the file system cache. If you consider your application needs any
2023-09-08 16:09:49 -07:00
other information than the one available through public APIs, please
2023-02-02 08:58:12 -08:00
file the corresponding feature request.
### Added
- `Synchronizer.shieldFunds(spendingKey:memo:shieldingThreshold)` shieldingThreshold
was added allowing wallets to manage their own shielding policies.
2023-09-08 16:09:49 -07:00
2023-02-02 08:58:12 -08:00
### Removed
- `InitializerError.cacheDbMigrationFailed`
### Deprecations
CacheDb references that were deprecated instead of **deleted** are pointing out
that they should be useful for you to migrate from using cacheDb.
2023-09-08 16:09:49 -07:00
- `ResourceProvider.cacheDbURL` deprecated but left for one release cycle for clients
2023-02-02 08:58:12 -08:00
to move away from cacheDb.
2023-09-08 16:09:49 -07:00
- `NetworkConstants.defaultCacheDbName` deprecated but left for one release cycle for clients
2023-02-02 08:58:12 -08:00
to move away from cacheDb.
## Other Issues Fixed by this PR:
2023-03-22 05:47:32 -07:00
### [#587] ShieldFundsTests:
2023-02-02 08:58:12 -08:00
- https://github.com/zcash/ZcashLightClientKit/issues/720
- https://github.com/zcash/ZcashLightClientKit/issues/587
- https://github.com/zcash/ZcashLightClientKit/issues/667
2023-03-22 05:47:32 -07:00
### [#443] Delete blocks from cache after processing them
2023-02-02 08:58:12 -08:00
Closes https://github.com/zcash/ZcashLightClientKit/issues/443
2023-03-22 05:47:32 -07:00
### [#754] adopt name change in libzashlc package that fixes a deprecation in SPM
2023-02-02 08:58:12 -08:00
Closes https://github.com/zcash/ZcashLightClientKit/issues/754
2023-02-07 12:03:02 -08:00
# 0.18.1-beta
2023-03-22 05:47:32 -07:00
### [#767] implement getRecipients() for Synchronizer.
2023-09-08 16:09:49 -07:00
2023-02-07 12:03:02 -08:00
This implements `getRecipients()` function which retrieves the possible
recipients from a sent transaction. These can either be addresses or
internal accounts depending on the transaction being a shielding tx
or a regular outgoing transaction.
2023-03-22 05:47:32 -07:00
Other changes:
- Fix version of zcash-light-client-ffi to 0.1.1
- Enhance error reporting on a test make Mock comply with protocol
2023-01-30 14:33:20 -08:00
# 0.18.0-beta
## Farewell Cocoapods.
2023-03-22 05:47:32 -07:00
### [#612] Remove Support for Cocoapods (#706)
2023-01-30 14:33:20 -08:00
It wouldn't have been possible to release an SDK without you, pal.
We are moving away from Cocoapods since our main dependencies, SwiftGRPC
2023-09-08 16:09:49 -07:00
and SWIFT-NIO are. We don't have much of a choice.
2023-01-30 14:33:20 -08:00
We've been communicating this for a long time. Although, if you really need Cocoapods,
please let us know by opening an issue in our repo and we'll talk about it.
2023-09-08 16:09:49 -07:00
### Checkpoints added
2023-01-30 14:33:20 -08:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1937500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1940000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1942500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1945000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1947500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1950000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1952500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1955000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1957500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1960000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1962500.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2180000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2190000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2200000.json
````
## Bugfixes
2023-01-25 12:06:31 -08:00
2023-03-22 05:47:32 -07:00
### [#645] Default rewind after ReOrg is 20 blocks when it should be 10
This fixes an issue where the default reorg was 20 blocks rewind instead of 10. The
2023-01-25 12:06:31 -08:00
reorg count was incremented before calling the rewind height computing function.
2023-01-30 14:33:20 -08:00
2023-02-02 08:58:12 -08:00
## Use Librustzcash database views to query and represent transactions
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
### [#556] Change data structures which represent transactions.
2023-01-23 00:53:19 -08:00
2023-09-08 16:09:49 -07:00
These data types are gone: `Transaction` , `TransactionEntity` , `ConfirmedTransaction` ,
`ConfirmedTransactionEntity` . And these data types were added: `ZcashTransaction.Overview` ,
`ZcashTransaction.Received` , `ZcashTransaction.Sent` .
2023-01-23 00:53:19 -08:00
2023-03-22 05:47:32 -07:00
New data structures are very similar to the old ones. Although there many breaking changes.
2023-09-08 16:09:49 -07:00
The APIs of the `SDKSynchronizer` remain unchanged in their behavior. They return different
data types. **When adopting this change, you should check which data types are used by methods
2023-01-23 00:53:19 -08:00
of the `SDKSynchronizer` in your code and change them accordingly.**
2023-09-08 16:09:49 -07:00
New transaction structures no longer have a `memo` property. This responds to the fact that
Zcash transactions can have either none or multiple memos. To get memos for the transaction
2023-01-23 00:53:19 -08:00
the `SDKSynchronizer` has now new methods to fetch those:
2023-09-08 16:09:49 -07:00
- `func getMemos(for transaction: ZcashTransaction.Overview) throws -> [Memo]` ,
2023-03-22 05:47:32 -07:00
- `func getMemos(for receivedTransaction: ZcashTransaction.Received) throws -> [Memo]`
- `func getMemos(for sentTransaction: ZcashTransaction.Sent) throws -> [Memo]`
2023-09-08 16:09:49 -07:00
2023-02-02 08:58:12 -08:00
## CompactBlockProcessor is now internal
2023-03-22 05:47:32 -07:00
### [#671] Make CompactBlockProcessor Internal.
2023-01-23 00:53:19 -08:00
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
The CompactBlockProcessor is no longer a public class/API. Any direct access will
2023-01-12 04:05:11 -08:00
end up as a compiler error. Recommended way how to handle things is via `SDKSynchronizer`
from now on. The Demo app has been updated accordingly as well.
2023-01-23 00:53:19 -08:00
2023-01-30 14:33:20 -08:00
## We've changed how we download and scan blocks. Status reporting has changed.
2023-09-08 16:09:49 -07:00
### [#657] Change how blocks are downloaded and scanned.
2023-01-23 00:53:19 -08:00
2023-03-22 05:47:32 -07:00
In previous versions, the SDK first downloaded all the blocks and then it
2023-09-08 16:09:49 -07:00
scanned all the blocks. This approach requires a lot of disk space. The SDK now
2023-01-05 06:10:45 -08:00
behaves differently. It downloads a batch of blocks (100 by default), scans those, and
2023-01-09 04:29:43 -08:00
removes those blocks from the disk. And repeats this until all the blocks are processed.
2023-01-23 00:53:19 -08:00
2023-03-22 05:47:32 -07:00
`SyncStatus` was changed. `.downloading` , `.validating` , and `.scanning` symbols
2023-09-08 16:09:49 -07:00
were removed. And the `.scanning` symbol was added. The removed phases of the sync
process are now reported as one phase.
2023-01-23 00:53:19 -08:00
2023-03-22 05:47:32 -07:00
Notifications were also changed similarly. These notifications were
2023-01-09 04:29:43 -08:00
removed: `SDKSynchronizerDownloading` , `SDKSyncronizerValidating` , and `SDKSyncronizerScanning` .
And the `SDKSynchronizerSyncing` notification was added. The added notification replaces
2023-01-05 06:10:45 -08:00
the removed notifications.
2023-09-08 16:09:49 -07:00
## New Wipe Method to delete wallet information. Use with care.
### [#677] Add support for wallet wipe into SDK. Add new method `Synchronizer.wipe()`.
2023-01-23 00:53:19 -08:00
2023-01-30 14:33:20 -08:00
## Benchmarking APIs: A primer
2023-09-08 16:09:49 -07:00
### [#663] Foundations for the benchmarking/performance testing in the SDK.
2023-01-23 00:53:19 -08:00
2023-03-22 05:47:32 -07:00
This change presents 2 building blocks for the future automated tests, consisting
2023-09-08 16:09:49 -07:00
of a new SDKMetrics interface to control flow of the data in the SDK and
new performance (unit) test measuring synchronization of 100 mainnet blocks.
2022-12-19 06:15:23 -08:00
2023-02-03 09:12:35 -08:00
# 0.17.6-beta
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
### [#756] 0.17.5-beta updates to libzcashlc 0.2.0 when it shouldn't
2023-02-03 09:12:35 -08:00
Updated checkpoints to the ones present in 0.18.0-beta
2023-09-08 16:09:49 -07:00
2023-01-03 12:55:02 -08:00
# 0.17.5-beta
2023-09-08 16:09:49 -07:00
Update checkpoints
2023-01-03 12:55:02 -08:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1912500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1915000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1917500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1920000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1922500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1925000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1927500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1930000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1932500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1935000.json
````
Tesnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2150000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2160000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2170000.json
````
2023-01-04 05:49:46 -08:00
2022-12-14 13:12:11 -08:00
# 0.17.4-beta
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
### [#665] Fix testShieldFunds() `get_transparent_balance` error
2023-09-08 16:09:49 -07:00
updates `libzcashlc` to `0.1.1` to fix an error where getting a
2022-12-14 13:12:11 -08:00
transparent balance on an empty database would fail.
2023-03-22 05:47:32 -07:00
2022-12-12 12:39:05 -08:00
# 0.17.3-beta
2023-09-08 16:09:49 -07:00
2023-03-22 05:47:32 -07:00
### [#646] SDK sync process resumes to previously saved block height
2023-09-08 16:09:49 -07:00
This change adds an internal storage test on UserDefaults that tells the
2022-12-12 12:44:56 -08:00
SDK where sync was left off when cancelled whatever the reason for it
to restart on a later attempt. This fixes some issues around syncing
long block ranges in several attempts not enhancing the right transactions
because the enhancing phase would only consider the last range scanned.
2023-09-08 16:09:49 -07:00
This only fixes the situation where rewinding the SDK would cause the
whole database to be cleared instead and syncing to be restarted from
2022-12-12 12:44:56 -08:00
scratch (issue [#660]).
- commit `3b7202c` Fix `testShieldFunds()` dataset loading issue. (#659)
2023-09-08 16:09:49 -07:00
## Checkpoints added
2022-12-12 12:39:05 -08:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1897500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1900000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1902500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1905000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1907500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1910000.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2140000.json
````
2022-12-12 05:00:31 -08:00
New Checkpoint for `testShieldFunds()`
```
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1631000.json
```
2022-12-06 08:01:59 -08:00
# 0.17.2-beta
2023-09-08 16:09:49 -07:00
- [#660] Fix the situation when any rewind causes full rescan
2022-12-06 08:01:59 -08:00
2022-11-30 06:08:48 -08:00
# 0.17.1-beta
2023-09-08 16:09:49 -07:00
- [#651] Change the rewind behavior. Now if the rewind is used while the sync process is in progress then an exception is thrown.
- [#616] Download Stream generates too many updates on the main thread
**WARNING** : Notifications from SDK are no longer delivered on main thread.
- [#585] Fix RewindRescanTests (#656)
- Cleanup warnings (#655)
- [#637] Make sapling parameter download part of processing blocks (#650)
- [#631] Verify SHA1 correctness of Sapling files after downloading (#643)
- Add benchmarking info to SyncBlocksViewController (#649)
- [#639] Provide an API to estimate TextMemo length limit correctly (#640)
- [#597] Bump up SQLite Swift to 0.14.1 (#638)
- [#488] Delete cache db when sync ends
## Checkpoints added
Mainnet
2022-11-30 06:08:48 -08:00
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1882500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1885000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1887500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1890000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1892500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1895000.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2120000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2130000.json
````
2023-09-08 16:09:49 -07:00
# 0.17.0-beta
- [#321] Validate UA
- [#384] Adopt Type Safe Memos in the FFI and SDK
- [#355] Update lib.rs to lastest librustzcash master
- [#373] Demo App shows ZEC balances in scientific notation
- [#380] One of the initAccountsTable() is dead code (except for tests)
- [#374] XCTest don't load Resources from the module's bundle
- [#375] User can't go twice in a row to SendFundsViewController
- [#490] Rebase long dated PRs on top of the feature branches
- [#510] Change references of Shielded address to Sapling Address
- [#511] Derivation functions should only return a single resul
- [#512] Remove derivation of t-address from pubkey
- [#520] Use UA Test Vector for Recipient Test
- [#544] Change Demo App to use USK and new rolling addresses
- [#602] Improve error logging for InitializerError and RustWeldingError
- [#579] Fix database lock
- [#595] Update Travis to use Xcode 14
- [#592] Fix various tests and deleted some that are not useful anymore
- [#523] Make a CompactBlockProcessor an Actor
- [#593] Fix testSmallDownloadAsync test
- [#577] Fix: reduce batch size when reaching increased load part of the chain
- [#575] make Memo and MemoBytes parameters nullable so they can be omitted when sending to transparent receivers.
- commit `1979e41` Fix pre populated Db to have transactions from darksidewalletd seed
- commit `a483537` Ensure that the persisted test database has had migrations applied.
- commit `1273d30` Clarify & make regular how migrations are applied.
- commit `78856c6` Fix: successive launches of the application fail because the closed range of the migrations to apply would be invalid (lower range > that upper range)
- commit `7847a71` Fix incorrect encoding of optional strings in PendingTransaction.
- commit `789cf01` Add Fee field to Transaction, ConfirmedTransaction, ReceivedTransactions and Pen dingTransactions. Update Notes DAOs with new fields
- commit `849083f` Fix UInt32 conversions to SQL in PendingTransactionDao
- commit `fae15ce` Fix sent_notes.to_address column reference.
- commit `23f1f5d` Merge pull request #562 from zcash/fix_UnifiedTypecodesTests
- commit `30a9c06` Replace `db.run` with `db.execute` to fix migration issues
- commit `0fbf90d` Add migration to re-create pending_transactions table with nullable columns.
- commit `36932a2` Use PendingTransactionEntity.internalAccount for shielding.
- commit `f5d7aa0` Modify PendingTransactionEntity to be able to represent internal shielding tx.
- [#561] Fix unified typecodes tests
- [#530] Implement ability to extract available typecodes from UA
## Checkpoints added
Mainnet
2022-11-15 04:39:34 -08:00
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1872500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1875000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1877500.json
2022-11-16 15:44:10 -08:00
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1880000.json
2022-11-15 04:39:34 -08:00
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2110000.json
````
2022-11-07 09:21:22 -08:00
# 0.17.0-beta.rc1
2023-09-08 16:09:49 -07:00
## Checkpoints added
2022-11-07 09:21:22 -08:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1852500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1855000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1857500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1860000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1862500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1865000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1867500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1870000.json
````
2023-09-08 16:09:49 -07:00
2022-11-07 09:21:22 -08:00
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2020000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2030000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2040000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2050000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2060000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2070000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2080000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2090000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2100000.json
````
2022-11-04 14:30:43 -07:00
# 0.17.0-alpha.5
2023-09-08 16:09:49 -07:00
- update to libzcashlc 0.1.0-beta.3. This fixes an issue spending change notes
2022-11-04 11:28:13 -07:00
# 0.17.0-alpha.4
2023-09-08 16:09:49 -07:00
- update to libzcashlc 0.1.0-beta.2
2022-11-04 11:28:13 -07:00
2022-11-01 10:01:26 -07:00
# 0.17.0-alpha.3
2023-09-08 16:09:49 -07:00
- [#602] Improve error logging for InitializerError and RustWeldingError
2022-11-01 10:01:26 -07:00
2022-10-31 04:37:11 -07:00
# 0.17.0-alpha.2
2023-09-08 16:09:49 -07:00
- [#579] Fix database lock
- [#592] Fix various tests and deleted some that are not useful anymore
- [#581] getTransparentBalanceForAccount error not handled
2022-10-02 19:11:17 -07:00
2022-11-01 10:01:26 -07:00
# 0.17.0-alpha.1
2023-09-08 16:09:49 -07:00
2022-11-01 10:01:26 -07:00
See MIGRATING.md
2022-10-02 19:11:17 -07:00
2022-10-28 10:20:52 -07:00
# 0.16-13-beta
2023-09-08 16:09:49 -07:00
- [#597] SDK does not build with SQLite 0.14
2022-10-21 14:47:47 -07:00
# 0.16.12-beta
2023-09-08 16:09:49 -07:00
## Checkpoints added:
2022-10-21 14:47:47 -07:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1832500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1835000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1837500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1840000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1842500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1845000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1847500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1850000.json
2023-09-08 16:09:49 -07:00
````
2022-10-04 15:52:27 -07:00
# 0.16.11-beta
2023-09-08 16:09:49 -07:00
## Checkpoints added:
2022-10-04 15:52:27 -07:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1812500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1815000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1817500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1820000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1822500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1825000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1827500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1830000.json
````
2023-09-08 16:09:49 -07:00
2022-09-16 13:41:47 -07:00
# 0.16.10-beta
2022-10-02 19:11:17 -07:00
2023-09-08 16:09:49 -07:00
- [#532] [0.16.x-beta] Download does not stop correctly
Issue Reported:
When the synchronizer is stopped, the processor does not cancel
the download correctly. Then when attempting to resume sync, the
synchronizer is not on `.stopped` and can't be resumed
2022-09-16 13:41:47 -07:00
2023-09-08 16:09:49 -07:00
this doesn't appear to happen in `master` branch that uses
structured concurrency for operations.
2022-09-16 13:41:47 -07:00
2023-09-08 16:09:49 -07:00
Fix:
2022-09-16 13:41:47 -07:00
2023-09-08 16:09:49 -07:00
This commit makes sure that the download streamer checks cancelation
before processing any block, or getting called back to report progress
## Checkpoints added
2022-09-16 13:41:47 -07:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1807500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1810000.json
````
2022-10-02 19:11:17 -07:00
2022-09-12 09:18:40 -07:00
# 0.16.9-beta
2023-09-08 16:09:49 -07:00
## Checkpoints added
2022-09-12 09:18:40 -07:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1787500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1790000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1792500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1795000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1797500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1800000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1802500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1805000.json
````
2023-09-08 16:09:49 -07:00
2022-08-26 09:21:42 -07:00
# 0.16.8-beta
2023-09-08 16:09:49 -07:00
## Checkpoints added
2022-08-26 09:21:42 -07:00
Mainnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1775000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1777500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1780000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1782500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1785000.json
````
Testnet
````
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2000000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2010000.json
````
2022-08-15 14:38:52 -07:00
# 0.16.7-beta
2023-09-08 16:09:49 -07:00
- [#455] revert queue priority downgrade changes from [#435] (#456)
This reverts queue priority changes from commit `a5d0e447748257d2af5c9101391dd05a5ce929a2` since we detected it might prevent downloads to be scheduled in a timely fashion
## Checkpoints added
2022-08-15 14:38:52 -07:00
Mainnet
```
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1757500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1760000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1762500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1765000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1767500.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1770000.json
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1772500.json
```
Testnet
```
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/1980000.json
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/1990000.json
```
2022-08-02 05:11:46 -07:00
# 0.16.6-beta
2023-09-08 16:09:49 -07:00
- There's a problem with 0.16.5-beta hash. Re-releasing
2022-07-31 05:42:12 -07:00
# 0.16.5-beta
2023-09-08 16:09:49 -07:00
2022-07-31 05:42:12 -07:00
- [#449] Use CompactBlock Streamer download instead of batch downloads (#451)
2023-09-08 16:09:49 -07:00
This increases the speed of downloads significantly while reducing the memory footprint.
2022-07-31 05:42:12 -07:00
- [#435] thread sanitizer issues (#448)
2023-09-08 16:09:49 -07:00
Issues related to Thread Sanitizer warnings
- Adds new Checkpoint for 1755000 on mainnet
2022-07-31 05:42:12 -07:00
2022-07-29 07:41:14 -07:00
# 0.16.4-beta
2023-09-08 16:09:49 -07:00
2022-07-29 07:41:14 -07:00
- [#444] Syncing Restarts to zero when the wallet is wiped and synced from zero in one go. (#445)
- [#440] Split constants for Download Batches and Scanning Batches (#441)
2023-09-08 16:09:49 -07:00
This change was done to aleviate memory load when downloading large blocks.
Default download batch constant is deprecated in favor of `DefaultDownloadBatch` and
`DefaultScanningBatch`
2022-07-26 07:14:26 -07:00
# 0.16.3-beta
2023-09-08 16:09:49 -07:00
- [#436] Add checkpoint with a lower interval on mainnet (#437)
This adds checkpoint at a 2500 block interval to help reduce scan times
on new wallets
2022-07-15 14:54:00 -07:00
# 0.16.2-beta
2023-09-08 16:09:49 -07:00
2022-07-15 14:54:00 -07:00
- [#418] "Swift.EncodingError.InvalidValue Encoding an Int64 is not supported" (#430)
2023-09-08 16:09:49 -07:00
This fixes Cocoapods clients pointing to SQLite 0.12.2 instead of using 0.13
the former does not support custom encoding of Int64 and makes Zatoshi break
2022-07-15 14:54:00 -07:00
- [#428] make some helpers publicly accessible (#429)
2023-09-08 16:09:49 -07:00
2022-07-14 16:30:03 -07:00
# 0.16.1-beta
2023-09-08 16:09:49 -07:00
2022-07-14 16:30:03 -07:00
- [#422] Make Zatoshi extensions of `NSDecimalNumber` public (#423)
- [#419] Fix Unavailable Transport 14 when attempting to sync (#426)
2023-09-08 16:09:49 -07:00
this changes timeout settings and Keepalive changes.
Recommended settings for lightwalletd.com are 60000ms singleCallTimeout
on `LightWalletEndpoint`
2022-07-14 16:30:03 -07:00
- [#416] Update GRPC to 1.8.2 (#421)
2023-09-08 16:09:49 -07:00
2022-07-13 11:23:04 -07:00
# 0.16.0-beta
2023-09-08 16:09:49 -07:00
This version changes the way wallet birthdays are handled. `WalletBirthday`
struct is not longer public and has been renamed to `Checkpoint` .
`SynchronizerError` has a default `LocalizedError` compliance to
2022-07-13 11:23:04 -07:00
help debug errors and display them to the user. This is a workaround
2023-09-08 16:09:49 -07:00
to get rid of cryptic errors that are being reported to maintainers and
2022-07-13 11:23:04 -07:00
are subject to change in future versions.
- [#392] Synchronizer error 8. when syncing. (#413)
- [#398] Make WalletBirthday an internal type (#414)
- [#411] add Fresh checkpoints for release 0.16.0-beta (#412)
- [#406] some BirthdayTests fail for MacOS target (#410)
- [#404] Configure GRPC KeepAlive according to docs (#409)
2023-09-08 16:09:49 -07:00
2022-07-22 05:23:26 -07:00
# 0.15.1-beta (hotfix)
2023-09-08 16:09:49 -07:00
- [#432] create 0.15.1-beta with SQLite 0.13
this build is a hotfix for cocoapods. which has the wront SQLite dependency
It moves it from 0.12.2 to 0.13
2022-07-22 05:23:26 -07:00
2022-06-29 16:29:36 -07:00
# 0.15.0-beta
2023-09-08 16:09:49 -07:00
2022-06-29 16:29:36 -07:00
** IMPORTANT ** This version no longer supports iOS 12
We've made a decision to make iOS 13 the minimum deployment target
in order to adopt and support Structured Concurrency and other important features
2023-09-08 16:09:49 -07:00
of the Swift language like Combine.
2022-06-29 16:29:36 -07:00
- [#363] bump iOS minimum deployment target to iOS 13.0 (#407)
- [#381] Move Zatoshi and Amount Types to the SDK (#396)
2023-09-08 16:09:49 -07:00
This deprecates many methods on `SDKSynchronizer` using Zatoshi for amounts
instead of `Int64` . This exposes number formatters that conveniently provide
decimal conversion from `Zatoshi` to "human-readable" ZEC decimal numbers.
2022-06-29 16:29:36 -07:00
- [#397] Checkpoint format that supports NU5 TreeStates (#399)
2023-09-08 16:09:49 -07:00
`WalletBirthday` now have both `saplingTree` and `orchardTree` values. The
latter being Optional for checkpoints prior to Orchard activation height.
2022-06-29 16:29:36 -07:00
- [#401] DecodingError when refreshing pending transactions (#402)
- [#394] Update swift-grpc to 1.8.0 (#395)
2022-05-24 17:40:15 -07:00
# 0.14.0-beta
2023-09-08 16:09:49 -07:00
2022-05-24 17:40:15 -07:00
- [#388] Integrate libzcashlc 0.0.3 to support v5 transaction parsing on NU5 activation
2023-09-08 16:09:49 -07:00
2022-05-06 10:45:20 -07:00
# 0.13.1-beta
2023-09-08 16:09:49 -07:00
2022-05-06 10:45:20 -07:00
- [#326] Load Checkpoint files from bundle.
2023-09-08 16:09:49 -07:00
This is great news! now checkpoints are loaded from files on the bundle instead of
hardcoding them on source files. This will make updates easier, less error prone,
and mostly automatable.
2022-05-06 10:45:20 -07:00
- PR #356 Adds a caveat to SPM / Xcode integration in Readme
2023-09-08 16:09:49 -07:00
- [#367] Darksidewalletd for testing `shield_funds`
2022-05-06 10:45:20 -07:00
- [#351] Write a Commit message Section for CONTRIBUTING.md
2023-09-08 16:09:49 -07:00
2022-03-04 12:09:39 -08:00
# 0.13.0-beta.2
2023-09-08 16:09:49 -07:00
- [Enhancement] Fix: make BlockProgress `.nullProgress` static property public for ECC Reference Wallet CombineSynchonizer
2022-03-02 15:37:33 -08:00
# 0.13.0-beta.1
2023-09-08 16:09:49 -07:00
2022-03-02 15:37:33 -08:00
- [Enhancement] PR #338 . Rust-less build. Check for new documentation on how to benefit from this huge change
- [Enhancement] Swift Package Manager Support!
# 0.12.0-beta.6
2023-09-08 16:09:49 -07:00
2022-03-02 15:37:33 -08:00
- [Enhancement] Fresh checkpoints
# 0.12.0-beta.5
2023-09-08 16:09:49 -07:00
2022-03-02 15:37:33 -08:00
- FIX fixes to Apple Silicon M1 builds
# 0.12.0-beta.4
2023-09-08 16:09:49 -07:00
2022-03-02 15:37:33 -08:00
- Fix: add parameter to ensure 10 confs when shielding.
# 0.12.0-beta.2
2023-09-08 16:09:49 -07:00
2022-03-02 15:37:33 -08:00
- [Fix] Issue #293 MaxAttemptsReached error surfaces when it's actually dismissable and the wallet is working fine
- [Enhancement] Add test to verify that a checksum invalid t-address fails to validate.
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.11
2023-09-08 16:09:49 -07:00
- [Enhancement] Network Agnostic build
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.10
2023-09-08 16:09:49 -07:00
- Fix: UNIQUE Constraint bug when coming from background. fixed and logged warning to keep investigating
- [New] latestScannedHeight added to SDKSynchronizer
# 0.12.0-alpha.9
- CompactBlockProcessor states don't propagate correctly
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.8
2023-09-08 16:09:49 -07:00
- target height reporting enhancements
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.7
2023-09-08 16:09:49 -07:00
- improve status publishing for SDKSynchronizer
- [FIX] missingStartHeight error when scanning from sapling activation
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.6
2023-09-08 16:09:49 -07:00
- Make sapling parameters default url public
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.5
2023-09-08 16:09:49 -07:00
- add output files to build phase to avoid CI failures
- fix lint warnings
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.4
2023-09-08 16:09:49 -07:00
- Tests
- [Fix] Issue #289 main thread lock when validating the server
- [Fix] info single call times out all the time
- make sure operations cancel in a timely manner
- FigureNextBatchOperation.swift tests
- make range function static
2021-07-29 10:11:21 -07:00
# tag: 0.12.0-alpha.3
2023-09-08 16:09:49 -07:00
- getInfo service times out too soon
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.2
2023-09-08 16:09:49 -07:00
- FIX: processor stalls on reconnection
- Fix warnings
2021-07-29 10:11:21 -07:00
# 0.12.0-alpha.1
2023-09-08 16:09:49 -07:00
- Replace Status for SyncStatus
- fix tests
- Fix Demo App
- fetch operation does not cancel when the previous operations do
- Fix: operations start when they have been canceled already
- fix progress being > 1
- Synchronizing by phases, preview
- Add fetch UTXO operation to compact block processor
- CompactBlock batch download and stream download operation tests pass.
# 0.11.2
- [FIX] Fix build for Apple Silicon (M1) #285 by @ealymbaev
2021-07-30 09:44:12 -07:00
2021-05-24 07:56:05 -07:00
# 0.11.1
2023-09-08 16:09:49 -07:00
- [Enhancement] Rewind API has a `.quick` option
2021-05-19 14:48:49 -07:00
# 0.11.0
2023-09-08 16:09:49 -07:00
- [New] Shield Funds Feature
- [New] Get Transparent Balance for account
- [New] Z -> T Restore: transactions to transparent addresses are now restored when the user restores from seed or re-scans the wallet
- [New] [Preview] Unified Viewing Key Structure
- [New] Abstractions over Transparent Address and ShieldedAddress
- [FIX] `CompactBlockProcessor` validates LightdInfo from Lightwalletd
- [Enhancement] Add BlockTime to SDKSynchronizer updates
- [New] Db Migration for UVKs
- [FIX] Rewind API breaks on quick re-scan
- [Update] 37f2232: Update to gRPC-Swift 1.0.0
2021-05-19 14:48:49 -07:00
2021-04-16 15:33:28 -07:00
# 0.10.2
2023-09-08 16:09:49 -07:00
- Adds Mainnet and Testnet Checkpoints
2021-04-16 15:33:28 -07:00
# 0.10.1
2023-09-08 16:09:49 -07:00
- Adds Mainnet Checkpoints
2021-03-27 14:42:38 -07:00
# 0.10.0
2023-09-08 16:09:49 -07:00
- [critical] Fix #255 #261 outgoing no-change transactions not reported as mined
- [NEW] Rewind API. Allow Wallet developers to rewind synchronizer and (eventually) rescan
- [NEW] Rust Welding 0.0.6 - using rust crates 0.5 and Data Access API
- [NEW] updated Logger API to use StaticString on line and function as many logging libraries do
- [FIX] Mac OS BIG SUR build fixed
2021-03-27 14:42:38 -07:00
2021-03-02 09:53:27 -08:00
# 0.9.4
2023-09-08 16:09:49 -07:00
- New: added viewing key derivation to Derivation Tool
- Issue #252 - blockheight progress is latest height instead of upperbound of last scanned range
2021-03-02 09:53:27 -08:00
# 0.9.3
2023-09-08 16:09:49 -07:00
- added new checkpoints for mainnet
2021-03-02 09:53:27 -08:00
# 0.9.2
2023-09-08 16:09:49 -07:00
- Fix: memo string handling
2021-03-02 09:53:27 -08:00
# 0.9.1
2023-09-08 16:09:49 -07:00
- Fix: issue #240 reorg not catched because of ARC dealloc
2021-03-02 09:53:27 -08:00
# 0.9.0
2023-09-08 16:09:49 -07:00
- implement ZIP-313 reducing fees to 1000 zatoshi
2021-03-02 09:53:27 -08:00
# 0.8.0
2023-09-08 16:09:49 -07:00
- [IMPORTANT] Issue #237 Untie SDKSynchronizer from UIApplication Events
- Fix #236 fix CI problem
- Issue #176 operation gets cancelled when backgrounding
- Issue #136 on https://github.com/zcash/zcash-ios-wallet
- Issue #123 on https://github.com/zcash/zcash-ios-wallet
- PR from @ant013: Forcibly change the state to stopped when the handle cancels any task in OperationQueue
2021-03-02 09:53:27 -08:00
# 0.7.2
2023-09-08 16:09:49 -07:00
- Checkpoint for Mainnet
2021-03-02 09:53:27 -08:00
# 0.7.1
2023-09-08 16:09:49 -07:00
- Issue 208 - Improve API method to request transaction history
- Added Found transaction notification to SDK Synchronizer
- Add darksidewalletd tests for foundTransactions notifications
- [CRITICAL] Fix sqlite crate canopy issue. Add a new checkpoint to aid testing
- FIX - UNIQUE constraint violation when an operation failed
2021-03-02 09:53:27 -08:00
# 0.7.0
2023-09-08 16:09:49 -07:00
## Improvements
- #22 Sapling parameter downloader
- #201 Throw exception when seed can't be provided
- #204 Add DerivationTool to Initializer
- #205 Add IVK initialization capabilities to Initializer
- #206 [community request @esengulov ] add extension function to identify inbound v. outbound txs on a client side
- #207 [community request @esengulov ] Add extension function for timestamps on transactions
2021-03-02 09:53:27 -08:00
# 0.6.4
2023-09-08 16:09:49 -07:00
- FIX: transaction details listing duplicate transactions on certain transactions with several outputs and inputs
- added checkpoints
2021-03-02 09:53:27 -08:00
# 0.6.3
2023-09-08 16:09:49 -07:00
- updated to gRPC-Swift 1.0.0-alpha19
- readme warning on issues with rustc 1.46.0
- improvement on build system to help switch network environment faster
2021-03-02 09:53:27 -08:00
# 0.6.2
2023-09-08 16:09:49 -07:00
- added new checkpoints for testnet and mainnet
2021-03-02 09:53:27 -08:00
# 0.6.1
2023-09-08 16:09:49 -07:00
- Updated librustzcash to support Canopy on testnet
2021-03-02 09:53:27 -08:00
# 0.6.0
2023-09-08 16:09:49 -07:00
- Error handling improvements (breaks API)
2021-03-02 09:53:27 -08:00
# 0.5.3
2023-09-08 16:09:49 -07:00
- Fixes #158 #132 #134 #135 #133
2021-03-02 09:53:27 -08:00
# 0.5.2
2023-09-08 16:09:49 -07:00
- update Librustzcash to point to master repo!
- enhance pending transaction handling (#160)
- Added memo demo!
- automation!
2021-03-02 09:53:27 -08:00
# 0.5.1
2023-09-08 16:09:49 -07:00
- remove MnemonicKit dependency from tests
2021-03-02 09:53:27 -08:00
# 0.5.0
2023-09-08 16:09:49 -07:00
- Enable heartwood. (#138)
- Update LICENSE
- Switch to MnemonicSwift (#142)
- Issue 136 Null bytes in strings effectively truncate the string from … (#140)
- Fixes issue 136 - expiry height -1 on pending transactions (#139)
- Advanced Re Org tests + Balance tests (#137)
- CI doc mods (#116)
- Update issue templates
- Replace the threat model with the one on readthedocs (#131)
- Add bug report and feature request issue templates
- remove commit lock from podfile
- Canonical empty memo test (#112)
- Memo tests (#111)
- Decrypt transactions. Full wallet restore (#110)
2021-03-02 09:53:27 -08:00
# 0.4.0
2023-09-08 16:09:49 -07:00
- Updated GRPC dependency to Swift GRPC NIO. this change does not break any public interfaces
2021-03-02 09:53:27 -08:00
# 0.3.2
2023-09-08 16:09:49 -07:00
- reorg testing (#104)
- Docs - Fix typos and cleanup (#103)
- ZcashRustBackend.decryptAndStoreTransaction()
- Enhance logging on compact block processor
- parameterize helper method with constant
2021-03-02 09:53:27 -08:00
# 0.3.1
2023-09-08 16:09:49 -07:00
- Reverted -> update librustzcash to commit 52d8b436300724bc4b83aa4a0c659ab34c3dbce7
2021-03-02 09:53:27 -08:00
# 0.3.0
2023-09-08 16:09:49 -07:00
- testing: fix test crash
- fix: updated sample code where interface changed
- ENHANCEMENT: Retry support + error management
- FIX: processor crashes when lightwalletd has not caught up with latest height
- Better error handing when scanning fails
- [IMPORTANT] update librustzcash to commit 52d8b436300724bc4b83aa4a0c659ab34c3dbce7
- improved docs Move read.me up a directory
- NEW: Integrate logging capabilities
- FIX: account initialization error
- ENHANCEMENT: Mainnet checkpoints (#88)
2021-03-02 09:53:27 -08:00
# 0.2.1
2023-09-08 16:09:49 -07:00
2021-03-02 09:53:27 -08:00
**IMPORTANT: this version contains a critical fix, upgrade to it as soon as possible**
2023-09-08 16:09:49 -07:00
- [CRITICAL] Fixed a hardcoded COIN_TYPE on lib.rs
- added mainnet checkpoints
2021-03-02 09:53:27 -08:00
2023-09-08 16:09:49 -07:00
# 0.2.0
2021-03-02 09:53:27 -08:00
2023-09-08 16:09:49 -07:00
**Warning: These changes might break interfaces in your project.**
2021-03-02 09:53:27 -08:00
2023-09-08 16:09:49 -07:00
- upgraded to note-spending-v7
- fixed memory leak and blockrange error
- fixed memory cycles and leaks
- Fixed capture blocks retaining references
- fixed bug where compact block processor wouldn't reschedule
- add address validation functionality to Initializer
- Fixes to initializer, added v7 methods, documented API. Fixed compact block processor not initializing correctly upon new wallets.
- use "zip32 compliant" seed on demo app
2021-03-02 09:53:27 -08:00
# 0.1.3
2023-09-08 16:09:49 -07:00
2021-03-02 09:53:27 -08:00
Changes to createToAddress function to fix issues with paths that have spaces
Synchronizer:
change from computed variables to functions to allow throwing errors to clients
https://github.com/zcash/ZcashLightClientKit/pull/84