BACKSTORYI was using Guarda as my wallet for my BTC. I was using their multi-signature BTC wallet with my friend; 2of2, meaning I needed 2 signatures in order to send out my BTC (i.e we both need to sign it for us to be able to withdraw). For the last 3 months, there was a bug with specifically the BTC multi-sig wallets, in that whenever you create a transaction, the other person would not see it, hence unable to sign it, meaning your BTC was stuck with no other way to withdraw it. Guarda staff constantly said "they're working on a fix" with no other explanation, and after 3 months of the same response, I got fed up with waiting and did my own research. Here is the solution to how I successfully withdrew my BTC from Guarda, without actually using Guarda itself, despite it being a multi-signature wallet.
I hope this helps someone who may be stuck in a similar position to me in the future!SOLUTIONThe solution was creating a raw transaction from a website such as
https://coinb.in - including creating, verifying, signing and broadcasting the transaction all on the site itself. Here's how I did it. As it was a multi-signature wallet it was slightly more complicated than recovering a regular wallet, and there are 0 guides explaining what I did anywhere. As complicated as this sounds, I am no expert myself, I have written the simplest guide I possibly can explaining exactly what I did.
STEP 1: Obtain your REDEEM SCRIPT https://i.imgur.com/1gOO66s.pngOn
https://coinb.in/#newMultiSig select NEW -> MultiSig Address. Paste your PUBLIC BTC KEYS for each co-signer (in my case it was me and my friends). Make sure the number of signatures in the box below is correct. It should be relatively easy to find your public key depending on what wallet you use. Remember, it's the public key specifically from the BTC address you use to sign your transactions for your multi-sig wallet. Click SUBMIT and you should see your multi-sig BTC address show up, alongside a
REDEEM SCRIPT. Make sure the multi-signature BTC address shown is the same as your actual multi-signature BTC address! If it is correct, copy the
REDEEM SCRIPT text below. If it's incorrect, it mainly means you posted the public keys in the wrong order, mess around with this till your address comes up!
STEP 2: VERIFY all details are correct! https://i.imgur.com/VRVdOZD.pngClick VERIFY on the top, paste the REDEEM SCRIPT you obtained and click SUBMIT. This step is just to verify everything so far is correct, nothing else. After you click SUBMIT, your multi-signature address, required signatures, both individual BTC addresses that these signatures are required from, and your public keys for those wallets will appear. Verify they are all correct and you are ready for the next step!
STEP 3: Create your TRANSACTION https://i.imgur.com/cBq282f.pngClick NEW -> Transaction. Paste your REDEEM SCRIPT at the top box and click LOAD. This can take a while depending on your wallet (mine took 20 seconds). You should get this message
https://imgur.com/wT7TveE saying you've retrieved your unspent funds. You can see 2 tabs below - INPUTS and OUTPUTS. The INPUTS should be showing your BTC balance! If it does not, you need to click load again, or give it a minute, or try again. If you have 0.2 BTC in your wallet, the INPUTS should say "Inputs (0.2000000000)". If you've done it correctly, the INPUTS tab should be filled out for you - you do not need to do anything there. The TRANSACTION FEE will show as your ENTIRE BALANCE - but don't worry, this is because you've not filled out the OUTPUTS properly yet. On the OUTPUTS tab, put the address you wish to send the crypto to, and then the amount. You will see if you add the amount, you can see the fee changes based on what you add. e.g. if you have 0.2 BTC, and you put 0.18 BTC to send, the fee will say 0.02 BTC, the remainder. Figure out what you want the fee to be (make sure it's large enough to get confirmed on the first block). This is if you are sending the ENTIRE BALANCE ONLY. So if you are sending 0.2 BTC, and that's your entire balance, do like 0.197 BTC and keep 0.003 as the fee (for example).
IF YOU ARE SENDING PART OF THE BALANCE and not the full balance, then you need to click + next to your amount, and another box will appear. Put the address of the wallet you are sending the crypto out from, and the amount you want sent back to that address. For example, if I have 0.2 BTC, and I want to send 0.1 BTC, and keep remainder in that wallet, I would put the address I wanna send to on the top, and 0.1 BTC, then the 2nd line would be the original address I'm sending from and would be like 0.097 BTC (and the remaining 0.003 would be used for fee). This means, when we eventually sign and broadcast the transaction, you send the amount you want to the destination wallet and get back the amount you want to the original wallet.
SUBMIT THIS TO CREATE A TRANSACTION and copy the code below for the next step! It may be a long code, make sure you have copied it all!
STEP 4: SIGN THE TRANSACTION USING YOUR PRIVATE KEYS! https://i.imgur.com/GNrgljk.pngClick on SIGN on the top and paste the transaction text you just copied. Above it, you can see its asking you for your private key. This is when you will need the private key of your BTC wallets for both co-signers (or more if you have more than 2 people). The order you put it in does not matter. Paste the first private key on the top, and click submit. Text will appear below and it will say you have signed. Copy this text, re-paste it in the box above (it looks similar but slightly bigger), and then put your 2nd private key and click SUBMIT. Repeat this with however many co-signers you have. Once you have done it for everyone, you will have a final text that you will use for the final step in broadcasting the transaction!
STEP 5: BROADCAST THE TRANSACTION! https://i.imgur.com/hC1bzTf.pngClick BROADCAST on the top With the final text you just generated, paste it in the box and click SUBMIT. Your transaction is now being placed onto the blockchain! This can take a while, for me it took a minute! It actually showed me an error, but it did send out the transaction successfully! Just a note, you can also use other services to broadcast the transaction like Electrum if you wish!
Things I learned during this process:-
PRACTISE! I followed these steps on multiple dummy wallets I created on electrum to confirm I know exactly what I am doing. I transferred $100 or so onto those test wallets and tested creating a transaction with these steps on a multi-sig wallet. It gave me confidence to eventually do it for my main wallet with all my stuck funds!
- The order you post your public key for STEP 1 on the website matters! Doing it the wrong way will show you the wrong multi-sig address. The solution is to mess around with the order of the private keys until your multi-sig address is shown.
- Make sure your fees are correct! Don't send with too low of a fee or you'll wait forever...
- Watch out for TYPOS! 1 mistake can cause you to lose all your crypto.
- Steps 1-3 are completely safe, your private keys are not exposed. However, after step 4 they are - remember this!
- They themselves say
"This page uses javascript to generate your addresses and sign your transactions within your browser, this means we never receive your private keys, this can be independently verified by reviewing the source code on github. You can even download this page and host it yourself or run it offline!"- This means you can download it offline and do it completely offline for safety, up until the broadcast part! Keep the system air gapped if you want the highest level of safety.
- Find them on Github here:
https://github.com/OutCast3k/coinbin/- That being said, I did not download it or do it offline, or airgap it. I just did everything online and it worked fine.
- I did it for a $60K+ transaction...so I can confirm that as long as you follow the steps, you should be all good.
- My worry was as I was doing a large amount, what if it automatically somehow scams it or something. I can confirm I was completely fine. But if you have concerns, you can run it completely offline, verify the code and air gap it!
If you have any questions feel free to ask. Thank you so much for your help guys on this thread. Lets go!