- synchronizer offline tests updated so it compiles, review is requested in a different ticket
- ValidateAction tests added
- BlockValidator mock generated
Closes#1051
- new proposal for the progress computation
- OverallProgress value is passed to the Synchronizer as a Float
- OverallProgress is a result of fetch, scan and enhance operations
- Order of actions no longer influences the computation
- Actions report partial updates, CompactBlockProgress actor holds current state and computes the OverallProgress
- draft of the fetching
[#1045] Implement FetchUTXOsAction
- updated the way Actions communicate data back to the CBP
- used this mechanism to pass result of utxos fetch so it's passed to the SDKSynchronizer as an Event
- For now I created `CompactBlockProcessorNG` where I started with
implementation of the state machine. I did it to not break the rest of
the SDK. This change will be merged to the feature branch. And before
it is merged to `main` branch code from `CompactBlockProcessorNG` will
be moved to `CompactBlockProcessor`.
- The new code is not used. It just shows and explains how it is done.
It is proof of concept.
- I did put either commented current code or comment to some places to
explain what should be done there.
- New important data types:
- `ActionContext` is context that can hold any data that needs to be
shared between actions. For example sync ranges or current state.
- `CBPState` is state of the `CompactBlockProcessor`. Each state is
handled by one action. This doesn't apply to terminal states like
`finished` or `failed`.
- `ActionProgress` is very similar to `CompactBlockProgress`.
Different actions reports progress differently and `ActionProgress`
represents this.
- `Action` is protocol that defines API of an action. It has one run
method that executes the code of the action
- CBP first creates actions for (almost) each state in `makeActions()`
method. Then the "magic" is done in `CompactBlockProcessorNG.run()` method.
Here is main loop which takes action for current state and execute it.
It's expected that action does it's work and then updates the context
with new state. And this happens until some terminal state
(`finished`, `failed`, `stopped`) is reached.
- After the transition to state machine API of the
`CompactBlockProcessor` should stay the same. No changes should be
required in `SDKSynchronizer`.
fixes docs and deletes fixme for [#783]
closes#783
[#785]: Fix test testSingleNoteNoChangeTransaction
[#786] fix testVerifyChangeTransaction
Closes#786
[#790] mark as fixed testRewindAfterSendingTransaction
Closes#790
[#865] Fix test testStoringTenSandblastedBlocks
Closes#865
[#791] Fix test testRewindAfterSendingTransaction
Closes#791
[#783]: Fix test testMaxAmountSendBroadcast
Closes#783
* [#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.
closes#1033closes#781
* Fix tests
- new ZcashError.unknown that wraps and handles any Error added
[#1035] Create ZcashError.unknown (#1036)
- improved the conversion of error -> ZcashError
[#1035] Create ZcashError.unknown (#1036)
- detailed comments of the unknown case