Author

Topic: [TUTORIAL] - How to create a multi-signed wallet on Electrum (Read 358 times)

legendary
Activity: 2534
Merit: 6080
Self-proclaimed Genius
Hi, friends. Does anyone know who wants to try using ELECTRUM WALLET on Android. I will try to offer 2 types of address models, the Android version of the Standard Wallet and the Wallet with 2FA.
You should post it as a new topic since it's off-topic to this thread.
If it's about the steps to create a MultiSig Electrum wallet in Android, that would be fine.
legendary
Activity: 2730
Merit: 7065
@gagux123
Some time ago, RickDeckard took the same steps you took and recreated the guide, but his screenshots are in English. This is the post btw. I see that your OP still contains the images in Portuguese. Maybe you should consider using the ones in English to make the post even better.

I am not a native speaker of English and please correct if there is incorrect grammar.
There isn't anything significant to correct and those who understand the procedure won't have difficulties understanding what you are talking about. But if you do want to correct something, you mistyped "click" on two occasions and wrote "clicks" instead. As in "clicks next". It should just be "click" without the "s".

Great tutorial!
legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
Multi-Signature Wallet using the Electrum and the Hardware Wallet.

The following is a translated version of my post about Multi-Signature Wallet using the Electrum on the local board of Bahasa Indonesia:
https://bitcointalksearch.org/topic/m.55982009
*
.

Wallet 1
Wallet: Electrum Testnet 4.0.9 (macOS)
Hardware wallet: Trezor T

Wallet 2
Wallet: Electrum Testnet 4.0.9 (Windows OS)
Hardware wallet: Ledger Nano X

By default, Electrum in the mac application is the mainnet version (there is no shortcut for the testnet version as in the Windows OS version);
To run Electrum Testnet, open Terminal and type the following command:

Code:
open -n /Applications/Electrum.app --args --testnet

The Electrum - Install Wizard (Testnet) window will appear;



In the 'Alternatively', select 'Create New Wallet' and give the name of the wallet you created.



Under wallet type, select Multi-Signature wallet.



Then specify the Consigner and also the number of signatures needed to be able to process transactions in the wallet.



On "Add cosigner (1 of 2)", I selected the option "Use a hardware device".



In 'Hardware Keystore', select the connected device, then clicks 'Next'.
- Device on Wallet (Cosigner) 1:



- Device on Wallet (Cosigner) 2:



Select the wallet address type; For "derivation path", I leave it by default.



Then write the 'Master Public Key' it generates, then clicks 'Next'.

- Master Public Key on Cosigner 1:



- Master Public Key on Cosigner 2:



On the 'Add Cosigner (2 of 2)', select 'Enter cosigner key'.



In wallet 1, fill in using the master public key (xpub) of wallet 2:



In wallet 2, fill in using the master public key (xpub) of wallet 1:



Create a password to encrypt each wallet on both 'Cosigners'.



Go to the 'Addresses' tab (View Menu -> Show Addresses), and make sure the addresses in all Cosigners are the same:

- Address Wallet (cosigner) 1:



- Address Wallet (cosigner) 2:



Test transactions at Electrum Multi-Signature Wallet.

Note: I see that the Lightning Network feature in Electrum (in this test) does not support multi-signature wallets.

- Receive

On the 'Receive' tab, select 'New Address';
In the 'Expires after' column, I chose 'Never'.



Code:
tb1qnrsxytrm3whmrw65lctd3fdpk28er7tudmhwseshdcylyeudmwgslgqwww

I'm trying to send some Bitcoins from the Bitcoin Core Wallet (testnet) to the address above.

Code:
https://blockstream.info/testnet/tx/5e42c85dd05dfdeff0f17a03e23ad88fdda98f382d1437cd2ffab523bad94bc2

Wallet (Cosigner) 1 and Wallet (Cosigner) 2 get similar notifications regarding the receipt transaction.

- Send

In Wallet (Cosigner) 1, click the 'Send' tab and enter the Recipient's Bitcoin address ('Pay to'), 'Description' (can be emptied), and also the amount of BTC to be sent ('Amount'), then click 'Pay...'



Specify 'Fee rate' then click 'Send'.



Unlock the hardware wallet if locked, and confirm to send.



After being confirmed in the wallet ("Cosigner") 1, a 'Transaction ID' window appears with the status: Partially signed (1/2).



Click the 'Export' button in the bottom left corner. In this test, I chose:
'For hardware device; include xpubs' and then 'Export to File' (you can also use the QR code option and others).



