PIVX Core  5.6.99
P2P Digital Currency
Todo List
Member _ (const char *psz)
: this Optional is needed for now. Will get removed moving forward
Member AcceptBlockHeader (const CBlock &block, CValidationState &state, CBlockIndex **ppindex, CBlockIndex *pindexPrev)
: ENABLE BLOCK CACHE IN SPECIFIC CASES
Member AccessByTxid (const CCoinsViewCache &cache, const uint256 &txid)
: merge with similar definition in undo.h.
Member AddressTableModel::labelForAddress (const QString &address) const
: Check why do we have empty addresses..
Member AllocateFileRange (FILE *file, unsigned int offset, unsigned int length)
: just write one byte per block
Member anchorsTestImpl ()
: These tests should be more methodical.
Member AppInitParameterInteraction ()
*** do we still need this after -printtoconsole is gone?
Member AskPassphraseDialog::accept () override
: get rid of this .c_str() by implementing SecureString::operator=(std::string)
Member BerkeleyDatabase::Flush (bool shutdown)
: To avoid g_dbenvs.erase erasing the environment prematurely after the
Member BindFlags
: Can be removed when our pull-tester is upgraded to a modern MinGW version.
Member BitcoinUnits::formatWithUnit (int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard)

: there aren't instances where the result could be used in

: either context.

: Review all remaining calls to BitcoinUnits::formatWithUnit to

: determine whether the output is used in a plain text context

: or an HTML context (and replace with

: BtcoinUnits::formatHtmlWithUnit in the latter case).

Member BOOST_AUTO_TEST_CASE (saplingOperationTests)
: test private methods
Member BOOST_AUTO_TEST_CASE (SaplingToSapling)
: the following check can be split out in to another test
Member BOOST_AUTO_TEST_CASE (CreateNewBlock_validity)
: we should actually create a new block so the following test
Member BOOST_AUTO_TEST_CASE (sighash_from_data)
: Update with Sapling transactions..
Member BOOST_AUTO_TEST_CASE (PartitionAlert)
: implement this
Member BOOST_FIXTURE_TEST_CASE (dip3_protx, TestChain400Setup)

: move to check reject reason

: move to check reject reason

: move to ProcessBlockAndCheckRejectionReason.

: move to check reject reason

Member BOOST_FIXTURE_TEST_CASE (rescan, TestChain100Setup)

: after pruning, check that the rescan for the first key fails.

: Prune the older block file.

