Electrum bad header
-
I’ve been trying to get Electrum wallet working. I saw the post about the upgrade and I’m using client 3.3.8.0 now with the same issue. On my ElectrumX server, I’ve deleted the database and had it reindex from the Core, and weather I use my server or electrumx-1.neoscript.de/50002 it gets stuck on the same block. I’ve removed everything except wallet at
~/.local/share/electrum-ftc/
with no luck. The error that I’m getting is:Exception: unexpected bad header during binary: {'version': 536870912, 'prev_block_hash': '42dcee0afe0fcc0ebaa0e7f800ec0d0d55ae6a26625e547b222213e93eeb0c4f', 'merkle_root': '3d286adf34b21d14e3b26f6ba335cb1931b3f237ab838b08b74206e312efb2da', 'timestamp': 1523789388, 'bits': 469852709, 'nonce': 338705409, 'block_height': 2165184} E/i | interface.[electrumx-1.neoscrypt.de:50002] | Exception in wrapper_func: Exception("unexpected bad header during binary: {'version': 536870912, 'prev_block_hash': '42dcee0afe0fcc0ebaa0e7f800ec0d0d55ae6a26625e547b222213e93eeb0c4f', 'merkle_root': '3d286adf34b21d14e3b26f6ba335cb1931b3f237ab838b08b74206e312efb2da', 'timestamp': 1523789388, 'bits': 469852709, 'nonce': 338705409, 'block_height': 2165184}")
It would be nice to get ElectrumX up and running again, but at this point I’m almost to the point to import my key back into Core. What ElectrumX server should I be running and where would I get it?
Thank you!
-
@rldleblanc hi and welcome to the forum.
Can you try to connect electumx-2.feathercoin.com and check, if you get the same error?
Also, which software version are you using on your electrum server?
-
electumx-2.feathercoin.com/50002 does not appear to want to connect for me. The name won’t resolve.
; <<>> DiG 9.16.22-Debian <<>> electumx-2.feathercoin.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 34225 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;electumx-2.feathercoin.com. IN A ;; AUTHORITY SECTION: feathercoin.com. 7 IN SOA ian.ns.cloudflare.com. dns.cloudflare.com. 2038111533 10000 2400 604800 3600 ;; Query time: 32 msec ;; SERVER: 10.65.4.26#53(10.65.4.26) ;; WHEN: Tue Jan 18 07:22:44 MST 2022 ;; MSG SIZE rcvd: 113
My electrum server is still on 1.15.0 (altcoin branch) from Neil Booth, I haven’t moved over to the fork yet.
-
Ok, I think I know what your problem is.
The actual server version is 1.14.1, 1.9.x is also fine.
I made a typomwith the server name.
Here is the list of active server again:
Serving electrumx wallets version 3.2.x and newer:
- electrumx-2.feathercoin.com (had an r missing)
- electrumx-1.neoscrypt.de
Servimg electrumx wallets version 3.3.8 and newer
You also should update your wallet to 3.3.8.
You can get it from:
https://github.com/Feathercoin-Foundation/electrum-ftc
Select the branch ‘current-release’ which should be on 3.3.8
The repository is not maintained anymore, as the foundation doesn’t exist anymore.If you want to test the wallet version 4.1.5 you can get it from
https://github.com/wellenreiter01/electrum-ftc/releases/tag/4.1.5-alpha
The README file is not updated, but I hope you will get it installed on your system.I got it working with pip install as well as with the pipenv method to install and run it
-
Are you saying that my server version should work? Is that the same version that you are using?
I’m already running 3.3.8 wallet.
Out of the list of servers that you specified, they all resolve in DNS, but I can only connect to electrumx-1.neoscrypt.de and I still get the block error from the first post. Unless the other servers are running on a port other than 50002, I can’t connect to them.
electrumx-2.feathercoin.com does not ping, however all four servers are reporting 50002 open by nmap, so I’m not sure why my wallet won’t connect to them.
-
If you can connect to one of the 4 server I mentioned, the communication between server and wallet is ok.
I have exactly the opposite problem and can connect to all servers, but electrumx-1.neoscrypt.de. This seems to be another problem and nor related to your actual problem.
As long as you can connect to one server it should be ok.
electrumx-1.neoscrypt.de is running server version 1.9.5, cloned from https://github.com/spesmilo/electrumx.git
with wallet version 3.3.8.0
The latest server version 1.16.0 should be ok, tooThe block your wallet is complaining about is block #2165184 which was generated Apr 15, 2018 12:49:48 PM according to block explorer
Is that around the time you used your electrum wallet the last time with success?
I had a message similar to the one you mentioned in your first post, but for block #1, when I started to adapt the 0.4.x version for Feathercoin.
If I remember right, I modified the checkpoints.json, but I’m not sure.So to locate the cause of the problem, I suggest to export your seed and just to be sure your private keys, clean the local block storage by moving or deleting the file ‘blockchain_headers’ in your config directory (~/.electrum on linux systems) and start the electrum wallet.
The wallet will then re-sync with the server from scratch.
I see three possibilities:
- the wallet works fine -> problem solved
- the wallet sticks at block #1 or #2 -> a problem I need to reproduce
- the wallet sticks at block #2165184 -> probably a problem with your wallet .
I suggest to reinstall or try the alpha version of 4.1.5 . I suggest to use the links I mentioned to download or clone the wallet software.
By the way, what is the source you got your 3.3.8 wallet from?
-
I got my wallet from:
$ git remote -v origin https://github.com/Feathercoin-Foundation/electrum-ftc.git (fetch) origin https://github.com/Feathercoin-Foundation/electrum-ftc.git (push)
I’ve cleared out everything in
~/.local/cache/electrum-ftc/
except forconfig
,recent_servers
(to keep the “good” servers), andwallets
many times and it keeps getting stuck on that same block. I’ve tried creating new wallets (Segwit and non-segwit) without any improvement. I’m just so confused by this. Part of me really doesn’t want to give up on it because I really like Electrum. I guess I can try the 4.1.5 version of the wallet, probably won’t be able to get to it until the weekend. -
I’d like you to try out 4.1.5 or 3.3.8 from my repository.
As mentioned I had the same problem and somehow fixed it.The last thing I remember was, that I replaced the checkpoints.json and created one containing one block only,
but that was more due to the fact, that the checkpoints.json from the upstream repository containted BTC checkpoints.my current checkpoints.json looks like this:
[ ["4c492ece482967a3a76d825e1f440f51d255f0dd84af15544fef09b72691d57d",2016], ]
-
Okay, some progress here. I tried cloning your repo and using the 3.3.8.0 from it with the same results. I tried using the
current_release
branch for the 4.1.5 and I could not init the submodules.rleblanc@2927-laptop:~/coins/electrum-ftc-wellenreiter$ git submodule update --init fatal: No url found for submodule path 'contrib/NeoScrypt' in .gitmodules rleblanc@2927-laptop:~/coins/electrum-ftc-wellenreiter$ cat .gitmodules [submodule "contrib/deterministic-build/electrum-locale"] path = contrib/deterministic-build/electrum-locale url = https://github.com/spesmilo/electrum-locale [submodule "electrum/www"] path = electrum/www url = https://github.com/spesmilo/electrum-http.git [submodule "electrum/gui/kivy/theming/atlas"] path = electrum/gui/kivy/theming/atlas url = https://github.com/spesmilo/electrum-kivy-atlas
So, I downloaded the release tarball that you linked and got those dependencies installed. When I first ran it it was connecting to bitcoin but it allowed me to connect to my FTC electrumX server just fine and
electrumx-1.neoscrypt.de
, so I changed out the checkpoints.json in the code directory like you mentioned and it seems to get stuck on downloading the blockchain headers.I/i | interface.[electrum.dcn.io:50002] | requesting block header 0 in mode backward D/i | interface.[electrum.dcn.io:50002] | <-- ('blockchain.block.header', [0]) {} (id: 343) D/i | interface.[electrum.dcn.io:50002] | --> 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c (id: 343) I/i | interface.[electrum.dcn.io:50002] | requesting block header 0 in mode backward D/i | interface.[electrum.dcn.io:50002] | <-- ('blockchain.block.header', [0]) {} (id: 344) D/i | interface.[electrum.dcn.io:50002] | --> 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c (id: 344) I/i | interface.[electrum.dcn.io:50002] | requesting block header 0 in mode backward D/i | interface.[electrum.dcn.io:50002] | <-- ('blockchain.block.header', [0]) {} (id: 345)
So, I found a program that will build a checkpoint.json based on the full node (https://github.com/romanornr/checkpoints-electrum) and pointed it to my FTC Core and it built a file. When I use that, it then can sync to block 4015871 (currently electrumX is showing a height of 4016486) and there is a new error in the client.
... fb20b8841b5485976a0bde0f65a5b3b325fce8b031c9e361f9700000020eeb59702f0a8bfaeef67a28428b0c95feed4d3d7509568afabdb542d07d2f46b63624d823e62e0fe3b57bc2a7bc5f56a42ffb2fdf26a888de45c2139aa805a170a3c325fce8b031caeea1c7f0000002096a9dee28b85986f5df4b64b272dffd652892f836e292f0916eb455d970482c15e1eccd5951d84149b030211347270cb01f9c81e95961d561cce5aac3577a2cb123c325fef9a031cbaab02500000002071279827f87ccfa75f60e72691aed3baf25c5f208f3cfbbf0290f2f62947e8180b3ae0a81b7f51ae1bfa70cba491090335435f1c055b2483e1b3a18805fd170f4a3c325f50aa031cbacd726c00000020cce4b4d271fcd727813af55f238d3cd6a0a8f5bd6a53cd25390aae85487b20a1cdd300d9944f7b5a7a5f89843b3a1ffac880783d18c68059199f083b919f38855a3c325ff3b9031c2069748c', 'count': 2016, 'max': 2016} (id: 476) I | blockchain.Blockchain | verify_chunk idx 1629 failed: ValueError('too many values to unpack (expected 2)') D/i | interface.[electrumx-1.neoscrypt.de:50002] | --> 00000020132f9ee4dc2aac0e87d6db64743fd08930218b87a987ffd157bd0cae69cc0c85b8fb4decdd29378999c637415cc3fc80cf33526cbfb55e42bb7ec9ddd5390078d8f0eb614ad6111c2d46cab9 (id: 477) I/i | interface.[electrumx-1.neoscrypt.de:50002] | requesting block header 4015871 in mode backward D/i | interface.[electrumx-1.neoscrypt.de:50002] | <-- ('blockchain.block.header', [4015871]) {} (id: 478) I/i | interface.[electrumx-1.neoscrypt.de:50002] | requesting chunk from height 3284862 D/i | interface.[electrumx-1.neoscrypt.de:50002] | <-- ('blockchain.block.headers', [3284064, 2016]) {} (id: 479) D/i | interface.[electrumx-1.neoscrypt.de:50002] | --> 00000020132f9ee4dc2aac0e87d6db64743fd08930218b87a987ffd157bd0cae69cc0c85b8fb4decdd29378999c637415cc3fc80cf33526cbfb55e42bb7ec9ddd5390078d8f0eb614ad6111c2d46cab9 (id: 478) I/i | interface.[electrumx-1.neoscrypt.de:50002] | requesting block header 4015871 in mode backward D/i | interface.[electrumx-1.neoscrypt.de:50002] | <-- ('blockchain.block.header', [4015871]) {} (id: 480) ^CD/i | interface.[electrumx-1.neoscrypt.de:50002] | --> {'hex': '00000020ea348610ecee080a85ba2829103170ff8da42bc74f874deb3cec6d9dd0a4b7b49fe3489eff2556b74ea984dac84709bf7efdfa3cacc945c56f1047f2508a923e2e51305f405c031c4650c7690000002081bffd0d46d7727acf665f1ca080d0986ca14c53817e7c80db0ea8a9505ebe93168ac33ae384e7967c8266ae70b18dd96cab7e431241d011aa098ae39bea4c683151305fec78031cc521cab900000020390ee933254dc15196862851c0a71651c596f202f4c01760b1a590db8e8943f9ed71242c9df31dff628e93b1678139a1ddc874a5f92658ec5176f6eeb4110f8d1752305f8d96031c787de450000000209b316cfbaaf22632677faffc9392fa44adda9eb7c400bcda5ba0a0499e0fb6f996eee4479731de07e3bf7846c952a2b8f05e78767c55e84fb80fea99939d61004352305f7ac4031c4953ca410000002087045e6ba4ab4c318ec03f779479f485e3a200a31164ab550519e75093ac32a0cfb890ff39efedc1f7c433f5a661b2642383b0f608b0b6a9c276548f212a59d86052305fb3f4031cf137c7b100000020adaa6e6a48fb8e4b19a532e0e68e648bb6a0917dc8cde87cbae4cda07e74a8fb7bcc4674e8a2fe717e ...
The transaction that I have in my wallet shows
Not verified
even though it was included in block 3284862. You can see the electrum wallet asking for this block in the messages above.On another note, it was putting all the cache and things in
~/.electrum/
instead of~/.electrum-ftc
like versions past, but I suspect that you are still updating things. I hope this helps some. -
Oh I also determined why I could only connect to my server and the
electrumx-1.neoscrypt.de
server and that’s because they are the only ones with a valid SSL cert (issued from a trusted CA). Mine comes from LetsEncrypt. I could not connect on non-SSL ports to any server as it always wanted to use SSL. I’m not sure why it’s trying to force SSL or how to turn it off to check the other servers. If you want to check your wallet against my server, it’selectrum-ftc.leblancnet.us:50024
. -
I added those 4 servers to my electrumx peer list, so it should broadcast my server to them now as well.
-
First of all many thanks for your feedback.
You are right, I need to clean up a couple of things in the repository. The submodule init is a left over from the first tests and in the neantime there is a python neoscrypt module available, that can be installed with pip.
I also missed the fact, that I need to adapt the cache and config locattion, when forking directly from spesmilo repository. It’s on my todo list now.I also have access to some of the server not working for you. I will check and probably update the ssl certificates there.
Please keep your wallet open for at least 12 hours and check if your transaktion will get verified. This can take some time.
Please keep me updated here.Last but not least, my focus is on the 4.x version, as the 3.3.8 version is about 2 years old, maybe older and a bit outdated already.