я пытаюсь понять
Код:
CTxMemPool :: addUnchecked
Код:
BOOL CTxMemPool :: addUnchecked (Const uint256& хэш, Const CTxMemPoolEntry &въездные, setEntries &setAncestors, BOOL validFeeEstimate)
{
NotifyEntryAdded (entry.GetSharedTx ());
// Добавить в пул памяти без проверки ничего.
// Используется AcceptToMemoryPool (), который не делать
// все соответствующие проверки.
БЛОКИРОВКА (CS);
indexed_transaction_set :: итератора newit = mapTx.insert (запись) .Первый;
mapLinks.insert (make_pair (newit, TxLinks ()));
// транзакция обновления для любого feeDelta созданного PrioritiseTransaction
// TODO: рефакторинг так, что плата дельта рассчитывается перед вставкой
// в mapTx.
станд :: Карта:: const_iterator поз = mapDeltas.find (хэш);
если (поз! = mapDeltas.end ()) {
Const CAmount &дельта = POS->второй;
если (дельта) {
mapTx.modify (newit, update_fee_delta (дельта));
}
}
// Обновление cachedInnerUsage включать использование Содержится транзакции.
// (Когда мы обновляем запись в-mempool родителей, использование памяти будет
// далее обновляться.)
cachedInnerUsage + = entry.DynamicMemoryUsage ();
Const CTransaction& Тх = newit->GetTx ();
станд :: наборsetParentTransactions;
для (беззнаковое INT I = 0; я < tx.vin.size (); я ++) {
mapNextTx.insert (станд :: make_pair (&tx.vin [я] .prevout, &TX));
setParentTransactions.insert (tx.vin [я] .prevout.hash);
}
// Не беспокоить беспокоиться о дочерних сделках этого.
// Обычный случай новой транзакции, поступающей в том, что там не может быть
// дети, потому что такие дети будут сироты.
// Исключение то есть, если транзакция входит, что раньше в блоке.
// В этом случае наш разрыв блок логики будет вызывать UpdateTransactionsFromBlock
// чтобы убрать беспорядок, мы уезжаем здесь.
// Обновление предков с информацией об этом ТХ
для (сопзЬ uint256 &phash: setParentTransactions) {
txiter пит = mapTx.find (phash);
если (яма! = mapTx.end ()) {
UpdateParent (newit, яма, правда);
}
}
UpdateAncestorsOf (правда, newit, setAncestors);
UpdateEntryForAncestors (newit, setAncestors);
nTransactionsUpdated ++;
totalTxSize + = entry.GetTxSize ();
если (minerPolicyEstimator) {minerPolicyEstimator->processTransaction (запись, validFeeEstimate);}
vTxHashes.emplace_back (tx.GetWitnessHash (), newit);
newit->vTxHashesIdx = vTxHashes.size () - 1;
возвращает истину;
}
позволяет сказать, у нас уже есть ТЙ хэш в нашем mempool, будет
Код:
CTxMemPool :: addUnchecked
или он будет отказаться от него?
Спасибо за ваше время.