tRevert "Revert "bump seed_version"" - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit a1f91ee49ece33e6319cfec18b4a1e1b6bd3e2f2 DIR parent ce5ab39ba2604b45e6a8537444884c2d086dfe27 HTML Author: ThomasV <thomasv@electrum.org> Date: Fri, 27 Oct 2017 15:00:09 +0200 Revert "Revert "bump seed_version"" This reverts commit ce5ab39ba2604b45e6a8537444884c2d086dfe27. Diffstat: M lib/storage.py | 42 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 19 deletions(-) --- DIR diff --git a/lib/storage.py b/lib/storage.py t@@ -46,7 +46,7 @@ from . import bitcoin OLD_SEED_VERSION = 4 # electrum versions < 2.0 NEW_SEED_VERSION = 11 # electrum versions >= 2.0 -FINAL_SEED_VERSION = 14 # electrum >= 2.7 will set this to prevent +FINAL_SEED_VERSION = 15 # electrum >= 2.7 will set this to prevent # old versions from overwriting new format t@@ -258,7 +258,7 @@ class WalletStorage(PrintError): self.convert_wallet_type() self.convert_account() self.convert_version_13_b() - self.convert_version_14() + self.convert_version_15() self.put('seed_version', FINAL_SEED_VERSION) # just to be sure self.write() t@@ -373,7 +373,7 @@ class WalletStorage(PrintError): self.put('seed_version', 13) - def convert_version_14(self): + def convert_version_15(self): # convert imported wallets for 3.0 if not self._is_upgrade_method_needed(13, 13): return t@@ -400,8 +400,7 @@ class WalletStorage(PrintError): self.put('addresses', d) self.put('pubkeys', None) self.put('wallet_type', 'imported') - - self.put('seed_version', 14) + self.put('seed_version', 15) def convert_imported(self): # '/x' is the internal ID for imported accounts t@@ -454,21 +453,26 @@ class WalletStorage(PrintError): seed_version = self.get('seed_version') if not seed_version: seed_version = OLD_SEED_VERSION if len(self.get('master_public_key','')) == 128 else NEW_SEED_VERSION + if seed_version==14 and self.get('seed_type') == 'segwit': + self.raise_unsupported_version(seed_version) if seed_version >=12: return seed_version if seed_version not in [OLD_SEED_VERSION, NEW_SEED_VERSION]: - msg = "Your wallet has an unsupported seed version." - msg += '\n\nWallet file: %s' % os.path.abspath(self.path) - if seed_version in [5, 7, 8, 9, 10]: - msg += "\n\nTo open this wallet, try 'git checkout seed_v%d'"%seed_version - if seed_version == 6: - # version 1.9.8 created v6 wallets when an incorrect seed was entered in the restore dialog - msg += '\n\nThis file was created because of a bug in version 1.9.8.' - if self.get('master_public_keys') is None and self.get('master_private_keys') is None and self.get('imported_keys') is None: - # pbkdf2 was not included with the binaries, and wallet creation aborted. - msg += "\nIt does not contain any keys, and can safely be removed." - else: - # creation was complete if electrum was run from source - msg += "\nPlease open this file with Electrum 1.9.8, and move your coins to a new wallet." - raise BaseException(msg) + self.raise_unsupported_version(seed_version) return seed_version + + def raise_unsupported_version(self, seed_version): + msg = "Your wallet has an unsupported seed version." + msg += '\n\nWallet file: %s' % os.path.abspath(self.path) + if seed_version in [5, 7, 8, 9, 10, 14]: + msg += "\n\nTo open this wallet, try 'git checkout seed_v%d'"%seed_version + if seed_version == 6: + # version 1.9.8 created v6 wallets when an incorrect seed was entered in the restore dialog + msg += '\n\nThis file was created because of a bug in version 1.9.8.' + if self.get('master_public_keys') is None and self.get('master_private_keys') is None and self.get('imported_keys') is None: + # pbkdf2 was not included with the binaries, and wallet creation aborted. + msg += "\nIt does not contain any keys, and can safely be removed." + else: + # creation was complete if electrum was run from source + msg += "\nPlease open this file with Electrum 1.9.8, and move your coins to a new wallet." + raise BaseException(msg)