1

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?
1

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.

1

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.).

0

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.
4
  • Thanks, Does having address imported in the wallet suggested for production ?, What are the safety measure that has to be taken? 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. 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 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? Nov 14 '19 at 9:38
0

My major concern was having privatekey in the Bitcoin Core wallet, So I did generate the address outside the Bitcoin core from third party library or HSM and used importaddress RPC method to import the address as watch-only address and then Bitcoin core handled all UTXO monitoring, Then use listunspent to get the UTXO of the imported address. By this approach privatekey is cold from the core.

Thanks @yyforyongyu for suggesting this.

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.