In Wallet ('cosigner') 2, select the 'Tools' menu -> 'Load transaction' -> 'From file'
Select the file obtained from the export results in the previous Wallet 1.



In the 'Transaction' window, click 'Sign', then confirm on the hardware wallet.







Note: I skipped some of the confirmation steps on the Ledger Nano X.

Back to Electrum, Click 'Broadcast' -> 'OK' to send the multi-signature transaction to the blockchain.



Transaction completed:

Code:
https://blockstream.info/testnet/tx/ed17bf23032ed1e49533595a35486da9a95b6b064989e1d428d6b6ac69c571a1


*
I am not a native speaker of English and please correct if there is incorrect grammar.

hero member
Activity: 1554
Merit: 814
The Alliance Of Bitcointalk Translators - ENG>POR
Your tutorial is pretty useful and you are even recommending it to beginners but unfortunately your pictures are still in portuguese language. I don't think it's very convenient for beginners because we can't directly translate text in pictures with a translator and they could do mistakes because of that. RickDeckard seems to think the same as me and he took time to shoot those screens in english localization, you should incorporate them or take your own screens in english but it would be better to update your tutorial before recommending it to beginners IMO.

Well, I confess that I did not imagine this event could generate this problem.
But no problem @Saint-loup, I appreciate your observation/advice.

Right now i'm busy solving some personal issues. I will only be able to solve this problem in a few hours.
I will make the necessary modifications and translations and i will update this topic.
legendary
Activity: 2604
Merit: 2353
Guys, thank you so much for the comments and advice.
This is one of the first topics I create outside of the portuguese board.
There is a lot of important content on the portuguese board that deserves to be translated and shared with others, as this may help some members who do not have a solid knowledge of Bitcoin/Blockchain and other things.

This is a good idea, I'll translate some relevant topics and post more often on some specific boards, especially on the "Beginners & Help" board

@o_e_l_e_o, noted, thanks a lot for the corrections, and sharing some notes with me.
I believe that with these observations I can improve my English and also avoid making mistakes in translation.

@RickDeckard ok thank you very much and I will improve the topic soon.

@Pmalek, no problem, I just translated this topic (portuguese > english)
Your tutorial is pretty useful and you are even recommending it to beginners but unfortunately your pictures are still in portuguese language. I don't think it's very convenient for beginners because we can't directly translate text in pictures with a translator and they could do mistakes because of that. RickDeckard seems to think the same as me and he took time to shoot those screens in english localization, you should incorporate them or take your own screens in english but it would be better to update your tutorial before recommending it to beginners IMO.
hero member
Activity: 1554
Merit: 814
The Alliance Of Bitcointalk Translators - ENG>POR
Guys, thank you so much for the comments and advice.
This is one of the first topics I create outside of the portuguese board.
There is a lot of important content on the portuguese board that deserves to be translated and shared with others, as this may help some members who do not have a solid knowledge of Bitcoin/Blockchain and other things.

This is a good idea, I'll translate some relevant topics and post more often on some specific boards, especially on the "Beginners & Help" board

@o_e_l_e_o, noted, thanks a lot for the corrections, and sharing some notes with me.
I believe that with these observations I can improve my English and also avoid making mistakes in translation.

@RickDeckard ok thank you very much and I will improve the topic soon.

@Pmalek, no problem, I just translated this topic (portuguese > english)
legendary
Activity: 2730
Merit: 7065
I recommend seeing this topic here for those who want to know more about TestNet.
Unfortunately, that thread is also in Portuguese and people would need to google translate it to understand what it says. I tried to find a similar one in English, but it turns out there isn't much on that subject on Bitcointalk. There is this one from 2018 that contains good information > Guideline for Newbies: Trying out Bitcoin transactions with TESTNET. 
legendary
Activity: 1148
Merit: 3117
legendary
Activity: 3682
Merit: 1580
To save the transaction to file you use the export button not the save button . export > export to file.
legendary
Activity: 2268
Merit: 18711
You can do the same with the seed, but one person would need to know the other's seed, this is not very interesting in this case.
A better translation would be "this is not very useful in this case".

I'm going to use Bitcoin testnet to make this joke
A better translation would be "I'm going to use Bitcoin testnet for this example"

And it's important to remember that the subscription can be done by a Hardware Wallet, for those who have it.
Worth noting that some hardware wallets perform unpredictably when used in a multi-sig set up, so it is always worth double checking you can actually spend from such a set up using a small amount of coins before you properly fund the wallet.

