Author

Topic: Armory 0.96.5 RC1 (Read 444 times)

legendary
Activity: 3766
Merit: 1364
Armory Developer
November 30, 2018, 04:15:40 AM
#24
One extra step I needed to take was update libstdc++6 (I installed gcc++-8, I'm guessing I could've gotten away with just the lib)

That's surprising, I built the .deb on Ubuntu 16.04. My gcc says 7.2.0
newbie
Activity: 11
Merit: 0
November 29, 2018, 07:29:31 PM
#23
Thanks, I just went with the precompiled binary for now.

One extra step I needed to take was update libstdc++6 (I installed gcc++-8, I'm guessing I could've gotten away with just the lib), which I didn't have to do for 0.96.4. Took a few steps on Ubuntu 16.04.

Also thanks for getting to all the fixes already in the RC1!
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 29, 2018, 04:41:07 PM
#22
Looks like I botched the source file. You'd have to setup through git if you want to build this version.
newbie
Activity: 11
Merit: 0
November 29, 2018, 01:11:34 PM
#21
Is /cppForSwig/fcgi empty?

I just extracted the tar.xz from here: https://github.com/goatpig/BitcoinArmory/releases/download/v0.96.4.99/armory_0.96.4.99_source.tar.xz

When I check that folder:
Code:
Armory Source/cppForSwig/fcgi> ls
aclocal.m4      cgi-fcgi   configure.ac  doc       fcgi_config.h.in   images   java     LICENSE.TERMS  Makefile.am  perl    Win32
autom4te.cache  configure  debian        examples  fcgi_config.h.in~  include  libfcgi  m4             Makefile.in  README
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 29, 2018, 12:46:52 PM
#20
Is /cppForSwig/fcgi empty?
newbie
Activity: 11
Merit: 0
November 29, 2018, 12:28:38 PM
#19
Trying to compile from source, and seeing the following error when running ./autogen:


> ./autogen.sh
Preparing the BitcoinArmory build system...please wait

Found GNU Autoconf version 2.69
Found GNU Automake version 1.15
Found GNU Libtool version 2.4.6
./autogen.sh: 1: eval: Syntax error: Unterminated quoted string
./autogen.sh: 1: eval: Syntax error: Unterminated quoted string


I'm successfully compiled Armory 0.96.4 on this same Docker image, and I haven't tweaked anything in that image since then. Did the dependencies change? How should I debug this?

Compiling the tagged release from the .tar.xz, running on Ubuntu 16.04.
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 28, 2018, 04:04:43 PM
#18
After testing this, it turns out signing a tx with a bech32 recipient using 0.96.4 will result in 0.96.4 extracting the pubkey from the script and paying to it using a standard p2pkh script. Obvioulsy cannot have that. I'll have to add versioning to the unsigned tx packet to stop previous versions from doing anything with these specific transactions.
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 26, 2018, 01:46:52 PM
#17
not sure, didn't actually check (never used armoryd). Preview in online 96.4.99 shows a P2PKH address in place of bech32 address and script type as PKH, but only if signed using 96.4.0. If bech32 is signed using 96.4.99, address and it's script type is bech32 as expected. Well, it actually says P2SH segwit for the script type, but I assumed that's just cosmetic.

I haven't tried signing with an older version, I'll look into it.
legendary
Activity: 3430
Merit: 3080
November 26, 2018, 12:46:27 PM
#16
Signing to bech32 addresses with 0.96.4.0 succeeds, but the transaction it signs substitutes P2PKH for the intended bech32. Presumably this can't be worked around, as you can't force 0.96.4 to understand it's doing something wrong. I'm assuming the result won't be what the user wanted.

Are you saying the output script is P2PKH instead of P2WPKH?

not sure, didn't actually check (never used armoryd). Preview in online 96.4.99 shows a P2PKH address in place of bech32 address and script type as PKH, but only if signed using 96.4.0. If bech32 is signed using 96.4.99, address and it's script type is bech32 as expected. Well, it actually says P2SH segwit for the script type, but I assumed that's just cosmetic.
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 26, 2018, 10:56:18 AM
#15
Signing to bech32 addresses with 0.96.4.0 succeeds, but the transaction it signs substitutes P2PKH for the intended bech32. Presumably this can't be worked around, as you can't force 0.96.4 to understand it's doing something wrong. I'm assuming the result won't be what the user wanted.

