Author

Topic: How to run Core as an offline storage wallet? (Read 424 times)

legendary
Activity: 1372
Merit: 1252
November 28, 2017, 09:45:37 AM
#10
I did some more research on this... turns out Bitcoin Core has been capable of showing watch-only addresses on the GUI for a while now (I think around 2014 was when it was introduced).

It looks like this:



Pretty nice to see GUI support. Now I just I need to learn how to sign transactions offline properly. If anyone knows how to do this I would like to hear. I guess there's no other way but to do it with raw transaction data but im not sure how to go about it.
legendary
Activity: 1372
Merit: 1252
November 23, 2017, 02:37:32 PM
#9

Sending addresses > New
Is this what you mean, or do I not understand the question?

Yes but I got tons so I wouldn't like to have to add one by one manually. Im not sure if there was a button to export it as a .csv file and import it again or something, actually this may be able to be done with receiving addresses too so you can add all of them at once for the watch-only purpose, I got too many to do this manually to be honest.



Can you throw in an SSD?

Yes, I think the T400 can deal with big SSDs, the problem is, storing Bitcoin stuff in SSD may not be too bright because you can't permanently delete stuff in SSDs, but I guess to run a node it doesn't matter that much since I wouldn't be saving the private keys there, but still, it's pretty expensive if you want a big SSD that will last you for years of blockchain growth.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
November 23, 2017, 02:19:26 PM
#8
Yes, but how do I import and addresses that are only for sending with their respective labels?
Sending addresses > New
Is this what you mean, or do I not understand the question?

Quote
Also, I guess I will encrypt the entire harddrive on both the online and offline computers, but im worried about performance on the online computer if it's encrypted. Bitcoin Core is i/o heavy on an HDD by itself, if it's encrypted to boot, maybe it's too much? Specially since I will not be using a very modern computer to run the node, it's a Lenovo T400.
One way to find out: try! If you don't like it, start over.
I've used an encrypted home directory on Ubuntu (and hdd) in the past, I didn't like it at all.

Can you throw in an SSD?
legendary
Activity: 1372
Merit: 1252
November 23, 2017, 02:14:42 PM
#7
Yes, but how do I import and addresses that are only for sending with their respective labels?

For I example I have my "Poloniex address" in the "sending addresses" window. But if "importaddress" only adds them to the "recieving addresses " window.. how do I do it then?

Also, I guess I will encrypt the entire harddrive on both the online and offline computers, but im worried about performance on the online computer if it's encrypted. Bitcoin Core is i/o heavy on an HDD by itself, if it's encrypted to boot, maybe it's too much? Specially since I will not be using a very modern computer to run the node, it's a Lenovo T400.

legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
November 23, 2017, 01:41:47 PM
#6
so I don't care about a complete rescan. I will use "importaddress" on all of my keys.
You will care about the rescan, if it takes an hour after every single import. That's where "false" comes in handy, so you can force a rescan after quickly importing all your keys.

Quote
When I use "importaddress" it will show on receiving addresses I guess
Correct.

Quote
but I also have public addresses of other people saved, so how do I keep these?
I assume other people's addresses are in your Sending addresses, not Receiving addresses.

My Receiving addresses > Labels looks like this:
WebsiteX (01)
WebsiteX (02)
WebsiteX (03)
MyAddress (01) (watch-only)
MyAddress (02) (watch-only)
MyAddress (03) (watch-only)
MyAddress (04) (imported privkey)
MyAddress (05) (imported privkey)
MyAddress (06) (imported privkey)

Note that anybody with access to your PC can change your Labels.
legendary
Activity: 1372
Merit: 1252
November 23, 2017, 12:31:12 PM
#5
Ok I will try to set this up. I got confused and realized how "importaddress [yourPublicAddress]" cannot really compromise your private keys.

Im going to sync from scratch on a new laptop to run the node on a proper Linux installation, so I don't care about a complete rescan. I will use "importaddress" on all of my keys.

I would also like to import all of my receiving addresses with it's labels and also the addresses on the "sending addresses" window. Im not sure how this works. When I use "importaddress" it will show on receiving addresses I guess, but I also have public addresses of other people saved, so how do I keep these?

I still need how to make the transactions and sign them in the offline computer and then pass them back into the online node tho.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
November 23, 2017, 11:08:46 AM
#4
First I would need to set the watch-only addresses and spend from the watch only addresses I guess?
I'd say start with a small test amount.

