any ideas on how big bc core / blocks and chainstate total storage required is?
/blocks: 278 GB /chainstate: 4.15 GB is there a good summary on the web of which directories / files that btcore and armory create & access?
Core saves the chain in datadir. Assuming your system is in C: and your user name is RAM103, it would default to: C:\Users\RAM103\AppData\Roaming\Bitcoin
Armory saves its db in dbdir/databases. If you do not specify a custom dbdir, dbdir will be datadir. datadir carries the wallets and settings. It would default to: C:\Users\RAM103\AppData\Roaming\Armory
|
|
|
Block files aren't necessarely 128MB, some earlier files can be as large as 1-2GB.
|
|
|
When you let ArmoryQt spawn the DB, it randomizes the port for the DB and passes it to a cookie file that the DB reads from.
|
|
|
This is telling you there's a zombie instance of ArmoryDB, you need to shut that down.
|
|
|
Are you sure the DB is actually running?
|
|
|
Sorry if this is obvious but how do I find the database folder?
C:\Users\Christian\AppData\Roaming\Armory\databases Also, where can I find 96.5? The Armory website has 96.0 as the latest version..
https://btcarmory.com/
|
|
|
Delete the databases folder and update to 0.96.5
|
|
|
1) Delete your log files
2) Start Bitcoin-Qt manually, let it sync
3) Start Armory, see how that goes.
4) If that fails, nuke your databases folder (C:\Users\Udeshs\AppData\Roaming\Armory\databases) and try again
|
|
|
are my coins lost ?
No I have the transaction hash can i recover with that ?
No You need the private keys in your wallet to recover your coins. Make sure you have a wallet backup. If you don't, go an make one. Do not delete the wallets/armory datadir unless you are 100% sure you have a backup. Next step is to start Core and let sync 100%. Then update Armory, delete the databases folder (defaults to ~/AppData/Roaming/Armory on Windows) and start Armory while Core is already running. This should sync and let you spend your coins.
|
|
|
I use a RPi for signing myself, though the carrier is a USB stick (the RPi is never directly connected to my online machine, and it never was connected to internet in the first place).
There has been proposals to either add an audio modem or an animated QR code codec as extra transfer channels. In general smart cards are better than USB keys because the USB protocol and handshaking is significantly richer than that of smart cards, which are only ever storage devices. There's arguable minor benefits to be had from DMA access to the storage device vs going through the driver.
For the more paranoid, you could write the data back and forth by hand, or burn CDs.
|
|
|
armoryd talks to ArmoryDB, not bitcoind. ArmoryDB needs a local bitcoind. Clients such as ArmoryQt and armoryd connect to ArmoryDB only, through a socket. That socket is however not encrypted, so it's on you to secure that stuff.
|
|
|
Then I suppose the problem is in the C++ code (watching only wallet --> C++ , normal wallet --> python ?)
Most likely the state is lost when the address objects on the cpp side are updated to reflect the new entries. What is the difference from
Security: Watching-only
and
Security: Offline ?
They are both watching only wallets, but "offline" ones are flagged as yours. The assumption here is that since you have gone out of your way to flag this WO wallet as yours, you have access to the private keys on an offline machine.
|
|
|
Unfortunately there is nothing of note in the log. What you are experiencing is a bug, the tx counts shouldn't be reset after generating an address. There is little point in chasing down this bug, I'm in the process of rewriting this section of code for the next version.
|
|
|
AFAIK, Armory doesn't generate private keys in the same way as BIP32 type wallets etc... It is using a proprietary system. So, I don't think you'll be able to export a "Master Public Key" from Armory, and have other wallet apps/libraries reproduce the same keys/addresses as your Armory wallet.
You options would then be to generate keys/addresses externally to Armory, and then import them to Armory... or you would need to use a different wallet that supported the BIP32 standard that I believe bitwasp is using.... that way, you would be able to export a "Master Public Key" from your wallet... and Bitwasp should be able to derive the same public keys/addresses without needing to expose the underlying seed/private keys.
You can export Armory public roots. You'd have to implement the address chain derivation code in php most likely. Your best bet is to setup your stack to talk to an instance of armoryd, which will handle the wallet stuff, spit out new addresses, and monitor the blockchain for you. It works over JSON-RPC. https://github.com/goatpig/armoryd
|
|
|
Can you post the logs for the online instance of Armory?
|
|
|
In 1.35c, etotheipi figured he could generate the chaincode from a HMAC of the root, which led to the current 2 strings backups (32 bytes of data). I have no recollection of ever using wallets with a chaincode generated from the bad HMAC (I've been actively contributing the Armory since September 2014). I'm guessing there is a narrow window during which users have generated wallets with the bad HMAC?
In my opinion all wallets are generated with the bad HMAC. https://github.com/goatpig/BitcoinArmory/blob/dev/armoryengine/ArmoryUtils.py#L1941Ah I see my mistake now. I didn't think etotheipi's home baked HMAC was still in use. My code relied on cryptopp and now libbtc, which have correct hmac implementations. etotheipi one's botches the pad xoring indeed. Because you use the same wrong size (32 instead of 64):
My code uses a proper HMAC implementation (cryptopp/libbtc). I've never ran into this issue because my code rips the chaincode along with the root key from the python wallets in order to convert them to the new format. I went ahead and assumed it generated the chaincode from the root instead, which is why I mistakenly concluded the old python code was using a proper HMAC. Turns out the new code only generates chaincodes at wallet creation (wouldn't affect preexisting wallets) and when restoring from the root. I have yet to restore python wallets with the new code (they're converted on the fly atm), at which point I'll face this bug directly.
|
|
|
I'm not too sure what's going on here, this was prior to me era of involvement. Armory went through a change in its chaincode generation from v1.35 to v1.35c. Prior to 1.35c, the chaincode was generated as its own PRNG value, with no relation to the root value. As a result, paper backups had to carry 4 strings (64 bytes worth of data).
In 1.35c, etotheipi figured he could generate the chaincode from a HMAC of the root, which led to the current 2 strings backups (32 bytes of data). I have no recollection of ever using wallets with a chaincode generated from the bad HMAC (I've been actively contributing the Armory since September 2014). I'm guessing there is a narrow window during which users have generated wallets with the bad HMAC?
Armory in my dev branch is running off of libbtc instead of cryptopp, and it manages to recover older wallets with the expected data, so I wouldn't be too worried about implementing support for the botched HMAC. I'd just leave that as an unsupported edge case and deal with it when I'd actually run into it, if ever. Keep in mind that the current state of master most likely can't deal with these "bad" chaincodes.
|
|
|
Armory is set to never grab the same address twice. Generating a change address means to increment the use counter and grab the underlying address. You'd need user action to break this behavior, like using the wallet across several processes or restoring the wallet from a backup.
|
|
|
1) how does Armory generate the change addresses?
Grab the next unused address in the chain 2) when you restore a wallet from its Root Key, how many addresses are checked to retrieve the total balance? Maybe it tries until it finds at least 100 consecutive addresses without tx, or more? I did a test, it stops after 1000 consecutive addresses.
Scan all 1k addresses in the lookup.
|
|
|
Those are pointing to the dev branch, which is in constant flux. You can look at the code in the master branch: https://github.com/goatpig/BitcoinArmory/blob/master/cppForSwig/EncryptionUtils.cpp#L749You confirm that if a single private key was revelead the entire wallet is compromised?
Private key N with the chaincode will let you compute all private keys beyond N. To compute private keys prior to N, you need all public keys preceding N as well. Both chaincode and public keys are considered known data (as they lay on online computers), hence the generalization that revealing a private key within the chain is as good as revealing all private keys in the wallet. Keep in mind that you shouldn't treat soft derived BIP32 private keys with any less care, as the same property applies: One weakness that may not be immediately obvious, is that knowledge of a parent extended public key plus any non-hardened private key descending from it is equivalent to knowing the parent extended private key (and thus every private and public key descending from it). This means that extended public keys must be treated more carefully than regular public keys.
It is good practice to not reveal your wallet's private keys, regardless of the derivation scheme. Consider the wallet compromised if you did, and move the funds out.
|
|
|
|