tcommands: change API of "make_seed" and "create" commands - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 1c75d939d978caea9ae6512c3820c47f8e73da52
 (DIR) parent 0ec9f794023af9ded64a5f9477868dfbf3e92acd
 (HTM) Author: SomberNight <somber.night@protonmail.com>
       Date:   Fri,  9 Aug 2019 22:02:01 +0200
       
       commands: change API of "make_seed" and "create" commands
       
       instead of "segwit" boolean, take a "seed_type" optional arg
       default seed_type to "segwit"
       previously these commands created legacy seeds by defalt
       
       Diffstat:
         M electrum/commands.py                |      11 +++++------
         M electrum/mnemonic.py                |       4 +++-
         M electrum/tests/test_mnemonic.py     |       2 +-
         M electrum/tests/test_wallet.py       |       1 -
         M electrum/version.py                 |       1 +
         M electrum/wallet.py                  |       3 +--
       
       6 files changed, 11 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/electrum/commands.py b/electrum/commands.py
       t@@ -132,7 +132,7 @@ class Commands:
                return ' '.join(sorted(known_commands.keys()))
        
            @command('')
       -    def create(self, passphrase=None, password=None, encrypt_file=True, segwit=False):
       +    def create(self, passphrase=None, password=None, encrypt_file=True, seed_type=None):
                """Create a new wallet.
                If you want to be prompted for an argument, type '?' or ':' (concealed)
                """
       t@@ -140,7 +140,7 @@ class Commands:
                                      passphrase=passphrase,
                                      password=password,
                                      encrypt_file=encrypt_file,
       -                              segwit=segwit)
       +                              seed_type=seed_type)
                return {
                    'seed': d['seed'],
                    'path': d['wallet'].storage.path,
       t@@ -203,11 +203,10 @@ class Commands:
                return True
        
            @command('')
       -    def make_seed(self, nbits=132, language=None, segwit=False):
       +    def make_seed(self, nbits=132, language=None, seed_type=None):
                """Create a seed"""
                from .mnemonic import Mnemonic
       -        t = 'segwit' if segwit else 'standard'
       -        s = Mnemonic(language).make_seed(t, nbits)
       +        s = Mnemonic(language).make_seed(seed_type, num_bits=nbits)
                return s
        
            @command('n')
       t@@ -810,7 +809,7 @@ command_options = {
            'from_addr':   ("-F", "Source address (must be a wallet address; use sweep to spend from non-wallet address)."),
            'change_addr': ("-c", "Change address. Default is a spare address, or the source address if it's not in the wallet"),
            'nbits':       (None, "Number of bits of entropy"),
       -    'segwit':      (None, "Create segwit seed"),
       +    'seed_type':   (None, "The type of seed to create, e.g. 'standard' or 'segwit'"),
            'language':    ("-L", "Default language for wordlist"),
            'passphrase':  (None, "Seed extension"),
            'privkey':     (None, "Private key. Set to '?' to get a prompt."),
 (DIR) diff --git a/electrum/mnemonic.py b/electrum/mnemonic.py
       t@@ -160,7 +160,9 @@ class Mnemonic(Logger):
                    i = i*n + k
                return i
        
       -    def make_seed(self, seed_type='standard', num_bits=132):
       +    def make_seed(self, seed_type=None, *, num_bits=132):
       +        if seed_type is None:
       +            seed_type = 'segwit'
                prefix = version.seed_prefix(seed_type)
                # increase num_bits in order to obtain a uniform distribution for the last word
                bpw = math.log(len(self.wordlist), 2)
 (DIR) diff --git a/electrum/tests/test_mnemonic.py b/electrum/tests/test_mnemonic.py
       t@@ -120,7 +120,7 @@ class Test_NewMnemonic(SequentialTestCase):
                iters = 10
                m = mnemonic.Mnemonic(lang='en')
                for _ in range(iters):
       -            seed = m.make_seed()
       +            seed = m.make_seed("standard")
                    i = m.mnemonic_decode(seed)
                    self.assertEqual(m.mnemonic_encode(i), seed)
        
 (DIR) diff --git a/electrum/tests/test_wallet.py b/electrum/tests/test_wallet.py
       t@@ -156,7 +156,6 @@ class TestCreateRestoreWallet(WalletTestCase):
                                      passphrase=passphrase,
                                      password=password,
                                      encrypt_file=encrypt_file,
       -                              segwit=True,
                                      gap_limit=1)
                wallet = d['wallet']  # type: Standard_Wallet
                wallet.check_password(password)
 (DIR) diff --git a/electrum/version.py b/electrum/version.py
       t@@ -19,3 +19,4 @@ def seed_prefix(seed_type):
                return SEED_PREFIX_2FA
            elif seed_type == '2fa_segwit':
                return SEED_PREFIX_2FA_SW
       +    raise Exception(f"unknown seed_type: {seed_type}")
 (DIR) diff --git a/electrum/wallet.py b/electrum/wallet.py
       t@@ -2005,13 +2005,12 @@ class Wallet(object):
                raise WalletFileException("Unknown wallet type: " + str(wallet_type))
        
        
       -def create_new_wallet(*, path, passphrase=None, password=None, encrypt_file=True, segwit=True, gap_limit=None):
       +def create_new_wallet(*, path, passphrase=None, password=None, encrypt_file=True, seed_type=None, gap_limit=None):
            """Create a new wallet"""
            storage = WalletStorage(path)
            if storage.file_exists():
                raise Exception("Remove the existing wallet first!")
        
       -    seed_type = 'segwit' if segwit else 'standard'
            seed = Mnemonic('en').make_seed(seed_type)
            k = keystore.from_seed(seed, passphrase)
            storage.put('keystore', k.dump())