<p><strong>Question:</strong>
I’m developing a Neutrino client that communicates with BitcoinD. Most P2P messages are working as expected, but when I send a GetData message for a transaction (Tx type), BitcoinD doesn't respond with the expected transaction data. I’ve verified that the transaction is indeed present on the node. Below is the log from BitcoinD:</p>
<pre><code>2024-10-16T11:24:22Z [net] received getdata (1 invsz) peer=32  
2024-10-16T11:24:22Z [net] received getdata for: tx  
c1b5b6fb155a8fd41d241abe5efb5aa9de7c8942fdd923ad1e6d94e9deedc3f9 peer=32
</code></pre>
<p>Here are the details of my setup:</p>
<p><strong>BitcoinD version: 24</strong></p>
<p><strong>Configuration:</strong></p>
<pre><code>bitcoind  
-server=1  
-regtest=1  
-rpcauth={{rpcUser}}:{{rpcAuth}}  
-debug=1  
-zmqpubrawblock=tcp://0.0.0.0:28334  
-zmqpubrawtx=tcp://0.0.0.0:28335  
-zmqpubhashblock=tcp://0.0.0.0:28336  
-txindex=1  
-dnsseed=0  
-upnp=0  
-rpcbind=0.0.0.0  
-rpcallowip=0.0.0.0/0  
-rpcport=18443  
-rest  
-listen=1  
-listenonion=0  
-fallbackfee=0.0002  
-blockfilterindex=1  
-peerblockfilters=1  
</code></pre>
<p>Has anyone encountered a similar issue? Any suggestions on what could be going wrong here or how I might troubleshoot this further?</p>

CC BY-SA 4.0
2024-10-16T14:40:16.510Z
What does "is present on the node" mean? You can only request transactions the node has just announced to you.
Pieter Wuille
CC BY-SA 4.0
2024-10-17T16:27:43.343Z
My previous thought was that  "getdata" request with "inv type" 1 does not depend on whether the node has announced those transactions to you beforehand. If this is not the case, can you shed more light on how a client is neutrino client is meant to receive transaction by communicating only through p2p.
Joshua Aruokhai
CC BY-SA 4.0
2024-10-18T15:53:02.087Z
Bitcoin nodes do not generally maintain an index of all transactions ever, as this is not necessary for normal operation, and thus such functionality is not exposed over the network. For historical transactions, wallet software generally downloads blocks (using `getdata` with block invs), not transactions (finding them using BIP157 for a Neutrino-like client).
Pieter Wuille
<p2p><compact-client-side-block-filters>
BitcoinD Fails to Return Transaction Data After Receiving GetData P2P Message
Joshua Aruokhai
# BitcoinD Fails to Return Transaction Data After Receiving GetData P2P Message

(Asked by: username_0 on 2024-10-16)

**Question:**
I’m developing a Neutrino client that communicates with BitcoinD. Most P2P messages are working as expected, but when I send a GetData message for a transaction (Tx type), BitcoinD doesn't respond with the expected transaction data. I’ve verified that the transaction is indeed present on the node. Below is the log from BitcoinD:

```
2024-10-16T11:24:22Z [net] received getdata (1 invsz) peer=32  
2024-10-16T11:24:22Z [net] received getdata for: tx  
c1b5b6fb155a8fd41d241abe5efb5aa9de7c8942fdd923ad1e6d94e9deedc3f9 peer=32

```

Here are the details of my setup:

**BitcoinD version: 24**

**Configuration:**

```
bitcoind  
-server=1  
-regtest=1  
-rpcauth={{rpcUser}}:{{rpcAuth}}  
-debug=1  
-zmqpubrawblock=tcp://0.0.0.0:28334  
-zmqpubrawtx=tcp://0.0.0.0:28335  
-zmqpubhashblock=tcp://0.0.0.0:28336  
-txindex=1  
-dnsseed=0  
-upnp=0  
-rpcbind=0.0.0.0  
-rpcallowip=0.0.0.0/0  
-rpcport=18443  
-rest  
-listen=1  
-listenonion=0  
-fallbackfee=0.0002  
-blockfilterindex=1  
-peerblockfilters=1  

```

Has anyone encountered a similar issue? Any suggestions on what could be going wrong here or how I might troubleshoot this further?

**Tags:** p2p, compact-client-side-block-filters

> **Comments:**
> **username_1**: What does "is present on the node" mean? You can only request transactions the node has just announced to you.  
> **username_0**: My previous thought was that  "getdata" request with "inv type" 1 does not depend on whether the node has announced those transactions to you beforehand. If this is not the case, can you shed more light on how a client is neutrino client is meant to receive transaction by communicating only through p2p.  
> **username_1**: Bitcoin nodes do not generally maintain an index of all transactions ever, as this is not necessary for normal operation, and thus such functionality is not exposed over the network. For historical transactions, wallet software generally downloads blocks (using `getdata` with block invs), not transactions (finding them using BIP157 for a Neutrino-like client).  

---

## 0 answers

