diff --git a/electrum b/electrum index 8fbc5fa8..5ed9e785 100755 --- a/electrum +++ b/electrum @@ -24,8 +24,8 @@ from decimal import Decimal from electrum import Wallet, SecretToASecret, WalletSynchronizer, format_satoshis -known_commands = ['help', 'validateaddress', 'balance', 'contacts', 'create', 'restore', 'payto', 'sendtx', 'password', 'addresses', 'history', 'label', 'mktx','seed','import','signmessage','verifymessage','eval'] -offline_commands = ['password', 'mktx', 'history', 'label', 'contacts', 'help', 'validateaddress', 'signmessage', 'verifymessage', 'eval', 'create', 'addresses', 'import', 'seed'] +known_commands = ['help', 'validateaddress', 'balance', 'contacts', 'create', 'restore', 'payto', 'sendtx', 'password', 'addresses', 'history', 'label', 'mktx','seed','import','signmessage','verifymessage','eval','deseed'] +offline_commands = ['password', 'mktx', 'history', 'label', 'contacts', 'help', 'validateaddress', 'signmessage', 'verifymessage', 'eval', 'create', 'addresses', 'import', 'seed','deseed'] protected_commands = ['payto', 'password', 'mktx', 'seed', 'import','signmessage' ] if __name__ == '__main__': @@ -237,6 +237,8 @@ if __name__ == '__main__': print "options: --fee, --fromaddr, --changeaddr" elif cmd2 == 'seed': print "show generation seed of your wallet. password protected." + elif cmd2 == 'deseed': + print "remove the seed of your wallet." elif cmd2 == 'eval': print "Run python eval() on an object\nSyntax: eval \nExample: eval \"wallet.aliases\"" @@ -245,6 +247,16 @@ if __name__ == '__main__': seed = wallet.pw_decode( wallet.seed, password) print seed, '"'+' '.join(mnemonic.mn_encode(seed))+'"' + elif cmd == 'deseed': + print "Warning: you are going to remove the seed from this wallet, which will forbid to send coins.\nPlease make sure that you have saved the seed elsewhere." + if raw_input("Are you sure you want to continue? (y/n) ") in ['y','Y','yes']: + wallet.seed = '' + wallet.use_encryption = False + wallet.save() + print "Done." + else: + print "Action canceled." + elif cmd == 'validateaddress': addr = args[1] print wallet.is_valid(addr) diff --git a/lib/gui.py b/lib/gui.py index bbd61b28..e6fa2538 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -60,6 +60,9 @@ def numbify(entry, is_int = False): def show_seed_dialog(wallet, password, parent): from electrum import mnemonic + if not wallet.seed: + show_message("No seed") + return try: seed = wallet.pw_decode( wallet.seed, password) except: @@ -483,6 +486,10 @@ def password_dialog(parent): if result != gtk.RESPONSE_CANCEL: return pw def change_password_dialog(wallet, parent, icon): + if not wallet.seed: + show_message("No seed") + return + if parent: msg = 'Your wallet is encrypted. Use this dialog to change the password. To disable wallet encryption, enter an empty new password.' if wallet.use_encryption else 'Your wallet keys are not encrypted' else: diff --git a/lib/gui_qt.py b/lib/gui_qt.py index e412bcd2..e1804121 100644 --- a/lib/gui_qt.py +++ b/lib/gui_qt.py @@ -695,6 +695,11 @@ class ElectrumWindow(QMainWindow): @staticmethod def show_seed_dialog(wallet, parent=None): from electrum import mnemonic + + if not wallet.seed: + QMessageBox.information(parent, 'Message', 'No seed', 'OK') + return + if wallet.use_encryption: password = parent.password_dialog() if not password: return @@ -852,6 +857,11 @@ class ElectrumWindow(QMainWindow): @staticmethod def change_password_dialog( wallet, parent=None ): + + if not wallet.seed: + QMessageBox.information(parent, 'Message', 'No seed', 'OK') + return + d = QDialog(parent) d.setModal(1)