[prep/rpc] remove entry and expiry time from getorphantxs

Expiry is going away in a later commit.
This is only an RPC change. Behavior of the orphanage does not change.
Note that getorphantxs is marked experimental.
This commit is contained in:
glozow committed 2025-07-11 13:52:50 -04:00
1 parent 08e58fa911
commit 15a4ec9069
5 files changed
+3 -17

No files matched your search

+2 -2
View File
@@ -37,7 +37,7 @@ bool TxOrphanage::AddTx(const CTransactionRef& tx, NodeId peer)
return false; return false;
} }
auto ret = m_orphans.emplace(wtxid, OrphanTx{{tx, {peer}, Now<NodeSeconds>() + ORPHAN_TX_EXPIRE_TIME}, m_orphan_list.size()}); auto ret = m_orphans.emplace(wtxid, OrphanTx{{tx, {peer}}, Now<NodeSeconds>() + ORPHAN_TX_EXPIRE_TIME, m_orphan_list.size()});
assert(ret.second); assert(ret.second);
m_orphan_list.push_back(ret.first); m_orphan_list.push_back(ret.first);
for (const CTxIn& txin : tx->vin) { for (const CTxIn& txin : tx->vin) {
@@ -318,7 +318,7 @@ std::vector<TxOrphanage::OrphanTxBase> TxOrphanage::GetOrphanTransactions() cons
std::vector<OrphanTxBase> ret; std::vector<OrphanTxBase> ret;
ret.reserve(m_orphans.size()); ret.reserve(m_orphans.size());
for (auto const& o : m_orphans) { for (auto const& o : m_orphans) {
ret.push_back({o.second.tx, o.second.announcers, o.second.nTimeExpire}); ret.push_back({o.second.tx, o.second.announcers});
} }
return ret; return ret;
} }
+1 -1
View File
@@ -84,7 +84,6 @@ public:
CTransactionRef tx; CTransactionRef tx;
/** Peers added with AddTx or AddAnnouncer. */ /** Peers added with AddTx or AddAnnouncer. */
std::set<NodeId> announcers; std::set<NodeId> announcers;
NodeSeconds nTimeExpire;
/** Get the weight of this transaction, an approximation of its memory usage. */ /** Get the weight of this transaction, an approximation of its memory usage. */
unsigned int GetUsage() const { unsigned int GetUsage() const {
@@ -112,6 +111,7 @@ public:
protected: protected:
struct OrphanTx : public OrphanTxBase { struct OrphanTx : public OrphanTxBase {
NodeSeconds nTimeExpire;
size_t list_pos; size_t list_pos;
}; };
-4
View File
@@ -832,8 +832,6 @@ static std::vector<RPCResult> OrphanDescription()
RPCResult{RPCResult::Type::NUM, "bytes", "The serialized transaction size in bytes"}, RPCResult{RPCResult::Type::NUM, "bytes", "The serialized transaction size in bytes"},
RPCResult{RPCResult::Type::NUM, "vsize", "The virtual transaction size as defined in BIP 141. This is different from actual serialized size for witness transactions as witness data is discounted."}, RPCResult{RPCResult::Type::NUM, "vsize", "The virtual transaction size as defined in BIP 141. This is different from actual serialized size for witness transactions as witness data is discounted."},
RPCResult{RPCResult::Type::NUM, "weight", "The transaction weight as defined in BIP 141."}, RPCResult{RPCResult::Type::NUM, "weight", "The transaction weight as defined in BIP 141."},
RPCResult{RPCResult::Type::NUM_TIME, "entry", "The entry time into the orphanage expressed in " + UNIX_EPOCH_TIME},
RPCResult{RPCResult::Type::NUM_TIME, "expiration", "The orphan expiration time expressed in " + UNIX_EPOCH_TIME},
RPCResult{RPCResult::Type::ARR, "from", "", RPCResult{RPCResult::Type::ARR, "from", "",
{ {
RPCResult{RPCResult::Type::NUM, "peer_id", "Peer ID"}, RPCResult{RPCResult::Type::NUM, "peer_id", "Peer ID"},
@@ -849,8 +847,6 @@ static UniValue OrphanToJSON(const node::TxOrphanage::OrphanTxBase& orphan)
o.pushKV("bytes", orphan.tx->GetTotalSize()); o.pushKV("bytes", orphan.tx->GetTotalSize());
o.pushKV("vsize", GetVirtualTransactionSize(*orphan.tx)); o.pushKV("vsize", GetVirtualTransactionSize(*orphan.tx));
o.pushKV("weight", GetTransactionWeight(*orphan.tx)); o.pushKV("weight", GetTransactionWeight(*orphan.tx));
o.pushKV("entry", int64_t{TicksSinceEpoch<std::chrono::seconds>(orphan.nTimeExpire - node::ORPHAN_TX_EXPIRE_TIME)});
o.pushKV("expiration", int64_t{TicksSinceEpoch<std::chrono::seconds>(orphan.nTimeExpire)});
UniValue from(UniValue::VARR); UniValue from(UniValue::VARR);
for (const auto fromPeer: orphan.announcers) { for (const auto fromPeer: orphan.announcers) {
from.push_back(fromPeer); from.push_back(fromPeer);
-8
View File
@@ -4,10 +4,7 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Tests for orphan related RPCs.""" """Tests for orphan related RPCs."""
import time
from test_framework.mempool_util import ( from test_framework.mempool_util import (
ORPHAN_TX_EXPIRE_TIME,
tx_in_orphanage, tx_in_orphanage,
) )
from test_framework.messages import ( from test_framework.messages import (
@@ -101,8 +98,6 @@ class OrphanRPCsTest(BitcoinTestFramework):
tx_child_2 = self.wallet.create_self_transfer(utxo_to_spend=tx_parent_2["new_utxo"]) tx_child_2 = self.wallet.create_self_transfer(utxo_to_spend=tx_parent_2["new_utxo"])
peer_1 = node.add_p2p_connection(P2PInterface()) peer_1 = node.add_p2p_connection(P2PInterface())
peer_2 = node.add_p2p_connection(P2PInterface()) peer_2 = node.add_p2p_connection(P2PInterface())
entry_time = int(time.time())
node.setmocktime(entry_time)
peer_1.send_and_ping(msg_tx(tx_child_1["tx"])) peer_1.send_and_ping(msg_tx(tx_child_1["tx"]))
peer_2.send_and_ping(msg_tx(tx_child_2["tx"])) peer_2.send_and_ping(msg_tx(tx_child_2["tx"]))
@@ -128,9 +123,6 @@ class OrphanRPCsTest(BitcoinTestFramework):
assert_equal(len(node.getorphantxs()), 1) assert_equal(len(node.getorphantxs()), 1)
orphan_1 = orphanage[0] orphan_1 = orphanage[0]
self.orphan_details_match(orphan_1, tx_child_1, verbosity=1) self.orphan_details_match(orphan_1, tx_child_1, verbosity=1)
self.log.info("Checking orphan entry/expiration times")
assert_equal(orphan_1["entry"], entry_time)
assert_equal(orphan_1["expiration"], entry_time + ORPHAN_TX_EXPIRE_TIME)
self.log.info("Checking orphan details (verbosity 2)") self.log.info("Checking orphan details (verbosity 2)")
orphanage = node.getorphantxs(verbosity=2) orphanage = node.getorphantxs(verbosity=2)
@@ -19,8 +19,6 @@ from .wallet import (
MiniWallet, MiniWallet,
) )
ORPHAN_TX_EXPIRE_TIME = 1200
def assert_mempool_contents(test_framework, node, expected=None, sync=True): def assert_mempool_contents(test_framework, node, expected=None, sync=True):
"""Assert that all transactions in expected are in the mempool, """Assert that all transactions in expected are in the mempool,
and no additional ones exist. 'expected' is an array of and no additional ones exist. 'expected' is an array of