Reduce Shamir Recovery Shares

Hi. I set up my wallet to require 16 out of 16 recovery shares. Can I change it? Thank you.

if you created the backup after last summer, you can use the “upgrade to multi-share” feature to create a new, more sane set of shares. unfortunately, you will first have to enter all 16 shares to unlock the feature.

if you created the backup before the June 2024 update, you will not be able to change it. you would need to create a new seed and move your funds to it.

1 Like

Thanks for the reply. I created it around the end of March 2024. I did a back up check yesterday with the 16 sets and took around 1 hour! I may buy another device. Having two may not be a bad idea I guess. Thanks.

From what I understand, I can wipe out my current device and create a new seed right (a new wallet, 3 out of 5 for example)? Given that I have my 16 sets of words (and yesterday performed a successful back up), after the wipe out and creation of new wallet (3 out of 5), I can recover my old wallet (16 of 16), and send the funds to the new one? Is this right?

Exactly right!
It’s going to be a pain, esp. if recovering the wallet takes you an hour, but it is perfectly workable and safe to do.

So with seeds created after the last summer update it is always possible to create new share sets based on the same masterkey?

correct.

teeeechnically you can also do it with shares created sooner, but there are some significant UX drawbacks – namely, your new shares will start with the same three words as your old shares, Trezor will not be able to recognize and separate the sets, and combining shares from the sets will result in failure to recover.

For this reason we decided not to expose the fuctionality in Trezor firmware, and the only way to do it is by writing a custom Python script on your PC.

Does the SLIP39 Python library has functions that can be used for this and only needed to be called right or is it necessary do write a complete own SLIP39 multi Share creating process?

You can use the library, but you’ll need to dive a little below the surface.

Essentially what you need to do is:

  1. decode your old seed into Encrypted Master Secret (EMS), identifier, and iteration exponent
  2. use these three pieces of data to construct a new set of shares.

That is something that normally the library is doing for you, because it expects that you (a) don’t care about the identifier, and (b) you want to decrypt the Master Secret before returning.

So basically you’d go half-way in and then half-way out, so you can’t use the “easy” functions and have to use the “more complicated” set of functions.

Thank you.
How complicated would it be to let it take random words (from the SLIP39 list) as input and generate the checksumms?