Author

Topic: Armory - Discussion Thread - page 143. (Read 521829 times)

legendary
Activity: 1792
Merit: 1008
/dev/null
January 19, 2013, 02:33:29 AM
use "locate" to find it!
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 01:25:42 AM
Best I can tell the file doesn't exist.

Well, if python-dev/python-devel is installed it's gotta exist somewhere.  That's the point of installing that package, to make it available.  In fact, the .so probably exists even with just python installed.  Apparently it's in a non-standard location in RH.
hero member
Activity: 614
Merit: 500
January 19, 2013, 01:23:16 AM
Best I can tell the file doesn't exist.

legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 01:14:17 AM
For what it's worth, a couple of months ago somebody recommended removing a large chunk of line 15 and it allowed it to fully compile. But since I'm doing a fresh install I thought it would be a better idea to run it by you first.

Line 15 is what makes this makefile work regardless of what python version you have installed.  Unless you have a non-standard python installation.

What shows up when you type "ls -la /usr/lib | grep libpython"?  

You can change line 29 to just point to whatever .a or .so is there.  

That command gives me nada.

Okay, well figure out where your libpython.a or libpython.so file is.  That's what line 29 needs to reference.  I guess it's in another place in Red Hat...? 
hero member
Activity: 614
Merit: 500
January 19, 2013, 01:13:06 AM
For what it's worth, a couple of months ago somebody recommended removing a large chunk of line 15 and it allowed it to fully compile. But since I'm doing a fresh install I thought it would be a better idea to run it by you first.

Line 15 is what makes this makefile work regardless of what python version you have installed.  Unless you have a non-standard python installation.

What shows up when you type "ls -la /usr/lib | grep libpython"?  

You can change line 29 to just point to whatever .a or .so is there.  

That command gives me nada.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 01:11:02 AM
For what it's worth, a couple of months ago somebody recommended removing a large chunk of line 15 and it allowed it to fully compile. But since I'm doing a fresh install I thought it would be a better idea to run it by you first.

Line 15 is what makes this makefile work regardless of what python version you have installed.  Unless you have a non-standard python installation.

What shows up when you type "ls -la /usr/lib | grep libpython"?  

You can change line 29 to just point to whatever .a or .so is there.  
hero member
Activity: 614
Merit: 500
January 19, 2013, 01:09:53 AM
It's python-devel for us Red Hat folk, but yes it's installed, along with the rest of the dependencies.

Quote
Quote
$ yum list python-devel
Loaded plugins: langpacks, presto, refresh-packagekit
fedora/18/x86_64/metalink                                |  13 kB     00:00     
updates/18/x86_64/metalink                               | 8.4 kB     00:00     
Installed Packages
python-devel.x86_64                    2.7.3-13.fc18                     @fedora
Available Packages
python-devel.i686
hero member
Activity: 614
Merit: 500
January 19, 2013, 01:07:59 AM
For what it's worth, a couple of months ago somebody recommended removing a large chunk of line 15 and it allowed it to fully compile. But since I'm doing a fresh install I thought it would be a better idea to run it by you first.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 01:06:49 AM
No dice.

Quote
Quote
g++: error: /usr/lib/libpython2.7.so: No such file or directory
make[1]: *** [swig] Error 1
make[1]: Leaving directory `/home/seth/BitcoinArmory/cppForSwig'
make: *** [all] Error 2

Oh, have you installed python-dev?

Specfically, make sure you have all the dependencies listed on the compile-from-source page:

http://bitcoinarmory.com/index.php/building-armory-from-source
hero member
Activity: 614
Merit: 500
January 19, 2013, 01:05:40 AM
No dice.

Quote
Quote
g++: error: /usr/lib/libpython2.7.so: No such file or directory
make[1]: *** [swig] Error 1
make[1]: Leaving directory `/home/seth/BitcoinArmory/cppForSwig'
make: *** [all] Error 2
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 01:03:17 AM
I'm confused by what should be added/replaced. This is what my Makefile looks like:

Quote
Quote
25    SWIG_INC     += -I"/usr/include/python$(PYVER)"
 26    STATICPYTHON +=   "/usr/lib/python$(PYVER)/config/libpython$(PYVER).a"
 27 else
 28    SWIG_INC     += -I"$(DEPSDIR)/include/python$(PYVER)"
 29    STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).a"
 30
 31
 32    # A failed attempt at auto-detecting .a file and using .so if .a DNE
 33    #PYTHONA = "$(DEPSDIR)/lib/libpython$(PYVER).a"
 34    #ifeq ($(wildcard $(PYTHONA)),)
 35       #STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).so"
 36    #else
 37       #STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).a"
 38    #endif
 39 endif
 40

Can you give me a replace code with code for simplicty?

Sorry.  Modify line 29 at the end to .so instead .a
hero member
Activity: 614
Merit: 500
January 19, 2013, 01:01:59 AM
I'm confused by what should be added/replaced. This is what my Makefile looks like:

Quote
Quote
25    SWIG_INC     += -I"/usr/include/python$(PYVER)"
 26    STATICPYTHON +=   "/usr/lib/python$(PYVER)/config/libpython$(PYVER).a"
 27 else
 28    SWIG_INC     += -I"$(DEPSDIR)/include/python$(PYVER)"
 29    STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).a"
 30
 31
 32    # A failed attempt at auto-detecting .a file and using .so if .a DNE
 33    #PYTHONA = "$(DEPSDIR)/lib/libpython$(PYVER).a"
 34    #ifeq ($(wildcard $(PYTHONA)),)
 35       #STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).so"
 36    #else
 37       #STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).a"
 38    #endif
 39 endif
 40

Can you give me a replace code with code for simplicty?
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 12:54:24 AM
No that's not it.  It's a one-line makefile fix, but I needed someone who had this problem to help me test the fix for it.  I'll commit something to the "armoryd" branch (which is my current development branch), in about 10 minutes.  If that doesn't work, I'll just tell you how to fix it Smiley

Gah!  Why's it so damned hard to check whether a file exists from within a makefile?  I can't use my old bash trick because it's a dynamic filename based on DEPSDIR.

The solution is to change "STATICPYTHON" to point to the libpython2.x.so file instead of the libpython2.x.a.   I want something like (Makefile:28) --

Code:
    SWIG_INC     += -I"$(DEPSDIR)/include/python$(PYVER)"
   STATICPYTHON +=   "$(DEPSDIR)/lib/libpython$(PYVER).a"

   ifneq (exists, $(shell [ -d $(STATICPYTHON) ]  && echo exists ))
      STATICPYTHON = "$(DEPSDIR)/lib/libpython$(PYVER).so"
   endif

But it doesn't seem to like the $(VAR) inside the shell...

You know the fix.  If you know a good way to resolve this, then please let me know.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 19, 2013, 12:35:21 AM
Fedora 64 bit make command gives me this error. I know this issue was addressed by mac osx builds, but was it ever addressed for linux builds?

Quote
Quote
$ make
cd cppForSwig; make swig
make[1]: Entering directory `/home/seth/BitcoinArmory/cppForSwig'
g++ -shared -lpthread  UniversalTimer.o BinaryData.o FileDataPtr.o BtcUtils.o BlockObj.o BlockUtils.o EncryptionUtils.o libcryptopp.a "/usr/lib/libpython`python -c 'import sys; print str(sys.version_info[0]) + "." + str(sys.version_info[1])'`.a" CppBlockUtils_wrap.o -o ../_CppBlockUtils.so
g++: error: /usr/lib/libpython2.7.a: No such file or directory
make[1]: *** [swig] Error 1
make[1]: Leaving directory `/home/seth/BitcoinArmory/cppForSwig'
make: *** [all] Error 2
install python?

No that's not it.  It's a one-line makefile fix, but I needed someone who had this problem to help me test the fix for it.  I'll commit something to the "armoryd" branch (which is my current development branch), in about 10 minutes.  If that doesn't work, I'll just tell you how to fix it Smiley
legendary
Activity: 1792
Merit: 1008
/dev/null
January 19, 2013, 12:34:00 AM
Fedora 64 bit make command gives me this error. I know this issue was addressed by mac osx builds, but was it ever addressed for linux builds?

Quote
Quote
$ make
cd cppForSwig; make swig
make[1]: Entering directory `/home/seth/BitcoinArmory/cppForSwig'
g++ -shared -lpthread  UniversalTimer.o BinaryData.o FileDataPtr.o BtcUtils.o BlockObj.o BlockUtils.o EncryptionUtils.o libcryptopp.a "/usr/lib/libpython`python -c 'import sys; print str(sys.version_info[0]) + "." + str(sys.version_info[1])'`.a" CppBlockUtils_wrap.o -o ../_CppBlockUtils.so
g++: error: /usr/lib/libpython2.7.a: No such file or directory
make[1]: *** [swig] Error 1
make[1]: Leaving directory `/home/seth/BitcoinArmory/cppForSwig'
make: *** [all] Error 2
install python?
hero member
Activity: 614
Merit: 500
January 19, 2013, 12:27:19 AM
Fedora 64 bit make command gives me this error. I know this issue was addressed by mac osx builds, but was it ever addressed for linux builds?

Quote
Quote
$ make
cd cppForSwig; make swig
make[1]: Entering directory `/home/seth/BitcoinArmory/cppForSwig'
g++ -shared -lpthread  UniversalTimer.o BinaryData.o FileDataPtr.o BtcUtils.o BlockObj.o BlockUtils.o EncryptionUtils.o libcryptopp.a "/usr/lib/libpython`python -c 'import sys; print str(sys.version_info[0]) + "." + str(sys.version_info[1])'`.a" CppBlockUtils_wrap.o -o ../_CppBlockUtils.so
g++: error: /usr/lib/libpython2.7.a: No such file or directory
make[1]: *** [swig] Error 1
make[1]: Leaving directory `/home/seth/BitcoinArmory/cppForSwig'
make: *** [all] Error 2
legendary
Activity: 2324
Merit: 1125
January 17, 2013, 03:01:21 PM
@wachtwoord
The alternative you describe is really not much better than just maintaining an encrypted wallet on your hot computer.  What it prevents is someone who has gotten remote access to your machine and manually digging around your filesystem looking for wallet files.  That's not to say that such things don't happen, but I believe the real threats are viruses that get on your computer and siphons off data and send it back to "home base" when it finds it (it will farm the data and send it back the next time it's online).  In this case it probably doesn't even have to send any data back... it just reads your wallet when decrypted and creates a transaction sending all BTC to its owner the next time it's online.

Any computer with access to the internet is vulnerable to these viruses.  You can get them from various exploits usually relating to your browser, or opening PDF/.xls documents with embedded exploits, etc.  However, in order to compromise a truly-offline computer, there's a couple orders-of-magnitude more work for the attacker to do.  They must (1) find a way to hide data on your USB key that (2) exploits an auto-run vulnerability when plugged into the offline computer, and then (3) be able to automatically find the data and copy it back, hidden, on the USB key to get it back to the offline computer.  And these exploits are much more complicated when they don't even know what OS the offline system is.  And if I can find another way to transfer data between systems not using USB keys, then this would even an order of magnitude better...

I would look into this idea posted by N.Z..   It's a bit more work but is definitely a very reasonable solution for a single-computer setup (in fact, I've been thinking about bundling the tails packages like N.Z. suggested, to make this easier).  This means that your wallet only ever touches this sandbox that has no access to internet, and is reset to default configuration on every boot.

As for question 3 (paper backups), you just said in question 2 that you believe flash storage is frail.  This is exactly why you make paper backups.  If you print a paper backup and put it in a safe-deposit box or fold it into a book on your bookshelf, it will still be readable 20+ years from now . It doesn't even have to survive "well", as you could pull the data out of a terribly-faded copy with a bit of work.  I mean, you've seen books that are 50+ years old and their pages are still readable.

Now compare that to any kind of digital media.  You can drop a flash drive, or sit on it or bend it, or put it too close to a magnet, or it just decays and it's no longer usable.  What's your confidence level that even a well-treated USB drive sitting in a metal box will still work 5 years from now?  20 years?    Even CDs and DVDs have expected lifetimes of 2-10 years, but that varies widely depending on lots of factors.  With the paper backup, unless it physically burns to ash, you know it will still provide the data you need to recover your wallet in 20 years.... probably much longer than that.


Thanks a lot for your reply. I have attempted to follow N.Z.'s method but have trouble comprehending how to make it work exactly so I created a thread and PM'ed N.Z. https://bitcointalksearch.org/topic/armory-using-tails-for-secure-armory-use-on-a-single-physical-machine-137091
Hopefully I'll be able to get this working and then I'll be much more secure Smiley

