diff options
author | Antoine Riard <ariard@student.42.fr> | 2019-07-16 15:20:01 -0400 |
---|---|---|
committer | Antoine Riard <ariard@student.42.fr> | 2020-04-30 14:37:21 -0400 |
commit | 0a76287387950bc9c5b634e95c5cd5fb1029f42d (patch) | |
tree | 40bc835faca023a5d008e9f315c5dc4918d11cb3 | |
parent | de13363a472ea30dff2f8f55c6ae572281115380 (diff) |
[wallet] Move getBlockHash from Chain::Lock interface to simple Chain
-rw-r--r-- | src/interfaces/chain.cpp | 14 | ||||
-rw-r--r-- | src/interfaces/chain.h | 6 | ||||
-rw-r--r-- | src/wallet/wallet.cpp | 4 |
3 files changed, 12 insertions, 12 deletions
diff --git a/src/interfaces/chain.cpp b/src/interfaces/chain.cpp index ccdbf1f1d1..a4702558dc 100644 --- a/src/interfaces/chain.cpp +++ b/src/interfaces/chain.cpp @@ -55,13 +55,6 @@ bool FillBlock(const CBlockIndex* index, const FoundBlock& block, UniqueLock<Rec class LockImpl : public Chain::Lock, public UniqueLock<RecursiveMutex> { - uint256 getBlockHash(int height) override - { - LockAssertion lock(::cs_main); - CBlockIndex* block = ::ChainActive()[height]; - assert(block != nullptr); - return block->GetBlockHash(); - } bool haveBlockOnDisk(int height) override { LockAssertion lock(::cs_main); @@ -234,6 +227,13 @@ public: } return nullopt; } + uint256 getBlockHash(int height) override + { + LOCK(::cs_main); + CBlockIndex* block = ::ChainActive()[height]; + assert(block); + return block->GetBlockHash(); + } bool findBlock(const uint256& hash, const FoundBlock& block) override { WAIT_LOCK(cs_main, lock); diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h index b85484c11b..c82ade8897 100644 --- a/src/interfaces/chain.h +++ b/src/interfaces/chain.h @@ -87,9 +87,6 @@ public: public: virtual ~Lock() {} - //! Get block hash. Height must be valid or this function will abort. - virtual uint256 getBlockHash(int height) = 0; - //! Check that the block is available on disk (i.e. has not been //! pruned), and contains transactions. virtual bool haveBlockOnDisk(int height) = 0; @@ -135,6 +132,9 @@ public: //! included in the current chain. virtual Optional<int> getBlockHeight(const uint256& hash) = 0; + //! Get block hash. Height must be valid or this function will abort. + virtual uint256 getBlockHash(int height) = 0; + //! Return whether node has the block and optionally return block metadata //! or contents. virtual bool findBlock(const uint256& hash, const FoundBlock& block={}) = 0; diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index b7117e2e59..859a52f3e7 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -3943,7 +3943,7 @@ std::shared_ptr<CWallet> CWallet::CreateWalletFromFile(interfaces::Chain& chain, const Optional<int> tip_height = chain.getHeight(); if (tip_height) { - walletInstance->m_last_block_processed = locked_chain->getBlockHash(*tip_height); + walletInstance->m_last_block_processed = chain.getBlockHash(*tip_height); walletInstance->m_last_block_processed_height = *tip_height; } else { walletInstance->m_last_block_processed.SetNull(); @@ -3989,7 +3989,7 @@ std::shared_ptr<CWallet> CWallet::CreateWalletFromFile(interfaces::Chain& chain, { WalletRescanReserver reserver(*walletInstance); - if (!reserver.reserve() || (ScanResult::SUCCESS != walletInstance->ScanForWalletTransactions(locked_chain->getBlockHash(rescan_height), rescan_height, {} /* max height */, reserver, true /* update */).status)) { + if (!reserver.reserve() || (ScanResult::SUCCESS != walletInstance->ScanForWalletTransactions(chain.getBlockHash(rescan_height), rescan_height, {} /* max height */, reserver, true /* update */).status)) { error = _("Failed to rescan the wallet during initialization").translated; return nullptr; } |