Member CActiveDeterministicMasternodeManager::IsValidNetAddr (const CService &addrIn)
: check IPv6 and TOR addresses
Member CActiveMasternode::ManageStatus ()
: Legacy masternodes - remove after enforcement
Member CActiveMasternode::SendMasternodePing (std::string &errorMessage)
: check why are we double setting the last ping here..
Member CAddrMan::size () const
: Cache this in an atomic to avoid this overhead
Member CBasicKeyStore::mapSaplingSpendingKeys
future: Move every Sapling map to the new sspkm box.
Member CBloomFilter::Merge (const CBloomFilter &filter)
: Check this.
Member CBLSWorker::PushSigVerifyBatch ()
this could be improved if we would cache pairing results in some way as the previous aggregated verification already calculated all the pairings for the hashes
Member CBLSWrapper< ImplType, _SerSize, C >::CheckMalleable (const std::vector< uint8_t > &vecBytes) const
not sure if this is actually possible with the BLS libs. I'm assuming here that somewhere deep inside
Member CBudgetManager::ProcessFinalizedBudgetVote (CFinalizedBudgetVote &vote, CNode *pfrom, CValidationState &state)
: remove after enforcement) –
Member CBudgetManager::ProcessProposalVote (CBudgetVote &proposal, CNode *pfrom, CValidationState &state)
: remove after enforcement) –
Member CBudgetManager::RemoveStaleVotesOnFinalBudget (CFinalizedBudget *fbud)
: remove after enforcement) –
Member CBudgetManager::RemoveStaleVotesOnProposal (CBudgetProposal *prop)
: remove after enforcement) –
Member CBudgetProposal::CheckAddress ()
: There might be an issue with multisig in the coinbase on mainnet
Member CCoinControl::destShieldChange
: upgrade those two fields to a single CWDestination?
Member CConnman::AcceptConnection (const ListenSocket &hListenSocket)
: pending review.
Member CCryptoKeyStore::vMasterKey
: In the future, move this variable to the wallet class directly following upstream's structure.
Member CDBTransactionIterator< CDBTransaction >::GetKey (K &key)
try to avoid this copy (we need a stream that allows reading from external buffers)
Member CDeterministicMN::CDeterministicMN (const CDeterministicMN &mn, uint64_t _internalId)
: can be removed in a future version
Member CDeterministicMNList::CalculateScores (const uint256 &modifier) const
When https://github.com/bitcoin/bitcoin/pull/13191 gets backported, implement something that is similar but for single-sha256
Member CDeterministicMNManager::BuildNewListFromBlock (const CBlock &block, const CBlockIndex *pindexPrev, CValidationState &state, CDeterministicMNList &mnListRet, bool debugLogs)
: remove this when the transition to DMN is complete
Member CDeterministicMNManager::CleanupCache (int nHeight)
: llmq cache cleanup
Member CDeterministicMNManager::GetListForBlock (const CBlockIndex *pindex)
: keep snapshots for yet alive quorums
Member CInv::type
: make private (improve encapsulation)
Member CKeyStore::cs_KeyStore
: Make it protected again once we are more advanced in the wallet/spkm decoupling.
Member ClientModel::getMasternodesCountString ()
: implement an event based update and remove the lock requirement.
Member CMasternode::IsValidNetAddr () const
: regtest is fine with any addresses for now,
Member CMasternode::UpdateFromNewBroadcast (CMasternodeBroadcast &mnb)
: lock cs. Need to be careful as mnb.lastPing.CheckAndUpdate locks cs_main internally.
Member CMasternodeBroadcast::Create (const CTxIn &vin, const CService &service, const CKey &keyCollateralAddressNew, const CPubKey &pubKeyCollateralAddressNew, const CKey &keyMasternodeNew, const CPubKey &pubKeyMasternodeNew, std::string &strErrorRet, CMasternodeBroadcast &mnbRet)
: move outside of this function)
Member CMasternodeMan::Add (CMasternode &mn)
: remove when transition to DMN is complete
Member CMasternodeMan::AskForMN (CNode *pnode, const CTxIn &vin)
: remove when transition to DMN is complete
Member CMasternodeMan::CheckAndRemove (bool forceExpiredRemoval=false)
: remove when transition to DMN is complete
Member CMasternodeMan::CheckSpentCollaterals (const std::vector< CTransactionRef > &vtx)
: remove when transition to DMN is complete
Member CMasternodeMan::GetNextMasternodeInQueueForPayment (int nBlockHeight, bool fFilterSigTime, int &nCount, const CBlockIndex *pChainTip=nullptr) const
: remove when transition to DMN is complete
Member CMasternodeMan::nDsqCount
: Remove this from serialization
Member CMasternodeMan::ProcessMessageInner (CNode *pfrom, std::string &strCommand, CDataStream &vRecv)
: remove when transition to DMN is complete
Member CMasternodeMan::RequestMnList (CNode *pnode)
: remove when transition to DMN is complete
Member CMasternodeMan::UpdateMasternodeList (CMasternodeBroadcast &mnb)
: remove when transition to DMN is complete
Member CMasternodePayments::GetMasternodeTxOuts (const CBlockIndex *pindexPrev, std::vector< CTxOut > &voutMasternodePaymentsRet) const
: remove when transition to DMN is complete
Member CMasternodePayments::IsTransactionValid (const CTransaction &txNew, const CBlockIndex *pindexPrev)
: remove when transition to DMN is complete
Member CMasternodePayments::ProcessMessageMasternodePayments (CNode *pfrom, std::string &strCommand, CDataStream &vRecv, CValidationState &state)
: remove when transition to DMN is complete
Member CMasternodeSync::MessageDispatcher (CNode *pfrom, std::string &strCommand, CDataStream &vRecv)
: This could be a MASTERNODE_SYNC_BUDGET_FIN as well, possibly should decouple the finalization budget sync
Member CMasternodeSync::Process ()
: remove when transition to DMN is complete
Member CMasternodeSync::UpdatePeerSyncState (const NodeId &id, const char *msg, const int nextSyncStatus)
: this should only happen if more than N peers have sent the data.
Class CoinSpendCache
: do not create g_coinspends_cache if the node passed the last zc checkpoint.
Class CompareModifiedEntry
: refactor to avoid duplication of this logic.
Member CONSOLE_HISTORY

: add a scrollback limit, as there is currently none

: make it possible to filter out categories (esp debug messages when implemented)

: receive errors and debug messages through ClientModel