Are you saying the output script is P2PKH instead of P2WPKH?
legendary
Activity: 3430
Merit: 3080
November 26, 2018, 06:00:03 AM
#14
Signing to bech32 addresses with 0.96.4.0 succeeds, but the transaction it signs substitutes P2PKH for the intended bech32. Presumably this can't be worked around, as you can't force 0.96.4 to understand it's doing something wrong. I'm assuming the result won't be what the user wanted.
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 24, 2018, 08:39:03 PM
#13
I'm looking at your PR and it makes me wonder how was the port ever passed before? I need to investigate this before doing anything with the PR. I'll let you know on the github page.
legendary
Activity: 1232
Merit: 1094
November 24, 2018, 07:32:38 PM
#12
Dev is 0.97, if you gonna PR you should do it against the testing branch, with 0.96.5. If you want to build dev, you need to clone the libwebsockets repo, checkout v3.0.0 or higher, build it, then give that path to the configure script in this fashion:

Ironically, I originally had it relative to testing but then saw that dev was more advanced.

Anyway, I submitted the change required.

I spent way more time on this tiny change that I intended Smiley , at least I have a 18.04 environment now, so the time isn't lost.

Quote
Code:
./configure --with-own-lws=/my/path/to/lws

P.S:

The client in dev cannot speak to db, I have not updated that part yet. Considering dropping swig and moving to CFFI to ease to migration to py3.

I was 99% of the way there.  I had it compiling but it couldn't find the shared library.
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 24, 2018, 01:17:51 PM
#11
I was going to submit a PR about the port thing and this involved building against the dev branch.

This doesn't seem to be possible using Ubuntu 18.04 apt-get to get dependencies.

In addition to the packages in the linux build instructions, I used the following.

Code:
sudo apt-get install libprotobuf-dev protobuf-compiler  python-websocket libwebsockets-dev libevent-dev

However, the libwebsockets-dev package in 18.04 (and 18.10) is not sufficiently advanced.

I get an error that "lws_fop_fd_t" due to not in the include file.  

This typedef doesn't appear in the libwebsockets.h include file until version 2.2.0.

In Ubuntu-18.04, apt-get uses version 2.0.3-3build1.

Even in Ubuntu-18.10, apt-get still uses version 2.0.3-3build1.

I realize that this is the dev branch and things aren't stable yet, but I thought I would flag this.  

Being able to build from source is an important feature for Armory.  If websockets 2.2 functionality is required, would it be directly included in the repo, like some of the other dependencies?

Dev is 0.97, if you gonna PR you should do it against the testing branch, with 0.96.5. If you want to build dev, you need to clone the libwebsockets repo, checkout v3.0.0 or higher, build it, then give that path to the configure script in this fashion:

Code:
./configure --with-own-lws=/my/path/to/lws

P.S:

The client in dev cannot speak to db, I have not updated that part yet. Considering dropping swig and moving to CFFI to ease to migration to py3.
legendary
Activity: 1232
Merit: 1094
November 24, 2018, 12:23:41 PM
#10
I was going to submit a PR about the port thing and this involved building against the dev branch.

This doesn't seem to be possible using Ubuntu 18.04 apt-get to get dependencies.

In addition to the packages in the linux build instructions, I used the following.

Code:
sudo apt-get install libprotobuf-dev protobuf-compiler  python-websocket libwebsockets-dev libevent-dev

However, the libwebsockets-dev package in 18.04 (and 18.10) is not sufficiently advanced.

I get an error that "lws_fop_fd_t" due to not in the include file.  

This typedef doesn't appear in the libwebsockets.h include file until version 2.2.0.

In Ubuntu-18.04, apt-get uses version 2.0.3-3build1.

Even in Ubuntu-18.10, apt-get still uses version 2.0.3-3build1.

I realize that this is the dev branch and things aren't stable yet, but I thought I would flag this.  

Being able to build from source is an important feature for Armory.  If websockets 2.2 functionality is required, would it be directly included in the repo, like some of the other dependencies?

[Edit]
I manually installed the package and looks like it needs v3.0 to work.
legendary
Activity: 3430
Merit: 3080
November 23, 2018, 03:31:21 PM
#9
I don't think I included the quotes when invoking things, but I may have messed up a copy/paste.

The end result is that the python code doesn't actually forward the parameter to the database process.

Do you mean this: --dbdir="G:\armory_data/database_dir --debug --satoshi-port=8500"

The quote marks for --dbdir aren't closed, so you end up with
"G:\armory_data/database_dir --debug --satoshi-port=8500"
as the entire argument for the --dbdir parameter

