FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 07, 2012, 10:45:15 AM |
|
Dude, sounds good to me!
Question though: Can you not generate offline transactions directly on the machine where the private keys reside?
Maybe not if the offline computer doesn't have an up to date blockchain to know which of it's addresses are funded? Maybe you could tell it, but that wouldn't be much simpler than doing as it's being done. Total guess here, please confirm.
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
ShadowOfHarbringer
Legendary
Offline
Activity: 1470
Merit: 1006
Bringing Legendary Har® to you since 1952
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 07, 2012, 12:45:25 PM |
|
@etotheipi
I am sure you are aware that in the current implementation of the mainline Bitcoin client, transaction fees are forced even when not necessary (which is the reason i created the fork of mine).
So, does your client allow no-fee transactions ?
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 07, 2012, 03:01:42 PM |
|
Dude, sounds good to me! Question though: Can you not generate offline transactions directly on the machine where the private keys reside?
Armory tries to detect three things: satoshi-client connection, general internet connection, and blk0001.dat. If any of those of are missing, you will get this dialog, or something similar. However, I have not yet detected the case that all three are available but the blockchain is not sync'd. That's a case I will let fall through the cracks, for now (though, when I get full networking, I will be able to detect that we're not sync'd yet, and disable transactions). I am sure you are aware that in the current implementation of the mainline Bitcoin client, transaction fees are forced even when not necessary (which is the reason i created the fork of mine). So, does your client allow no-fee transactions ?
Forced-fees are the default, but they are possible to disable if you manually edit the settings file. I did this to make it possible to disable them, but I don't want it to look like I encourage it in anyway. I don't want anyone complaining when their tx gets stuck (yes, I know it's rare, but I'm still responsible).
|
|
|
|
ShadowOfHarbringer
Legendary
Offline
Activity: 1470
Merit: 1006
Bringing Legendary Har® to you since 1952
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 07, 2012, 05:50:52 PM |
|
Forced-fees are the default, but they are possible to disable if you manually edit the settings file. I did this to make it possible
Excellent ! The right approach. You already did what i asked the mainline devs for (many times), and they never complied, even though making a simple setting in configuration file is not that much coding really. I will give your client some testing and perhaps i will be using it as my default BTC client some day.
|
|
|
|
teflone
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 08, 2012, 02:51:21 AM |
|
Amazing... ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 09, 2012, 05:06:39 AM |
|
One more feature down! Despite the fact that I made the wallet file intentionally simple, sometimes nothing can beat plain old text files: ![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1139081%2FBitcoinShare%2FScreenshots%2FDlgBackupKeys.png&t=665&c=UTNBSXYOT0FwxA) I have two more major features to implement before I officially release "alpha": (1) Offline transaction pipeline [3/4 done] (2) Fix zero-confirmation transaction handling Once I finish the offline-tx stuff, I will post specific build instructions for folks that want to help me test it. While people are testing, I'll be working on the zero-conf transactions, which was a temporary hack gone terribly wrong. It's almost not even worth using in its current state, so I will just dive in and do it right, right now. Has anyone here been able to compile and use Armory, yet? The qtdev branch is in good shape (particularly, commit b7f0abf9). There's nothing actually stopping anyone who wants to test it now -- I just won't be releasing any Windows build instructions until "testing" starts, and then binaries once "alpha" starts. If you are in ubuntu ( trivial!), please go ahead and try it out on the testnet. I'm sure there's thousands of little 1-minute fixes that need to be made, but it's also quite usable right now!
|
|
|
|
FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 09, 2012, 05:18:20 AM |
|
1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX
what's this?
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 09, 2012, 05:20:20 AM |
|
1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX
what's this?
That's my new donation address! I got a little creative with regular expressions and vanity gen ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) (yes, I do have the private key for it, so I will get your donations)
|
|
|
|
xzion
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 96
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 09, 2012, 05:24:48 AM |
|
looks great, watching.
|
Tips: 1xzionJBueq1AkPSmexA7suWkztAkNwSs
|
|
|
FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 09, 2012, 05:36:43 AM Last edit: January 09, 2012, 06:24:32 AM by FreeMoney |
|
1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX
what's this?
That's my new donation address! I got a little creative with regular expressions and vanity gen ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) (yes, I do have the private key for it, so I will get your donations) Oh great, guess I can't recognize bitcoin addresses after midnight. I'll get the first one in. edit: I'm a noob, didn't get in first, hadn't checked blockexplorer, only googled. Google ought learn to check strings for being bitcoin addresses so it doesn't have to wait till it crawls blockexplorer again.
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
amincd
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 09, 2012, 03:45:39 PM |
|
I think this should say "Use the checkboxes on the right to.." ![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1139081%2FBitcoinShare%2FScreenshots%2FDlgBackupKeys.png&t=665&c=UTNBSXYOT0FwxA) By the way, really great job!
|
|
|
|
mndrix
Michael Hendricks
VIP
Sr. Member
Offline
Activity: 447
Merit: 258
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 10, 2012, 04:31:42 PM |
|
A reasonable blockchain index could be kept in RAM and the entire blockchain mmap'd to virtual memory
Another reasonable blockchain index might be to split the chain into 20-30 segments of consecutive blocks. Maintain a small bloom filter in RAM for each segment recording which addresses/transactions are present in the segment. The index's RAM requirements would be minimal but still prune the search space substantially.
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 10, 2012, 07:08:34 PM |
|
A reasonable blockchain index could be kept in RAM and the entire blockchain mmap'd to virtual memory
Another reasonable blockchain index might be to split the chain into 20-30 segments of consecutive blocks. Maintain a small bloom filter in RAM for each segment recording which addresses/transactions are present in the segment. The index's RAM requirements would be minimal but still prune the search space substantially. I think there's a lot of different, feasible solutions to handling this. Luckily, optimized data structures are my specialty. I just haven't spent the time yet to figure out what the space- and time-efficiencies are, of the various indexing options. I do want to see Armory move towards "lightweight" in the far future, so I might start from headers-only and figure out the most "bang-for-the-buck" in terms of how much compute time do I save for each byte of extra RAM I use. I would guess that there's a lot of variations on prefix maps that simply give "hints" about what data is where. The keys and values of the map may not be unique to individual addresses or transactions, but they would cut down the HDD search space two or three orders of magnitude. But I'm a long ways off from that. For now, I'm focusing on making Armory a powerhouse of features and robustness, without requiring 4 GB to run it. I believe mmap will take me most of the way there. On that note, I was able to get Armory loaded into a fresh install of Ubuntu 10.10 (32-bit). With nothing else running except for Satoshi client and Armory (with blockchain synchronized), the total system memory usage was 1.7 GB. So it seems, a system with 2 GB of RAM might be sufficient for full-blockchain operations - as long as you aren't running much else. By the time the blockchain grows to exceed the 2 GB threshold, I will have implemented a better solution. The places I'm really lacking experience at the moment is in the PyQt layouts. I have very little experience with PyQt, and I noticed the layouts work great on my Ubuntu 10.04 installation with 1920x1200 desktop, but not so good on a smaller monitors, and possibly completely out of whack on Windows. The app windows can be manually adjusted, but it's really not ideal. If anyone has good PyQt/PySide experience with this, please let me know. I might be inclined to toss a few BTC at someone who helps me figure out a good paradigm for getting this right ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 12, 2012, 10:29:01 PM Last edit: January 12, 2012, 11:04:08 PM by etotheipi |
|
Offline transactions work! I successfully created a transaction from a watching-only wallet, saved it to USB key (as an *.unsigned.tx file), then opened it with Armory on my non-internet-connected computer, signed it and saved it back to the USB key. Then loaded it and broadcast it from the online computer. Booyah!. I also made sure that Armory runs without an internet connection, allowing you to manage offline wallets. ![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1139081%2FBitcoinShare%2FScreenshots%2FdlgSignBroadcast.png&t=665&c=Ect1d_OfualcOg) With this feature complete, I'm going to focus on helping folks get Armory built and running on other people's computers, and work out the little bugs having to do with system settings that I couldn't account for in my personal testing. It's going to be a little bumpy, but I'm sure there's plenty of folk here up for the challenge! The biggest issue I see is Windows build instructions, and wacky layouts on systems that aren't mine. Please don't hesitate to PM me with complaints about what doesn't look right. I'll do my best to fix it in a platform-agnostic manner. Offline Transaction Primer: Create the wallets - (1) Load Armory on offline computer
- (2) Create a new wallet (encrypted or not)
- (3) Double click on the wallet and click on "Create Watching-Only Copy" on the right side
- (4) Save the file to USB Key
- (5) Load Armory on online computer, and select "Import Wallet"
- (6) In the wallet-properties dialog, click on "Belongs To", and click the checkbox that says "This wallet is mine". (optional: make sure that any funds in this wallet are part of your global balance).
- (7) Use the "Receive Bitcoins" button to generate addresses for this wallet
Send Bitcoins - (1) Double-click on the offline wallet, select "Prepare Offline Transaction" on the right menu
- (2) Create the transaction as you normally would, click "Create Unsigned Tx"
- (3) On the next window, press the save button to save a *.unsigned.tx to the USB key
- (4) Take USB key to offline computer, and click "Offline Transactions"
- (5) Load the file from the USB key, review it, then press the "Sign" button (save the *.signed.tx file to the same USB key).
- (6) Load the signed.tx file on the online computer, hit "Broadcast".
- (7) Done!
|
|
|
|
jimbobway
Legendary
Offline
Activity: 1304
Merit: 1015
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 12, 2012, 10:46:46 PM |
|
Concerning the offline transactions feature...
Would a feature like this be used for a large company like Best Buy? Best Buy would create multiple wallets on each cash register that would be offline. At the end of the day the wallets are collected, imported on an online computer, and then broadcasted.
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 12, 2012, 10:52:20 PM Last edit: January 12, 2012, 11:08:30 PM by etotheipi |
|
Concerning the offline transactions feature...
Would a feature like this be used for a large company like Best Buy? Best Buy would create multiple wallets on each cash register that would be offline. At the end of the day the wallets are collected, imported on an online computer, and then broadcasted.
It would be used by anyone that wants to store their private keys offline, but still manage their wallet on an offline computer. This does include companies. The company would have a secure office somewhere with a non-internet-connected computer. They would create one wallet per cash register, and the copy the watching-only version to each register. Then the registers could monitor transactions, and generate addresses for customers, but the register would not be able to spend any of the money. Then if the company wants to move the cash, they can create the transaction from the register, but the txs can't be signed. Instead they are copied to a USB key, taken to the secure location, and the offline system signs all of them. The final transactions are taken back to the internet and broadcast. But this is useful for anyone who wants top-notch security. If I have more than $100 in BTC, I'll be keeping it in a wallet that has never touched the internet. By using this feature, it is virtually impossible for an attacker to compromise your keys, because the private keys have never left the offline computer. Some creative USB key viruses might succeed, but that's a big stretch, requiring a very specific, targeted virus -- and if you're concerned about that, you can do something creative using the raw transaction blocks of text (perhaps convert them to QR code and scan from the offline computer? then you never even plug in a USB key). The community here has come up with all sorts of command-line tools for doing this, but they are all complicated and pretty much only accessible to the die-hards. I believe that Armory will bring this functionality to anyone who wants to use it, and they might even figure it out without a tutorial! If that works, then I've succeeded! (btw, you can add donations to offline transactions the same as online transactions ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) ) EDIT: to answer one of your questions more directly.... wallets are never copied/moved after the initial distribution. Once they are in place, the only thing that is moved/copied between systems is transaction files (*.unsigned.tx and *.signed.tx). In fact, the offline computer doesn't even need the blockchain! That's innovation! (the other solutions I mentioned above which are complicated, do require making sure the offline computer maintains a sync'd blockchain)
|
|
|
|
FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 12, 2012, 11:06:46 PM |
|
Concerning the offline transactions feature...
Would a feature like this be used for a large company like Best Buy? Best Buy would create multiple wallets on each cash register that would be offline. At the end of the day the wallets are collected, imported on an online computer, and then broadcasted.
I don't think so, more like this. Spends go to addresses that require multiple keys to move. Every teller can have a watching version of the main secure wallet. Nothing need happen except when the controllers of the funds need to move them, then they pass around the transaction each signing it. edit: Just one more problem Bitcoin solves. No more sticky fingered tellers.
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
malevolent
can into space
Legendary
Offline
Activity: 3472
Merit: 1722
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 12, 2012, 11:36:12 PM |
|
Haven't read the whole thread but if you have time you could add vanitygen and oclvanitygen with all the available options to click conveniently (some options: https://bitcointalk.org/index.php?topic=25804.msg675624#msg675624 ) Will donate once I have time to test it this weekend. ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
|
Signature space available for rent.
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 12, 2012, 11:45:35 PM |
|
For licensing reasons, I want to avoid actually distributing anyone else's code with Armory. However, it might be possible for me execute those tools if the user already has them on the system. It's a good idea, but unfortunately will be low priority right now. I have a a bit of core development left to do, and that would represent more of a luxury upgrade ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) Of course, though, it's absolutely trivial to copy the output of VanityGen into an Armory wallet and use those keys like all the others. I've been doing it a lot lately, and the thought of battling pywallet + satoshi client is painful... I think I fixed the bugs related to first-use (settings files, making directories, etc). So if you were able to compile Armory, but couldn't run it, give it a shot again. The latest commit to the qtdev branch should be in good shape. Right now I'm to work on getting it setup on a fresh Win 7 install, to make sure I capture all the build steps. Will post those instructions when I finish.
|
|
|
|
jimbobway
Legendary
Offline
Activity: 1304
Merit: 1015
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2012, 12:16:25 AM |
|
Concerning the offline transactions feature...
Would a feature like this be used for a large company like Best Buy? Best Buy would create multiple wallets on each cash register that would be offline. At the end of the day the wallets are collected, imported on an online computer, and then broadcasted.
It would be used by anyone that wants to store their private keys offline, but still manage their wallet on an offline computer. This does include companies. The company would have a secure office somewhere with a non-internet-connected computer. They would create one wallet per cash register, and the copy the watching-only version to each register. Then the registers could monitor transactions, and generate addresses for customers, but the register would not be able to spend any of the money. Then if the company wants to move the cash, they can create the transaction from the register, but the txs can't be signed. Instead they are copied to a USB key, taken to the secure location, and the offline system signs all of them. The final transactions are taken back to the internet and broadcast. But this is useful for anyone who wants top-notch security. If I have more than $100 in BTC, I'll be keeping it in a wallet that has never touched the internet. By using this feature, it is virtually impossible for an attacker to compromise your keys, because the private keys have never left the offline computer. Some creative USB key viruses might succeed, but that's a big stretch, requiring a very specific, targeted virus -- and if you're concerned about that, you can do something creative using the raw transaction blocks of text (perhaps convert them to QR code and scan from the offline computer? then you never even plug in a USB key). The community here has come up with all sorts of command-line tools for doing this, but they are all complicated and pretty much only accessible to the die-hards. I believe that Armory will bring this functionality to anyone who wants to use it, and they might even figure it out without a tutorial! If that works, then I've succeeded! (btw, you can add donations to offline transactions the same as online transactions ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) ) EDIT: to answer one of your questions more directly.... wallets are never copied/moved after the initial distribution. Once they are in place, the only thing that is moved/copied between systems is transaction files (*.unsigned.tx and *.signed.tx). In fact, the offline computer doesn't even need the blockchain! That's innovation! (the other solutions I mentioned above which are complicated, do require making sure the offline computer maintains a sync'd blockchain) Seems to me Armory could supplant the orginal bitcoin client. I like how you run tests in addition to providing all of these features. I don't know how to compile but I will test this.
|
|
|
|
|