Member CreateProposalDialog::onAddrListClicked ()

: add filter/search option.

: fix bug that the last presented address isn't being showed.

: add different row icon for contacts and own addresses.

Member CSporkManager::LoadSporksFromDB ()
: Temporary workaround for v5.0 clients to ensure up-to-date protocol version spork
Member CTxMemPool::addUnchecked (const uint256 &hash, const CTxMemPoolEntry &entry, setEntries &setAncestors, bool validFeeEstimate=true)
: refactor so that the fee delta is calculated before inserting
Member CWallet::AddKeyPubKey (const CKey &key, const CPubKey &pubkey) override
: Move the follow block entirely inside the spkm (including WriteKey to AddKeyPubKeyWithDB)
Member CWallet::CreateTransaction (const std::vector< CRecipient > &vecSend, CTransactionRef &txRet, CReserveKey &reservekey, CAmount &nFeeRet, int &nChangePosInOut, std::string &strFailReason, const CCoinControl *coinControl=nullptr, bool sign=true, CAmount nFeePay=0, bool fIncludeDelegated=false, bool *fStakeDelegationVoided=nullptr, int nExtraSize=0, int nMinDepth=0)
: pass in scriptChange instead of reservekey so
Member CWallet::IsChange (const CTxOut &txout) const
: fix handling of 'change' outputs. The assumption is that any
Member CWallet::LoadWallet (bool &fFirstRunRet)
: Implement spk_man->RewriteDB().
Member CWallet::SelectCoinsToSpend (const std::vector< COutput > &vAvailableCoins, const CAmount &nTargetValue, std::set< std::pair< const CWalletTx *, unsigned int > > &setCoinsRet, CAmount &nValueRet, const CCoinControl *coinControl=nullptr) const
: Allow non-wallet inputs
Member CWalletTx::AcceptToMemoryPool (CValidationState &state) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
: clean this setting the proper invalid state inside AcceptToMemoryPool (btc#15921).
Member CWalletTx::GetDepthInMainChain () const NO_THREAD_SAFETY_ANALYSIS
: Remove "NO_THREAD_SAFETY_ANALYSIS" and replace it with the correct
Member CZerocoinDB::WriteAccChecksum (const uint32_t nChecksum, const libzerocoin::CoinDenomination denom, const int nHeight)
: add removal for LZC_MAPSUPPLY key-value if is found in db
Member encryptwallet (const JSONRPCRequest &request)
: get rid of this .c_str() by implementing SecureString::operator=(std::string)
Member ExpandableButton::on_pushButton_clicked (bool checked)
: Add callback event
Member getmasternodestatus (const JSONRPCRequest &request)
: remove when transition to DMN is complete
Member gettxout (const JSONRPCRequest &request)
: filtering spent coins should be done by the CCoinsViewMemPool
Member importwallet (const JSONRPCRequest &request)

: This is not entirely true.. needs to be reviewed properly.

: Needs further review over the HD flow, staking addresses and multisig import.

Member IsMine (const CKeyStore &keystore, const CScript &scriptPubKey)
: Include watch only..
Member libzerocoin::calculateGroupModulusAndOrder (const uint256 &seed, uint32_t pLen, uint32_t qLen, CBigNum *resultModulus, CBigNum *resultGroupOrder, uint256 *resultPseed, uint256 *resultQseed)

: The use of 256-bit seeds limits us to 256-bit group orders. We should probably change this.

: we don't have a ceiling function

: implement a ceil function

Member libzerocoin::deriveIntegerGroupFromOrder (const CBigNum &groupOrder)
: This is a probabilistic routine and thus not the right choice
Member libzerocoin::generateRandomPrime (uint32_t primeBitLen, const arith_uint256 &in_seed, arith_uint256 *out_seed, uint32_t *prime_gen_counter)
no Ceiling call
Member libzerocoin::primalityTestByTrialDivision (uint32_t candidate)
: HACK HACK WRONG WRONG
Member limitedmap< K, V >::update (const_iterator itIn, const mapped_type &v)
: When we switch to C++11, use map.erase(itIn, itIn) to get the non-const iterator.
Member listmasternodes (const JSONRPCRequest &request)

: update for DMNs

: remove when transition to dmn is complete)

