Author

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

legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 19, 2012, 05:43:17 PM
zefir,

That seems to the problem that is supposed to be solved by the LD_PRELOAD line.  Can you verify that you have crypto++ installed, and check that /usr/lib/libcryptopp.so exists (or libcrypto++.so).   The error you are getting loading the module indicates that your system is not dynamically linking to the correct version of crypto++ (or any crypto++ for that matter).

I considered adding libcryptopp.a to be statically linked, which would solve these stupid problems... perhaps I still should....
donator
Activity: 919
Merit: 1000
February 19, 2012, 05:37:45 PM
Failed to get it work from the git sources (32596798) on my Ubuntu 11.04.

Built after given instructions, but getting the already posted error (LD preloading does not help):
Code:
Loading Armory Engine:
   Armory Version:       0.50
   PyBtcAddress Version: 1.00
   PyBtcWallet  Version: 1.35
Detected Operating system: Linux
   User home-directory   : /home/zefir
   Satoshi BTC directory : /home/zefir/.bitcoin/
   Satoshi blk0001.dat   : /home/zefir/.bitcoin/blk0001.dat
   Armory home dir       : /home/zefir/.armory/
***ERROR:  C++ block utilities not available.
           Make sure that you have the SWIG-compiled modules
           in the current directory (or added to the PATH)
           Specifically, you need:
                  CppBlockUtils.py     and
                  _CppBlockUtils.so

Importing CppBlockUtils from python gives me
Code:
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import CppBlockUtils
Traceback (most recent call last):
  File "", line 1, in
  File "CppBlockUtils.py", line 25, in
    _CppBlockUtils = swig_import_helper()
  File "CppBlockUtils.py", line 21, in swig_import_helper
    _mod = imp.load_module('_CppBlockUtils', fp, pathname, description)
ImportError: ./_CppBlockUtils.so: undefined symbol: _ZTTN8CryptoPP50DL_PrivateKey_WithSignaturePairwiseConsistencyTestINS_16DL_PrivateKey_ECINS_3ECPEEENS_5ECDSAIS2_NS_6SHA256EEEEE

Hope this helps to isolate the problem.

PS: I'm a python noob, but I suppose the program should terminate after a CppBlockUtils import failed on any system (and not only on UNKNOWN):
Code:
diff --git a/armoryengine.py b/armoryengine.py
index ca4ca5e..9ac5d9c 100644
--- a/armoryengine.py
+++ b/armoryengine.py
@@ -324,7 +324,8 @@ except:
       print '                  _CppBlockUtils.pyd'
    else:
       print '\n\n... UNKNOWN operating system'
-      exit(0)
+
+   exit(0)
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 19, 2012, 05:21:29 PM
Hi I can't send bitcoins from my wallet.

Chris,

I was just working on this with cypherdoc.  I bet when you hit the send button, there is a message in the console like "Connection to localhost DNE" (does not exist)...? 

I was finally able to replicate this problem on a Win 7 VM, and it went away when I upgraded to 0.5.1.  It turns out I had forgotten to update the Win 7-64 link on the Get Armory page, and it was still linked to 0.5.0.   I fixed the link less than 24 hours ago.

Just download the zip file, unpack, and run ArmoryQt.py again.  You don't need to [re-]install anything.  Let me know if that fixes it!
legendary
Activity: 1316
Merit: 1011
February 19, 2012, 05:17:27 PM
Hi I can't send bitcoins from my wallet.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 19, 2012, 04:55:32 PM
so my question in this scenario is what will the offline and watching only wallets "look" like in terms of their ledgers in the example of a business with a cash register with say 100 newly generated addresses on it after a days work?

lets say the owner only wants to move the btc from 75 of these new addresses that took in money during the day but not do anything with the other 25.  after the attendant brings the owner the usb stick who then has his offline computer sign the tx's to move the money to the owner's address, what happens to the ledger in the offline wallet?  will it show the 25 unsigned tx's in it?  in other words what exactly are we moving with the usb stick, individual tx's or all changes to the wallet?

On the offline computer, Armory will detect no internet and go into "offline mode."  From there, it doesn't even bother trying to show balances or ledger entries:  there's nothing to show!  The sole purpose of the offline computer is to look at unsigned transactions, determine if it has the keys to sign them, then offer to do so (and asking user for decryption passphrase if necessary). 

To know exactly what is transferred via USB key, see BIP 0010.  It is basically just a standard way to create a block of text that contains the transaction to be signed, and all transactions it is spending from (so input values can be verified).  It was intended for multi-sig signature collection, but it works great for offline wallets (treating them as just a 1-of-1 tx).   What is described in BIP 0010 is the only thing that is put on the USB key.  No other information.

The reason this is safe, is that the transaction and all the supporting transactions contain 100% of the information you need to verify that "I am signing a transaction to send X BTC to Address Y with fee Z".  If someone were to manipulate the transaction on the way to the offline computer, the user would either see that it's been manipulated, or be signing a transaction that is ultimately invalid.  This is why the offline system only needs 512MB of RAM:  it needs to run the operating system, and basically just do the ECDSA signatures on top of that. 

