* Add client endpoints for `get/set_auto_claim`
* Add client endpoint for `verify_signature`
* Add client endpoint for `get_transaction_memo`
* Add client endpoint for `get_offers_count`
* Add client endpoint for `get_cat_list`
* Add client endpoint for `did_get_pubkey`
* Port `test_creation_from_backup_file` to `WalletTestFramework`
* Add client endpoint for `did_get_information_needed_for_recovery`
* Add client endpoint for `did_get_current_coin_info`
* Add client endpoint for `nft_get_by_did`
* Add client endpoint for `nft_set_nft_status`
* Add client endpoint for `nft_get_wallets_with_dids`
* Add client endpoint for `nft_set_did_bulk`
* Add client endpoint for `nft_transfer_bulk`
* Make sure we have a proper tx_id in test_wallet_make_transaction_with_memo.
* Reuse request's address after checking it.
* Minor readability improvement.
---------
Co-authored-by: Amine Khaldi <amine.khaldi@reactos.org>
* remove dead code
* introduce AugmentedBlockchain, implementing the BlocksProtocol and can include 'additional blocks', useful for validating batches of blocks where we need to pretend the previous blocks in the batch are valid while validating the later blocks
* simplify pre_validate_blocks_multiprocessing by using AugmentedBlockchain
* address review comments
* refactor pre_validate_blocks_multiprocessing
* fix condtion
* get diff and ssi from blocks
* works_with_skip_ses
* add default
* propegate_to_header_validation
* pass data between batches
* remove redundant code
* merge fix
* remove optionals and refactor tests
* only use cache
* merge fix
* fix test
* dont traverse if we have prev sub epoch block
* return bad_prev error if block is missing
* mandetory param names
* clean
* fix_benchmark_test
* refactor get_block_generator() to prepare for easier composing of a layered blockchain class
* make get_block_generator() part of the interface to the blockchain rather than an independent, free function passed in the validation. This keeps the view of the blockchain more focused to a single class.
* add test for get_block_generator
* add unit test for Blockchain.lookup_block_generators()
* address review comments
* address review comments
* Port `test_nft_wallet_creation_automatically`
* Port `test_nft_wallet_rpc_creation_and_list`
* Port `test_nft_wallet_rpc_update_metadata`
* Port `test_nft_with_did_wallet_creation`
* Port `test_nft_rpc_mint`
* Port `test_nft_transfer_nft_with_did`
* Port `test_update_metadata_for_nft_did`
* Port `test_update_metadata_for_nft_did`
* Port `test_nft_bulk_set_did`
* Port `test_nft_transfer_nft_with_did`
* Port `test_nft_set_did`
* Port `test_set_nft_status`
* Port `test_nft_sign_message`
* Remove DEFAULT_TX_CONFIG
* Remove unnecessary WalletStateTransitions
* Swap out id variables with aliases
* Whoops
* Remove unused function
* Slightly clearer ResponseFailureError match in test_nft_wallet_rpc_creation_and_list.
* Fix a typo.
* Fix a typo in test_nft_bulk_transfer.
* Clarify the coinbase coins case in get_minter_did.
---------
Co-authored-by: Amine Khaldi <amine.khaldi@reactos.org>
* use ... in BlockInfo protocol
* move prev_block_hash() from BlockchainInterface into BlockRecordsProtocol to transition find_fork_point_in_chain() and lookup_fork_chain() to use the more narrow protocol to lookup the chain
* the WalletBlockchain doesn't need to implement the full BlockchainInterface, but just BlockRecordsProtocol
* remove unused GeneratorBlockCacheInterface and BlockDict
* add unit test for BlockCache
change the type of ref_list to List[bytes] instead of List[SerializedProgram]. Also, avoid passing the block generator twice to the worker process for validation
* turn BlockchainInterface into a proper Protocol, to allow mypy to check it
* split out a subset of BlockchainInterface into BlockRecordsInterface
* separate BlockCache into the (simple) production use case and the (complex) test use case of mocking a blockchain object