How to run a pruning node with leveldb Pruning nodes use a lightweight database to store address histories. Only unspent coins are kept in that database; spent outputs are pruned. As of November 2013 all public servers operate this way. Please see HOWTO.md for more detailled information. The following is a short outline: __________________________________________________________ 1. Run bitcoind. Install version 0.8.5 or higher. There is no need to patch bitcoind anymore. You need to run it with the config option txindex=1 . If you have not previously done so, you may need to reindex the bitcoind blockchain Note: Even though Electrum's database uses pruning, you cannot use it with a ultra-pruning bitcoind (forthcoming in 0.9 or later). A full bitcoin node is required in order to know for each address if it has been used. Pruning occurs only at the level of the Electrum database. __________________________________________________________ 2. Install python-leveldb: Starting at Ubuntu 12.10 you can use apt to install leveldb. If you rather stay on 12.04 LTS you can use the backport and add "deb http://archive.ubuntu.com/ubuntu precise-backports main restricted universe" to your sources file. Install the package with: sudo apt-get install python-leveldb alternatively build yourself, see http://code.google.com/p/py-leveldb/ and http://peter-hoffmann.com/2011/installation-leveldb-ubuntu-python.html make sure you have libtool, automake and pkg-config __________________________________________________________ 3. edit /etc/electrum.conf : [server] backend = leveldb [leveldb] path = /path/to/your/database pruning_limit = 10 ______________________________________________________________ 4. catch up with the blockchain. In order to speed up the initial catch_up phase, it is recommended to locate your database in shared memory: path = /run/shm/electrum_db Once your server has finished catching up, copy your database to disk and update the path in /etc/electrum.conf During the catch_up phase, you can interrupt the server with Ctrl-C; it will safely write the current status in the database and exit. _________________________________ 5. enjoy! Once the server is synchronized, it will listen to ports, and the normal way to stop it is to use the 'stop' script. This script will wait until the database is closed. Other commands are available: ./server info : view connections ./server load : view the size of the queue ______________________ Troubleshooting: * if your server or bitcoind is killed because is uses too much memory, configure bitcoind to limit the number of connections * if you see "Too many open files" errors, you may need to increase your user's File Descriptors limit. For this, see http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/