Member llmq::CDKGPendingMessages::PushPendingMessage (NodeId from, CDataStream &vRecv, int invType)
ban?
Member llmq::CQuorumBlockProcessor::minableCommitmentsCs
cleanup
Member llmq::CRecoveredSigsDb::CRecoveredSigsDb (CDBWrapper &_db)
this can be completely removed after some time (when we're pretty sure the conversion has been run on most testnet MNs)
Member llmq::CRecoveredSigsDb::RemoveRecoveredSig (CDBBatch &batch, Consensus::LLMQType llmqType, const uint256 &id, bool deleteHashKey, bool deleteTimeKey)
remove the size() == sizeof(uint32_t) in a future version (when we stop supporting upgrades from < 0.14.1)
Member llmq::CSigningManager::AsyncSignIfMember (Consensus::LLMQType llmqType, const uint256 &id, const uint256 &msgHash, bool allowReSign=false)
fix this by re-signing when the next block arrives, but only when that block results in a change of the quorum list and no recovered signature has been created in the mean time
Member llmq::CSigSharesManager::CollectSigSharesToAnnounce (std::unordered_map< NodeId, std::unordered_map< uint256, CSigSharesInv, StaticSaltedHasher >> &sigSharesToAnnounce)
unused
Member llmq::CSigSharesManager::CollectSigSharesToRequest (std::unordered_map< NodeId, std::unordered_map< uint256, CSigSharesInv, StaticSaltedHasher >> &sigSharesToRequest)
unused
Member llmq::CSigSharesManager::CollectSigSharesToSend (std::unordered_map< NodeId, std::unordered_map< uint256, CBatchedSigShares, StaticSaltedHasher >> &sigSharesToSend)
: unused
Member llmq::CSigSharesManager::PreVerifyBatchedSigShares (NodeId nodeId, const CSigSharesNodeState::SessionInfo &session, const CBatchedSigShares &batchedSigShares, bool &retBan)
we should allow to ask other nodes for the quorum vvec if we missed it in the DKG
Member llmq::CSigSharesManager::ProcessMessageBatchedSigShares (CNode *pfrom, const CBatchedSigShares &batchedSigShares, CConnman &connman)

for PoSe, we should consider propagating shares even if we already have a recovered sig

track invalid sig shares received for PoSe?

Member llmq::CSigSharesManager::ProcessMessageGetSigShares (CNode *pfrom, const CSigSharesInv &inv, CConnman &connman)
for PoSe, we should consider propagating shares even if we already have a recovered sig
Member llmq::CSigSharesManager::ProcessMessageSigSesAnn (CNode *pfrom, const CSigSesAnn &ann, CConnman &connman)
should we ban here?
Member llmq::CSigSharesManager::ProcessMessageSigShare (NodeId fromId, const CSigShare &sigShare, CConnman &connman)
we should allow to ask other nodes for the quorum vvec if we missed it in the DKG
Member llmq::CSigSharesManager::ProcessMessageSigSharesInv (CNode *pfrom, const CSigSharesInv &inv, CConnman &connman)

we should allow to ask other nodes for the quorum vvec if we missed it in the DKG

for PoSe, we should consider propagating shares even if we already have a recovered sig

Member llmq::CSigSharesManager::ProcessSigShare (NodeId nodeId, const CSigShare &sigShare, CConnman &connman, const CQuorumCPtr &quorum)
: unreachable
Member llmq::CSigSharesManager::WorkThreadMain ()
Wakeup when pending signing is needed?
Member llmq::CSigSharesNodeState::sessions
limit number of sessions per node
Member LockedPool::free (void *ptr)
we can do better than this linear search by keeping a map of arena
Member LockedPoolManager::LockingFailed ()
: log something but how? without including util.h
Member MAX_AMOUNT_LOADED_RECORDS
, add load on demand in pages (not every tx loaded all the time into the records list).
Member OnRPCStopped ()
: remove unused parameter fInitialDownload
Member org.bitcoin.NativeSecp256k1.computePubkey (byte[] seckey)
add a 'compressed' arg
Member org.bitcoin.NativeSecp256k1Test.testVerifyPos ()
improve comments/add more tests
Member PeerLogicValidation::SendMessages (CNode *pto, std::atomic< bool > &interrupt) override EXCLUSIVE_LOCKS_REQUIRED(pto -> cs_sendProcessing)
: back port feerate filter.
Member PIVXGUI::PIVXGUI (const NetworkStyle *networkStyle, QWidget *parent=0)
: Add event filter??
Member ProUpRegPL::IsTriviallyValid (CValidationState &state) const
: enable other scripts
Member RequestDialog::accept () override
: notify user about this error
Member RequestDialog::RequestDialog (QWidget *parent=nullptr)
: Change copy address for save image (the method is already implemented in other class called exportQr or something like that)
Member ResetNoteWitnesses (std::map< SaplingOutPoint, SaplingNoteData > &noteDataMap, std::map< uint256, std::list< SaplingWitness >> &cachedWitnessMap, int indexHeight)
: Allow invalidating blocks only if there are not conflicted txs?
Member RPCConsole::clear ()
: Remove fixed font-size
Member SaplingScriptPubKeyMan::AddSpendingKeyToWallet (const Consensus::Params &params, const libzcash::SaplingExtendedSpendingKey &sk, int64_t nTime)
: Update epoch before release v5.
Member SaplingScriptPubKeyMan::DecrementNoteWitnesses (const CBlockIndex *pindex)
: If nWitnessCache is zero, we need to regenerate the caches (#1302)
Member SaplingScriptPubKeyMan::GenerateNewSaplingZKey ()
: Should be Sapling address format, SaplingPaymentAddress
Member ScriptPubKeyMan::set_pre_split_keypool
: This is public for now but shouldn't be here.
Member ScriptPubKeyMan::SetHDSeed (const CPubKey &key, bool force=false, bool memOnly=false)
: Connect this if is needed.
Member ScriptPubKeyMan::TopUp (unsigned int size=0)
: Implement this.
Member SendCoinsRecipient::address
: This is a hack, should be replaced with a cleaner solution!
Member SendWidget::loadWalletModel () override
: This only happen when the coin control features are modified in other screen, check before do this if the wallet has another screen modifying it.
Member SendWidget::onSendClicked ()
: Check UTXO splitter here..
Member SendWidget::onShieldCoinsClicked ()
future: Unify this code with the code in coincontroldialog into the model.
Member SendWidget::ProcessSend (QList< SendCoinsRecipient > &recipients, bool hasShieldedOutput, const std::function< bool(QList< SendCoinsRecipient > &)> &func=nullptr)
: this can get wrapped on a cached struct.
Member Serialize (Stream &s, int8_t a)
Get rid of bare char
Member setmocktime (const JSONRPCRequest &request)
: figure out the right way to synchronize around mocktime, and
Member SettingsConsoleWidget::changeTheme (bool isLightTheme, QString &theme) override

: Remove fixed font-size

: Remove fixed font-size

Member SettingsDisplayOptionsWidget::SettingsDisplayOptionsWidget (PIVXGUI *_window=nullptr, QWidget *parent=nullptr)

: Reconnect this option to an action. Hide it for now

: Reconnect this option to an action. Hide it for now

Member SettingsInformationWidget::SettingsInformationWidget (PIVXGUI *_window, QWidget *parent=nullptr)
: Mempool section is not currently implemented and instead, hidden for now
Member SettingsSignMessageWidgets::onSignMessageButtonSMClicked ()
: change css..
Member SignatureHash (const CScript &scriptCode, const CTransaction &txTo, unsigned int nIn, int nHashType, const CAmount &amount, SigVersion sigversion, const PrecomputedTransactionData *cache=nullptr)
: complete branch id with the active network upgrade
Member signrawtransaction (const JSONRPCRequest &request)
: check why do we have this for regtest..
Member startmasternode (const JSONRPCRequest &request)
: remove when transition to DMN is complete
Member TopBar::setNumBlocks (int count)

: Show out of sync warning

: MN progress..

Member TopBar::updateBalances (const interfaces::WalletBalances &newBalance)
move this to the signal properly in the future..
Member TransactionTableModel::formatTxToAddress (const TransactionRecord *wtx, bool tooltip) const

: add addressbook support for shielded addresses.

: add addressbook for shielded addr

Member TxDetailDialog::onOutputsClicked ()
: This only works for txs that are stored, not for when this is a confirmation dialog..
Member Unserialize (Stream &s, int8_t &a)
Get rid of bare char
Member WalletModel::isColdStaking () const
: Complete me..
Member WalletModel::setWalletEncrypted (bool encrypted, const SecureString &passphrase)
; not supported yet
Member WalletModel::walletWrapper
: Goal would be to move every CWallet* call to the wallet wrapper and
Member walletpassphrase (const JSONRPCRequest &request)
: get rid of this .c_str() by implementing SecureString::operator=(std::string)
Member walletpassphrasechange (const JSONRPCRequest &request)
: get rid of these .c_str() calls by implementing SecureString::operator=(std::string)