AFIK, UTXO of an address cannot be retrieved using bitcoin-core, without importing the address in the wallet.

  1. How are application in production able to get UTXO ?
  2. Does all the application use Indexed database like Insight or Abe to get UTXO ?
  3. Is there any way to get UTXO from bitcoin core without importing the address into the wallet?

Most services operating large scale wallets only use Bitcoin Core for networking information, and maintain a separate utxo set for wallet purposes.

There are many existing options to build a full utxo set that can be queried for arbitrary addresses, such as the insight project.

Moreover, recent versions of Bitcoin Core come with the scantxoutset RPC call, which allows you to locate unspent outputs for a given address or locking script.

|improve this answer|||||

Most services run their own services which track the UTXOs that they need. They use Bitcoin Core as an edge node which forwards all of the valid blocks and transactions to their internal software that adds them all to a database. This could be a software based on insight or Abe or something homegrown. In this way, they don't need to implement consensus and validation logic, just deserialization and database storage.

Is there any way to get UTXO from bitcoin core without importing the address into the wallet?

Bitcoin Core has a scantxoutset command that you can use to get the UTXOs for a particular scriptPubKey (from an address, descriptor, raw script, etc.).

|improve this answer|||||

Speaking as a formal wallet engineer, what we did back then,

  1. Once in a while, we would batch generate lots of bitcoin addresses and import them into bitcoind.
  2. Can't speak for ALL applications, for us, we let bitcoind manage all its UTXO set.
  3. Depending on the situation,
    • if the address is newly generated by you, then no, you have to import it first because, well, it's new, you have to tell bitcoind to use it.
    • if it's a used address, I believe you can parse its UTXOs from all the block data, though we never did that.
|improve this answer|||||
  • Thanks, Does having address imported in the wallet suggested for production ?, What are the safety measure that has to be taken? – Tharun Prabakaran Nov 14 '19 at 7:38
  • Yes. You probably need to periodically import a batch of addresses into the wallet, as a production site, however that's more of a topic of software engeering. As for safety measure, if you are generating those addresses, it's recommended to use HD wallet so your private keys won't get exposed. – yyforyongyu Nov 14 '19 at 9:31
  • 1
    Using an HD wallet does not prevent exposure of your private keys, especially if you are importing them into Bitcoin Core – Raghav Sood Nov 14 '19 at 9:33
  • 1) Import addresses as watch-only; 2) Use an HD wallet, and save the master private key offline; 3) Construct raw transaction online, send it to offline signing. How's my private key exposed? – yyforyongyu Nov 14 '19 at 9:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.