Thank you again & this is where I am kind of lost, I know very little about the use of commands & how to specify these paths. I take it is done in command prompt & does it need to be elevated?
You can achieve this with config files. Read the "Config Files" section of https://btcarmory.com/docs/pathing, it's pretty straight forward. Please would you walk me through the exact steps like I am a 2 year old..?
I can try to hand hold you but you have to tell me about your setup first: - Do you have a custom datadir for Core? Where is your blockchain data if so? - Do you have a custom dbdir for Armory? Where is it if so? - Do you want Armory to automate bitcoind or do you want to control it yourself?
|
|
|
Do I have to have Bitcoin Core running to use Armory or do I leave it off & check the box to have bitcoind running in the background from Armory?
With 0.96.5 you can start the various binaries on your own, as long as you respect the order: 1st: bitcoind/bitcoin-qt 2nd: ArmoryDB 3rd: ArmoryQt The other binaries will pick on existing instances. I have pointed the top Armory Bitcoin install directory to D:\Program Files\Bitcoin
This isn't your Bitcoin binaries installation folder (where bitcoind/bitcoin-qt reside). ArmoryDB needs to know where your blockchain data lives instead. This page explains to you how to set paths for the blockain data: https://btcarmory.com/docs/pathing
|
|
|
I have also remembered I was getting an error that stated something like stopblockingthread error on my PC, that's when the DB.exe would crash in Armory.
Bitcoin Core is reading 807187 blocks.
1. You should update to Armory 0.96.5: https://github.com/goatpig/BitcoinArmory/releases/tag/v0.96.52. I would still like to see a log file, would help with the debugging 3. Your best path forward is to empty your "databases" folder. You'll find it in the Armory datadir then start Armory. On Windows, the default path is: "C:\Users\*accountname*\AppData\Roaming\Armory\databases"
|
|
|
My system will not run Armoury or on my other machine, the only version 0.96 on my son's PC has the ability to count through the blocks & fully update. My original installation with the original transaction is borked & will not get past 403k blocks. So I decided to restore my wallet on his working Armory installation & now his does not work either, stopping at the block where the transaction is at about 805k blocks. The ArmoryDB.exe disappears as it did on my machine. Please advise.
Start Bitcoin Core, what's the top block?
|
|
|
Hi, I sent a bitcoin transaction from my son's Armoury wallet on his PC, the bitcoin was redeemed from a cold wallet to his wallet & I sent it to my own personal Armoury wallet on my PC last night, both are Armoury (0.96). It still remains unconfirmed in my wallet after 95 confirmations now. I marked it as RBF when it was sent & it is flagged in the received transactions in my wallet as: ***RBF Flagged*... The maximum funds reads correct but the spendable funds reads zero & the balance is red & unconfirmed, my wallet is connected & I can right click on the transaction & view it on the blockchain.
Did I do something wrong checking the RBF box on sending & how can I get the transaction to confirm? Thanks.
This means the transaction is yet to confirm. What fee did you pay? I can't see the 'transactions tab' now because since I imported my backup wallet to my son's machine, the wallet will not update past the block where the transaction was at approx 805, 000 blocks. The transaction no longer appears in the wallet that he sent to on my machine. Should I delete my restored wallet?
Take it easy with the deletions. Please elaborate on the state of your system, or better, post logs from that machine.
|
|
|
also, I feel must take some responsibility for this thread appearing. it seems I misremembered whether Armory uses libbitcoin or not, and so should have not said anything at all without properly checking. it seems that in production Armory (0.96.5) all RNG seeding is not libbitcoin code, and in fact libbitcoin code isn't used at all in 0.96.5 (or 0.96.x inclusive)
so I hope nobody was in any way alarmed by what I said in the Dev&Tech thread linked in the OP
No harm done, better safe than sorry.
|
|
|
- bitcoin-cli getpeerinfo | grep inbound tells me ArmoryDB isn't connected to bitcoind
This is your issue. Armory connects to Bitcoin Core as a P2P node. It waits on new block broadcasts from your node to trigger the new block checks. If that connection isn't established, Armory won't see new blocks.
|
|
|
Some final notes:
I haven't looked at the libbitcoin RNG code, but it seems the issue isnt with libbitcoin per se but with libbitcoin explorer (aka "bx") handling of PRNG outputs for the purpose of wallet seeds. At any rate, Armory doesn't use that code, so it's not affected.
|
|
|
Entropy buffer sizeOn both versions, entropy buffer size is set to 32, but is it effective? The issue with "bx" (hadn't heard of this before now) is that no matter how much entropy it fetched to seed a wallet, it would be clamped down the 4 bytes. 4 bytes of entropy is way too low, attackers would create wallets for the entire space and look at all BIP44/49/84 roots, and sweep the coins. 1) In Armory, the buffer init code has not changed. Both 0.96.5 and the new code create a SecureBinaryData object, of numBytes. dev: https://github.com/goatpig/BitcoinArmory/blob/dev/cppForSwig/EncryptionUtils.cpp#L31master (0.96.5): https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/EncryptionUtils.cpp#L862) SecureBinaryData is a child class of BinaryData, the size_t ctor defers to BinaryData(size_t). dev: https://github.com/goatpig/BitcoinArmory/blob/dev/cppForSwig/SecureBinaryData.h#L55master: https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/EncryptionUtils.h#L1423) The BinaryData(size_t) is the same in both instances: dev: https://github.com/goatpig/BitcoinArmory/blob/dev/cppForSwig/BinaryData.h#L110master: https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/BinaryData.h#L1114) It uses BinaryData::alloc, which calls std::vector::resize: dev: https://github.com/goatpig/BitcoinArmory/blob/dev/cppForSwig/BinaryData.h#L569master: https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/BinaryData.h#L5995) The underlying vector is of uint8_t, i.e. bytes. Therefor the ctor allocates numBytes before filling it with random bytes. NumBytes is set to 32 in 0.96.5, in dev it can vary, as it allows for 16 bytes of entropy for 12 word BIP39 backups.
|
|
|
Update:
I believe I have found the private keys though a python script but it is totally unreadable, meaning it is consisted of signs like squares, question marks, crosses etc.
How do I decrypt it to a standard private key?
Private keys are not saved in hex, and it is also very unlikely the key is unencrypted. The comment on this method explains how key data is serialized: https://github.com/goatpig/BitcoinArmory/blob/master/armoryengine/PyBtcAddress.py#L874To decrypt a private key, you will need the following for each key: InitVect (16 bytes) : Initialization vector for encryption InitVectChk ( 4 bytes) : Checksum for IV PrivKey (32 bytes) : Private key data (may be encrypted) PrivKeyChk ( 4 bytes) : Checksum for private key data
as well as the KDF, packaged in the wallet header: Crypto/KDF -- (512) information identifying the types and parameters of encryption used to secure wallet, and key stretching used to secure your passphrase. Includes salt. (the breakdown of this field will be described separately)
Assuming you can find the private key entry for the wallet root, you can ignore the rest of the wallet and reconstruct it from that one key.
|
|
|
Hello,
It might sound easy for a person with basic knowledge but unfortunately I need more details.
How do I search something in Python?
I open the command box and then what?
How do I specify the location that I want Python to search for the sequence?
The disk data is currently sitting in one of my external hard disks.
Too many questions, I know.
There are no python specific commands in my instructions. Armory has a built in tool to check wallet integrity. It can be used to reconstruct a wallet which is partially damaged. This is all done graphically as long as you can come up with a wallet file. In the OP, you said you have already recovered the disk and ran a search for a specific hex sequence. My assumption is that you have all that you need to reproduce that wallet file. None of that requires any coding in Python yet (hence the "easy" remark). Armory wallet files are named along the following pattern: armory_xxxxxx.wallet. Unless you have recovered a file with this kind of naming, you will have to search the data you recovered from disk for that start sequence ('\xbaWALLET\x00'). Assuming the ~1000 bytes following that sequence are intact, the recovery tool should be able to rebuild the wallet. Again, this whole process is graphical, you don't need any Python to try this out.
|
|
|
Is there a chance that you can guide me step by step?
There is a tool that can recover wallet files even if it was deleted but I do not know if this tool can recover the old wallet version since you said it's a 2009/2010 wallet. The tool called PyWallet is used to recover wallets there is a guide posted on this forum on how to use it you can check this guide " [GUIDE] Recover your deleted keys" This is for wallet.dat (i.e. Bitcoin Core's wallet format). It won't work for Armory wallets. (hence the little progress over the last 3 years)
Ah I missed this part in the OP. So I can assume time is not of the essence then? If you got some more patience in you, I can look at it directly. I assume you have an image of the recovered disk. I would need access to that somehow. Do you remember if you encrypted the wallet or not? Hello again, Time is not of the essence but (and how do I put it in words without offending you or anyone else) I believe that I shouldn't been giving copies/images of the recovered data. Is there a chance that you can guide me step by step? I have downloaded python 2.7 Now what? Let's try the easy way then. Search your disk data for this sequence: '\xbaWALLET\x00'. Grab it along with the following ~10kB and make that a file. Feed that file to the Armory wallet recovery tool (Wallet -> Fix Damaged Wallet). What do you get?
|
|
|
(hence the little progress over the last 3 years)
Ah I missed this part in the OP. So I can assume time is not of the essence then? If you got some more patience in you, I can look at it directly. I assume you have an image of the recovered disk. I would need access to that somehow. Do you remember if you encrypted the wallet or not?
|
|
|
Recovering an old Armory wallet from fragments of data will require diving into the old file format. Code wise it's all in here: https://github.com/goatpig/BitcoinArmory/blob/master/armoryengine/PyBtcWallet.pyAs for specifics on what you're looking for: self.fileTypeStr = '\xbaWALLET\x00' This is what old Armory wallet files start with. As for the next steps, it depends on what you end up finding in the wallet. If you cannot recover the root, you can still recover part of the wallet based on how many private and public keys you can salvage. At first I'd suggest focusing on the root address and chaincode, so as to check if the wallet has any coins in the first place. This is because you will need to recover the KDF params and the associated IV for each private keys you recover, in order to decrypt them. You will need some python chops, with a cursory understanding of cryptography (or hire someone). I'll help you along the way.
|
|
|
so its a 2 line and it had me make a new passphrase. but it popped up a message saying armory 0.96 has to mirror python wallets? says mirrored wallets are watch only and hold no keys? is it going make my wallet watch only?can i still transfer?
That's part of internal design. It will result in multiple files for a given wallet. Don't concern yourself with that, you'll be able to spend.
|
|
|
Let's say your mount point for the TrueCrypt container is named ~/EncryptedFolder. You would do the following: 1. Unlock the TrueCrypto container and mount it to ~/EncryptedFolder 2. Copy your existing wallets to ~/EncryptedFolder 3. Tell ArmoryQt to start from that folder: python ArmoryQt.py --datadir=~/EncryptedFolder
All wallets you create/add in that instance of Armory will be saved in that folder. If you don't want to copy your existing wallets manually, you can restore them from their respective backups from within Armory as well. NOTE: if you do this on an online machine, the db data will end up in your encrypted folder, unless you give it a specific path with --dbdir. If you want to encrypt your public keys on your online machine, that's an ok thing to do.
|
|
|
AFAIK he was in touch with Wei Dai via various cypherpunk forums. Bitcoin used CryptoPP, Wei Dai' C++ crypto library. I assume that had some weight in the balance.
|
|
|
1. Are there no backport repos for Debian? Ubuntu has those. 2. You could always build Python2 and PyQt4 from source. On Debian, that's actually fairly simple. 3. Or you could build the dev branch and try out the new code in Py3/Qt5.
|
|
|
|