Edit: sorry, that's clearly exactly what you meant.
legendary
Activity: 3430
Merit: 3080
November 23, 2018, 03:20:07 PM
#8
On top of goatpig's suggestion, I PRed a fix days ago.

And that's even better of course, although I should really have realised that the --satoshi-port option solved the problem in itself. Looking at the code for your patch, it's incredibly obvious
legendary
Activity: 1232
Merit: 1094
November 23, 2018, 03:17:46 PM
#7
The log files that I included for the satoshi-port fix were unintentionally misleading.

Specifically:

Code:
2018-11-14 01:34:40 (WARNING) -- SDM.pyc:396 - Spawning DB with command: ./ArmoryDB.exe --db-type="DB_FULL" --cookie --satoshi-datadir="F:\bitcoin_data_dir\blocks" --datadir="G:\armory_data" --dbdir="G:\armory_data/database_dir --debug --satoshi-port=8500"

It doesn't actually pass the satoshi-port parameter at all to the db.  The dbdir parameter is actually merged together for some reason.  I suspect windows decided to "help".

It ended up creating a directory with the name "database_dir --debug --satoshi-port=8500".

The parameter passed to the database is:

Code:
--dbdir="G:\armory_data/database_dir --debug --satoshi-port=8500"

I don't think I included the quotes when invoking things, but I may have messed up a copy/paste.

The end result is that the python code doesn't actually forward the parameter to the database process.
sr. member
Activity: 525
Merit: 282
November 21, 2018, 08:21:30 PM
#6
works on mainnet, but ArmoryDB doesn't connect to testnet bitcoin nodes. Maybe something to do with the satoshi-port option?

On top of goatpig's suggestion, I PRed a fix days ago.
legendary
Activity: 3430
Merit: 3080
November 21, 2018, 06:53:40 PM
#5
yeah, that works. The log tells you loud and clear what the error is, who would've guessed that would happen! Smiley
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 21, 2018, 06:29:13 PM
#4
works on mainnet, but ArmoryDB doesn't connect to testnet bitcoin nodes. Maybe something to do with the satoshi-port option?

Botched the defaults for testnet/regtest, you'd have to force the proper port with the new cli arg.
legendary
Activity: 3430
Merit: 3080
November 21, 2018, 02:58:03 PM
#3
works on mainnet, but ArmoryDB doesn't connect to testnet bitcoin nodes. Maybe something to do with the satoshi-port option?
legendary
Activity: 3430
Merit: 3080
November 19, 2018, 08:39:03 PM
#2
Smiley
legendary
Activity: 3766
Merit: 1364
Armory Developer
November 19, 2018, 09:42:52 AM
#1
This is a minor release with a lot of bug fixes and a couple new features:
    - Spend to bech32 addresses
    - Set DB dir in GUI (File > Settings menu)

Note
   Recent updates to the MSVC compiler broke CryptoPP's AES-CBC optimized decryption. This affects restoring SecurePrint backups on Windows with 0.96.4 only. All backups made with 0.96.4 are valid. Optimizations for CryptoPP have been disabled on Windows. I'm looking to replace it with libbtc sooner rather than later as a result.

Changelog

Code:
v0.96.5
== Added ==
   - You can now set the database path from the Settings menu.
   - You can now spend to bech32 addresses.
   - Added support for satoshi-port CLI argument in ArmoryDB.

== Fixes ==
   - Improved bitcoind path detection.
   - Properly carry thread-count and ram-usage command line arguments from client to automated db process.
   - Custom paths set in the GUI will now properly overrule custom paths from armoryqt.conf.
   - Fixed spending from lockboxes.
   - Fixed deleting lockboxes.
   - Fixed Simulfund promisory note creation and signing.
   - Fixed preview dialog for unconfirmed transactions.
   - Fixed previewing unsigned transactions in offline mode.
   - Fixed SecurePrint decryption on Windows.

   - Recent updates to the MSVC compiler resulted in invalid decryption of AES-CBC packets. This issue only
     affects the decryption of SecurePrint encrypted backups. Encryption still operates as expected, no
     SecurePrint backups created with the incriminated builds are faulty. Wallets are not concerned, as they
     use AES-CFB.
    
     The solution was to turn off all optimizations in MSVC when buidling CryptoPP. This may impact DB boostrapping
     performance.

     This issue affects all Windows builds of 0.96.4.

Binaries:

https://github.com/goatpig/BitcoinArmory/releases/tag/v0.96.4.99

Test away!
Jump to: