Author

Topic: make_seed command in console (Read 193 times)

HCP
legendary
Activity: 2086
Merit: 4361
January 24, 2021, 03:07:00 PM
#9
But true, reminder for everyone else, need all xpubs and not just the minimum number of signatures. Whoever makes the watch-only wallet should duplicate all of those xpubs for everyone else (or have multiple backups).
Everyone will need everyone else's Master Public Key ("xpub") anyway... as everyone participating as a co-signer will need to have their own "copy" of the MultiSig wallet to be able to sign transactions... you can't import partially signed transactions from the multisig and sign it from your "standard" wallet, even if you used the master public key from that "standard" wallet to create the multisig.

You'll get "Transaction unrelated to your wallet":



So, effectively everyone participating should have:
- Their own seed/Master Private Key and xpub
- xpub's from all other parties involved
legendary
Activity: 3472
Merit: 10611
January 24, 2021, 12:16:28 AM
#8
You'll could probably hit some standard rule limitations due to large number of sigops. For example each Xof15 multisig input using P2SH is counted as 60 sigops* for legacy multisig and 15 sigops for SegWit multisig (aka the P2WSH or the wrapped one with P2SH-P2WSH), there is also a couple in outputs which I ignore for simplicity.
100 inputs with 1 or 2 outputs seem to be fine since the sigopcount is 6000 or 1500 sigops for legacy and SegWit respectively and the limit for standard seem to be at 1/5 of max block SigOpCount or 16000.

If it is bare multisig they are counted as 80 sigop each regardless of how many pubkeys they have!
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
January 23, 2021, 01:49:08 PM
#7
wow 15 cosigners. make sure you backup the xpubs as well (wallet > information). otherwise you won't be able to sign transactions even if you have the required subset of cosigners.

may i ask what the usecase is for such a large multisig setup?

I'm not sure. This is an experiment. I've only managed to make sense of 2-of-3 and 3-of-5.. Bitfinex uses 3-of-6 for their cold storage of about 140k BTC.

Only real reason I can think of is to test how much hardware can handle it, someone has tested multisig on hardware wallets and they choke on 100 inputs for more than 5 co-signers or something. Or because you can.

But true, reminder for everyone else, need all xpubs and not just the minimum number of signatures. Whoever makes the watch-only wallet should duplicate all of those xpubs for everyone else (or have multiple backups).
legendary
Activity: 3682
Merit: 1580
January 23, 2021, 07:31:25 AM
#6
wow 15 cosigners. make sure you backup the xpubs as well (wallet > information). otherwise you won't be able to sign transactions even if you have the required subset of cosigners.

may i ask what the usecase is for such a large multisig setup?
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
January 22, 2021, 08:55:51 AM
#5
Thanks for the explanations guys. I think I will stick to defaults or standard words. Native Segwit is fine. I'm going to try and experiment with some multi-sig now.

Step 1: nuke machine, air gap.
Step 2: sideload verified electrum.
Step 3: make_seed(256)
Step 4: do it on 14 other devices.
legendary
Activity: 3682
Merit: 1580
January 22, 2021, 02:52:10 AM
#4
Is there any documentation for the make_seed command? Does it make a seed with version number included, is it segwit by default for the latest Electrum version 4?

you can pass the following args:

Code:
  async def make_seed(self, nbits=None, language=None, seed_type=None):

so you can do

Code:
make_seed(nbits=256, language="english", seed_type="standard")

the above will create a 256bit seed in english with p2pkh wallet type. segwit is indeed the default type in 4.0.x

Quote
So if I just use make_seed(256) and it spits out 24 words, I can use that as my seed phrase for Electrum to set up or recover from it seems?

yes. you can also use your own larger wordlist to get smaller mnemonics. you just have to replace the english.txt file with your own one:

https://bitcoinelectrum.com/english-alpha-numeric.txt

the above file will give you a 19 word seed instead of a 24 word one. for example:

"gratify thumping 785 stoning rose 1323 1244 3189 kindred 6932 837 hyperlink expletive 2845 willing override 3967 1878 national"
legendary
Activity: 2534
Merit: 6080
Self-proclaimed Genius
January 21, 2021, 11:08:38 PM
#3
Based from the code [commands.py], there are only two optional arguments aside from from the language which are the --nbits and --seed_type.

By following what's written in the link, these examples should work:
Code:
make_seed(320,"","standard")
Code:
make_seed(320,"","2fa")
Without the "" at the middle, it'll take the "seed_type" as the language.

Walang tulugan?  :D
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
January 21, 2021, 01:37:49 PM
#2
The largest seed I could have Electrum create with the command using 1034 as the number.

Quote
>>> make_seed(1034)
"south robot know bundle flush never radar hedgehog shaft mountain poet hungry uphold inherit predict claw van view inspire stick talk wide egg blouse door eyebrow battle ostrich logic glide wink gate later flight budget trumpet victory ripple option about because rose calm fun oak rich fox vintage trophy option tip pluck jealous defy other jeans choose first know train horse repair absent close slight basket gym prosper explain obvious speak distance solid about laundry step also update door viable oil noble best hip there will soon gorilla economy correct problem negative fury knee"

Any higher and it doesn't like it:

Code:
>>> make_seed(1035)
Traceback (most recent call last):
  File "electrum\commands.py", line 181, in _run
  File "concurrent\futures\_base.py", line 435, in result
  File "concurrent\futures\_base.py", line 384, in __get_result
  File "electrum\commands.py", line 144, in func_wrapper
  File "electrum\commands.py", line 319, in make_seed
  File "electrum\mnemonic.py", line 200, in make_seed
OverflowError: (34, 'Result too large')
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
January 21, 2021, 12:26:51 PM
#1
Is there any documentation for the make_seed command? Does it make a seed with version number included, is it segwit by default for the latest Electrum version 4?

Code:
>>> make_seed(1)
"black about"
>>> make_seed(1)
"black about"
>>> make_seed(2)
"black about"
>>> make_seed(32)
"fuel apology tank"
>>> make_seed(32)
"canal family jazz"
>>> make_seed(16)
"antenna surprise"
>>> make_seed(16)
"uncle devote"
>>> make_seed(16)
"curve track"
>>> make_seed(64)
"village upset grain candy gather music"
>>> make_seed(64)
"load mule lyrics define head weekend"
>>> make_seed(257)
"february extend grain dream ice match flat empty hazard ramp plunge afraid conduct boring airport clown issue board crouch entire element phrase argue view"

So if I just use make_seed(256) and it spits out 24 words, I can use that as my seed phrase for Electrum to set up or recover from it seems?

I've tested it, and it seems to work, just wanted confirmation from anyone else who has tried it.

The 2 and 3 word results are interesting, although should not use those for an actual wallet.
Jump to: