Fix get_block_number bug.
[electrum-server.git] / backends / abe / __init__.py
index 48c01de..40e1927 100644 (file)
@@ -10,11 +10,8 @@ from Queue import Queue
 import time, threading
 
 
-
 class AbeStore(Datastore_class):
 
-    addrtype = 48
-
     def __init__(self, config):
         conf = DataStore.CONFIG_DEFAULTS
         args, argv = readconf.parse_argv( [], conf)
@@ -26,8 +23,21 @@ class AbeStore(Datastore_class):
         elif args.dbtype == 'psycopg2':
             args.connect_args = { 'database' : config.get('database','database') }
 
+        coin = config.get('server', 'coin')
+        self.addrtype = 0
+        if coin == 'litecoin':
+            print 'Litecoin settings:'
+            datadir = config.get('server','datadir')
+            print '  datadir = ' + datadir
+            args.datadir = [{"dirname":datadir,"chain":"Litecoin","code3":"LTC","address_version":"\u0030"}]
+            print '  addrtype = 48'
+            self.addrtype = 48
+
         Datastore_class.__init__(self,args)
 
+        self.chain_id = self.datadirs[0]["chain_id"];
+        print 'Coin chain_id = %d' % self.chain_id
+
         self.sql_limit = int( config.get('database','limit') )
 
         self.tx_cache = {}
@@ -70,7 +80,7 @@ class AbeStore(Datastore_class):
                 #print "WARNING: missing tx_in for tx", txid
                 continue
 
-            address = hash_to_address(chr(addrtype), _hash)
+            address = hash_to_address(chr(self.addrtype), _hash)
             if self.tx_cache.has_key(address):
                 print "cache: invalidating", address
                 self.tx_cache.pop(address)
@@ -83,7 +93,7 @@ class AbeStore(Datastore_class):
                 #print "WARNING: missing tx_out for tx", txid
                 continue
 
-            address = hash_to_address(chr(addrtype), _hash)
+            address = hash_to_address(chr(self.addrtype), _hash)
             if self.tx_cache.has_key(address):
                 print "cache: invalidating", address
                 self.tx_cache.pop(address)
@@ -162,8 +172,9 @@ class AbeStore(Datastore_class):
               JOIN txout prevout ON (txin.txout_id = prevout.txout_id)
               JOIN pubkey ON (pubkey.pubkey_id = prevout.pubkey_id)
              WHERE pubkey.pubkey_hash = ?
+               AND cc.chain_id = ?
                AND cc.in_longest = 1
-             LIMIT ? """, (dbhash,self.sql_limit))
+             LIMIT ? """, (dbhash, self.chain_id, self.sql_limit))
 
         if len(out)==self.sql_limit: 
             raise BaseException('limit reached')
@@ -205,8 +216,9 @@ class AbeStore(Datastore_class):
               JOIN txout ON (txout.tx_id = tx.tx_id)
               JOIN pubkey ON (pubkey.pubkey_id = txout.pubkey_id)
              WHERE pubkey.pubkey_hash = ?
+               AND cc.chain_id = ?
                AND cc.in_longest = 1
-               LIMIT ? """, (dbhash,self.sql_limit))
+               LIMIT ? """, (dbhash, self.chain_id, self.sql_limit))
 
         if len(out)==self.sql_limit: 
             raise BaseException('limit reached')
@@ -316,7 +328,7 @@ class AbeStore(Datastore_class):
                 if not _hash:
                     #print "WARNING: missing tx_in for tx", tx_id, addr
                     continue
-                address = hash_to_address(chr(addrtype), _hash)
+                address = hash_to_address(chr(self.addrtype), _hash)
                 txinputs.append(address)
             txpoint['inputs'] = txinputs
             txoutputs = []
@@ -326,7 +338,7 @@ class AbeStore(Datastore_class):
                 if not _hash:
                     #print "WARNING: missing tx_out for tx", tx_id, addr
                     continue
-                address = hash_to_address(chr(addrtype), _hash)
+                address = hash_to_address(chr(self.addrtype), _hash)
                 txoutputs.append(address)
             txpoint['outputs'] = txoutputs
 
@@ -412,7 +424,7 @@ class AbeStore(Datastore_class):
         with store.dblock:
             store.catch_up()
             store.memorypool_update()
-            block_number = store.get_block_number(1)
+            block_number = store.get_block_number(store.chain_id)
             return block_number