Bitcoin Forum
May 24, 2024, 10:17:06 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: How to do offline signing/online broadcasting using only Bitcoin Core?  (Read 359 times)
pf (OP)
Full Member
***
Offline Offline

Activity: 176
Merit: 105


View Profile
May 07, 2017, 12:51:04 PM
 #1

I know this was very difficult in Bitcoin Core at least a while back. This is why I started using Armory.

I'm wondering if anything has changed in Bitcoin Core since then, for instance since it introduced Hierarchically Deterministic wallets.

Please don't be offended by this question, but I'm wondering if I really need Armory anymore. (I only need the offline signing/online broadcasting feature for a cold wallet. I don't happen to need the other great Armory features.)
streamholder
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 07, 2017, 02:32:59 PM
Last edit: May 07, 2017, 02:43:40 PM by streamholder
 #2

I know this was very difficult in Bitcoin Core at least a while back. This is why I started using Armory.

I'm wondering if anything has changed in Bitcoin Core since then, for instance since it introduced Hierarchically Deterministic wallets.

Please don't be offended by this question, but I'm wondering if I really need Armory anymore. (I only need the offline signing/online broadcasting feature for a cold wallet. I don't happen to need the other great Armory features.)
I was wondering exactly the same thing, since Armory has (at least for me) very unstable in the latest versions.
Here are my thoughts, I hope they are are of some use for you, and I would be happy if you'd share your own with us  Smiley

Pros:
  • I'm used to Armory, it is what I used since day 1.
  • (This one doesn't works very well right now but it is a big one for me) I can run a single Bitcoin node and ArmoryDB in my server room and use multiple ArmoryQt instances as "clients".
  • Offline signing in Armory is very intuitive (but I have never tried to do the same thing in any other wallet software, tbh).
  • The paper wallet functionality is implemented just perfectly.

Cons:
  • It is, as mentioned, pretty unstable. It is crashing relatively often for me and setting it up the last time has been a pain in the ass that required me to use a total of 4 different versions of Bitcoin Core and Armory.
  • It lacks support for some of the latest shiny stuff (such as RBF transactions, this one in particular caused me a lot of pain lately).
  • It builds its own database that should supposedly optimize search operations but I don't think it is relational, so it is enormously slower than it could be for most things (and in general slow enough to be frustrating sometimes if you don't run in on an SSD).

In other words it seems to me that Armory is the only real "advanced" wallet out there, but while it excels in usability for some specific things, it very much lacks in usability for some other things.
To me, it is the only wallet that doesn't give me the "this was designed for idiot users" feel when I open it, for one, and in every other wallet I tried I really missed Armory's concept of deterministic wallets. I know other clients have it too, but they mostly try to abstract it away, and that bothers me enormously.
I also love how it allows you to chose exactly the source and destination addresses for each transaction, and it doesn't just want to figure everything out for you, but at the same time it can also do that if you want.

EDIT: to answer your question more specifically regarding signing transactions offline, which I completely forgot (I got carried off by the whole "do we still need Armory?" thing) you can do that from Bitcoin Core from day 1, it is just a pain the ass because you have to use the console. Armory is still probably the easiest (read: easiest while not hiding the underlying process) way to do it, but other wallets, such as Electrum, also offer that if you want.
goatpig
Moderator
Legendary
*
Offline Offline

Activity: 3668
Merit: 1347

Armory Developer


View Profile
May 07, 2017, 08:32:17 PM
 #3

Quote
(This one doesn't works very well right now but it is a big one for me) I can run a single Bitcoin node and ArmoryDB in my server room and use multiple ArmoryQt instances as "clients".

If you are having issue with that part, you need to give me some bug reports/log files so that I can look at it.

Quote
It lacks support for some of the latest shiny stuff (such as RBF transactions, this one in particular caused me a lot of pain lately).

0.96 has RBF and CPFP.

Quote
It builds its own database that should supposedly optimize search operations but I don't think it is relational, so it is enormously slower than it could be for most things (and in general slow enough to be frustrating sometimes if you don't run in on an SSD).

Consider the blockchain is 120GB, parsing that stuff isn't exactly a light weight task. Due to the nature of Bitcoin, I have to write code that exhaustively process the chain to make sure it finds all of your UTXOs. The DB cannot rely on partial state from a previous instance when it corrupts, hence why it needs to be wiped entirely when issues occur.

I have a whole lot of plans to improve the DB both in speed and stability, but then again I work this project on my own and there are other priorities to deal with. If you can help me isolate bugs, that speeds up the fixing process, otherwise you will have to arm yourself with patience.

Quote
I'm wondering if anything has changed in Bitcoin Core since then, for instance since it introduced Hierarchically Deterministic wallets.

I don't think there is a GUI feature to offline sign in Core. There may be now (I never use it as a wallet) but you can still use it through the RPC commands. That part got a bit easier. It's still the same commands but you can input them straight from the GUI if you run bitcoin-qt with -disablewallet=1 (it will then give you a commands tab)

streamholder
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 07, 2017, 08:52:35 PM
 #4

goatpig,
I hope I haven't offended you. I was just trying to give a broad look at the general state of the project. I know and appreciate that you are working on this on your own time. Thank you for addressing my concerns, and for pointing out the new features I had missed.

Please note that RBF, unless it has to be activated somehow, doesn't work for me (all my respends with higher fees got dropped). I can't test that out again for you as I haven't got any funds available in my Armory wallets right now.

About ArmoryDB, I have already given you the logs for my crashes. When those issues will be addressed I'll be glad to test it in the described situation and report back.

As for the database concerns, I certainly appreciate the scale of the problem, and I'm both armed with patience (after all, I'm still using Armory) and ready to report any issue to you.
goatpig
Moderator
Legendary
*
Offline Offline

Activity: 3668
Merit: 1347

Armory Developer


View Profile
May 07, 2017, 09:10:44 PM
 #5

goatpig,
I hope I haven't offended you. I was just trying to give a broad look at the general state of the project. I know and appreciate that you are working on this on your own time. Thank you for addressing my concerns, and for pointing out the new features I had missed.

Haha, this is gonna turn into a running gag between us.

Quote
Please note that RBF, unless it has to be activated somehow, doesn't work for me (all my respends with higher fees got dropped). I can't test that out again for you as I haven't got any funds available in my Armory wallets right now.

You have to click the RBF checkbox at the bottom right corner of the send dialog (above the send button) to RBF flag the tx. This box is unchecked by default (I may add a default setting for that if there is demand). You would notice RBFs instantly, they are color coded in the ledger and you can double spend your own directly from the ledger using the right click menu.

Quote
About ArmoryDB, I have already given you the logs for my crashes. When those issues will be addressed I'll be glad to test it in the described situation and report back.

I took your comment as suggesting you ran into issue with the network interface. If you are referring to the spend issue, I'd hope to fix that this week for 0.96.1. Consider that I have not ran into these bugs personally (or they wouldn't be in a release). If I can't reproduce a bug, I most likely can't fix it.

If you are referring to the DB init issue, I don't feel I have enough data on your case to actually pin point what's going on.

The long term fix for this is blocks over P2P, since the main issue is reading blockchain data on disk rather than grabbing formated blocks from the node. However, there's other stuff I need to deliver first before I can delve in the DB code again.

If you'd like to help, please participate to the testing phase for 0.96.1 once it's out. You can try stuff out on the testnet, that's pretty helpful already. I can send you some testnet coins. What I am most interested in is reproducible bugs. Testnet is particularly useful because you can send me your wallet to reproduce the issue locally.

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!