Skip to content

Commit

Permalink
Increase tx size due to new block size
Browse files Browse the repository at this point in the history
  • Loading branch information
Antonio Juarez committed May 5, 2016
1 parent 9966ce9 commit 1d07d58
Show file tree
Hide file tree
Showing 20 changed files with 199 additions and 59 deletions.
15 changes: 9 additions & 6 deletions src/Common/StringTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

#include "StringTools.h"
#include <fstream>
#include <iomanip>

namespace Common {

Expand Down Expand Up @@ -342,12 +343,14 @@ std::string timeIntervalToString(uint64_t intervalInSeconds) {
tail = tail % (60);
auto seconds = tail;

return
"d" + std::to_string(days) +
".h" + std::to_string(hours) +
".m" + std::to_string(minutes) +
".s" + std::to_string(seconds);
}
std::stringstream ss;
ss << "d" << days <<
std::setfill('0') <<
".h" << std::setw(2) << hours <<
".m" << std::setw(2) << minutes <<
".s" << std::setw(2) << seconds;

return ss.str();
}

}
9 changes: 6 additions & 3 deletions src/CryptoNoteConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const size_t CRYPTONOTE_REWARD_BLOCKS_WINDOW = 100;
const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE = 100000; //size of block (bytes) after which reward for block calculated using block size
const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 = 20000;
const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V1 = 10000;
const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_CURRENT = CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2;
const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_CURRENT = CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE;
const size_t CRYPTONOTE_COINBASE_BLOB_RESERVED_SIZE = 600;
const size_t CRYPTONOTE_DISPLAY_DECIMAL_POINT = 8;
const uint64_t MINIMUM_FEE = UINT64_C(1000000); // pow(10, 6)
Expand Down Expand Up @@ -69,7 +69,7 @@ const size_t FUSION_TX_MIN_INPUT_COUNT = 12;
const size_t FUSION_TX_MIN_IN_OUT_COUNT_RATIO = 4;

const uint64_t UPGRADE_HEIGHT_V2 = 546602;
const uint64_t UPGRADE_HEIGHT_V3 = static_cast<uint64_t>(-1);
const uint64_t UPGRADE_HEIGHT_V3 = 985548;
const unsigned UPGRADE_VOTING_THRESHOLD = 90; // percent
const size_t UPGRADE_VOTING_WINDOW = EXPECTED_NUMBER_OF_BLOCKS_PER_DAY; // blocks
const size_t UPGRADE_WINDOW = EXPECTED_NUMBER_OF_BLOCKS_PER_DAY; // blocks
Expand Down Expand Up @@ -172,7 +172,10 @@ const CheckpointData CHECKPOINTS[] = {
{841000, "2cffb6504ee38f708a6256a63585f9382b3b426e64b4504236c70678bd160dce"},
{890000, "a7132932ea31236ce6b8775cd1380edf90b5e536ee4202c77b69a3d62445fcd2"},
{894000, "ae2624ea1472ecc36de0d812f21a32da2d4afc7d5770830083cbaf652209d316"},
{979000, "d8290eb4eedbe638f5dbadebcaf3ea434857ce96168185dc04f75b6cc1f4fda6"}
{979000, "d8290eb4eedbe638f5dbadebcaf3ea434857ce96168185dc04f75b6cc1f4fda6"},
{985548, "8d53e0d97594755a621feaee0978c0431fc01f42b85ff76a03af8641e2009d57"},
{985549, "dc6f8d9319282475c981896b98ff9772ae2499533c2302c32faf65115aaf2554"},
{996000, "c9a9243049acc7773a3e58ae354d66f8ea83996ece93ffbaad0b8b42b5fb7223"}
};
} // CryptoNote

Expand Down
17 changes: 13 additions & 4 deletions src/CryptoNoteCore/Blockchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,15 +313,20 @@ class BlockchainIndicesSerializer {
};


Blockchain::Blockchain(const Currency& currency, tx_memory_pool& tx_pool, ILogger& logger) :
Blockchain::Blockchain(const Currency& currency, tx_memory_pool& tx_pool, ILogger& logger, bool blockchainIndexesEnabled) :
logger(logger, "Blockchain"),
m_currency(currency),
m_tx_pool(tx_pool),
m_current_block_cumul_sz_limit(0),
m_is_in_checkpoint_zone(false),
m_upgradeDetectorV2(currency, m_blocks, BLOCK_MAJOR_VERSION_2, logger),
m_upgradeDetectorV3(currency, m_blocks, BLOCK_MAJOR_VERSION_3, logger),
m_checkpoints(logger) {
m_checkpoints(logger),
m_paymentIdIndex(blockchainIndexesEnabled),
m_timestampIndex(blockchainIndexesEnabled),
m_generatedTransactionsIndex(blockchainIndexesEnabled),
m_orthanBlocksIndex(blockchainIndexesEnabled),
m_blockchainIndexesEnabled(blockchainIndexesEnabled) {

m_outputs.set_deleted_key(0);
Crypto::KeyImage nullImage = boost::value_initialized<decltype(nullImage)>();
Expand Down Expand Up @@ -433,7 +438,9 @@ bool Blockchain::init(const std::string& config_folder, bool load_existing) {
rebuildCache();
}

loadBlockchainIndices();
if (m_blockchainIndexesEnabled) {
loadBlockchainIndices();
}
} else {
m_blocks.clear();
}
Expand Down Expand Up @@ -539,7 +546,9 @@ bool Blockchain::storeCache() {

bool Blockchain::deinit() {
storeCache();
storeBlockchainIndices();
if (m_blockchainIndexesEnabled) {
storeBlockchainIndices();
}
assert(m_messageQueueList.empty());
return true;
}
Expand Down
3 changes: 2 additions & 1 deletion src/CryptoNoteCore/Blockchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ namespace CryptoNote {
using CryptoNote::BlockInfo;
class Blockchain : public CryptoNote::ITransactionValidator {
public:
Blockchain(const Currency& currency, tx_memory_pool& tx_pool, Logging::ILogger& logger);
Blockchain(const Currency& currency, tx_memory_pool& tx_pool, Logging::ILogger& logger, bool blockchainIndexesEnabled);

bool addObserver(IBlockchainStorageObserver* observer);
bool removeObserver(IBlockchainStorageObserver* observer);
Expand Down Expand Up @@ -267,6 +267,7 @@ namespace CryptoNote {
TimestampBlocksIndex m_timestampIndex;
GeneratedTransactionsIndex m_generatedTransactionsIndex;
OrphanBlocksIndex m_orthanBlocksIndex;
bool m_blockchainIndexesEnabled;

IntrusiveLinkedList<MessageQueue<BlockchainMessage>> m_messageQueueList;

Expand Down
111 changes: 104 additions & 7 deletions src/CryptoNoteCore/BlockchainIndices.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,14 @@

namespace CryptoNote {

PaymentIdIndex::PaymentIdIndex(bool _enabled) : enabled(_enabled) {
}

bool PaymentIdIndex::add(const Transaction& transaction) {
if (!enabled) {
return false;
}

Crypto::Hash paymentId;
Crypto::Hash transactionHash = getObjectHash(transaction);
if (!BlockchainExplorerDataBuilder::getPaymentId(transaction, paymentId)) {
Expand All @@ -38,6 +45,10 @@ bool PaymentIdIndex::add(const Transaction& transaction) {
}

bool PaymentIdIndex::remove(const Transaction& transaction) {
if (!enabled) {
return false;
}

Crypto::Hash paymentId;
Crypto::Hash transactionHash = getObjectHash(transaction);
if (!BlockchainExplorerDataBuilder::getPaymentId(transaction, paymentId)) {
Expand All @@ -56,6 +67,10 @@ bool PaymentIdIndex::remove(const Transaction& transaction) {
}

bool PaymentIdIndex::find(const Crypto::Hash& paymentId, std::vector<Crypto::Hash>& transactionHashes) {
if (!enabled) {
throw std::runtime_error("Payment id index disabled.");
}

bool found = false;
auto range = index.equal_range(paymentId);
for (auto iter = range.first; iter != range.second; ++iter){
Expand All @@ -66,20 +81,37 @@ bool PaymentIdIndex::find(const Crypto::Hash& paymentId, std::vector<Crypto::Has
}

void PaymentIdIndex::clear() {
index.clear();
if (enabled) {
index.clear();
}
}


void PaymentIdIndex::serialize(ISerializer& s) {
if (!enabled) {
throw std::runtime_error("Payment id index disabled.");
}

s(index, "index");
}

TimestampBlocksIndex::TimestampBlocksIndex(bool _enabled) : enabled(_enabled) {
}

bool TimestampBlocksIndex::add(uint64_t timestamp, const Crypto::Hash& hash) {
if (!enabled) {
return false;
}

index.emplace(timestamp, hash);
return true;
}

bool TimestampBlocksIndex::remove(uint64_t timestamp, const Crypto::Hash& hash) {
if (!enabled) {
return false;
}

auto range = index.equal_range(timestamp);
for (auto iter = range.first; iter != range.second; ++iter) {
if (iter->second == hash) {
Expand All @@ -92,6 +124,10 @@ bool TimestampBlocksIndex::remove(uint64_t timestamp, const Crypto::Hash& hash)
}

bool TimestampBlocksIndex::find(uint64_t timestampBegin, uint64_t timestampEnd, uint32_t hashesNumberLimit, std::vector<Crypto::Hash>& hashes, uint32_t& hashesNumberWithinTimestamps) {
if (!enabled) {
throw std::runtime_error("Timestamp block index disabled.");
}

uint32_t hashesNumber = 0;
if (timestampBegin > timestampEnd) {
//std::swap(timestampBegin, timestampEnd);
Expand All @@ -110,19 +146,36 @@ bool TimestampBlocksIndex::find(uint64_t timestampBegin, uint64_t timestampEnd,
}

void TimestampBlocksIndex::clear() {
index.clear();
if (enabled) {
index.clear();
}
}

void TimestampBlocksIndex::serialize(ISerializer& s) {
if (!enabled) {
throw std::runtime_error("Timestamp block index disabled.");
}

s(index, "index");
}

TimestampTransactionsIndex::TimestampTransactionsIndex(bool _enabled) : enabled(_enabled) {
}

bool TimestampTransactionsIndex::add(uint64_t timestamp, const Crypto::Hash& hash) {
if (!enabled) {
return false;
}

index.emplace(timestamp, hash);
return true;
}

bool TimestampTransactionsIndex::remove(uint64_t timestamp, const Crypto::Hash& hash) {
if (!enabled) {
return false;
}

auto range = index.equal_range(timestamp);
for (auto iter = range.first; iter != range.second; ++iter) {
if (iter->second == hash) {
Expand All @@ -135,6 +188,10 @@ bool TimestampTransactionsIndex::remove(uint64_t timestamp, const Crypto::Hash&
}

bool TimestampTransactionsIndex::find(uint64_t timestampBegin, uint64_t timestampEnd, uint64_t hashesNumberLimit, std::vector<Crypto::Hash>& hashes, uint64_t& hashesNumberWithinTimestamps) {
if (!enabled) {
throw std::runtime_error("Timestamp transactions index disabled.");
}

uint32_t hashesNumber = 0;
if (timestampBegin > timestampEnd) {
//std::swap(timestampBegin, timestampEnd);
Expand All @@ -153,18 +210,27 @@ bool TimestampTransactionsIndex::find(uint64_t timestampBegin, uint64_t timestam
}

void TimestampTransactionsIndex::clear() {
index.clear();
if (enabled) {
index.clear();
}
}

void TimestampTransactionsIndex::serialize(ISerializer& s) {
if (!enabled) {
throw std::runtime_error("Timestamp transactions index disabled.");
}

s(index, "index");
}

GeneratedTransactionsIndex::GeneratedTransactionsIndex() : lastGeneratedTxNumber(0) {

GeneratedTransactionsIndex::GeneratedTransactionsIndex(bool _enabled) : lastGeneratedTxNumber(0), enabled(_enabled) {
}

bool GeneratedTransactionsIndex::add(const Block& block) {
if (!enabled) {
return false;
}

uint32_t blockHeight = boost::get<BaseInput>(block.baseTransaction.inputs.front()).blockIndex;

if (index.size() != blockHeight) {
Expand All @@ -179,6 +245,10 @@ bool GeneratedTransactionsIndex::add(const Block& block) {
}

bool GeneratedTransactionsIndex::remove(const Block& block) {
if (!enabled) {
return false;
}

uint32_t blockHeight = boost::get<BaseInput>(block.baseTransaction.inputs.front()).blockIndex;

if (blockHeight != index.size() - 1) {
Expand All @@ -201,6 +271,10 @@ bool GeneratedTransactionsIndex::remove(const Block& block) {
}

bool GeneratedTransactionsIndex::find(uint32_t height, uint64_t& generatedTransactions) {
if (!enabled) {
throw std::runtime_error("Generated transactions index disabled.");
}

if (height > std::numeric_limits<uint32_t>::max()) {
return false;
}
Expand All @@ -213,22 +287,39 @@ bool GeneratedTransactionsIndex::find(uint32_t height, uint64_t& generatedTransa
}

void GeneratedTransactionsIndex::clear() {
index.clear();
if (enabled) {
index.clear();
}
}

void GeneratedTransactionsIndex::serialize(ISerializer& s) {
if (!enabled) {
throw std::runtime_error("Generated transactions index disabled.");
}

s(index, "index");
s(lastGeneratedTxNumber, "lastGeneratedTxNumber");
}

OrphanBlocksIndex::OrphanBlocksIndex(bool _enabled) : enabled(_enabled) {
}

bool OrphanBlocksIndex::add(const Block& block) {
if (!enabled) {
return false;
}

Crypto::Hash blockHash = get_block_hash(block);
uint32_t blockHeight = boost::get<BaseInput>(block.baseTransaction.inputs.front()).blockIndex;
index.emplace(blockHeight, blockHash);
return true;
}

bool OrphanBlocksIndex::remove(const Block& block) {
if (!enabled) {
return false;
}

Crypto::Hash blockHash = get_block_hash(block);
uint32_t blockHeight = boost::get<BaseInput>(block.baseTransaction.inputs.front()).blockIndex;
auto range = index.equal_range(blockHeight);
Expand All @@ -243,6 +334,10 @@ bool OrphanBlocksIndex::remove(const Block& block) {
}

bool OrphanBlocksIndex::find(uint32_t height, std::vector<Crypto::Hash>& blockHashes) {
if (!enabled) {
throw std::runtime_error("Orphan blocks index disabled.");
}

if (height > std::numeric_limits<uint32_t>::max()) {
return false;
}
Expand All @@ -256,7 +351,9 @@ bool OrphanBlocksIndex::find(uint32_t height, std::vector<Crypto::Hash>& blockHa
}

void OrphanBlocksIndex::clear() {
index.clear();
if (enabled) {
index.clear();
}
}

}
Loading

0 comments on commit 1d07d58

Please sign in to comment.