Removed old fork code

This commit is contained in:
SChernykh
2025-10-04 12:41:35 +02:00
parent 6fc51d5a31
commit 741aaf95a8
7 changed files with 22 additions and 71 deletions
+1 -1
View File
@@ -288,7 +288,7 @@ jobs:
sync-test-macos: sync-test-macos:
timeout-minutes: 60 timeout-minutes: 120
runs-on: ${{ matrix.config.os }} runs-on: ${{ matrix.config.os }}
strategy: strategy:
+1 -5
View File
@@ -912,8 +912,6 @@ int BlockTemplate::create_miner_tx(const MinerData& data, const std::vector<Mine
m_poolBlockTemplate->m_outputs.clear(); m_poolBlockTemplate->m_outputs.clear();
m_poolBlockTemplate->m_outputs.reserve(num_outputs); m_poolBlockTemplate->m_outputs.reserve(num_outputs);
const uint8_t tx_type = m_poolBlockTemplate->get_tx_type();
uint64_t reward_amounts_weight = 0; uint64_t reward_amounts_weight = 0;
for (size_t i = 0; i < num_outputs; ++i) { for (size_t i = 0; i < num_outputs; ++i) {
writeVarint(m_rewards[i], [this, &reward_amounts_weight](uint8_t b) writeVarint(m_rewards[i], [this, &reward_amounts_weight](uint8_t b)
@@ -921,7 +919,7 @@ int BlockTemplate::create_miner_tx(const MinerData& data, const std::vector<Mine
m_minerTx.push_back(b); m_minerTx.push_back(b);
++reward_amounts_weight; ++reward_amounts_weight;
}); });
m_minerTx.push_back(tx_type); m_minerTx.push_back(TXOUT_TO_TAGGED_KEY);
uint8_t view_tag = 0; uint8_t view_tag = 0;
@@ -937,10 +935,8 @@ int BlockTemplate::create_miner_tx(const MinerData& data, const std::vector<Mine
m_poolBlockTemplate->m_outputs.emplace_back(m_rewards[i], eph_public_key, view_tag); m_poolBlockTemplate->m_outputs.emplace_back(m_rewards[i], eph_public_key, view_tag);
} }
if (tx_type == TXOUT_TO_TAGGED_KEY) {
m_minerTx.emplace_back(view_tag); m_minerTx.emplace_back(view_tag);
} }
}
if (dry_run) { if (dry_run) {
if (reward_amounts_weight != max_reward_amounts_weight) { if (reward_amounts_weight != max_reward_amounts_weight) {
-2
View File
@@ -117,7 +117,6 @@ extern "C" void __nss_module_disable_loading();
namespace p2pool { namespace p2pool {
constexpr size_t HASH_SIZE = 32; constexpr size_t HASH_SIZE = 32;
constexpr uint8_t HARDFORK_VIEW_TAGS_VERSION = 15;
constexpr uint8_t HARDFORK_SUPPORTED_VERSION = 16; constexpr uint8_t HARDFORK_SUPPORTED_VERSION = 16;
constexpr uint8_t MINER_REWARD_UNLOCK_TIME = 60; constexpr uint8_t MINER_REWARD_UNLOCK_TIME = 60;
constexpr uint8_t NONCE_SIZE = 4; constexpr uint8_t NONCE_SIZE = 4;
@@ -125,7 +124,6 @@ constexpr uint8_t EXTRA_NONCE_SIZE = 4;
constexpr uint8_t EXTRA_NONCE_MAX_SIZE = EXTRA_NONCE_SIZE + 10; constexpr uint8_t EXTRA_NONCE_MAX_SIZE = EXTRA_NONCE_SIZE + 10;
constexpr uint8_t TX_VERSION = 2; constexpr uint8_t TX_VERSION = 2;
constexpr uint8_t TXIN_GEN = 0xFF; constexpr uint8_t TXIN_GEN = 0xFF;
constexpr uint8_t TXOUT_TO_KEY = 2;
constexpr uint8_t TXOUT_TO_TAGGED_KEY = 3; constexpr uint8_t TXOUT_TO_TAGGED_KEY = 3;
constexpr uint8_t TX_EXTRA_TAG_PUBKEY = 1; constexpr uint8_t TX_EXTRA_TAG_PUBKEY = 1;
constexpr uint8_t TX_EXTRA_NONCE = 2; constexpr uint8_t TX_EXTRA_NONCE = 2;
+1 -16
View File
@@ -171,17 +171,12 @@ std::vector<uint8_t> PoolBlock::serialize_mainchain_data(size_t* header_size, si
writeVarint(m_outputs.size(), data); writeVarint(m_outputs.size(), data);
const uint8_t tx_type = get_tx_type();
for (const TxOutput& output : m_outputs) { for (const TxOutput& output : m_outputs) {
writeVarint(output.m_reward, data); writeVarint(output.m_reward, data);
data.push_back(tx_type); data.push_back(TXOUT_TO_TAGGED_KEY);
data.insert(data.end(), output.m_ephPublicKey.h, output.m_ephPublicKey.h + HASH_SIZE); data.insert(data.end(), output.m_ephPublicKey.h, output.m_ephPublicKey.h + HASH_SIZE);
if (tx_type == TXOUT_TO_TAGGED_KEY) {
data.push_back(static_cast<uint8_t>(output.m_viewTag)); data.push_back(static_cast<uint8_t>(output.m_viewTag));
} }
}
if (outputs_blob_size) { if (outputs_blob_size) {
*outputs_blob_size = static_cast<int>(data.size()) - outputs_offset0; *outputs_blob_size = static_cast<int>(data.size()) - outputs_offset0;
@@ -397,26 +392,16 @@ bool PoolBlock::get_pow_hash(RandomX_Hasher_Base* hasher, uint64_t height, const
uint64_t PoolBlock::get_payout(const Wallet& w) const uint64_t PoolBlock::get_payout(const Wallet& w) const
{ {
const uint8_t tx_type = get_tx_type();
for (size_t i = 0, n = m_outputs.size(); i < n; ++i) { for (size_t i = 0, n = m_outputs.size(); i < n; ++i) {
const TxOutput& out = m_outputs[i]; const TxOutput& out = m_outputs[i];
hash eph_public_key; hash eph_public_key;
if (tx_type == TXOUT_TO_TAGGED_KEY) {
uint8_t view_tag; uint8_t view_tag;
const uint8_t expected_view_tag = out.m_viewTag; const uint8_t expected_view_tag = out.m_viewTag;
if (w.get_eph_public_key(m_txkeySec, i, eph_public_key, view_tag, &expected_view_tag) && (eph_public_key == out.m_ephPublicKey)) { if (w.get_eph_public_key(m_txkeySec, i, eph_public_key, view_tag, &expected_view_tag) && (eph_public_key == out.m_ephPublicKey)) {
return out.m_reward; return out.m_reward;
} }
} }
else {
uint8_t view_tag;
if (w.get_eph_public_key(m_txkeySec, i, eph_public_key, view_tag) && (eph_public_key == out.m_ephPublicKey)) {
return out.m_reward;
}
}
}
return 0; return 0;
} }
-4
View File
@@ -194,10 +194,6 @@ struct PoolBlock
uint64_t get_payout(const Wallet& w) const; uint64_t get_payout(const Wallet& w) const;
// Both tx types are allowed by Monero consensus during v15 because it needs to process pre-fork mempool transactions,
// but P2Pool can switch to using only TXOUT_TO_TAGGED_KEY for miner payouts starting from v15
FORCEINLINE uint8_t get_tx_type() const { return (m_majorVersion < HARDFORK_VIEW_TAGS_VERSION) ? TXOUT_TO_KEY : TXOUT_TO_TAGGED_KEY; }
typedef std::array<uint8_t, HASH_SIZE + NONCE_SIZE + EXTRA_NONCE_SIZE> full_id; typedef std::array<uint8_t, HASH_SIZE + NONCE_SIZE + EXTRA_NONCE_SIZE> full_id;
FORCEINLINE full_id get_full_id() const FORCEINLINE full_id get_full_id() const
+1 -5
View File
@@ -108,8 +108,6 @@ int PoolBlock::deserialize(const uint8_t* data, size_t size, const SideChain& si
m_outputs.resize(num_outputs); m_outputs.resize(num_outputs);
m_outputs.shrink_to_fit(); m_outputs.shrink_to_fit();
const uint8_t expected_tx_type = get_tx_type();
for (uint64_t i = 0; i < num_outputs; ++i) { for (uint64_t i = 0; i < num_outputs; ++i) {
TxOutput& t = m_outputs[i]; TxOutput& t = m_outputs[i];
@@ -124,16 +122,14 @@ int PoolBlock::deserialize(const uint8_t* data, size_t size, const SideChain& si
t.m_reward = reward; t.m_reward = reward;
total_reward += reward; total_reward += reward;
EXPECT_BYTE(expected_tx_type); EXPECT_BYTE(TXOUT_TO_TAGGED_KEY);
READ_BUF(t.m_ephPublicKey.h, HASH_SIZE); READ_BUF(t.m_ephPublicKey.h, HASH_SIZE);
if (expected_tx_type == TXOUT_TO_TAGGED_KEY) {
uint8_t view_tag; uint8_t view_tag;
READ_BYTE(view_tag); READ_BYTE(view_tag);
t.m_viewTag = view_tag; t.m_viewTag = view_tag;
} }
}
outputs_blob_size = static_cast<int>(data - data_begin) - outputs_offset; outputs_blob_size = static_cast<int>(data - data_begin) - outputs_offset;
outputs_blob.assign(data_begin + outputs_offset, data); outputs_blob.assign(data_begin + outputs_offset, data);
+3 -23
View File
@@ -835,17 +835,12 @@ bool SideChain::get_outputs_blob(PoolBlock* block, uint64_t total_reward, std::v
blob.reserve(n * 39 + 64); blob.reserve(n * 39 + 64);
writeVarint(n, blob); writeVarint(n, blob);
const uint8_t tx_type = b->get_tx_type();
for (const PoolBlock::TxOutput& output : b->m_outputs) { for (const PoolBlock::TxOutput& output : b->m_outputs) {
writeVarint(output.m_reward, blob); writeVarint(output.m_reward, blob);
blob.emplace_back(tx_type); blob.emplace_back(TXOUT_TO_TAGGED_KEY);
blob.insert(blob.end(), output.m_ephPublicKey.h, output.m_ephPublicKey.h + HASH_SIZE); blob.insert(blob.end(), output.m_ephPublicKey.h, output.m_ephPublicKey.h + HASH_SIZE);
if (tx_type == TXOUT_TO_TAGGED_KEY) {
blob.emplace_back(static_cast<uint8_t>(output.m_viewTag)); blob.emplace_back(static_cast<uint8_t>(output.m_viewTag));
} }
}
block->m_outputs = b->m_outputs; block->m_outputs = b->m_outputs;
return true; return true;
@@ -895,8 +890,6 @@ bool SideChain::get_outputs_blob(PoolBlock* block, uint64_t total_reward, std::v
block->m_outputs.clear(); block->m_outputs.clear();
block->m_outputs.reserve(n); block->m_outputs.reserve(n);
const uint8_t tx_type = block->get_tx_type();
hash eph_public_key; hash eph_public_key;
for (size_t i = 0; i < n; ++i) { for (size_t i = 0; i < n; ++i) {
// stop helper jobs when they meet with current thread // stop helper jobs when they meet with current thread
@@ -908,7 +901,7 @@ bool SideChain::get_outputs_blob(PoolBlock* block, uint64_t total_reward, std::v
writeVarint(tmpRewards[i], blob); writeVarint(tmpRewards[i], blob);
blob.emplace_back(tx_type); blob.emplace_back(TXOUT_TO_TAGGED_KEY);
uint8_t view_tag; uint8_t view_tag;
if (!data->tmpShares[i].m_wallet->get_eph_public_key(data->txkeySec, i, eph_public_key, view_tag)) { if (!data->tmpShares[i].m_wallet->get_eph_public_key(data->txkeySec, i, eph_public_key, view_tag)) {
@@ -916,9 +909,7 @@ bool SideChain::get_outputs_blob(PoolBlock* block, uint64_t total_reward, std::v
} }
blob.insert(blob.end(), eph_public_key.h, eph_public_key.h + HASH_SIZE); blob.insert(blob.end(), eph_public_key.h, eph_public_key.h + HASH_SIZE);
if (tx_type == TXOUT_TO_TAGGED_KEY) {
blob.emplace_back(view_tag); blob.emplace_back(view_tag);
}
block->m_outputs.emplace_back(tmpRewards[i], eph_public_key, view_tag); block->m_outputs.emplace_back(tmpRewards[i], eph_public_key, view_tag);
} }
@@ -1090,25 +1081,16 @@ double SideChain::get_reward_share(const Wallet& w) const
const PoolBlock* tip = m_chainTip; const PoolBlock* tip = m_chainTip;
if (tip) { if (tip) {
const uint8_t tx_type = tip->get_tx_type();
hash eph_public_key; hash eph_public_key;
for (size_t i = 0, n = tip->m_outputs.size(); i < n; ++i) { for (size_t i = 0, n = tip->m_outputs.size(); i < n; ++i) {
const PoolBlock::TxOutput& out = tip->m_outputs[i]; const PoolBlock::TxOutput& out = tip->m_outputs[i];
if (!reward) { if (!reward) {
if (tx_type == TXOUT_TO_TAGGED_KEY) {
uint8_t view_tag; uint8_t view_tag;
const uint8_t expected_view_tag = out.m_viewTag; const uint8_t expected_view_tag = out.m_viewTag;
if (w.get_eph_public_key(tip->m_txkeySec, i, eph_public_key, view_tag, &expected_view_tag) && (out.m_ephPublicKey == eph_public_key)) { if (w.get_eph_public_key(tip->m_txkeySec, i, eph_public_key, view_tag, &expected_view_tag) && (out.m_ephPublicKey == eph_public_key)) {
reward = out.m_reward; reward = out.m_reward;
} }
} }
else {
uint8_t view_tag;
if (w.get_eph_public_key(tip->m_txkeySec, i, eph_public_key, view_tag) && (out.m_ephPublicKey == eph_public_key)) {
reward = out.m_reward;
}
}
}
total_reward += out.m_reward; total_reward += out.m_reward;
} }
} }
@@ -1750,8 +1732,6 @@ void SideChain::verify(PoolBlock* block)
return; return;
} }
const uint8_t tx_type = block->get_tx_type();
for (size_t i = 0, n = rewards.size(); i < n; ++i) { for (size_t i = 0, n = rewards.size(); i < n; ++i) {
const PoolBlock::TxOutput& out = block->m_outputs[i]; const PoolBlock::TxOutput& out = block->m_outputs[i];
@@ -1775,7 +1755,7 @@ void SideChain::verify(PoolBlock* block)
return; return;
} }
if ((tx_type == TXOUT_TO_TAGGED_KEY) && (out.m_viewTag != view_tag)) { if (out.m_viewTag != view_tag) {
LOGWARN(3, "block at height = " << block->m_sidechainHeight << LOGWARN(3, "block at height = " << block->m_sidechainHeight <<
", id = " << block->m_sidechainId << ", id = " << block->m_sidechainId <<
", mainchain height = " << block->m_txinGenHeight << ", mainchain height = " << block->m_txinGenHeight <<