client – Is it possible to capture network events without going full-node?

You might find my question rather quixotic or nonsense. But I have to ask it here.

I want to capture all the transactions propagated over the main network and detect if a new block mined. I don’t want to become a full-node or spv-node. Technically, I know this is exactly the way all the full/spv nodes do every now and then. However, I could not found a good reference to teach me how.

Is it a way to do so? Any technical resources would be appreciated.

synchronization – Building a custom index on top of a Bitcoin full-node

I want to build a custom index on top of my full-node. I am not looking for answers that insist it’s a bad idea. Fact of the matter, a full-node simply lacks in the way in indexes.

I can listen to incoming blocks and transactions via ZMQ when running a full node, which is great. I can build my own indexes off the back of those notifications.

But what if my node goes offline for a while? How will I tap into it syncing back up, so I can catch-up my custom index?

My last dilemma is what if my service, listening to the ZMQ notifications, goes down. But I will leave that semi-out the scope of this question.

wallet – How to approach building a custom UTXO index on top of a full-node

I want to avoid physically importing addresses into a wallet. I want to write a UTXO indexing system on a per-address basis.

I often wonder how a wallet can keep track of all of its addresses UTXOs, seeing as transaction outputs can become spent and are therefore no longer spendable.

My concept, as it stands, is to record every vout, of an incoming transaction, against its corresponding address.

So now we have a database of addresses, each with a relation to some txId and vout index that holds the address.

From there, gettxout can be used on each of an address’s transactions corresponding to its vout index.

If gettxout responds empty the address’s vout has been spent, so is not deemed spendable and does not contribute to calculating the address’s balance.

If gettxout responds with a result the address’s vout remains unspent, so is spendable and contributes to the address’s balance.

This would obviously only work for addresses where this indexing approach has been implemented. Is this a good idea?

TLDR; how would one go about building a custom index, on top of a Bitcoin node, to track UTXOs, belonging to addresses, given that any vout can become spent?

Full-node Bitcoin, I have a 32-bit PC, can I operate a node with an SSD?

Most likely. This page contains instructions on how to download and run Bitcoin Core. You can check the Costs and Alerts section to see if your computer is capable.

If you need to store the blockchain on an external SSD, you will need to edit the bitcoin.conf file to reference it datadir at your drive location. Here you can find more information about bitcoin.conf.