Would it be possible to put a block explorer into Armory?

I already created a block-explorer a few months ago, when I got much of the core libraries implemented.   It was my "warm-up" for developing the rest of Armory.  See PyBtcEngine and the PyBtcEngine block-explorer demo.  This was the original project, from which I forked BitcoinArmory.  Last I tried it, it worked (run pyqt/blockexplore.pyw), but it's been a long time.   I do have plans to cannibalize that dialog to include it in the future "Developer Tools" in Armory.  It's not a trivial transfer though, so I am considering other things to be a priority right now.  I plan to put in an ECDSA calculator with it Smiley

donator
Activity: 1736
Merit: 1014
Let's talk governance, lipstick, and pigs.
February 19, 2012, 02:31:30 PM
Would it be possible to put a block explorer into Armory?
legendary
Activity: 1764
Merit: 1002
February 19, 2012, 01:21:07 PM
sr. member
Activity: 350
Merit: 250
February 18, 2012, 10:03:22 PM
Ah ok, so it's 64bit Python or nothing (for me)?   If only I could remember why I installed the 32bit version.... Cheesy  I have a bunch of other stuff running using that Python installation so I might just hold off on Armory until something else is worked out.   Not sure I can be bothered risking having to fix everything if I upgrade to x64 Python Wink

EDIT:  Ok, I tried it, but while Armory worked, other stuff broke quite badly so I'll have to hold off for now.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 18, 2012, 10:02:20 PM
The only thing I can think of is that I downloaded the x64 Armory client (I'm on an x64 system), but I have the 32bit version of Python (long story) so I grabbed the 32bit files for the dependencies...

Good to know!  I forgot that some people are using pre-existing python installations. 

When I was developing armory on Windows 7, x64, I couldn't even compile it in Win32-mode, because the compiler complained that "python27.lib" was for the wrong architecture.  Therefore, I had no choice but to install 64-bit python, just to get it to compile.

I'm going to start a list of "Known Issues" soon, I'll add this to the list!
sr. member
Activity: 350
Merit: 250
February 18, 2012, 09:54:04 PM
Whoa, I just realized that I accidentally left the 0.5 link up for the 64-bit version.  I have updated the link on the Get Armory! page with the version 0.5.1 for the 64-bit.

I get the same error on Win 7 x64...

If you followed the four steps (python, twisted, zope, pyqt), and then unpacked the 0.5.1 zip file, you should only need double click ArmoryQt.py (in fact I just did a fresh install of Win7-64 and tested it again with the updated 0.5.1 pseudo-binary, and it worked).

The error you mention occurs when the _CppBlockUtils.pyd and/or CppBlockUtils.py file are not present in the directory (which are included in the .zip file).  If they are there and you still get the error, then perhaps the .pyd file (which is actually a .dll), was compiled for the wrong architecture, i.e. you downloaded the 32-bit version for a 64-bit machine. 

Try it again with the new 0.5.1 link on the webpage, and make sure everything was installed and unpacked properly.  PM me if it still doesn't work!



The only thing I can think of is that I downloaded the x64 Armory client (I'm on an x64 system), but I have the 32bit version of Python (long story) so I grabbed the 32bit files for the dependencies...
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 18, 2012, 09:45:58 PM
Whoa, I just realized that I accidentally left the 0.5 link up for the 64-bit version.  I have updated the link on the Get Armory! page with the version 0.5.1 for the 64-bit.

I get the same error on Win 7 x64...

If you followed the four steps (python, twisted, zope, pyqt), and then unpacked the 0.5.1 zip file, you should only need double click ArmoryQt.py (in fact I just did a fresh install of Win7-64 and tested it again with the updated 0.5.1 pseudo-binary, and it worked).

The error you mention occurs when the _CppBlockUtils.pyd and/or CppBlockUtils.py file are not present in the directory (which are included in the .zip file).  If they are there and you still get the error, then perhaps the .pyd file (which is actually a .dll), was compiled for the wrong architecture, i.e. you downloaded the 32-bit version for a 64-bit machine. 

Try it again with the new 0.5.1 link on the webpage, and make sure everything was installed and unpacked properly.  PM me if it still doesn't work!

sr. member
Activity: 350
Merit: 250
February 18, 2012, 09:31:33 PM
I tried compiling and running Armory on Ubuntu 11.10 and got the following error.  I followed your instructions to the T, and get this:

Code:
********************************************************************************
Loading Armory Engine:
   Armory Version:       0.50
   PyBtcAddress Version: 1.00
   PyBtcWallet  Version: 1.35
Detected Operating system: Linux
   User home-directory   : /home/me
   Satoshi BTC directory : /home/me/.bitcoin/
   Satoshi blk0001.dat   : /home/me/.bitcoin/blk0001.dat
   Armory home dir       : /home/me/.armory/
***ERROR:  C++ block utilities not available.
           Make sure that you have the SWIG-compiled modules
           in the current directory (or added to the PATH)
           Specifically, you need:
                  CppBlockUtils.py     and
                  _CppBlockUtils.so
Traceback (most recent call last):
  File "ArmoryQt.py", line 39, in
    from armoryengine import *
  File "/home/me/BitcoinArmory/armoryengine.py", line 330, in
    TheBDM = Cpp.BlockDataManager().getBDM()
NameError: name 'Cpp' is not defined

Both of the files mentioned in the error message are in the BitcoinArmory directory (where I run python ArmoryQt.py).

I get the same error on Win 7 x64...
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 18, 2012, 04:07:02 PM
To everyone here:  with the recent release of Armory Alpha 0.5.1, I have decided that it is in my best interest to pursue some financial backing before plunging back into the Bitcoin development well.   So, I have started a crowdfunding project on RocketHub to raise money from the Bitcoin community to drop to part-time at my real job, and spend the extra time on Armory.    Find out more from the thread I started in the main Bitcoin forum:  https://bitcointalksearch.org/topic/armory-crowdfunding-finished-update-beta-64449

Or go straight to the RocketHub page to donate with a credit card:

I really look forward to see how well this works!  
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 16, 2012, 03:48:15 PM
Anyone else having issues sending transactions in Armory?  There was some posts way back from Win-7-64 users getting a "Connection to localhost DNE" error (Does Not Exist), despite not being in a "offline-mode".  I thought problem went away, but I know at least one person who is still having a problem with it (cypherdoc).
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 16, 2012, 01:29:53 PM
It appears that Riverbank Computing released a new version and killed the old PyQt4 link I had posted.  I have updated the links on the Get Armory! page, and Cypherdoc claims that it worked for him.  He ran into another problem, but it was either due to not clicking the "install_zope.py" script, or needing to do it twice, not sure which.

I know that installing programs and having a console window open is super annoying in Windows.  Unfortunately I have no other option -- I have spent hours trying to figure out how to get Armory to shut down cleanly in Windows.  If I were to make binaries right now, all the RAM used by Armory will stay locked, even after you close the program.  I will figure it out, and I will make binaries.  Thanks for your patience!

Also, I just posted a powerpoint presentation on Using Offline Wallets on the webpage.   Please take a look and give me feedback.  Alternatively, you can view it locally by downloading it here.  It will look a little better locally, anyway -- it appears that slideshare butchered the quality of the presentation, but it's still readable.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 16, 2012, 12:50:13 PM
eto,

i'm getting an error trying to install PyQt4, 64 bit version.  was able to install all other Windows 64 bit packages except this one.

Cypherdoc,

PM me with the exact error.  I'll help you figure it out.
legendary
Activity: 1764
Merit: 1002
February 16, 2012, 12:43:31 PM
eto,

i'm getting an error trying to install PyQt4, 64 bit version.  was able to install all other Windows 64 bit packages except this one.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 15, 2012, 11:37:21 PM
New version!  0.5.1-alpha.  Download at:  http://bitcoinarmory.com/index.php/get-armory

This is a minor-complexity update, but a very important one!  The Feb 20 protocol switchover was not previously handled in Armory, which is fixed in 0.5.1.  If you don't upgrade to 0.5.1, Armory will stop working sometime on Feb 20. 

This also gave me the opportunity to commit a fix for P2Pool coinbase transactions.
legendary
Activity: 1316
Merit: 1011
February 12, 2012, 10:29:39 AM
just downloaded works great, now I could import the private key of my vanity address Tongue (check my sig!)
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
February 12, 2012, 10:08:03 AM
Do you plan adding support for non-deterministic wallets? I don't think I would like to use a deterministic one. (I can't really give a reason why, I just don't like the idea.)

I suppose I can add such support, but it feels like a step backwards.  I believe the security improvement of non-deterministic wallets over deterministic wallets is tiny (if any) , yet creates all kinds of backup problems -- requiring a persistent backup solution, along with having to backup hundreds of individual keys instead of one master key (which also means a paper-backup could be many pages, and recover would require entering hundreds of keys).

That doesn't mean that no one should have the option.  It's just that I haven't seen any demand for it.  And it might be a bit of work to get it right, so I would need more than one person to request it.  Anyone else, please speak up if you want non-deterministic wallets as an option.  Otherwise, if you need help being convinced that there are basically only advantages to deterministic wallets with negligible downsides, I'll be happy to debate that with you Smiley

Also, if the client will not do block validation, please keep the option to only accept blocks through the satoshi client.
At the moment, all network information comes through the Satoshi client, I don't have a choice.  Once I bring down the RAM requirement I will work on more independent networking (or integrating existing Satoshi networking code into Armory).   I wouldn't consider not having some kind of validation for incoming network data.
Jump to: