You should probably avoid trying to have 2 threads running on this topic... for other readers, the other thread is here: https://bitcointalk.org/index.php?topic=5357752.0As I asked in my most recent post on that thread... did you try using decodepsbt in Bitcoin Core to see what Bitcoin Core is showing the change address to be? If the address is showing as P2PKH in Bitcoin Core, but the Coldcard is showing it as P2WPKH (aka bech32), then it would appear it is a Coldcard issue... and you'll need to contact Coldcard support for guidance. When I created the watching only wallet (using importmulti for a "legacy" format wallet and importdescriptors for a "descriptor" format wallet), it seemed to generate P2PKH change addresses in the PSBT.
|
|
|
The private key starts with "p2wpkh:" and when I import it into electrum, it works and it shows me the correct public key.
Note that the use of prefixes ("p2pkh:", "p2wpkh-p2sh:", and "p2wpkh:") is, as far as I'm aware, an Electrum only thing. I'm not aware of any other wallets that actually require or use the prefixes like this.
|
|
|
A while ago, I noticed that you must have a VPN connection to be able to run that wallet.
I've never used a VPN to run Exodus (desktop or Android) and have never had issues trying to run it... are you in a country or using a phone company/ISP that is attempting to block cryptocurrency or something?
|
|
|
I am trying to write my own utility for manual decryption of Electrum and Bitcoin Core wallet.dat files.
Do note that wallet.dat files are not encrypted at the file level... When you enable encryption, certain data records within the database file (what a wallet.dat actually is) are encrypted. But you can parse/read the file with the appropriate database "viewer" (like dbdump)... you'll just get encrypted bytes for some of the records. Have a read of this topic: recover keys from wallet.dat without using pywalletAnd if you understand python... you'll find my "core decryptor" python script in one of the posts in that thread as a working example: https://bitcointalk.org/index.php?topic=5333765.msg57036972#msg57036972
Electrum is a slightly different beast... it has three "encryption states" for the wallet file: 1- Unencrypted plaintext (No password set) 2- Plaintext but with 'sensitive data' (ie. private keys/seeds etc) encrypted (Password only set) 3- Fully encrypted file (password set + encrypt file option selected) As suggested, you can probably get a feel for how the decryption of either the individual fields (#2) or full file (#3) is done by looking at the source code for Electrum. I haven't actually tried decrypting Electrum wallet files manually. Also, I don't have any experience with golang, so can't really assist with porting the core decryptor code
|
|
|
I've been experimenting with this over the last couple of days... and I cannot replicate the issue (NOTE: I am using TestNet running with -addresstype=legacy -changetype=legacy) I created an empty wallet via the GUI ("Disable Private Keys" and "Make Blank Wallet" both CHECKED) and then used the following importmulti commands: Import "Receive": importmulti '[{"range": [0,10], "timestamp": "now", "keypool": true, "watchonly": true, "desc":"pkh(tpubDCcc5nEEx6ucT4ZsFbcfQoQniLzLKKMCDWBJmCyE3pxdJB1FSFodzQHyugTT9jVye9JSw4Z1fh5G9muHGbxuWCKJ2FYLfwguAxxMRUfn614/0/*)#x7l9hvyy", "internal":false}]' Import "Change": importmulti '[{"range": [0,10], "timestamp": "now", "keypool": true, "watchonly": true, "desc":"pkh(tpubDCcc5nEEx6ucT4ZsFbcfQoQniLzLKKMCDWBJmCyE3pxdJB1FSFodzQHyugTT9jVye9JSw4Z1fh5G9muHGbxuWCKJ2FYLfwguAxxMRUfn614/1/*)#h26y2e5u", "internal":true}]' Then used rescanblockchain to pick up the transaction from this morning: After that, I created an unsigned transaction sending 0.01 to "2N6Q5ThfiXBmCVtZctMrFdKh9NMKr4cvyNg" (no custom change address was specified)... which gave the following PSBT: cHNidP8BAHUCAAAAAVwhQewlwfvoiFbIydddXePzvtLzxBkzOXASTZWtRMjjAAAAAAD9////AkBCDwAAAAAAF6kUkEZCuOxPJG3zAKLTIV1TEN0YKH2HYFOJAAAAAAAZdqkUgCugI7DhN6kQIULHp6jDpmO8+gKIrL7oHwAAAQC0AgAAAAL82FDhLhyM/oJXAJmphrqLdLwD4MhwFxmR3Hruy2n5TQEAAAAXFgAUsu40KEA0l7oQpkJB+ooQyjStqPv9////+KVvbXApkx7p35PrK7GPJXJ1iqVZftZIU7Nn6bMi9VkAAAAAAP3///8CgJaYAAAAAAAZdqkUuS49DijnI5Ot/mlEnLKoS24hzeqIrFNEhgAAAAAAFgAUJEZdVeL7wB0YpLnr2Pi4vfK0lhRn6B8AIgYCjv3jMS7f2EYTRRkhLQrPJNr2zE4NmKXC7XvKUPLOl9YMfjvIKQAAAAAAAAAAAAAiAgOyXgEY4CfaMolHM/xI8X0Kjiq3bED+NdPznEbcJyL4FQx+O8gpAQAAAAEAAAAA
Decoding that with decodepsbt, we can see that the change generated is: { "value": 0.08999776, "n": 1, "scriptPubKey": { "asm": "OP_DUP OP_HASH160 802ba023b0e137a9102142c7a7a8c3a663bcfa02 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a914802ba023b0e137a9102142c7a7a8c3a663bcfa0288ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ "msCf3mHLTXqrwyrnZVpzyZPkatzN5htrEb" ] } }
Which is a P2PKH output... and is the m/1/1 change address... which we can check using getaddressinfo: { "address": "msCf3mHLTXqrwyrnZVpzyZPkatzN5htrEb", "scriptPubKey": "76a914802ba023b0e137a9102142c7a7a8c3a663bcfa0288ac", "ismine": false, "solvable": true, "desc": "pkh([7e3bc829/1/1]03b25e0118e027da32894733fc48f17d0a8e2ab76c40fe35d3f39c46dc2722f815)#9a8l6nhz", "iswatchonly": true, "isscript": false, "iswitness": false, "pubkey": "03b25e0118e027da32894733fc48f17d0a8e2ab76c40fe35d3f39c46dc2722f815", "iscompressed": true, "ischange": true, "timestamp": 1630645010, "hdkeypath": "m/1/1", "hdseedid": "0000000000000000000000000000000000000000", "hdmasterfingerprint": "7e3bc829", "labels": [ ] }
I also tried creating a "descriptor" wallet... Again, using the "create wallet" option in the GUI but ticked all the boxes (disabled private keys, make blank wallet, and descriptor wallet)... Then, imported the "external" descriptor: importdescriptors '[{"desc":"pkh(tpubDCcc5nEEx6ucT4ZsFbcfQoQniLzLKKMCDWBJmCyE3pxdJB1FSFodzQHyugTT9jVye9JSw4Z1fh5G9muHGbxuWCKJ2FYLfwguAxxMRUfn614/0/*)#x7l9hvyy","active":true,"range":[0,10],"timestamp":1630566000,"internal":false}]' and "internal" descriptor: importdescriptors '[{"desc":"pkh(tpubDCcc5nEEx6ucT4ZsFbcfQoQniLzLKKMCDWBJmCyE3pxdJB1FSFodzQHyugTT9jVye9JSw4Z1fh5G9muHGbxuWCKJ2FYLfwguAxxMRUfn614/1/*)#h26y2e5u","active":true,"range":[0,10],"timestamp":1630566000,"internal":true}]' After creating a PSBT that attempts to send out 0.01... and then decoding it, we again get: { "value": 0.08999776, "n": 1, "scriptPubKey": { "asm": "OP_DUP OP_HASH160 802ba023b0e137a9102142c7a7a8c3a663bcfa02 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a914802ba023b0e137a9102142c7a7a8c3a663bcfa0288ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ "msCf3mHLTXqrwyrnZVpzyZPkatzN5htrEb" ] } }
Same change address as before... Unfortunately, I don't have a coldcard to attempt to try and import the PSBT and see what the Coldcard says the address is... but, did you try decoding the PSBT with Bitcoin Core ( decodepsbt) and checking what the change address being generated is? If the decoded PSBT looks OK in Bitcoin Core... then it's likely a Coldcard issue.
SIDE NOTE: Interestingly... "ismine" is "false" when checking the change address for the "legacy" wallet... but is "true" for the "descriptor" wallet.
|
|
|
Yeah... 3 missing words is pretty trivial if the exact position of the missing words is known. If the positions are unknown, then it becomes exponentially more difficult... but OP says: I have written down on a piece of paper 12 recovery words for application, but I do not have the first 3 words
If OP knows at least one (low index) address that is generated by this seed, it should be relatively easy to find.
|
|
|
Do you even know what wallet software you were using? If not, then that is going to make things even more difficult than the needle in a needle stack that you're currently searching for
|
|
|
I actually don't think there's a limit cause I'm not sure it's based on the amount of BTC. Your transaction should be confirmed just like the average one, I think
The OP was talking about the data size of the transaction... not the BTC value of the transaction. In any case, the theoretical limit for BTC value would be capped by the total supply at any given point in time... although given how large the UTXO set is, any transaction that currently attempted to spend every UTXO would likely be well over the data size limit of a block.
|
|
|
Yeah, I could definitely see how words like that could cause confusion without the proper context
|
|
|
Aside from the theoretical "yes you can set it up like this" links... has anyone actually personally done this and managed to run a local Bitcoin Core instance that is leveraging the RPC ability of a remote Bitcoin Core "server"?
Electrum runs on proprietary servers, so no. I'm talking about those that are able to use Core as a data source, but I don't think that is what you need?
Bitcoin Core and many Electrum server implementation (such as ElectrumX, EPS and electrs) are open source. I think "custom servers" is probably a better description for what ranochigo was trying to say... in that they use their own custom RPC interface that is incompatible with the Bitcoin Core RPC.
|
|
|
Indeed... assumption is the mother of all fuck ups May I ask what lead to you assuming that Bitcoin Core would just use Tor by default? I'm curious to know if there is a learning opportunity here for everyone.
|
|
|
Ledger Nano S; are seed phrases actually randomly generated?
They appear to be... when I first got mine, I did a basic test by generating about 100 different seeds (yes, I reset it that many times). Granted, they could easily have a list of 1000000 seeds etc... but the fact that there are literally millions of customers and none of them have ever been another persons seeds means the company would need to ensure each device was somehow programmed to give unique sets of seeds. Could they rug pull everybody?
Theoretically... yes. Just like almost any other wallet you choose to use that you didn't compile yourself after having the code thoroughly vetted. I'm running Bitcoin Core on a Raspberry PI, would it be recommended/more secure to transfer coins to this wallet?
Debatable... A lot of it comes down to how you setup both the Ledger and Pi... and how you manage backups and day to day usage of them. The only losses from a Ledger that I am aware of, have involved people entering their seeds into phishing websites or compromised software clients. It's basically the equivalent of giving someone your wallet.dat and password. There are pros and cons to both setups... you'd need to figure out your specific use-case and then decide which solution matches that best. Can a Raspberry PI get compromised and hacked?
Yes.
|
|
|
No... that actually looked like everything was going great... but then it doesn't seem to spawn the armorydb process??!? If you open Task Manager... do you see an "armorydb.exe" process running? can you please post the contents of the dbLog.txt file as well (if it exists).
|
|
|
Reason I didn't download directly from ledger site is because people mention you need to make sure to verify the signature of the download and I didn't know how to do that... so I didn't download download any update since then. It's really easy to verify the download... Ledger have all the information here: https://www.ledger.com/ledger-live/lld-signaturesThe first page of this thread gives plenty of details on how to go about doing it. An attacker who can compromise the Ledger website and make it link to a malicious download could equally compromise whichever server Ledger Live connects to when you hit the "Update" button and make that point towards a piece of malicious software too.
With any piece of software, just downloading it from the "correct" source (while good practice) is never enough to ensure your safety. You should always verify it against the developer's keys or hashes.
And then Ledger say things like this: What about automatic updates
The update mechanism is secured once you've verified and installed Ledger Live. Ledger Live checks each upcoming update against Ledger's public key to verify that the update is legitimately from Ledger.
Seems they've set up Ledger Live to automatically authenticate any updates that it downloads... so, theoretically, once you've verified the installer once, you shouldn't need to do it again if you're using the in-app update mechanism... Would be interesting to see how robust this actually is.
|
|
|
I have just tried it and it didn't work. I do leave spaces between the seed words don't I?
Did it even create the same addresses as from Electrum? If so, are you sure that this BTC wallet even had coins in it at the time of the BCH fork? Did you put the BTC address into blockchair.com and see what it says? For instance, here is an old coinbase address from Block#200 that is still 'unspent': 1HwmP33SaknLYShXfjVU8KmVThU3JiuVgH If we put that into the search at blockchair.com we can see that it has BTC, BCH and BSV:
As a test, try and see if you can replicate this scenario with "known good" data. I just created a test BIP39 seed: margin mountain ripple maid situate weasel measure various network solution manual sustain I loaded it up in both Electrum 4.1.5 and Electron Cash 4.2.5... I used "BIP39 seed" option in when entering the seed on both. In Electrum, I chose "Legacy" - m/44'/0'/0'.... and in Electron Cash, also opted for the legacy m/44'/0'/0' option... They both generate the same addresses: NOTE: in Electron Cash, you have to click this icon in the bottom right corner to swap between cashaddr and Legacy address formats: See if you can create the 2 wallets in Electrum and Electron Cash and see if you also get the same addresses generated as the first 2 addresses in the address list: - 1ArEK4rsCkvUh2Q4ZVa6xXQLnBy4yQtwPy and - 1GEZkp7FWEURQm88Dyt2VSRSbnuuCYKov8 If that works, but you still can't get it working when using your blockchain.com 12 word seed, then I suspect the wallet you're trying to get the BCH out of, is NOT part of your Blockchain.com HD wallet... so it won't be generated by the 12 word seed. It might be an imported private key/address in blockchain.com wallet instead.
|
|
|
What do you see when you look at parted/gparted? Does it show the partition as taking up the full drive size or is there a bunch of "unallocated" disk space? When you originally created the partition... did you clone it from another drive or manually create it?
|
|
|
While it does read it that I'm using 151 GBs out of 1 TB, I don't understand if it resyncs or just re-indexes.
Have you tried connecting to the Pi using ssh/terminal and checking what the Bitcoin Core logs say? If you make sure you're in /home/umbrel/umbrel and then use: sudo docker-compose logs -f --tail=100 bitcoin
That'll show you the last 100 lines of the debug.log file and then continue to output new lines (ctrl+c to stop). That should hopefully give you some idea of what it is actually doing. Alternatively you should be able to check the network usage of the device to see if it is actually downloading blocks.
|
|
|
I don't think A.A. was wrong, but OP used ambiguous language.
I didn't watch the stream... so I've no idea what words were actually used... but I'd be kinda surprised if Andreas actually made that mistake tbh. Andreas also explains if someone where to find a part of Shamir's share and if that part is less than the quorum, it's like not having any information about the seed at all. That's the complete opposite of knowing 8 or 16 words as explained in the example in OP.
That's actually a very good point... by effectively encrypting the seed words, any share is rendered useless by itself (assuming you have more than 1 share! )... whereas, with just splitting up the seed words, the information is still "readable" and usable to mount an attack.
|
|
|
Given you only had 50Gigs of free disk space, I assume you were running Bitcoin Core in "pruned" mode. Unfortunately, Armory requires a fully synced, unpruned node to get online and work properly. So, even if you had downloaded all 300Gigs, you would still not have been able to get Armory online to recover the coins with your current setup. Do as hosseinimr93 said and export your private keys following my old guide. Given you've only received one transaction, you can easily find the correct private key by also ticking the "address string" box in the Armory export window and finding the private key that matches the address that you sent the coins to (likely the first one in the list).
|
|
|
|