Many ppl recommend creating a new (SegWit-Bech32) walltet and transfering all funds to the new wallet. But don't I need to pay fees for such transaction (given I want to slice my funds into smaller chunks )? Is there a better way ?
Slicing it in smaller " chunks" or UTXO/coins would only lead with higher fee in your next transactions if each of those coins aren't enough to pay your usual transactions. You should go for a small number of big value chunks to make sure that your transactions will only use one or two input( s) at a time. As for ( kinda) free transfer to a new SegWit wallet, do this in your next payment. Use 'Send' tab setting's ( upper-right icon) " Pay to many" option and fill the Pay to field in the format below. example: recipient_address,0.0001 your_OWN_SegWit_Address,! That way, all the remaining non-frozen coins ( amount = !) from the wallet will be sent to your SegWit address instead of that legacy wallet's change address. So you only paid for the payment's transaction fee and the transfer to your new wallet is basically free. Make sure to double-triple-check the address to make sure that it will be sent to your new SegWit Electrum wallet.
|
|
|
-snip-
I just do not understand how it runs without finding the password. Is it an issue of it not finding certain characters in the password? My password contains a single fullstop but is otherwise alphanumeric. Does that have any impact? I'm legitimately baffled here. I just used --listpass and it shows the correct password. I just don't know why it doesn't acknowledge it as being the right password for the wallet.
You can try your current setup with BRCRecover's test wallets from: ...\btcrecover\test\test-walletsParticularly, " blockchain-v4.0-wallet.aes.json" and/or other blockchain web wallet test wallets, the common password used in test wallets is: btcr-test-password You may also check other passwords in " test_passwords.py" script. If it somehow failed to find v4.0 Blockchain wallet's password despite being in the list ( --listpass), then there's something wrong with your setup. If it can find the password, then it may be your wallet or something else that you've missed. I have tried the v0.0 format but btcrecover finds errors. -snip-
Is the '.json' file only contains the payload ( including the "=" at the end of the string) without anything else? Because it should be accepted even if the wallet isn't actually v0.0, but it'll show false-negative result despite having a good token file.
|
|
|
Im curios how safe is currently the 12 mnemonic seed phase for example of of electrum 12 words against bruteforce?
is it possible to get a hit if someone would use all words and has some capabilities have any success or is it safe as of now?
From this context you want to check if Electrum's default wordlist^12 is safe? Electrum by default uses the same word list as BIP39 ( but not limited to that) so you have 2048 words and will be bruteforcing 12 words. 2048^12 is 5,444,517,870,735,015,415,413,993,718,908,291,383,296 So based from the number, I don't think that there's a good chance to hit another person' seed phrase by bruteforcing the words alone. I mean, it's not 1% low or even 0.000001% chance, it's 0.0000000000000000000000000000000000000002% chance. Don't even think that starting from the entropy is slightly faster either since Electrum's seed doesn't have a checksum unlike BIP39, all those 12 words are part of the entropy so you'll start with 132bits of entropy which is the same as the above. In terms of actual resistance against bruteforce, read this document: electrum.readthedocs.io/en/latest/seedphrase.html#security-implications
|
|
|
-snip-
Ok what I will do is post the wallet file here as copied from browser. This makes up my wallet.aes.json file. When I contacted 3rditeration on GitHub he tells me the format is wrong but doesn't tell me what is the right format. "payload": "{\"payload\":\"RcAFIu...4ngdwYpw4=\",\"pbkdf2_iterations\":5000,\"version\":4}" Hmm, if I use this format with my own and test payloads, 3rdIteration's BTCRecover detects that it's not in the correct format. It's reading the backslash in the quotation \" as part of the base64 string payload. Are you sure that it's pointing to correct wallet.aes.json file during those attempts? Because you should see an error with that wallet file. You can retry it with absolute path to the wallet.aes.json file to be sure. Then, try to create two separate wallet.aes.json files with your payload, then bruteforce those instead: - One containing just the base64 string payload (from RcAF... to ...Ypw4=) and take note of it as as "v0.0" format.
- And another in this format: {"pbkdf2_iterations":5000,"version":4,"payload":"RcAF......Ypw4="}.
(Do not put quotation marks outside: "{contents}" should be {contents})
|
|
|
Probably to start from the scratch is the best advice you have found so far as reindex-chainstate takes the painful time and doesn't guarantee that it will cope with the problem.
But the debug.log entry shows otherwise. It specifically written that a file in his chainstate folder is corrupted that should be fixed by rebuilding the chainstate as mentioned by achow101. Your previous case may not be related to chainstate corruption that's why the command didn't worked. And the time it takes to --reindex-chainstate may not be fast but not as slow as --reindex or IBD.
|
|
|
Question 1: If the user has the file Wallet.aes.json received from Blockchain.info/com in email or downloaded the file using https://../.../<ID>? format=json, Is it always possible to extract the privkey from these files? For example, using BTCrecover or other tools. Is this true for all Wallet.aes.json files starting from 2011, or is it still not true for all files? Depends on the tool, their official " my wallet backup decryption tool" can export privKeys in bare Base58 format so it has to be converted to WIF to be compatible with wallets. But AFAIK, it wont work in v0.0 old wallet.aes.json files, the GitHub repository of that tool is archived so issues like this may not be solved. As for other tool, I haven't tested all versions but their old v0.0 and v2.0 or newer wallets can be dumped using BTCRecover. However, it seem to be having problem decrypting the private keys if it has a second password even if it's provided in the command. With that, --dump-privkey will not output any private keys and --dump-wallet will output encrypted private keys if the wallet has second password. Question 2: Do you know of cases where, at the user’s request, Blockchain.com support would resend to the client of this service a backup archive copy of the Wallet.aes.json file (as of the date the wallet was created) to the same email address that was used when registering the wallet. Or have you not heard of such precedents? Never heard of any since it's pretty simple in the past with ( Gurnec's) old BTCRecover's wallet extraction script which for some reason, not working now. Maybe because people just used that or the url method instead of going through their customer support.
|
|
|
How do I do the reindex-chainstate files?
First, close Bitcoin Core. Find Bitcoin Core's installation folder, look for " Bitcoin-qt" if you're using the GUI, else in daemon folder. ( if you've used the installer, it defaults to "C:\Program Files\Bitcoin") While inside that folder, click Windows Explorer's " File" menu and select " Open Windows PowerShell" that will select the current folder as your working directory. The working directory should be displayed in PowerShell, e.g.: PS C:\Program Files\Bitcoin>In PowerShell, enter this to start Bitcoin-qt with the mentioned command line arg: ./bitcoin-qt --reindex-chainstate That'll start Bitcoin Core and tell it to rebuild the chainstate. Take note that it will take quite some time but it will not re-download blocks that you already have, unless your blockchain is " pruned".
If you decided to follow the instructions above, you MUST remove that entry in your bitcoin.conf after your node is done with it. Or else, it will reindex-chainstate every time you restart the client. Also, the default data directory is in the " Roaming" appdata directory instead of " local". So it should be in: C:\Users\<YOUR_USERNAME>\AppData\Roaming\Bitcoin ; Shortcut: %appdata%/bitcoinBut if you've set the datadir in F:/ with the GUI's " Welcome Screen", you should use/create the bitcoin.conf file there.
|
|
|
-snip- I would love to get btcrecover to register the right password on the second wallet so I know it works and can be confident in running the searches on the first wallet.
This would require you to post the info that you've fed to BTCRecover, not the actual characters but similar setup so we can tell if there's something wrong with the setup. As for BTCRecover's integrity on bruteforcing Blockchain Wallet's Password: Their test wallets, " blockchain-v0.0-wallet.aes.json" and " blockchain-v2.0-wallet.aes.json" both work with the password: " btcr-test-password"; Their test wallets are in this folder: github.com/3rdIteration/btcrecover/tree/master/btcrecover/test/test-walletsI've used this easy tokenlist for this test: With this command: btcrecover.py --wallet blockchain-v0.0-wallet.aes.json --token blockchain-wallet.token.txt My not-old-version wallet.aes.json wallet works as well.
|
|
|
I am about to do an IBD and i have assumevalid=(Latest block). -snip-
assumevalid is activated by default with blockhash of a quite recent block so I don't think setting it up to the tip is even necessary. In v26.0, it's block height: 804000 ( Aug 2023) In v27.0, it's block height: 824000 ( Jan 2024) If you're using v26.0, you can set it like v.27.0. But if you really must, leave a week or two weeks worth of script validations, that wont hurt your CPU for long. i understand some of the risks involved with this, regarding being feed a false history etc
Your node wont have a risk of accepting false history if you ensure that you're connected to a number of peers and not limit it with 1 or a few that could all be rogue nodes. ( hardly even happens with 10)
|
|
|
The article is pointing to the " command line" which is a little different than the GUI's console. If you want, you can try it in the command line as described or if you're in Windows, run electrum from source via Python v3.8 and above. Note: the latest source needs " paymentrequest_pb2.py" and " libsecp256k1-0.dll" to work which should be built using the provided scripts in 'contrib' folder. Or if you have no choice, get those pre-build from an older version of the code. Example. When I use the code, I went to i and I saw "ismine". This makes it not understandable as I was expecting ismine("your bitcoin address"). Also that is how other ones are. Is there not a way that I can get it like in my example like ismine("your bitcoin address")?
In the command line ( not console), the command should be: help <command>Example.: ./run_electrum help ismine It'll show you info about the command and required positional arguments, but no example. Result: Check if address is in wallet. Return true if and only address is in wallet
positional arguments: address Bitcoin address Alternatively, you can check the available commands and the args in this code: github.com/spesmilo/electrum/blob/master/electrum/commands.py#L168
|
|
|
Do you need sats to send a bitcoin signed message?
I see where the argument is coming from. You're talking about signed message and the other party is considering the topic which is involving Bitcoin. The context of the OP is more of comparing Social media to the Bitcoin than signing a message. It is not made clear that you're talking about signed message and a signed message isn't related to the network at all since it's just a wallet feature and not part of the protocol. Simply signing a message of course wont require bitcoins but it wont be relayed to the network. It's just an unsent message, and if you use other method to " post" it, then it's not Bitcoin that functioned like a social media. If you want to classify your message as a " social media" post/message, you have to consider using Bitcoin to transmit the message to other peer(s). So you'll have to send it with a transaction that requires bitcoins as fee. Or is the only requirement that both parties involved are using the same version of the same software? A full Bitcoin node isn't limited to the " reference client" Bitcoin Core software, there are other node implementations out there that aren't too famous. ( e.g. Bitcoin Knots) It's the protocol or " Consensus Rules" that is required to be followed by a node for it to be part of the Bitcoin Network.
|
|
|
Should I expect it to say "Registered input" like on 1.7.x rather than "Register input"? -snip- (Edited) I just looked now at Sparrow again and I have had some remixes since I made this post. So it seems that this is normal.
I can confirm this as I happen to have an existing postmix UTXO in TestNet and that specific UTXO displays it differently in old and new versions. Here's some screenshots for comparison: ![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fwww.talkimg.com%2Fimages%2F2024%2F04%2F17%2FjfFfC.png&t=665&c=RFUbDjdT7vku5Q) Old Version (output ...56d...:2)
- Close wallet, then open in version 1.8.5:
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fwww.talkimg.com%2Fimages%2F2024%2F04%2F17%2FjfzQJ.png&t=665&c=BUjde_4w0zbTgg) Latest Version (same output ...56d...:2)
|
|
|
EDIT: I DID IT! -snip- So, now that I am in, I can't figure out how to access my new pass phrase so I can write it down and back it up. Can it not be done from the website interface?
The backup phrase is in the User Menu icon ( upper-right, "person" icon), then go to " Security". Find 'Secret Private Key Recovery Phrase' and click " Backup", or if it was backed-up before, click " Backup Again". EDIT 2: OK, I've successfully transferred all of the BTC from blockchain.com into a new Electrum wallet with a new passphrase. :) :) :)
A fine choice, that's better than keeping it in a web wallet. Just make sure to apply all necessary safety precautions and your funds should be safe in Electrum. Take note that Electrum's Seed phrase isn't BIP39 compatible so it can't be imported to other wallets that don't support Electrum seed. ( you meant "seed phrase" not "passphrase" right?)
|
|
|
but that also comes with the issue of trusting the miner whether they wouldn't take the puzzle reward themselves or not Well, it is also possible to share some data, which is needed to mine a block (like transaction ID, transaction Segwit ID, etc.), without sharing transaction data. Then, it would be sufficient to mine a block, but the pool wouldn't know, if it is valid or not. Fair enough, the miner can start to " mine" the block header without the actual transaction. In the event that they produced a hash lower than the target, they wouldn't be able to broadcast the block without the actual raw transaction. ( or would they? Please CMIIAW) And in mining, every millisecond counts so if the transmission of raw transaction isn't coordinated well and quick, other pools/solo miners could broadcast a block in their place. This would need a specialized software in both miner's and user's side to be automated for low latency. And also, if you want to prove, that you know the public key, but you don't want to reveal it, then you can share for example SHA-256 of that key, and then everyone can validate, that RIPEMD-160 of it is equal to the address, used in the puzzle.
Good idea, but I'd like to know how can this be applied exactly to existing P2PKH outputs like what OP is pertaining to? If not possible, the creator of the puzzle may have to consider spending those weak ranges into your proposed output.
|
|
|
-snip- this is my first time of seeing anything like it, and I'll like to learn about it. I'll be very grateful if you can share a link on how to learn and understand these technical calculations, thanks.
Sure thing. About the " checksum" specifically, read this article: learnmeabitcoin.com/technical/keys/checksum/For other technical guides, click that site's technical link on the left side and you'll see a comprehensive list of inner workings of Bitcoin. But if there's something that is too much for your current knowledge, you can always cross-refer it to the Beginners counterpart of the topic, use search or the links on the left side.
|
|
|
For everyone else: There's no need for a signed message or transaction ID since it's a made up scenario of scammer who doesn't know how Bitcoin address works. He wanted to pass that he " accidentally" typed the wrong last character thinking that it wont invalidate the address. The alleged address that received the 4.37BTC doesn't have the correct checksum, thus any well-written wallet wont be able to send to it. You can try it in any wallet that you use. Some technical explanations: - Address 1L1UduuGPZ8ttGe59F2w9tTEumQFhtxiuT, base58 decoded, separated the last 4Bytes checksum: 00d08175a8f7d52324279706dae9d132e17a1bfce8 8c7b316e
- The first 4-Bytes of the SHA256x2 hash of the above's left part should be equal to the right part (checksum): 8c7b316e.
- So let's get: SHA256[SHA256(00d08175a8f7d52324279706dae9d132e17a1bfce8)]: 8c7b316c28e25f67a1b027243d1b9558c15a7efb10e8e283c2ce9e12f89f794a
- The first 4-Bytes of the above are: 8c7b316c which isn't equal to 8c7b316e.
- With that, the address is invalid.
On a slim chance that the exchange/wallet is miswritten to accept such address: Since it's only the checksum part that's wrong, the output should still be sent to the address with the correct checksum, thus, to his own address ending with " R". That's because Bitcoin P2PKH outputs aren't actually addresses but " scriptPubkey" or " locking script" which is in the first part of the decoded data above. It's a different scenario if he edited one character that's not part of the checksum instead since it would be sent to another address. ( only if a buggy wallet allows it) There's a 1 out of 32bit chance ( 4-Bytes) that it will be valid to any wallets, that's 1 out of 4,294,967,296 ( 2^32).
|
|
|
-snip-
OP is talking about " puzzle transaction" outputs with 66 and 67 bit range private key which can be easily computed from the public key. ( check the puzzle's mid ranges with revealed public keys, divisible by 5) The main concern is; the public key will be made public the second he broadcast a transaction that spends that output. Thus, every users that set-up a bot to compute the private key can immediately send a replacement transaction. -snip-
Unfortunately, the idea of using other scripts wont work in existing puzzles, that specific puzzle's outputs ( check "details") are simple P2PKH scripts. The ( new) puzzle has to be specifically made using it. I bet you already think of disabling rbf flag? However, even without opt-in-rbf flag, nodes with mempoolrbf option ( full-rbf) will still accept a replacement to your transaction. And there are miners that also support full-rbf. The only safe way to do this is to ask a solo miner or pool to include the transaction without relaying it to the network, but that also comes with the issue of trusting the miner whether they wouldn't take the puzzle reward themselves or not.
|
|
|
In Bitcoin Core, there's no known mining related RPC or command line option that can set a dedicated address of any ASICs. The general setup is you have to do it in each miners's configurations, and you only have to do this once in most ASICs. But you haven't explained your setup even a bit so there's no telling on what it's capable of. Like: which miners ( old/new ASICs model), solo mining or pool mining? Etc. Also, this thread may be moved to the appropriate mining board ( link). Or you can do it yourself using the " move topic" button on the lower-left side of the screen.
|
|
|
Could be that you have a 2fa wallet and 2fa fees account for the difference you see there
I originally though of that but dropped the assumption because the difference didn't reached the minimum 2fa fee of " per 20 prepaid transactions" which is 0.0005BTC. Then it also deducts the fee which should make it way lower than the resulted amount.
|
|
|
I downloaded the desktop version of the wallet and logged in (read-only version) and this appeared, no opening transaction or lightning channel and apparently the btc are in the wallet, I don’t understand anything anymore, because in the app it is still the same way as the previous screenshots. ![](https://ip.bitcointalk.org/?u=https%3A%2F%2Ftalkimg.com%2Fimages%2F2024%2F04%2F14%2FjTM4P.png&t=665&c=ZKLre-3jGCb4YA) You mentioned that you set a very low fee in the open channel transaction, right? I'm thinking that the server where your wallet has connected to, already dropped it from its mempool for being at the bottom of its mempool size, so your newly restored wallet didn't see it. There are bad and good news to this: - Bad News: (more of "troublesome") The transaction will still show up once it's rebroadcasted to that server's mempool; because its peers may still keep it and some nodes still have it.
- Good News: Since it's not showing now, you have the opportunity to spend your coins (that transaction's inputs) to a new transaction.
So that once that new transaction confirms, the open channel transaction will be invalidated. The steps are quite simple ( to prevent the 'bad news'): - Restore your wallet not as watch-only, and check if the transaction didn't show up as well.
- Use "coin control" (instructions) to select any input of your open channel transaction.
Or just select all which could be more expensive if there are more than one inputs. - Then go to 'Send' tab and send any amount to your own address or pay someone, both will get the selected coins to be spent in that new transaction.
But you have to make sure that the fee is good this time to be mined while the majority of mempools doesn't have the open channel transaction since it is opt-in-rbf 'false' flagged, nodes with the 'open channel' transaction that doesn't support full-rbf will reject the new transaction.
You can also skip the first step to restore and use the watch-only wallet instead. But you must export the transaction as text ( Share->Copy to Clipboard), send that to your Android and copy the text. And in the Android Electrum; import ( Send->Paste) then sign and broadcast that with your original wallet. Alternatively: Open the original Android Electrum and select the same server as the watch-only wallet so that it will change the status of your " unconfirmed" open channel transaction into " local". Once it's Local or if its already Local ( I see it in your previous screenshot), click on it and use " remove" to delete the local transaction. Then, create a new transaction.
|
|
|
|