electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit e6dbe621c6976d4a57d3d16308d9ee8759af9ea2
parent 441b695815f2a3171141e2803ba21102706364fa
Author: Neil Booth <kyuupichan@gmail.com>
Date:   Thu, 31 Dec 2015 16:05:05 +0900

Make class methods static on Wallet

Diffstat:
Mlib/wallet.py | 140++++++++++++++++++++++++++++++++++++++-----------------------------------------
1 file changed, 68 insertions(+), 72 deletions(-)

diff --git a/lib/wallet.py b/lib/wallet.py @@ -1945,19 +1945,12 @@ class Wallet(object): return wallet - @classmethod - def is_seed(self, seed): - if not seed: - return False - elif is_old_seed(seed): - return True - elif is_new_seed(seed): - return True - else: - return False + @staticmethod + def is_seed(seed): + return is_old_seed(seed) or is_new_seed(seed) - @classmethod - def is_old_mpk(self, mpk): + @staticmethod + def is_old_mpk(mpk): try: int(mpk, 16) assert len(mpk) == 128 @@ -1965,8 +1958,8 @@ class Wallet(object): except: return False - @classmethod - def is_xpub(self, text): + @staticmethod + def is_xpub(text): try: assert text[0:4] == 'xpub' deserialize_xkey(text) @@ -1974,8 +1967,8 @@ class Wallet(object): except: return False - @classmethod - def is_xprv(self, text): + @staticmethod + def is_xprv(text): try: assert text[0:4] == 'xprv' deserialize_xkey(text) @@ -1983,26 +1976,29 @@ class Wallet(object): except: return False - @classmethod - def is_address(self, text): - if not text: - return False - for x in text.split(): - if not bitcoin.is_address(x): - return False - return True - - @classmethod - def is_private_key(self, text): - if not text: - return False - for x in text.split(): - if not bitcoin.is_private_key(x): - return False - return True - - @classmethod - def from_seed(self, seed, password, storage): + @staticmethod + def is_address(text): + parts = text.split() + return bool(parts) and all(bitcoin.is_address(x) for x in parts) + + @staticmethod + def is_private_key(text): + parts = text.split() + return bool(parts) and all(bitcoin.is_private_key(x) for x in parts) + + @staticmethod + def is_any(text): + return (Wallet.is_seed(text) or Wallet.is_old_mpk(text) + or Wallet.is_xprv(text) or Wallet.is_xpub(text) + or Wallet.is_address(text) or Wallet.is_private_key(text)) + + @staticmethod + def should_encrypt(text): + return (Wallet.is_seed(text) or Wallet.is_xprv(text) + or Wallet.is_private_key(text)) + + @staticmethod + def from_seed(seed, password, storage): if is_old_seed(seed): klass = OldWallet elif is_new_seed(seed): @@ -2013,80 +2009,80 @@ class Wallet(object): w.create_main_account(password) return w - @classmethod - def from_address(self, text, storage): + @staticmethod + def from_address(text, storage): w = Imported_Wallet(storage) for x in text.split(): w.accounts[IMPORTED_ACCOUNT].add(x, None, None, None) w.save_accounts() return w - @classmethod - def from_private_key(self, text, password, storage): + @staticmethod + def from_private_key(text, password, storage): w = Imported_Wallet(storage) w.update_password(None, password) for x in text.split(): w.import_key(x, password) return w - @classmethod - def from_old_mpk(self, mpk, storage): + @staticmethod + def from_old_mpk(mpk, storage): w = OldWallet(storage) w.seed = '' w.create_watching_only_wallet(mpk) return w - @classmethod - def from_xpub(self, xpub, storage): + @staticmethod + def from_xpub(xpub, storage): w = BIP32_Simple_Wallet(storage) w.create_xpub_wallet(xpub) return w - @classmethod - def from_xprv(self, xprv, password, storage): + @staticmethod + def from_xprv(xprv, password, storage): w = BIP32_Simple_Wallet(storage) w.create_xprv_wallet(xprv, password) return w - @classmethod - def from_multisig(klass, key_list, password, storage, wallet_type): + @staticmethod + def from_multisig(key_list, password, storage, wallet_type): storage.put('wallet_type', wallet_type) - self = Multisig_Wallet(storage) - key_list = sorted(key_list, key = lambda x: klass.is_xpub(x)) + wallet = Multisig_Wallet(storage) + key_list = sorted(key_list, key = lambda x: Wallet.is_xpub(x)) for i, text in enumerate(key_list): - assert klass.is_seed(text) or klass.is_xprv(text) or klass.is_xpub(text) + assert Wallet.is_seed(text) or Wallet.is_xprv(text) or Wallet.is_xpub(text) name = "x%d/"%(i+1) - if klass.is_xprv(text): + if Wallet.is_xprv(text): xpub = bitcoin.xpub_from_xprv(text) - self.add_master_public_key(name, xpub) - self.add_master_private_key(name, text, password) - elif klass.is_xpub(text): - self.add_master_public_key(name, text) - elif klass.is_seed(text): + wallet.add_master_public_key(name, xpub) + wallet.add_master_private_key(name, text, password) + elif Wallet.is_xpub(text): + wallet.add_master_public_key(name, text) + elif Wallet.is_seed(text): if name == 'x1/': - self.add_seed(text, password) - self.create_master_keys(password) + wallet.add_seed(text, password) + wallet.create_master_keys(password) else: - self.add_cosigner_seed(text, name, password) - self.use_encryption = (password != None) - self.storage.put('use_encryption', self.use_encryption) - self.create_main_account(password) - return self + wallet.add_cosigner_seed(text, name, password) + wallet.use_encryption = (password != None) + wallet.storage.put('use_encryption', wallet.use_encryption) + wallet.create_main_account(password) + return wallet - @classmethod - def from_text(klass, text, password, storage): + @staticmethod + def from_text(text, password, storage): if Wallet.is_xprv(text): - wallet = klass.from_xprv(text, password, storage) + wallet = Wallet.from_xprv(text, password, storage) elif Wallet.is_old_mpk(text): - wallet = klass.from_old_mpk(text, storage) + wallet = Wallet.from_old_mpk(text, storage) elif Wallet.is_xpub(text): - wallet = klass.from_xpub(text, storage) + wallet = Wallet.from_xpub(text, storage) elif Wallet.is_address(text): - wallet = klass.from_address(text, storage) + wallet = Wallet.from_address(text, storage) elif Wallet.is_private_key(text): - wallet = klass.from_private_key(text, password, storage) + wallet = Wallet.from_private_key(text, password, storage) elif Wallet.is_seed(text): - wallet = klass.from_seed(text, password, storage) + wallet = Wallet.from_seed(text, password, storage) else: raise BaseException('Invalid seedphrase or key') return wallet