forked from such-gitea/wownero
Merge pull request #9740
008ba966d blockchain sync: reduce disk writes from 2 to 1 per tx (jeffro256)
This commit is contained in:
@@ -257,6 +257,7 @@ namespace cryptonote
|
||||
CHECK_AND_ASSERT_MES(r, false, "Failed to parse transaction from blob");
|
||||
CHECK_AND_ASSERT_MES(expand_transaction_1(tx, false), false, "Failed to expand transaction data");
|
||||
tx.invalidate_hashes();
|
||||
tx.set_blob_size(tx_blob.size());
|
||||
//TODO: validate tx
|
||||
|
||||
return get_transaction_hash(tx, tx_hash);
|
||||
@@ -520,6 +521,19 @@ namespace cryptonote
|
||||
return get_transaction_weight(tx, blob_size);
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
uint64_t get_transaction_blob_size(const transaction& tx)
|
||||
{
|
||||
if (!tx.is_blob_size_valid())
|
||||
{
|
||||
const cryptonote::blobdata tx_blob = tx_to_blob(tx);
|
||||
tx.set_blob_size(tx_blob.size());
|
||||
}
|
||||
|
||||
CHECK_AND_ASSERT_THROW_MES(tx.is_blob_size_valid(), "BUG: blob size valid not set");
|
||||
|
||||
return tx.blob_size;
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
bool get_tx_fee(const transaction& tx, uint64_t & fee)
|
||||
{
|
||||
if (tx.version > 1)
|
||||
|
||||
@@ -137,6 +137,7 @@ namespace cryptonote
|
||||
uint64_t get_transaction_weight(const transaction &tx);
|
||||
uint64_t get_transaction_weight(const transaction &tx, size_t blob_size);
|
||||
uint64_t get_pruned_transaction_weight(const transaction &tx);
|
||||
uint64_t get_transaction_blob_size(const transaction& tx);
|
||||
|
||||
bool check_money_overflow(const transaction& tx);
|
||||
bool check_outs_overflow(const transaction& tx);
|
||||
|
||||
@@ -69,6 +69,7 @@ namespace cryptonote
|
||||
bool m_marked_as_orphaned;
|
||||
bool m_already_exists;
|
||||
bool m_partial_block_reward;
|
||||
bool m_bad_pow; // if bad pow, bad peer outright for DoS protection
|
||||
bool m_bad_pow; // if bad pow, ban peer outright for DoS protection
|
||||
bool m_missing_txs; // set if, during verif, we don't have all the necessary txs available
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user