About the paper backups: I still think leaving paper backups is a huge security risk (I guess people will start searching for these). If someone finds my paper backup they can take all my coins while this is not the case for my flash drive (wallet files are encrypted!). With respect to the frailty of USB's, I have currently five nackups on different media and plan to backup it more when the media start failing.
mav
full member
Activity: 169
Merit: 107
January 17, 2013, 01:25:31 AM
edit3: I had a crack at getting the listtransactions data for the various scenarios you describe...[/url]

I'm not sure I understand what you tried.  Were you trying to test creating unsigned transactions and then sign and broadcast with Armory?...

I tried getting some info about bitcoind listtransactions behaviour so you had something to go off when emulating it. It was nothing to do with armory. Actually I haven't even got the latest version of armory to look at yet, been crackers busy lately, but will definitely try to do so on the weekend.

Offline transactions with bitcoind are actually quite interesting. I still prefer armory because of the deterministic and watch-only wallet features, that's really a remarkable feature to have.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 15, 2013, 08:05:40 PM

Anyone still having persistent crashing problems in Windows?  (or Linux?)

I finally fixed the two readBlkFileUpdate() bugs.  I made an elaborate test by taking slices of blk files, and copying them into a fake blkfile directory between readBlkFileUpdate calls.  In the end it was a tiny fix, but it should've resolved a variety of issues -- I'm hoping also the Windows crashing issue...

I created a testing version with the fix and even took it to the offline system to get signatures on the sha256 hashes.  As usual, if you are testing in Linux, just switch to the "testing" branch.   

Testing version 0.87.1-testing for Windows 64-bit
Testing version 0.87.1-testing for Windows 32- and 64-bit
Testing version 0.87.1-testing SHA256 hashes of installers

I've had Windows crashing before, but it has sometimes taken days between crashes, so I need someone who has more-frequent crashes to help test it.  I'd say there's a 50-50 chance it's fixed... but if not I have another idea...
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
January 15, 2013, 12:59:49 PM
edit3: I had a crack at getting the listtransactions data for the various scenarios you describe (and thus the 'way it works'), however I couldn't get any results. Frustratingly, I got raw transactions to sign (which is the second-last step of many) and then the last step is to broadcast the transaction, but my transactions were always getting rejected. I've got my progress thus far well documented and is definitely repeatable so I might try to work it out later in the week. It's worth asking on the development subform for clarification on the way the listtransactions call works, they will hopefully be able to answer it. Anyway I was creating raw transactions to match your scenarios based off this guide and testnet-in-a-box - https://people.xiph.org/~greg/signdemo.txt

I'm not sure I understand what you tried.  Were you trying to test creating unsigned transactions and then sign and broadcast with Armory?   Here's what I would do to test (and maybe this is what you did):  open ArmoryQt.py, create a new wallet, send it some money (testnet would be fine).   Create watching-only copy and save it in a different directory.  Now run armoryd.py on that wallet, and use the "sendtransaction" or "sendmany" to create the unsigned transaction.  Then you can go back to ArmoryQt and use the "Offline Transactions" button and select "Sign and/or Broadcast".  You can copy it into the window* and it should immediately recognize it, and allow you to examine and sign it.   Since you're online, you can also broadcast it right away, but I'm not sure why I didn't try that.  I got through signing with my testnet wallet while testing, and everything looked perfect, up to that point.

Also, I will integrate the cli_sign_script.py code into armoryd.py so that signing can be enabled, too.  My only question is how to send the passphrase to JSON-RPC... is it sent cleartext over the socket/JSON interface?  I looked at the Bitcoin code, and it appears that's what they do, though I'm not positive.  This seems okay for localhost (though I don't like it), but not for any remote connections.  Or maybe it just shouldn't be allowed on remote connections (actually, for now there are no remote connections, so I guess it doesn't matter).



*What I found is that if you use armoyd to send the command, it spits out the python-formatted string:  you cannot just copy this into ArmoryQt, because it has "\n" raw characters in there, etc.  You can open python and type "pring " and it will print it out with proper formatting.  Then you can copy it into ArmoryQt.
Jump to: