use set instead of list in memorypool_update
[electrum-server.git] / HOWTO.md
index 59dc5b0..51f30c7 100644 (file)
--- a/HOWTO.md
+++ b/HOWTO.md
@@ -97,17 +97,18 @@ our ~/bin directory:
     $ chmod +x ~/src/electrum/server/server.py
     $ ln -s ~/src/electrum/server/server.py ~/bin/electrum-server
 
-### Step 3. Download Bitcoind stable & patch it
+### Step 3. Download bitcoind
 
-In order for the latest versions of Electrum to work properly we currently recommend bitcoind 0.8.5 stable.  
-0.8.5 can be downloaded from github or sourceforge and it needs to be patched with an electrum specific patch.
-bitcoin@master i.e. git head may not currently work with electrum-server even if the patch applies cleanly.
+Older versions of Electrum used to require a patched version of bitcoind. 
+This is not the case anymore since bitcoind supports the 'txindex' option.
+We currently recommend bitcoind 0.8.5 stable.
+
+If your package manager does not supply a recent bitcoind and prefer to compile
+here are some pointers for Ubuntu:
 
     $ cd ~/src && wget http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.5/bitcoin-0.8.5-linux.tar.gz
     $ tar xfz bitcoin-0.8.5-linux.tar.gz
-    $ cd bitcoin-0.8.5-linux/src
-    $ patch -p1 < ~/src/electrum/server/patch/patch
-    $ cd src
+    $ cd bitcoin-0.8.5-linux/src/src
     $ sudo apt-get install make g++ python-leveldb libboost-all-dev libssl-dev libdb++-dev 
     $ make USE_UPNP= -f makefile.unix
     $ strip ~/src/bitcoin-0.8.5-linux/src/src/bitcoind
@@ -127,8 +128,15 @@ Write this in `bitcoin.conf`:
     rpcuser=<rpc-username>
     rpcpassword=<rpc-password>
     daemon=1
+    txindex=1
+
+
+If you have an existing installation of bitcoind and have not previously
+set txindex=1 you need to reindex the blockchain by running
+
+    $ bitcoind -reindex
 
-Restart `bitcoind`:
+If you have a fresh copy of bitcoind start `bitcoind`:
 
     $ bitcoind
 
@@ -173,7 +181,7 @@ The pruning server uses leveldb and keeps a smaller and
 faster database by pruning spent transactions. It's a lot quicker to get up
 and running and requires less maintenance and diskspace than abe.
 
-The section in the configuration file looks like this:
+The section in the electrum server configuration file (see step 10) looks like this:
 
      [leveldb]
      path = /path/to/your/database
@@ -182,23 +190,29 @@ The section in the configuration file looks like this:
 
 ### Step 8. Import blockchain into the database or download it
 
+It's recommended to fetch a pre-processed leveldb from the net
+
+You can fetch recent copies of electrum leveldb databases and further instructions 
+from the Electrum full archival server foundry at:
+http://foundry.electrum.org/ 
+
+Alternatively if you have the time and nerve you can import the blockchain yourself.
+
 As of April 2013 it takes between 6-24 hours to import 230k of blocks, depending
 on CPU speed, I/O speed and selected pruning limit.
 
-It's considerably faster to index in memory. You can use /dev/shm or indexing in RAM
+It's considerably faster to index in memory. You can use /dev/shm or
 or create a tmpfs which will also use swap if you run out of memory:
 
     $ sudo mount -t tmpfs -o rw,nodev,nosuid,noatime,size=6000M,mode=0777 none /tmpfs
 
+Figures from April 2013:
 At limit 100 the database comes to 2,6 GB with 230k blocks and takes roughly 6h to import in /dev/shm.
 At limit 1000 the database comes to 3,0 GB with 230k blocks and takes roughly 10h to import in /dev/shm.
 At limit 10000 the database comes to 3,5 GB with 230k blocks and takes roughly 24h to import in /dev/shm.
 
-Alternatively you can fetch a pre-processed leveldb from the net
-
-You can fetch recent copies of electrum leveldb databases and further instructions 
-from the Electrum full archival server foundry at:
-http://foundry.electrum.org/ 
+As of November 2013 expect at least double the time for indexing the blockchain. Databases have grown to
+roughly 4 GB, give or take a few hundred MB between pruning limits 100 and 10000. 
 
 
 ### Step 9. Create a self-signed SSL cert