Given a transaction, there are inputs to that transaction which are spent to new outputs. The inputs themselves are outputs from a previous transaction. E.g. in tx 1, person A sends BTC to person B. Then, in tx 2, person B uses those outputs to create another transaction to person C.
- A -> B
- B -> C
Transaction 1 is an ancestor of transaction 2, because without transaction 1, #2 is not valid (the outputs do not exist). Likewise, transaction 2 is a descendant of transaction 1.
The RPC commands let you list ancestors/descendants of any given transaction, which are in the mempool (have not been mined and included in a block yet).
getmempooldescendants "txid" ( verbose )
If txid is in the mempool, returns all in-mempool descendants.
getmempoolancestors "txid" ( verbose )
If txid is in the mempool, returns all in-mempool ancestors.