<p>Electrum servers are simply not compatible with Bitcoin Core on a development or operational level. They require a vast amount of indexes created which the node does not have, and must be created by an external tool. With the state of the art <code>electrs</code> Electrum server, it needs upwards of a day of time to create these indexes, and more than 50GB of additional data stored on disk. For the server to be performant, forks of the software use over 1TB of additional storage for these indexes.</p>

CC BY-SA 4.0
2020-07-01T18:41:09.230Z
1TB or about 50GB? that's a big difference, can you elaborate? electrs or which fork? I run an electrumx server and was thinking about changing to electrs but last time I checked electrs was not indexing mempool transactions.
Pedro
CC BY-SA 4.0
2020-07-01T20:16:27.827Z
50GB or so for the main `electrs` that is fairly slow due to passing requests back to Bitcoin Core for data consistently. 500GB-1TB for the [esplorer](https://github.com/Blockstream/electrs) fork which doesn't need to do RPC requests for Bitcoin Core.
Claris
CC BY-SA 4.0
2020-07-01T20:28:10.140Z
wow, that's why blockstream.info is so fast! mystery solved.
Pedro
CC BY-SA 4.0
2020-07-02T00:35:02.047Z
Yep. Typical time memory trade off.
Claris
CC BY-SA 4.0
2020-07-01T18:05:13.200Z
2020-07-01T18:05:13.200Z
Claris
<p>I think the preferred technique to use 'bitcoin core as a wallet backend' is through block filters, like the new compact block filters (an improvement over bloom filters). The protocol is known as Neutrino and lowers the CPU and storage requirements for your bitcoin core node (an electrumx database takes around 50 GB right now). To create these filters in bitcoin core, you need to launch add the bitcoind option <code>blockfilterindex=1</code> or <code>blockfilterindex=basic</code>. With these filters, you can filter for blocks that affect the addresses (scriptPubKeys) that belong to your wallet. Several lightning wallets use this technique</p>
<p>This block filtering technique produces some false-positives, so you will fetch blocks that end up not affecting your addresses. Because you are requesting more than just the relevant transactions to your wallet, you end up consuming much more bandwidth than using an electrum server but it has the advantage of being more private.</p>
<p>Neutrino is used by several lightning network wallets:</p>
<ul>
<li><a href="https://github.com/lightninglabs/neutrino" rel="nofollow noreferrer">Neutrino</a></li>
<li><a href="https://blog.trezor.io/bip158-compact-block-filters-9b813b07a878" rel="nofollow noreferrer">Basic tutorial</a></li>
</ul>

CC BY-SA 4.0
2020-07-01T16:14:31.660Z
2020-07-01T16:25:37.243Z
2020-07-01T16:25:37.243Z
Pedro
<p>Is there a technical reason for which there isn't an option in Bitcoin Core that would deploy an internal Electrum Server, or something similar so that a software wallet can fetch addresses and balances?</p>

<bitcoin-core><wallet><address><electrum><electrum-console>
Bitcoin Core internal Electrum Server
zndtoshi
# Bitcoin Core internal Electrum Server

(Asked by: username_0 on 2020-07-01)

Is there a technical reason for which there isn't an option in Bitcoin Core that would deploy an internal Electrum Server, or something similar so that a software wallet can fetch addresses and balances?

**Tags:** bitcoin-core, wallet, address, electrum, electrum-console


---

## 2 answers

### Answer by username_1 on 2020-07-01. Score: 2

Electrum servers are simply not compatible with Bitcoin Core on a development or operational level. They require a vast amount of indexes created which the node does not have, and must be created by an external tool. With the state of the art `electrs` Electrum server, it needs upwards of a day of time to create these indexes, and more than 50GB of additional data stored on disk. For the server to be performant, forks of the software use over 1TB of additional storage for these indexes.

> **Comments:**
> **username_2**: 1TB or about 50GB? that's a big difference, can you elaborate? electrs or which fork? I run an electrumx server and was thinking about changing to electrs but last time I checked electrs was not indexing mempool transactions.  
> **username_1**: 50GB or so for the main `electrs` that is fairly slow due to passing requests back to Bitcoin Core for data consistently. 500GB-1TB for the [esplorer](https://github.com/Blockstream/electrs) fork which doesn't need to do RPC requests for Bitcoin Core.  
> **username_2**: wow, that's why blockstream.info is so fast! mystery solved.  
> **username_1**: Yep. Typical time memory trade off.  

---

### Answer by username_2 on 2020-07-01. Score: 1

I think the preferred technique to use 'bitcoin core as a wallet backend' is through block filters, like the new compact block filters (an improvement over bloom filters). The protocol is known as Neutrino and lowers the CPU and storage requirements for your bitcoin core node (an electrumx database takes around 50 GB right now). To create these filters in bitcoin core, you need to launch add the bitcoind option `blockfilterindex=1` or `blockfilterindex=basic`. With these filters, you can filter for blocks that affect the addresses (scriptPubKeys) that belong to your wallet. Several lightning wallets use this technique

This block filtering technique produces some false-positives, so you will fetch blocks that end up not affecting your addresses. Because you are requesting more than just the relevant transactions to your wallet, you end up consuming much more bandwidth than using an electrum server but it has the advantage of being more private.

Neutrino is used by several lightning network wallets:

* [Neutrino](https://github.com/lightninglabs/neutrino)
* [Basic tutorial](https://blog.trezor.io/bip158-compact-block-filters-9b813b07a878)


---

