URI: 
       tdrop support for multiple accounts (bip44) in standard wallets - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit da968b60e474a39bcea99c498010a478a7d75748
   DIR parent 084a2f60aedd2d1c9de5b36105bad641b7549f3d
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Mon,  5 Jan 2015 00:33:10 +0100
       
       drop support for multiple accounts (bip44) in standard wallets
       
       Diffstat:
         M lib/bitcoin.py                      |       4 +++-
         M lib/mnemonic.py                     |       2 +-
         M lib/version.py                      |       2 +-
         M lib/wallet.py                       |      18 +++++++++++-------
         M plugins/trezor.py                   |       7 ++++---
       
       5 files changed, 20 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/lib/bitcoin.py b/lib/bitcoin.py
       t@@ -749,9 +749,11 @@ def bip32_root(seed, testnet=False):
        
        
        def bip32_private_derivation(xprv, branch, sequence, testnet=False):
       +    assert sequence.startswith(branch)
       +    if branch == sequence:
       +        return xprv, xpub_from_xprv(xprv, testnet)
            header_pub, header_priv = _get_headers(testnet)
            depth, fingerprint, child_number, c, k = deserialize_xkey(xprv)
       -    assert sequence.startswith(branch)
            sequence = sequence[len(branch):]
            for n in sequence.split('/'):
                if n == '': continue
   DIR diff --git a/lib/mnemonic.py b/lib/mnemonic.py
       t@@ -121,7 +121,7 @@ class Mnemonic(object):
            def mnemonic_to_seed(self, mnemonic, passphrase):
                PBKDF2_ROUNDS = 2048
                mnemonic = prepare_seed(mnemonic)
       -        return pbkdf2.PBKDF2(mnemonic, 'mnemonic' + passphrase, iterations = PBKDF2_ROUNDS, macmodule = hmac, digestmodule = hashlib.sha512).read(64)
       +        return pbkdf2.PBKDF2(mnemonic, 'electrum' + passphrase, iterations = PBKDF2_ROUNDS, macmodule = hmac, digestmodule = hashlib.sha512).read(64)
        
            def mnemonic_encode(self, i):
                n = len(self.wordlist)
   DIR diff --git a/lib/version.py b/lib/version.py
       t@@ -1,6 +1,6 @@
        ELECTRUM_VERSION = "2.0"    # version of the client package
        PROTOCOL_VERSION = '0.9'    # protocol version requested
       -NEW_SEED_VERSION = 10       # electrum versions >= 2.0
       +NEW_SEED_VERSION = 11       # electrum versions >= 2.0
        OLD_SEED_VERSION = 4        # electrum versions < 2.0
        
        
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -1329,7 +1329,7 @@ class BIP32_Wallet(Deterministic_Wallet):
                self.add_master_public_key(name, xpub)
        
            def mnemonic_to_seed(self, seed, password):
       -         return Mnemonic.mnemonic_to_seed(seed, password)
       +        return Mnemonic.mnemonic_to_seed(seed, password)
        
            def make_seed(self):
                lang = self.storage.config.get('language')
       t@@ -1468,18 +1468,22 @@ class BIP32_HD_Wallet(BIP32_Wallet):
        
        
        
       -class NewWallet(BIP32_HD_Wallet, Mnemonic):
       -    # bip 44
       +class NewWallet(BIP32_Wallet, Mnemonic):
       +    # Standard wallet
            root_name = 'x/'
       -    root_derivation = "m/44'/0'"
       +    root_derivation = "m/"
            wallet_type = 'standard'
        
       +    def create_main_account(self, password):
       +        xpub = self.master_public_keys.get("x/")
       +        account = BIP32_Account({'xpub':xpub})
       +        self.add_account('0', account)
       +
        
        class Wallet_2of2(BIP32_Wallet, Mnemonic):
            # Wallet with multisig addresses.
       -    # Cannot create accounts
            root_name = "x1/"
       -    root_derivation = "m/44'/0'"
       +    root_derivation = "m/"
            wallet_type = '2of2'
        
            def can_import(self):
       t@@ -1633,7 +1637,7 @@ class Wallet(object):
        
                if seed_version not in [OLD_SEED_VERSION, NEW_SEED_VERSION]:
                    msg = "This wallet seed is not supported anymore."
       -            if seed_version in [5, 7, 8, 9]:
       +            if seed_version in [5, 7, 8, 9, 10]:
                        msg += "\nTo open this wallet, try 'git checkout seed_v%d'"%seed_version
                    raise BaseException(msg)
        
   DIR diff --git a/plugins/trezor.py b/plugins/trezor.py
       t@@ -12,7 +12,7 @@ from electrum.bitcoin import EncodeBase58Check, public_key_to_bc_address, bc_add
        from electrum.i18n import _
        from electrum.plugins import BasePlugin, hook
        from electrum.transaction import deserialize
       -from electrum.wallet import NewWallet
       +from electrum.wallet import BIP32_HD_Wallet
        from electrum.util import print_error
        
        from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog
       t@@ -161,11 +161,12 @@ class Plugin(BasePlugin):
                    return False
        
        
       -class TrezorWallet(NewWallet):
       +class TrezorWallet(BIP32_HD_Wallet):
            wallet_type = 'trezor'
       +    root_derivation = "m/44'/0'"
        
            def __init__(self, storage):
       -        NewWallet.__init__(self, storage)
       +        BIP32_HD_Wallet.__init__(self, storage)
                self.transport = None
                self.client = None
                self.mpk = None