Also note that when backing up a multi-sig set up that each party, in addition to backing up their own seed phrase, should also back up the master public key from each other share.
hero member
Activity: 1554
Merit: 814
The Alliance Of Bitcointalk Translators - ENG>POR
A few days ago, I had a brief conversation with @o_e_l_e_o and the subject we discussed was how we can increase our security (private key/seeds)  Smiley

(...)

The irony of fate, I was looking some topics on the Portuguese board and i find an excellent tutorial, "how we can create a multi-signed wallet using Electrum."
I found this a very interesting topic, this can be useful for a user who wants to increase their security. I will translate and share it with you guys!

ps: I'm just translating (portuguese > english), I'm not the creator, all credits go to the user @Loganota - ORIGINAL TOPIC - "Como criar uma carteira multi-assinada na Electrum"
ps (2): I'm not a native english speaker, if I made some mistakes, please let me know so I can correct the translation, thanks  Smiley



"how we can create a multi-signed wallet using Electrum."

Well, @alegotardo asked a question here about what mult-signs are, or in Portuguese multi-signatures . As he suggested and as I don't remember a tutorial here in the Portuguese tab, let's record one here.

Brief explanation:

Normally, in order for us to spend funds from an address, we must have a private key to sign the transaction from that address. But, what if for security you want to have more than one private key to spend funds from an address? In this case, if a thief found only one of the private keys, it would not be possible for him to spend his funds.

Another reason to use multi-signed addresses is if you have a business with partners. You don't want just one person to spend an entire company's funds whenever they feel like it. The solution to this is to use this type of address.

Applications:

The Bitcoin Wiki gives some examples of use cases for multi-signed addresses:

1-of-2: Husband and Wife's Joint Account - Signing either of them is enough to spend the funds.

2-of-2: Husband and Wife Savings Account - Both signatures are required to spend the funds, preventing one spouse from spending the money without the other's approval.

2-of-3: Parents Savings Account for a Child - The child can spend the money with the approval of one of the parents, and the money cannot be taken from the child unless both parents agree.

2-of 2: Wallet with two-factor authentication - one private key is on your main computer and the other on your smartphone - funds cannot be spent without signing both devices. Thus, an attacker needs to gain access to both devices to steal your funds.

2-of-3: Buyer/Seller using an escrow - If the transaction goes smoothly, the buyer and seller sign the transaction to forward the money to the seller. If something goes wrong, they can sign a transaction to refund the buyer. If they do not agree, both appeal to the third party who will judge and provide a second signature to the person they deem worthy. The escrow cannot steal the money as they only have one key.

2-of-3: A board of three directors holding funds for your organization - these funds cannot be spent unless two of them agree. Larger transactions with multiple signatures are possible for larger organizations such as 3-of-5, 5-of-9, etc.

How to create a multi-signed wallet on electrum:

When creating a new wallet, select multi-signature wallet:


Select how many people will share the wallet and how many will be needed to spend the funds:


Add cosigners:


If you create a new seed, your master public key will be shown:


That way you won't need to inform your seed to the other co-signers, just this public key.

Adding the other co-signers:

From the public key:




You can do the same with the seed, but one person would need to know the other's seed, this is not very interesting in this case.

The same must be done with the other co-signers (if any).

Wallet created:


How to make a multi-signed transaction:


I'm going to use Bitcoin testnet to make this joke, I recommend seeing this topic here for those who want to know more about TestNet.

I have 2 of the 3 wallets open on my pc, as you can see, they have the same receiving address (I got some satoshis in a testnet faucet).


First, let's use Wallet A to start the transaction. In this step, just do the step by step of a common transaction:


When Submitting, Electrum will display this message:


That is, it is not possible to transmit the transaction because it is only partially signed (out of two keys, it was signed by only 1).

Then we go to Portfolio B to finalize this transaction. In the print above you can see that you can save this incomplete transaction in a file.

In wallet B, load this file in this option:


Then, the following screen will appear where you can sign (1) and later transmit (2) the transaction to the network:


End. Grin

It must be remembered that the process of passing the transaction to the other wallets can be done in different ways, such as a QR Code. And it's important to remember that the subscription can be done by a Hardware Wallet, for those who have it.

Here's a video explaining how multi-signed addresses work: https://www.youtube.com/watch?v=yeLqe_gg2u0

And a video by Andreas Antonopoulos: https://www.youtube.com/watch?v=cAP2u6w_1-k

For the technical part of how it works, I'll leave it to friends who know much more than I do to explain  Grin


Jump to: