CI: added pruned and compact block blobs test
This commit is contained in:
@@ -806,26 +806,9 @@ void P2PServer::Peer::normalize()
|
||||
}
|
||||
}
|
||||
|
||||
void P2PServer::broadcast(const PoolBlock& block, const PoolBlock* parent)
|
||||
P2PServer::Broadcast::Broadcast(const PoolBlock& block, const PoolBlock* parent)
|
||||
{
|
||||
// Don't broadcast blocks when shutting down
|
||||
if (m_finished.load()) {
|
||||
return;
|
||||
}
|
||||
|
||||
MinerData miner_data = m_pool->miner_data();
|
||||
|
||||
if (block.m_txinGenHeight + 2 < miner_data.height) {
|
||||
LOGWARN(3, "Trying to broadcast a stale block " << block.m_sidechainId << " (mainchain height " << block.m_txinGenHeight << ", current height is " << miner_data.height << ')');
|
||||
return;
|
||||
}
|
||||
|
||||
if (block.m_txinGenHeight > miner_data.height + 2) {
|
||||
LOGWARN(3, "Trying to broadcast a block " << block.m_sidechainId << " ahead on mainchain (mainchain height " << block.m_txinGenHeight << ", current height is " << miner_data.height << ')');
|
||||
return;
|
||||
}
|
||||
|
||||
Broadcast* data = new Broadcast{};
|
||||
Broadcast* data = this;
|
||||
|
||||
data->id = block.m_sidechainId;
|
||||
data->received_timestamp = block.m_receivedTimestamp;
|
||||
@@ -895,6 +878,28 @@ void P2PServer::broadcast(const PoolBlock& block, const PoolBlock* parent)
|
||||
data->ancestor_hashes.reserve(block.m_uncles.size() + 1);
|
||||
data->ancestor_hashes = block.m_uncles;
|
||||
data->ancestor_hashes.push_back(block.m_parent);
|
||||
}
|
||||
|
||||
void P2PServer::broadcast(const PoolBlock& block, const PoolBlock* parent)
|
||||
{
|
||||
// Don't broadcast blocks when shutting down
|
||||
if (m_finished.load()) {
|
||||
return;
|
||||
}
|
||||
|
||||
MinerData miner_data = m_pool->miner_data();
|
||||
|
||||
if (block.m_txinGenHeight + 2 < miner_data.height) {
|
||||
LOGWARN(3, "Trying to broadcast a stale block " << block.m_sidechainId << " (mainchain height " << block.m_txinGenHeight << ", current height is " << miner_data.height << ')');
|
||||
return;
|
||||
}
|
||||
|
||||
if (block.m_txinGenHeight > miner_data.height + 2) {
|
||||
LOGWARN(3, "Trying to broadcast a block " << block.m_sidechainId << " ahead on mainchain (mainchain height " << block.m_txinGenHeight << ", current height is " << miner_data.height << ')');
|
||||
return;
|
||||
}
|
||||
|
||||
Broadcast* data = new Broadcast(block, parent);
|
||||
|
||||
LOGINFO(5, "Broadcasting block " << block.m_sidechainId << " (height " << block.m_sidechainHeight << "): " << data->compact_blob.size() << '/' << data->pruned_blob.size() << '/' << data->blob.size() << " bytes (compact/pruned/full)");
|
||||
|
||||
|
||||
@@ -168,6 +168,19 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
struct Broadcast
|
||||
{
|
||||
Broadcast(const PoolBlock& block, const PoolBlock* parent);
|
||||
|
||||
hash id;
|
||||
uint64_t received_timestamp;
|
||||
|
||||
std::vector<uint8_t> blob;
|
||||
std::vector<uint8_t> pruned_blob;
|
||||
std::vector<uint8_t> compact_blob;
|
||||
std::vector<hash> ancestor_hashes;
|
||||
};
|
||||
|
||||
void broadcast(const PoolBlock& block, const PoolBlock* parent);
|
||||
[[nodiscard]] uint64_t get_random64();
|
||||
[[nodiscard]] uint64_t get_peerId() const { return m_peerId; }
|
||||
@@ -262,17 +275,6 @@ private:
|
||||
std::vector<Peer> m_peerListMonero;
|
||||
std::atomic<uint64_t> m_peerListLastSaved;
|
||||
|
||||
struct Broadcast
|
||||
{
|
||||
hash id;
|
||||
uint64_t received_timestamp;
|
||||
|
||||
std::vector<uint8_t> blob;
|
||||
std::vector<uint8_t> pruned_blob;
|
||||
std::vector<uint8_t> compact_blob;
|
||||
std::vector<hash> ancestor_hashes;
|
||||
};
|
||||
|
||||
uv_mutex_t m_broadcastLock;
|
||||
uv_async_t m_broadcastAsync;
|
||||
std::vector<Broadcast*> m_broadcastQueue;
|
||||
|
||||
Reference in New Issue
Block a user