Search content
Sort by

Showing 17 of 17 results by Aethereal
Post
Topic
Board Armory
Topic OP
Strange "invalid propose" error in new "autodb" branch
by
Aethereal
on 25/06/2025, 13:05:30 UTC
Hello,
the latest autodb branch compiles correctly (but still doesn't load old "python" wallets). I am getting a strange error on console at launch though:

Code:
-INFO  - 2025-06-25 - 12:18:14.362: (../../cppForSwig/BridgeAPI/BridgeMain.cpp:61) cppbridge args:
 - datadir: /home/test/.armory/
 - offline: 1
 - auth mode: 1
 - db port: 9001
 - bridge port: 52333
invalid propose

The program seems to go on fine, and there are no errors logged in bridgeLog.txt

On exiting, a different error show up on console but the exiting process seems to succeed:

Code:
-ERROR - 2025-06-25 - 13:24:40.871: (../../cppForSwig/SocketObject.cpp:423) recv error: 0, aborting
-INFO  - 2025-06-25 - 13:24:40.871: (../../cppForSwig/BridgeAPI/BridgeMain.cpp:91) exiting

All happened while in offline mode (forced with --offline flag on invoking python)
I'll keep doing some tries when there'll be new commits.
Post
Topic
Board Armory
Re: Issue with Python version on latest commit 9c4e9f1 in dev branch
by
Aethereal
on 29/05/2025, 12:09:36 UTC
The last code seems to work on 3.11
The errors where thrown at launch of the program, not when actually using the affected dialogs. I assume it happened when python updates __pychache__ and compiles the modified files into .pyc
Since now I was able to get to the program window, I assume all the files passed the compile phase under python 3.11

Thanks for your prompt response.
Post
Topic
Board Armory
Merits 1 from 1 user
Re: Issue with Python version on latest commit 9c4e9f1 in dev branch
by
Aethereal
on 29/05/2025, 10:00:06 UTC
⭐ Merited by goatpig (1)
Unfortunately, the fix still have issues with 3.11 (works fine on 3.13)

Code:
Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/ArmoryQt.py", line 80, in <module>
    from qtdialogs.DlgWalletDetails import DlgWalletDetails
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgWalletDetails.py", line 41, in <module>
    from qtdialogs.DlgBackupCenter import DlgBackupCenter, DlgSimpleBackup
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgBackupCenter.py", line 750
    f'{str(self.fragData['M'])}</b></font> fragments with this '
                          ^
SyntaxError: f-string: unmatched '['

I am a bit puzzled as I can't spot the issue this time, unless it needs some characters to be escaped...

About reading wallets, I'm talking about old .wallet format (my backup is about 7 years old).
Post
Topic
Board Armory
Merits 2 from 2 users
Topic OP
Issue with Python version on latest commit 9c4e9f1 in dev branch
by
Aethereal
on 26/05/2025, 10:04:55 UTC
⭐ Merited by nc50lc (1) ,goatpig (1)
Hello @goatpig

I tried the latest commit on 2 different environments and I had different results.

On Python 3.13.3 there was no error

On Python 3.11.2 I got this:

Code:
Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/ArmoryQt.py", line 80, in <module>
    from qtdialogs.DlgWalletDetails import DlgWalletDetails
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgWalletDetails.py", line 41, in <module>
    from qtdialogs.DlgBackupCenter import DlgBackupCenter, DlgSimpleBackup
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgBackupCenter.py", line 650
    f'<font color="{htmlColor('TextBlue')}" '
                               ^^^^^^^^
SyntaxError: f-string: unmatched '('

This is apparently due to the fact in Python 3.12 the parsing of nested quotes was changed (might even say "improved").

Unfortunately Python 3.11 is still the default on Debian 12 and derivatives like the RaspiOS I got the error on. That might trigger the need to bundle the right Python with the final public release unless you have some sort of work-around.

On a side note, I have a problem since your previous commit: If I launch Armory against an old .armory folder I had from a back-up, it doesn't recognize neither the wallet nor the watch-only wallet that there were inside.
Since the load digital backup dialog is still not working, I can't try to see if they would work if manually imported.
If possible I would like to load the binary backups as they pair the addresses I used with the description I gave them, while restoring a paper backup of course lacks the descriptions.

Post
Topic
Board Armory
Re: Dev branch - print backup doesn't work
by
Aethereal
on 16/04/2025, 08:33:33 UTC
Yes, there are indeed different Qt versions

On the working RPI5 there's just Qt5 (default from distribution)
On the arch-based machine there are both Qt5 and Qt6 libraries (qmake reports using Qt 5.15.16)
There were probably some mistake when installing pyside6 that pulled some more libraries than needed. Other programs are still able to call the print dialog though, not sure which of them are doing that using python.
It's anyway a minor issue at the moment since it only happens on this "lab" machine that could have a quite "dirty" environment due to previous experiments.


Post
Topic
Board Armory
Re: Dev branch - print backup doesn't work
by
Aethereal
on 15/04/2025, 14:37:10 UTC
Ah, now things become interesting...
as of commit 2449 "fix passphrase reading..." I have different behavior on different systems.

On my RPI5 the wallet creation works fine. The print dialog now comes up, I can print the actual paper backup (currently on pdf for test purposes) and also perform the verify step with success.

On my Garuda (arch-based) I can't get to the OS (Qt actually) print dialog, I get this error:

Code:
Traceback (most recent call last):
File "/home/lab/BitcoinArmory/qtdialogs/DlgBackupCenter.py", line 638, in print_
self.printer.setPageSize(QtGui.QPageSize.PageSizeId.Letter)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: arguments did not match any overloaded call:
setPageSize(self, size: QPagedPaintDevice.PageSize): argument 1 has unexpected type 'PageSizeId'
setPageSize(self, pageSize: QPageSize): argument 1 has unexpected type 'PageSizeId'

I tried changing the local KDE setting for paper size to "A4" rather than "Letter", because opening the print dialog in a different program (kate) I noticed there wasn't a setting named just "Letter" but different settings with alternate names, so I though the problem could be this system didn't had a PageSizeId with a Letter property.
This didn't changed the behavior of Armory, that thrown the same exact error, including the "Letter" PageSizeId. I checked and turned out the page size is hardcoded.
I then tried to change the line indicated, using PageSizeId.A4 but I got again the same error.
I suppose it might be something specific of this system and the same won't happen to others, but I'm still curious about what could cause it.
Post
Topic
Board Armory
Re: Dev branch - print backup doesn't work
by
Aethereal
on 13/04/2025, 11:31:58 UTC
Hello
as of commit 9b16dcb "fix backup print feature", the "Backup Wallet" button in the wallet properties window still isn't working with error

Code:
(ERROR) Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgWalletDetails.py", line 559, in execBackupDlg
    DlgSimpleBackup(self, self.main, self.wlt).exec_()
    ^^^^^^^^^^^^^^^
NameError: name 'DlgSimpleBackup' is not defined

The backup feature inside the new wallet creation wizard is now able to print the paper backup. Though, just after that a dialog "Verify Your Backup!" pops up, and clicking on the button "Test Backup" nothing happens, the dialog closes and you are again at the create backup. You can go "Next" and make a read-only copy, but the wallet is still marked as not backup-ped.
On the console, I have the following error:

Code:
Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/ui/WalletFrames.py", line 1033, in clickedDoIt
    isBackupCreated = OpenPaperBackupDialog('Single', self.parent(), self.main, self.wlt)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgRestore.py", line 1542, in OpenPaperBackupDialog
    DlgRestoreSingle(parent, main, True, wlt.uniqueIDB58).exec_()
                                         ^^^^^^^^^^^^^^^
AttributeError: 'PyBtcWallet' object has no attribute 'uniqueIDB58'

I'll wait for further commits to try again
Post
Topic
Board Armory
Re: Dev branch - print backup doesn't work
by
Aethereal
on 12/04/2025, 10:07:12 UTC

Quote
b- when asked to make a paper backup during the creation phase, I'm asked again (for a fouth time) the password to unlock it

Will fix.


Actually, that's not really wrong. Assuming at this point the wallet was already created and saved in encrypted form, it's totally legit Armory ask again the password to unlock it if the password was already discarded from memory. I suppose the on-demand "make backup" option will have to ask for the password anyway if done at a later time.

Post
Topic
Board Armory
Merits 3 from 2 users
Topic OP
Dev branch - print backup doesn't work
by
Aethereal
on 11/04/2025, 08:59:30 UTC
⭐ Merited by ABCbits (2) ,nc50lc (1)
Hello @goatpig
As of the current commit b252ce4 "wallet creation progress report in GUI" the wallet creation seems to work flawlessly
The creation process still throws a warning about "No crontrol passphrase" for the global protection but now the single wallet created is correctly encrypted with the set password. Previously, the wallets were actually created as Not Encrypted.
I can tell because:
a- previously created wallet now are listed as not encrypted and the new ones are listed as encrypted in the Available Wallets grid
b- when asked to make a paper backup during the creation phase, I'm asked again (for a fouth time) the password to unlock it

There are still some minor quirks with the windows management: if you choose to add additional entropy, the wizard window is enlarged to accomodate the card pictures, but once accepted the new entropy the windows is not sized back when asked for the passoword, so the two input fields are occupying just a corner of the still big window. The next step recreates the window so it all turns back to normal.
When not using the additional entropy, there's still the error about being unable to get a screenshot.
When printing the paper backup, the window with the actual paper wallet to be printed is very small, to the point that on one system I tried it neither the picture nor the buttons were visible, and I had to manually resize it to show them.

When creating a new wallet, hitting the "print" button during the "print single sheer paper backup" phase throws an error:

(ERROR) Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgBackupCenter.py", line 632, in print_
    LOGINFO('Printing!')
    ^^^^^^^
NameError: name 'LOGINFO' is not defined

Since the wallet property window buttons aren't yet working, I couldn't test if the error is specific to the creation flow or is present also on on-demand wallet backup.

Thanks for the update and keep up the good work!


Post
Topic
Board Armory
Re: Armory on RPI5
by
Aethereal
on 23/03/2025, 16:56:33 UTC
Hello

I tried again, removig the .armory folder to emulate a first run, and this time the error was not present, so maybe it's good now

About  points 1&2, it was the libbtc that needed to be built as static only, so to be statically linked when creating the cffi pyton library
Rather than deleting the files, I preferred to add the --disable-shared
So in libbtc build instructions,
Code:
CFLAGS="-fPIC -g" ./configure --disable-wallet --disable-tools --disable-net
become
Code:
CFLAGS="-fPIC -g" ./configure --disable-wallet --disable-tools --disable-net --disable-shared
and all compiled fine for me, with no more errors at runtime. Maybe it would be useful to update the BitcoinArmory/build_instructions/linux/linux.md file so other would not have the same issue.

I tried creating a wallet without adding the "extra entropy" trough cards, and this error shown up (the wallet was created ayway)

Code:
(ERROR) ArmoryQt.py:1114 - Third source of entropy (desktop screenshot) failed
Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/ArmoryQt.py", line 1107, in getExtraEntropyForKeyGen
    pixDesk = screen.grabWindow(QtWidgets.QApplication.desktop().winId())
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'PySide6.QtWidgets.QApplication' has no attribute 'desktop'
(WARNING) ArmoryQt.py:1117 - Failed to get extra entropy from desktop screenshot

I am still having some errors about passphrase not being present when creating the password but the interface marking the wallet as protected.
I will wait until the "Click to Test" link in the Wallet Properties dialog will work again to check if it actually used my passphrase or some other value.

Have a nice time and hear about you again when you are back
Post
Topic
Board Armory
Topic OP
Armory on RPI5
by
Aethereal
on 19/03/2025, 20:48:44 UTC
Hello again @goatpig,

just because I can, I tried compiling the loading_wallet branch on a Raspberry Pi 5, default Raspi-OS aarch_64.
There I could even use a venv to limit the python modules to the development environment.

The compile phase went fine, and it actually runs.
I was unable to try further at the moment, later I'll try if I can also create a wallet.
Due to the size of the SD card I'm using, I can't run bitcoind on it, so I'm limited to --offline testing

It's very interesting, if the final release will also work I might consider the option to keep my signing wallet on an SD card (self-contained with OS and Armory) and put it into my Raspberry just when needed, while the Raspberry itself will be used for other purposes (retrogaming mostly) the rest of the time.

Now, while I compiled Armory in this other environment, I noticed a couple things that initially I thought were specific of my first environment, but actually happened here too:

1.
I used the suggested layout (the three directories on the same tree level) as written in the build instructions, but both times I had to include the explicit path for libbtc and libwebsockets for it to work. It's not a big deal but not consistant with the instructions.

2.
Armory asks for libbtc.so.0 at runtime. It is built under libbtc/.libs/libbtc.so.0.0.0 and I have to manually copy it on the BitcoinArmory folder (unless I want to have to put it in some system-wide directory). I wonder how this would work in the final release and if it's correct to move it, since there's no mention of that in the build instructions.

3.
There is an error when starting Armory and in the home folder of the user there isn't a .bitcoin folder. A simple empty directory is enough to skip it, but I was wondering if this exception should be handled better, since in offline environments that's very likely to happen.

Code:
(ERROR) ArmoryUtils.py:1060 - Error getting system details:
Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/armoryengine/ArmoryUtils.py", line 1058, in <module>
    SystemSpecs = GetSystemDetails()
                  ^^^^^^^^^^^^^^^^^^
  File "/home/test/Armory/BitcoinArmory/armoryengine/ArmoryUtils.py", line 1053, in GetSystemDetails
    out.HddAvailB = getHddSize(BTC_HOME_DIR)    // (1024**3)
                    ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/test/Armory/BitcoinArmory/armoryengine/ArmoryUtils.py", line 1050, in getHddSize
    s = os.statvfs(adir)
        ^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/test/.bitcoin'
(ERROR) ArmoryUtils.py:1061 - Skipping.

4.
At first run, there's an error probably due to the wallet list being empty:

Code:
(ERROR) Traceback (most recent call last):
  File "/home/test/Armory/BitcoinArmory/ArmoryQt.py", line 1253, in openSettings
    dlgSettings = DlgSettings(self, self)
                  ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/test/Armory/BitcoinArmory/qtdialogs/DlgSettings.py", line 37, in __init__
    defaultWltID = self.main.walletIDList[0]
                   ^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ArmoryMainWindow' object has no attribute 'walletIDList'

This seems to not happen again on subsequents runs

5.
In the wallet creation, after step 3 (validate the password a third time) and step 4 (create backup, that is still not working by the way) some time passes (creating the actual wallet keys I assume) but there's no visual hint about Armory doing anything and it just look freezed until the step 4 dialog appears. I would suggest at least changing the cursor to a "busy" icon to signal the user that the "next" button click was received.

Regards

Post
Topic
Board Armory
Merits 6 from 3 users
Topic OP
Current issues loading wallet files in dev loading_wallets branch
by
Aethereal
on 12/03/2025, 15:29:27 UTC
⭐ Merited by ABCbits (3) ,nc50lc (2) ,goatpig (1)
Warning: This issue only affects digital backups on the current dev version. Paper Backups are safe and working

Hello @goatpig

I had some more test with wallets (all of them were done with the --offline flag).

First of all, the Import feature is still not working (I suppose you are aware of that). Choosing "Import digital backup or watchiong-only wallet" the file dialog comes up, you can select a .wallet file, but when you click "Open" nothing happens and you are back to the "Restore Wallet from Backup" window. The log reports this error:

Code:
(ERROR) Traceback (most recent call last):
File "/home/lab/BitcoinArmory/qtdialogs/DlgUniversalRestoreSelect.py", line 99, in clickedOkay
self.main.execGetImportWltName()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/lab/BitcoinArmory/ArmoryQt.py", line 2758, in execGetImportWltName
wlt = PyBtcWallet().readWalletFile(fn, verifyIntegrity=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PyBtcWallet' object has no attribute 'readWalletFile'

Also I had an old backup of a previous Armory config dir (~/.armory/) so I tried to launch the current dev version against it (emulating an "upgrade" scenario).

There were 2 wallets in this old Armory: a crypted wallet and a read-only watch wallet.

The presence of the encrypted wallet causes an immediate error just after the -bridge port: line in the log with the following:

Code:
terminate called after throwwing an instance of 'Armory::Wallets::IdException'
  what():   [EncryptionKeyId] invalid key size

If I remove the encrypted wallet file and leave the watch-only wallet, I get this error at the first launch:

Code:
╭─lab@AI in repo: BitcoinArmory on  loading_wallets [?] via △ v3.31.6 via  v3.13.2
╰─λ python ArmoryQt.py --offline
********************************************************************************
Loading Armory Engine:
Armory Version:       0.96.99
Armory Build:         None
PyBtcWallet  Version: 1.99
Detected Operating system: Linux
OS Variant            : ('Garuda Linux', 'Soaring', 'Broadwing')
User home-directory   : /home/lab
Satoshi BTC directory : /home/lab/.bitcoin
Armory home dir       : /home/lab/.armory/
ArmoryDB directory     : /home/lab/.armory/databases
Armory settings file  : /home/lab/.armory/ArmorySettings.txt
Armory log file       : /home/lab/.armory/armorylog.txt
Do wallet checking    : True
(ERROR) Settings.py:203 - Unsupported language  specified. Defaulting to English (en)
-INFO  - 2025-03-12 - 16:52:49.575: (../../cppForSwig/BridgeAPI/BridgeMain.cpp:58) bridge log: /home/lab/.armory/bridgeLog.txt
-INFO  - 2025-03-12 - 16:52:49.575: (../../cppForSwig/BridgeAPI/BridgeMain.cpp:59) cppbridge args:
- datadir: /home/lab/.armory/
- offline: 1
- auth mode: 1
- db port: 9001
- bridge port: 56514
-WARN  - 2025-03-12 - 16:52:50.886: (../../cppForSwig/Wallets/WalletFileInterface.cpp:404) No control passphrase provided, wallet file will not be encrypted
-WARN  - 2025-03-12 - 16:52:52.135: (../../cppForSwig/Wallets/WalletFileInterface.cpp:404) No control passphrase provided, wallet file will not be encrypted
-WARN  - 2025-03-12 - 16:52:52.746: (../../cppForSwig/Wallets/Accounts/AddressAccounts.cpp:349) empty inner account id, defaulting to outer account id
-ERROR - 2025-03-12 - 16:53:06.912: (../../cppForSwig/SocketObject.cpp:381) POLLERR error in readFromSocketThread
-INFO  - 2025-03-12 - 16:53:06.912: (../../cppForSwig/BridgeAPI/BridgeMain.cpp:98) exiting
(ERROR) ArmoryQt.py:4952 - Strange error during shutdown
Traceback (most recent call last):
File "/home/lab/BitcoinArmory/ArmoryQt.py", line 4944, in closeForReal
TheBridge.service.shutdown()
~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/lab/BitcoinArmory/armoryengine/CppBridge.py", line 405, in shutdown
self.bridgeSocket.stop()
~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/lab/BitcoinArmory/armoryengine/CppBridge.py", line 146, in stop
self.clientFut.result()
~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/usr/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/lab/BitcoinArmory/armoryengine/CppBridge.py", line 367, in readBridgeSocket
callbackFunc.process(callbackData)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/home/lab/BitcoinArmory/armoryengine/CppBridge.py", line 1353, in process
self.parseProtoPacket(protoPacket)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/lab/BitcoinArmory/armoryengine/CppBridge.py", line 1349, in parseProtoPacket
raise Exception("override me")
Exception: override me

Armory is still running but not showing anything in the wallet window.
But if I close it and then open it again, it doesn't throw errors anymore and instead the watch-only wallet appears correctly in the wallets window. It also appears to show the addresses I was using with the same labels I added at the time, so I assume that even if an error occurred, the config was correctly updated and the watch-only wallet is working.
Since I'm still on a --offline system, I can't do additional tests.

I hope to have been helpful.
All the above tests are repeteable, so I'll try again against future updates of the code.

Post
Topic
Board Armory
Merits 1 from 1 user
Re: Armory dev branches errors with Python >3.9
by
Aethereal
on 28/02/2025, 15:59:03 UTC
⭐ Merited by nc50lc (1)
Hello @goatpig

I confirm I had to fix the int issue for the following calls:

setMinimumWidth
setMinimumHeight
setMinimumSize
setMaximumWidth
setMaximumHeight
setMaximumSize
QSize

This apparently was enough to let me run Armory and do some basic tests. Of course I am not sure there aren't other calls with similar problems, I'll know only once I'll be able to do a complete run of all the Armory features.
Let me know if you would like the files I updated so you can avoid hunting all the replaces yourself and can concentrate on the real work. Unfortunately I don't have a github account at the moment so I can't fork and create a pull request. Let me know what's the more useful way for you.

About the tests, I did some checks with wallets (that is, I understand, what you are working on) so it's possible you are already aware of the issues I encountered. I list them anyway for your convenience

First test, I tried to create a new wallet. I checked the flag for creating additional entropy, and got the dialog for the selection of the shuffled cards. All the boxes are black, so I just randomly clicked some until I got enough entropy and went on. I got this errror:

Code:
(ERROR) Traceback (most recent call last):
File "/home/lab/BitcoinArmory/ui/Wizards.py", line 133, in initializePage
self.createNewWalletFromWizard()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/lab/BitcoinArmory/ui/Wizards.py", line 185, in createNewWalletFromWizard
self.newWallet = PyBtcWallet().createNewWallet(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
passphrase=self.setPassphrasePage.pageFrame.getPassphrase(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
longLabel=self.walletCreationPage.pageFrame.getDescription(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
extraEntropy=entropy)
^^^^^^^^^^^^^^^^^^^^^
File "/home/lab/BitcoinArmory/armoryengine/PyBtcWallet.py", line 501, in createNewWallet
walletId = TheBridge.utils.createWallet(
addrPoolSize,
...<2 lines>...
shortLabel, longLabel,
extraEntropy)
File "/home/lab/BitcoinArmory/armoryengine/CppBridge.py", line 583, in createWallet
method.extraEntropy = extraEntropy
^^^^^^^^^^^^^^^^^^^
File "capnp/lib/capnp.pyx", line 1417, in capnp.lib.capnp._DynamicStructBuilder.__setattr__
File "capnp/lib/capnp.pyx", line 1410, in capnp.lib.capnp._DynamicStructBuilder._set
File "capnp/lib/capnp.pyx", line 794, in capnp.lib.capnp._setDynamicField
OverflowError: Python int too large to convert to C unsigned long

Additionally, I had the following error:

Code:
(ERROR) Traceback (most recent call last):
File "/home/lab/BitcoinArmory/ui/WalletFrames.py", line 1042, in clickedDoIt
isBackupCreated = OpenPaperBackupDialog('Single', self.parent(), self.main, self.wlt)
^^^^^^^^
AttributeError: 'WalletBackupFrame' object has no attribute 'wlt'

This might relatedto the previous though, since a wallet wan't actually created.

After that, I tried creating a wallet without asking for additional entropy, and was able to complete the task. Though, even if I asked to print a backup wallet, this didn't happened. Are there some dependencies needed for the print feature?
I'm on an offline session (and I don't have bitcoind running on this test machine) so I stopped here assuming the wallet is working.

Later, I tried restoring a paper backup I had. It's a 1.35c plain one. The restoring process was apparently successful, but even if I set a password on the walled when required (and confirmig it the third time) I got this error on console:

Code:
-WARN  - 2025-02-28 - 13:16:00.807: (../../cppForSwig/Wallets/WalletFileInterface.cpp:404) No control passphrase provided, wallet file will not be encrypted
-WARN  - 2025-02-28 - 13:16:16.237: (../../cppForSwig/Wallets/Accounts/AddressAccounts.cpp:349) empty inner account id, defaulting to outer account id
-ERROR - 2025-02-28 - 13:16:25.956: (../../cppForSwig/BridgeAPI/CppBridge.cpp:552) failed to register walletwith error: bdvPtr is not set
(ERROR) Traceback (most recent call last):
File "/home/lab/BitcoinArmory/ui/WalletFrames.py", line 1034, in clickedDoIt
unlockProgress = DlgProgress(self, self.main, HBar=1,
Title=self.tr("Unlocking Wallet"))
TypeError: 'module' object is not callable

The restored wallet was not shown in the wallets list at first, but when I closed and restarted Armory it was there, with "Encrypted" under the Security column.

Since the strange error, I wanted to try if the password I entered was correctly applied, so I opened the wallet properties page and clicked the "Click to Test" under "Unlock Time:" but I got the following error:

Code:
(ERROR) Traceback (most recent call last):
File "/home/lab/BitcoinArmory/qtdialogs/qtdefines.py", line 375, in mouseReleaseEvent
self.linkActivated.emit(ev)
~~~~~~~~~~~~~~~~~~~~~~~^^^^
TypeError: linkActivated(self, link: Optional[str]).emit(): argument 1 has unexpected type 'QMouseEvent'

That's all for now. Please let me know if you prefer a different way for reporting those issues.

Regards

Post
Topic
Board Armory
Re: Armory dev branches errors with Python >3.9
by
Aethereal
on 28/02/2025, 07:32:10 UTC
I agree it's a bit strange that it never come up until now. I am having the same float-to-int issue on
setMinimumWidth
setMinimumheight
setMinimumSize
that are present in various .py files. I'll have a look if I can find more

About installing packages system wide, it's not an issue as I'm currenly on a "lab" machine that I am using just to test Armory and see if it compiles for me. Once I am successfull, I'll do the same steps on the actual "production" machine where bitcoind is running (which use the same distro), but even this one will be dedicated to Armory so there will be no conflict with other programs.
I might later be interested in the best way to move the actual program out of the build environment (i.e. "install") so I can have a stable version in use while at the same moment being able to test further developments. But it's a bit early for that
Thank you
Post
Topic
Board Armory
Merits 1 from 1 user
Re: Armory dev branches errors with Python >3.9
by
Aethereal
on 27/02/2025, 11:09:58 UTC
⭐ Merited by BitMaxz (1)
Hello, and thank you for your prompt answer.

Answering your points:

1 - I have just tried building against the loading_wallets branch, and encountered the same issue (more on that later)

2 - I am building following the instructions you linked (these seems to be the same I found when working on the capnp branch), even if I had to explicit the paths for libbtc and libwebsockets in configure (I followed the suggested dir structure including build subdirs where indicated).

3 - My issue is that most QT calls give errors about the arguments being of "float" type when they expects "int" and looking around I found that before python 3.10 there was an automatic conversion of type deprecated in 3.10 and later, so I wrongfully assumed you were using an old version of python where this still happened automatically. I confirm I have the python-qtpy and python-pyqt5 packages installed and I also tried installing pysides6 but things didn't changed.

This is the errors if gives me on first run:

Code:
╭─lab@AI in repo: BitcoinArmory on  loading_wallets via △ v3.31.6 via  v3.13.2 took 0s
╰─λ python ArmoryQt.py --offline
********************************************************************************
Loading Armory Engine:
Armory Version:       0.96.99
Armory Build:         None
PyBtcWallet  Version: 1.99
Detected Operating system: Linux
OS Variant            : ('Garuda Linux', 'Soaring', 'BirdOfPrey')
User home-directory   : /home/lab
Satoshi BTC directory : /home/lab/.bitcoin
Armory home dir       : /home/lab/.armory/
ArmoryDB directory     : /home/lab/.armory/databases
Armory settings file  : /home/lab/.armory/ArmorySettings.txt
Armory log file       : /home/lab/.armory/armorylog.txt
Do wallet checking    : True
/home/lab/BitcoinArmory/qtdialogs/DlgRestore.py:106: SyntaxWarning: invalid escape sequence '\ '
inpMask = '<AAAA\ AAAA\ AAAA\ AAAA\ \ AAAA\ AAAA\ AAAA\ AAAA\ \ AAAA!'
/home/lab/BitcoinArmory/qtdialogs/DlgRestore.py:1050: SyntaxWarning: invalid escape sequence '\ '
inpMask = '<AAAA\ AAAA\ AAAA\ AAAA\ \ AAAA\ AAAA\ AAAA\ AAAA\ \ AAAA!'
/home/lab/BitcoinArmory/qtdialogs/DlgRestore.py:1053: SyntaxWarning: invalid escape sequence '\ '
inpMaskID = '<HHHH\ HHHH\ HHHH\ HHHH!'
/home/lab/BitcoinArmory/qtdialogs/DlgRestore.py:1237: SyntaxWarning: invalid escape sequence '\ '
inpMask = '<AAAA\ AAAA\ AAAA\ AAAA\ AA!'
/home/lab/BitcoinArmory/qtdialogs/DlgRestore.py:1247: SyntaxWarning: invalid escape sequence '\ '
inpMask = '<AAAA\ AAAA\ AAAA\ AAAA\ \ AAAA\ AAAA\ AAAA\ AAAA\ \ AAAA!'
(ERROR) Settings.py:203 - Unsupported language  specified. Defaulting to English (en)
(ERROR) Traceback (most recent call last):
File "/home/lab/BitcoinArmory/ArmoryQt.py", line 5265, in <module>
armoryMainWindow = ArmoryMainWindow(splashScreen=SPLASH)
File "/home/lab/BitcoinArmory/ArmoryQt.py", line 356, in __init__
initialColResize(self.walletsView, [20, 0.15, 0.30, 0.2, 0.20])
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lab/BitcoinArmory/qtdialogs/qtdefines.py", line 208, in initialColResize
tblViewObj.horizontalHeader().resizeSection(c, pct*szRemain)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: resizeSection(self, logicalIndex: int, size: int): argument 2 has unexpected type 'float'

Traceback (most recent call last):
File "/home/lab/BitcoinArmory/ArmoryQt.py", line 5265, in <module>
armoryMainWindow = ArmoryMainWindow(splashScreen=SPLASH)
File "/home/lab/BitcoinArmory/ArmoryQt.py", line 356, in __init__
initialColResize(self.walletsView, [20, 0.15, 0.30, 0.2, 0.20])
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lab/BitcoinArmory/qtdialogs/qtdefines.py", line 208, in initialColResize
tblViewObj.horizontalHeader().resizeSection(c, pct*szRemain)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: resizeSection(self, logicalIndex: int, size: int): argument 2 has unexpected type 'float'
Please call QDesktopServices::unsetUrlHandler() before destroying a registered URL handler object.
Support for destroying a registered URL handler object is deprecated, and will be removed in Qt 6.6.
Please call QDesktopServices::unsetUrlHandler() before destroying a registered URL handler object.
Support for destroying a registered URL handler object is deprecated, and will be removed in Qt 6.6.


If I change
tblViewObj.horizontalHeader().resizeSection(c, pct*szRemain)
to
tblViewObj.horizontalHeader().resizeSection(c, int(pct*szRemain))
I can progress further, and doing the same for a couple of similar errors thrown, I get to the main program window.

I don't know if in your environment there's something that forces the casting of types, apparently there isn't on mine (and on miklerokamm's as he had the same issues showing on his logs).

For further information, I  installed the following packages not included in the default distro install to be able to successfully compile (might be useful for other people trying it):

capnproto
python-pycapnp
python-distro
python-cffi
python-setuptools
python-qtpy
python-lmdb

Thanks for your attention and keep up the good work!
Post
Topic
Board Armory
Topic OP
Armory dev branches errors with Python >3.9
by
Aethereal
on 26/02/2025, 16:30:34 UTC
Hello goatpig,
I am trying to build Armory on "Garuda", an arch-based rolling release that is enough up-to-date to use (at the time of my writing) Python 3.13.2
I successfully managed to compile "cappnp" branch on my machine, but I encountered some issues running it, even in --offline mode.
The errors I encountered are very similar to those shown in the logs of user miklerokamm in https://bitcointalk.org/index.php?topic=5521112.0
Digging into it, I noticed that since Python 3.10, there isn't anymore an automatic type cast, so most QT calls like setMinimumWidth, setMinimumHeight, setMinimumSize and potentially some others need an explicit int() around the argument, i.e.
self.editPasswd1.setMinimumWidth(MIN_PASSWD_WIDTH(self)) must become self.editPasswd1.setMinimumWidth(int(MIN_PASSWD_WIDTH(self))) to work
I assume you are using a Python version <3.10 where types were still automatically cast and didn't noticed the problem.
I manually changed some occurrences and become able to get to the main window. Actually I was even able to start the wizard for a new wallet, but encountered an error ('WalletBackupFrame' object has noattribute 'wlt') tryng to print a paper backup, I am not sure if you already fixed this in some other branch
This change should still be compatible with older python3 releases, and I hope you are able to implement it directly on the repository.
I'm quite interested in being able to compile a working version as I can't use anymore the old version that was available on AUR (can't install the python2 environment since some packages were discontinued) so let me know if I can be of any help
Post
Topic
Board Armory
Topic OP
Armory on Raspberry PI OS 64?
by
Aethereal
on 09/02/2021, 16:43:16 UTC
Hello,
I've used Armory in the past (years ago), and have a paper backup of my old (nearly empty) wallet that I would like to resume.
I was considering the idea to install Armory on my fresh PI4 8GB, for which I also bought an 1TB SSD.
I noticed Armory was available in the old Raspbian 32 bit repository, but seems not currently available in the latest Raspberry PI OS 64 bit repositories.
This OS is still on beta stage, and I suppose it also uses the latest python3 (not sure if it's also on QT5 or still QT4). It's therefore very likely the old stable branch of Armory couldn't run on it, and I should try compiling it from the development tree.
Is that possible? (I mean, would it work?) Which steps should I take to compile it natively on my Pi4? I'm not a total noob but not an expert either, so I should use some hints.
It's mostly a sort of challenge, I have no urge to get Archive running, and if in need I could use it on a different platform, but I would really like to get it running on the PI, so I'm willing to waste some time trying.
Anyone could offer some advice?
Thanks a lot