jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 19, 2020, 09:02:20 PM Last edit: July 20, 2020, 08:51:20 PM by jaume.signin |
|
Hi everyone!
I want to run armory and I will post here my steps.
So far, I learned four things - A system with some 400 Gbytes of HD is needed to store the blockchain. - When downloading bitcoin core, use the tgz and not the snap. With the tgz, the blockchain files will be stored in the .bitcoin/blocks directory where armory looks for them. - Disable bitcoin core pruning. - Wait for bitcoin core to fully synchronize before launching armory.
|
|
|
|
goatpig
Moderator
Legendary
Offline
Activity: 3724
Merit: 1360
Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 20, 2020, 07:53:54 AM |
|
Your main road block is that Armory currently runs on python2 & pyqt4, and both py2 and Qt4 have been dropped from ubuntu starting version 20. You should read this thread for a decent work around: https://bitcointalk.org/index.php?topic=5261375.0Otherwise, the simplest path forward is to run Armory from within a Ubuntu 19 VM.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 20, 2020, 08:54:53 PM |
|
Thanks goatpig ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) I plan to install armory on a dedicated computer. A laptop that is some 7 years old. I will install ubuntu 18.04 lts ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
|
|
|
|
HCP
Legendary
Offline
Activity: 2086
Merit: 4316
<insert witty quote here>
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 24, 2020, 10:09:38 AM |
|
So far, I learned four things - A system with some 400 Gbytes of HD is needed to store the blockchain.
Don't forget you'll need room for the OS and applications etc... go 1TB+ if you can - When downloading bitcoin core, use the tgz and not the snap. With the tgz, the blockchain files will be stored in the .bitcoin/blocks directory where armory looks for them.
Not actually necessary. You can store the bitcoin blocks wherever you want... you just need to configure Armory appropriately. For instance, I have my Bitcoin Core blocks folder in a "non-standard" location... but by setting the paths appropriately in Armory (using "in app" settings or .conf files), Armory is able to find them just fine ![Wink](https://bitcointalk.org/Smileys/default/wink.gif) - Disable bitcoin core pruning.
VERY important! ![Wink](https://bitcointalk.org/Smileys/default/wink.gif) - Wait for bitcoin core to fully synchronize before launching armory.
Also a very good idea. I will install ubuntu 18.04 lts ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) I have tested it on ubuntu 18.04 LTS and it works OK.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 25, 2020, 05:44:17 AM |
|
Thanks HCP for your input. So far, I learned four things - A system with some 400 Gbytes of HD is needed to store the blockchain.
Don't forget you'll need room for the OS and applications etc... go 1TB+ if you can I am using an old computer with some 450 GBytes of HD. Fingers crossed that's enough. I agree that a larger HD is needed. So far I downloaded 95% of the blockchain and used 75% of the HD. I haven't installed armory yet.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 28, 2020, 04:32:08 PM |
|
Well, my first attempt with armory gcc7.2 failed. I will try with the gcc 4.9 version... $ armory Gtk-Message: 18:20:00.871: Failed to load module "canberra-gtk-module" /home/xxxx (ERROR) ArmoryUtils.py:3735 - Unsupported language specified. Defaulting to English (en) /usr/lib/armory/armoryengine/Transaction.py:3126: SyntaxWarning: import * only allowed at module level def PyCreateAndSignTx_old(srcTxOuts, dstAddrsVals): No systemtrayicon available (ERROR) ArmoryQt.py:1862 - Failed to setup SDM Traceback (most recent call last): File "/usr/bin/../lib/armory/ArmoryQt.py", line 1857, in startBitcoindIfNecessary TheSDM.setupSDM(extraExeSearch=self.satoshiExeSearchPath) File "/usr/lib/armory/SDM.py", line 190, in setupSDM if self.failedFindExe: raise self.BitcoindError, 'bitcoind not found' BitcoindError: bitcoind not found (WARNING) SDM.py:402 - Spawning DB with command: ArmoryDB --db-type="DB_FULL" --cookie --satoshi-datadir="/home/xxxx/.bitcoin/blocks" --satoshi-port=8333 --datadir="/home/xxxx/.armory/" --dbdir="/home/xxxx/.armory/databases" Illegal instruction (core dumped)
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 28, 2020, 04:45:07 PM |
|
The gcc 4.9 version does work. Now armory is scanning the global transaction history.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 30, 2020, 02:43:54 PM |
|
Ok. I managed to create some transactions and they have been accepted and confirmed by the network.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 30, 2020, 03:21:18 PM |
|
Now I get The transaction you just attempted to broadcast has timed out.
The RPC interface of your node is disabled, therefor Armory cannot use it to gather more information about the timeout. It is recommended that you enable the RPC and try again.
|
|
|
|
goatpig
Moderator
Legendary
Offline
Activity: 3724
Merit: 1360
Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 30, 2020, 03:29:12 PM |
|
Did you try on the testnet? You have to run Core with -server to enable the RPC at any rate.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 30, 2020, 04:00:26 PM |
|
Did you try on the testnet? You have to run Core with -server to enable the RPC at any rate.
I was trying on the main network. And I didn't add the -server flag when I launched bitcoin-qt. Next time I will. Thanks again, goatpig.
|
|
|
|
goatpig
Moderator
Legendary
Offline
Activity: 3724
Merit: 1360
Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 30, 2020, 05:21:12 PM |
|
Broadcast timeout doesn't mean the tx didn't make to the mempool, it only means Armory sent the tx to your node but failed to acknowledge delivery in the allotted time (hence the timeout). When that happens, it tries to fallback to the RPC interface to broadcast through that, but since yours isn't set up, you got that message.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 30, 2020, 09:37:08 PM |
|
Broadcast timeout doesn't mean the tx didn't make to the mempool, it only means Armory sent the tx to your node but failed to acknowledge delivery in the allotted time (hence the timeout). When that happens, it tries to fallback to the RPC interface to broadcast through that, but since yours isn't set up, you got that message.
Ok. Perfect. Now I know what happened. Mine is a very old computer. That may explain the timeout. Thanks for the explanation ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
|
|
|
|
goatpig
Moderator
Legendary
Offline
Activity: 3724
Merit: 1360
Armory Developer
|
Ok. Perfect. Now I know what happened. Mine is a very old computer. That may explain the timeout.
It's not much related to the PC's performance. Armory's p2p broadcast code was implemented when Core would push transactions as is once delivered by another peer. Core batches now, so the broadcast detection throws a lot of false negatives. This needs a bit of a technical explanation to make sense: Early days, before Core was even named Core, the Bitcoin node software did 2 things different: Setting up the JSON-RPC interface required some minor work on the user part, notably adding login and password to a config file. Therefor, Armory could not expect access to the RPC in plug and play setups (95% of users), so it had to rely on something else to broadcast transactions. The RPC returns with an ACK/nACK on broadcasts but if only 5% of users can set it up properly, it was useless to Armory. Instead etotheipi (the original maintainer) opted to connect to Core through the P2P interface. Armory, still to this day, spoofs a P2P node to your Core instance, for the purpose of pushing transactions and getting new block notifications. The P2P broadcast interface does not come with an explicit ACK/nACK. It doesn't provide a result at all as a matter of fact, for design reasons. The flow goes like this: advertise the hash of the transaction you want to broadcast to the peer. The peer will then request that transaction by hash. You will return the transaction body to the peer. Broadcast is over. The only way to know if that transaction made it into the peer's mempool is to query that peer for the same transaction. If it returns it to you, it's in. You won't get a reply otherwise. So basically, Armory sends the transaction to your Core instance and polls it for a few seconds to verify it's been added to the mempool. Eventually core introduced broadcast batching, where it tries to make a better use of the MTU and reduce point of origin timing leaks. Basically your node will now wait some time and try to accumulate a bunch of transactions before announcing them to other peers. This delay also affects entry in the mempool (so that you can't just query the node for specific hashes to know what made it in or not with certainty). As a result, this disrupts the Armory P2P broadcast loop, since the polling may now timeout. Since then, interfacing with the RPC has become easier so I've added a RPC broadcast fallback when available, which is why you received the message about the RPC.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 31, 2020, 03:21:51 PM |
|
Wow, thanks for the whole explanation. I realize how armory has to constantly evolve to adapt to the changes of core. Now I use bitcoin-qt -server
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 31, 2020, 06:05:07 PM |
|
They way I used to run armory was 1) bitcoin-qt -server 2) armory Then I realized that there is an option in the configuration for armory to run bitcoin core. And that option was checked. That's why amory complained BitcoindError: bitcoind not found I told armory where my bitcoin binary is and let armory run bitcoin. Now everything runs smoother. Before I was running bitcoin core myself and also telling armory to run bitcoin core and the computer was very sluggish for some reason. Now it's much faster. But I think I broke something in the process as I cannot send bitcoin now. Traceback (most recent call last): File "/usr/bin/../lib/armory/ArmoryQt.py", line 3451, in clickSendBitcoins DlgSendBitcoins(self.getSelectedWallet(), self, self).exec_() File "/usr/lib/armory/qtdialogs.py", line 4594, in __init__ spendFromLockboxID=spendFromLockboxID) File "/usr/lib/armory/ui/TxFrames.py", line 151, in __init__ RBFcallback=RBFcallback) File "/usr/lib/armory/ui/WalletFrames.py", line 232, in __init__ self.updateOnWalletChange() File "/usr/lib/armory/ui/WalletFrames.py", line 347, in updateOnWalletChange self.selectWltCallback(wlt) File "/usr/lib/armory/ui/TxFrames.py", line 347, in setWallet self.setupCoinSelectionInstance() File "/usr/lib/armory/ui/TxFrames.py", line 396, in setupCoinSelectionInstance self.coinSelection = self.wlt.cppWallet.getCoinSelectionInstance() File "/usr/lib/armory/CppBlockUtils.py", line 2164, in getCoinSelectionInstance def getCoinSelectionInstance(self): return _CppBlockUtils.WalletContainer_getCoinSelectionInstance(self) <class 'CppBlockUtils.DbErrorMsg'>: <CppBlockUtils.DbErrorMsg; proxy of <Swig Object of type 'DbErrorMsg *' at 0x7f345c8a4450> >
So I am thinking about looking into the factory reset options...
|
|
|
|
goatpig
Moderator
Legendary
Offline
Activity: 3724
Merit: 1360
Armory Developer
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
July 31, 2020, 06:41:20 PM |
|
Try to rescan the db.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 01, 2020, 08:57:32 PM |
|
Try to rescan the db.
Thanks goatpig ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) I did a "rebuild" and now when I click on the "send bitcoin" button, the window to send bitcoins appears as it should be. Problem solved.
|
|
|
|
jaume.signin (OP)
Newbie
Offline
Activity: 22
Merit: 6
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2020, 07:00:49 AM |
|
As a summary, I want to list a few things I had to take into account when running armory:
- When downloading bitcoin core, use the tgz and not the snap. With the tgz, the blockchain files will be stored in the .bitcoin/blocks directory where armory looks for them. - Disable bitcoin core pruning. - Wait for bitcoin core to fully synchronize before launching armory. - Use a decent computer. Both bitcoin core and armory are demanding. I used a six year old computer with an intel core i3, 6 gigs of ram and some 450 GB of HD and at some point it was too slow or even freezed. - Use ubuntu 18.04 instead of the latest release. - Run bitcoin core with the flag -server. bitcoin-qt -server - Change the configuration of armory to disable the option "let armory manage bitcoin core".
|
|
|
|
|