Help > Debug window > Console > enter:
Code:
importaddress 1LoyceVsaddy "this is the label to show" "false"
The "false" prevents a slow complete rescan, you can use this as long as the address doesn't have any balance before adding it.
Well this is a problem. If the address needs to be empty to enable watch-only, how do I watch my current BTC addresses?[/quote]
If it has balance already, omit the "false" and wait for a complete rescan. Or, if you have several addresses to import, use "false" and force a one-time rescan after importing all addresses.

Quote
Also does this "false" mode still stores private keys in the online wallet or only imports public keys?
You're importing addresses, not private keys, so it stores the addresses only.
All "false" does, is omit the rescan. Other than that, it's the same to the wallet.
legendary
Activity: 1372
Merit: 1252
November 23, 2017, 09:13:48 AM
#3
I hate to say "idk", but I'm very interested to know if this is possible.
As far as I know this setup can work with Electrum: create a transaction using the online watch-only wallet, sign the transaction on the offline full wallet, then broadcast it from the online computer. You can use a QR-code or USB-stick to transfer the data.
I'm actually considering switching from Bitcoin Core to Electrum just to be able to do this, so it would be great if it's possible from Bitcoin Core.

I think you could use dumprawtransaction and pass this information to the online computer with Bitcoin Core but im not sure how it's done exactly. First I would need to set the watch-only addresses and spend from the watch only addresses I guess?

Help > Debug window > Console > enter:
Code:
importaddress 1LoyceVsaddy "this is the label to show" "false"
The "false" prevents a slow complete rescan, you can use this as long as the address doesn't have any balance before adding it.


Well this is a problem. If the address needs to be empty to enable watch-only, how do I watch my current BTC addresses?

Also does this "false" mode still stores private keys in the online wallet or only imports public keys?

legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
November 22, 2017, 05:15:27 PM
#2
1) How do I properly make the transaction and move it from the offline computer to the online computer?
I hate to say "idk", but I'm very interested to know if this is possible.
As far as I know this setup can work with Electrum: create a transaction using the online watch-only wallet, sign the transaction on the offline full wallet, then broadcast it from the online computer. You can use a QR-code or USB-stick to transfer the data.
I'm actually considering switching from Bitcoin Core to Electrum just to be able to do this, so it would be great if it's possible from Bitcoin Core.

Quote
2) How can I set the online wallet to act as a watch only address?
Help > Debug window > Console > enter:
Code:
importaddress 1LoyceVsaddy "this is the label to show" "false"
The "false" prevents a slow complete rescan, you can use this as long as the address doesn't have any balance before adding it.

Quote
3) Is there a way to set the offline node as "offline" so it stops trying to sync the blockchain?
Simply click the connection-icon in Bitcoin Core (bottom-right corner) to disable network activity.
legendary
Activity: 1372
Merit: 1252
November 22, 2017, 02:51:09 PM
#1
I would like to do this:

https://www.youtube.com/watch?v=w9TGkUgekLY

But instead of using 2 Armory installs, with 2 Bitcoin Core installs.

The idea is to have one Bitcoin Core installed in an online computer, this would be my node to broadcast transactions into the blockchain and it would have the full blockchain, but it would have no BTC in it, and another computer with no internet, and no Ethernet or Wifi cards at all, that would have another Bitcoin Core installation, which would contain my private keys, so all of my BTC would sit there. There I would create any receiving or sending addresses and I would sign transactions there, then pass them on the online Bitcoin Core computer.

Could you explain:

1) How do I properly make the transaction and move it from the offline computer to the online computer?
2) How can I set the online wallet to act as a watch only address? (like on Armory does in here)
3) Is there a way to set the offline node as "offline" so it stops trying to sync the blockchain? since I don't have internet on that computer, is there a way to let the program know that it doesn't have to try to connect to the internet at all? Since there would be no blocks to validate as the idea is to use it as a private key container and to sign the transactions, the program would load so fast on even very old computers (I plan to buy some old Thinkpad for this)

I would use Armory itself, but I don't like the seed system (I don't want my wallet to be recoverable with a seed, I feel safer this way, im too used to have my keys sit on the wallet.dat file and just make backups of that). And in general I feel safer using the Core software, both because I trust the developers into doing a good job, and because simply im too used to the simple GUI it has and don't feel like learning any other GUI's or command lines, so I would like to know how to exactly set this up without screwing up in the process.
Jump to: