Any thoughts yet as to what issue/s could prevent the conversion working?
Addresses for compressed pubkeys differ from their uncompressed counterparts (the raw data is different thus the hash digest is different). The database tracks addresses by their hash160 value (the common representation in transaction outputs and what Armory uses to create recipient scripts).
For the DB to track addresses based on compressed pub keys, it needs the hashes for the compressed keys. The DB does not deal in public keys, only the client does. This means the client has to deliver hashes for compressed public keys.
---------
So far so good, complications start here:
I don't want to modify the existing wallet format for 2 reasons:
1) It's an age old code (in the Bitcoin sense) that has proven it's robustness. If it's not broken, I'm not gonna fix it.
2) Some people may want to stay away from SegWit for whatever reasons, one being they don't trust me to handle crypto related code (again, for whatever reasons).
In light of these reasons, I do not want to modify the existing wallet code. As a matter of fact, the current wallets are mostly implemented in Python, whereas the signer code I'm writing for SegWit and subsequent wallet format that will fully leverage that signer will be in C++. This will further the separation of these 2 mission critical sources. The new signer will be proxied into the existing wallet pipeline only for SW signing.
The legacy wallet code and signer will remain in Armory, and the new wallets and signer will coexist with it during a long phase where the new code will eventually be enabled by default. At first it will only operate when signing SW transactions, which the legacy signer is incapable of.
---------
To get back on topic, I do not want to modify the legacy wallet code to save compressed pubkey hashes. I am left with:
1) Either compute all compressed keys on the fly at each start. This is slow. Refer to the wallet consistency check progress bar to get an idea of how long it would take to compute all the compressed keys for all your wallets.
2) Flag the addresses that have been used for SegWit operations through unused fields in the address container format.
3) Design a companion file to hold the meta data.
4) Some other exotic solution.