Author

Topic: Reusing Bitcoin Core Blockchain with Bitcoin Cash wallet (Read 1057 times)

full member
Activity: 238
Merit: 100
@ranochigo: Thanks. This information is very useful.

Can I copy over the entire Bitcoin data directory from Bitcoin Core to Bitcoin ABC wallet and not just specific files from it? There are a lot of dat files inside the data directory and I'm assuming that they should be valid for Bitcoin ABC wallet as well?

Make sure that you dont mess with any of the files as you may corrupt the entire blockchain. Funny how BCH blockchain can now get 8X more larger that BTC blockchain moving forward.
full member
Activity: 198
Merit: 100
I installed Bitcoin Core and pointed it to that Data Directory. It successfully opened and started synchronizing.

So, I went to debug console and typed in the invalidateblock command you mentioned before.

However, in the debug console I don't see any output or response to this command.

And the Bitcoin Core UI still shows it attempting to perform the synchronization. Did the invalidateblock command work?
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
Here are the debug logs corresponding to the session which gives the error:

-snip-
Hmm, could you point Bitcoin Core at that directory? If it doesn't corrupt, it is likely an issue with the compatibility and you can just invalidateblocks using Bitcoin Core.

If it does corrupt, try to copy it out again and try again.
full member
Activity: 198
Merit: 100
Here are the debug logs corresponding to the session which gives the error:

Code:
2017-08-28 12:31:52 Bitcoin version v0.14.6.0-a46e63c
2017-08-28 12:31:52 InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1
2017-08-28 12:31:52 GUI: libpng warning: iCCP: known incorrect sRGB profile
2017-08-28 12:31:52 GUI: libpng warning: iCCP: known incorrect sRGB profile
2017-08-28 12:31:52 Assuming ancestors of block 000000000000000000ff3a41f208c932d5f91fe8d0739fca36152f6073b2ef5e have valid signatures.
2017-08-28 12:31:52 GUI: "registerShutdownBlockReason: Successfully registered: Bitcoin ABC didn't yet exit safely..."
2017-08-28 12:31:53 Default data directory C:\Users\redacted\AppData\Roaming\Bitcoin
2017-08-28 12:31:53 Using data directory E:\Bitcoin
2017-08-28 12:31:53 Using config file E:\Bitcoin\bitcoin.conf
2017-08-28 12:31:53 Using at most 125 automatic connections (2048 file descriptors available)
2017-08-28 12:31:53 Using 32 MiB out of 32 requested for signature cache, able to store 1048576 elements
2017-08-28 12:31:53 Using 2 threads for script verification
2017-08-28 12:31:53 Using BerkeleyDB version Berkeley DB 4.8.30: (April  9, 2010)
2017-08-28 12:31:53 scheduler thread start
2017-08-28 12:31:53 Using wallet wallet.dat
2017-08-28 12:31:53 init message: Verifying wallet...
2017-08-28 12:31:53 CDBEnv::Open: LogDir=E:\Bitcoin\database ErrorFile=E:\Bitcoin\db.log
2017-08-28 12:31:53 Bound to [::]:8333
2017-08-28 12:31:53 Bound to 0.0.0.0:8333
2017-08-28 12:31:53 Cache configuration:
2017-08-28 12:31:53 * Using 2.0MiB for block index database
2017-08-28 12:31:53 * Using 8.0MiB for chain state database
2017-08-28 12:31:53 * Using 440.0MiB for in-memory UTXO set (plus up to 286.1MiB of unused mempool space)
2017-08-28 12:31:53 init message: Loading block index...
2017-08-28 12:31:53 Opening LevelDB in E:\Bitcoin\blocks\index
2017-08-28 12:31:53 Opened LevelDB successfully
2017-08-28 12:31:53 Using obfuscation key for E:\Bitcoin\blocks\index: 0000000000000000
2017-08-28 12:31:53 Opening LevelDB in E:\Bitcoin\chainstate
2017-08-28 12:31:54 Opened LevelDB successfully
2017-08-28 12:31:54 Using obfuscation key for E:\Bitcoin\chainstate: 0000000000000000
2017-08-28 12:32:05 LoadBlockIndexDB: last block file = 976
2017-08-28 12:32:05 LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=121, size=116663643, heights=481526...481890, time=2017-08-21...2017-08-24)
2017-08-28 12:32:05 Checking all blk files are present...
2017-08-28 12:32:06 LoadBlockIndexDB: transaction index disabled
2017-08-28 12:32:06 LoadBlockIndexDB: hashBestChain=000000000000000000752f7cdc3a89e9303c3f810bffe4ce9f73dfae8e0a9301 height=481890 date=2017-08-24 17:19:41 progress=0.995801
2017-08-28 12:32:06 init message: Rewinding blocks...
2017-08-28 12:32:07 init message: Verifying blocks...
2017-08-28 12:32:07 Verifying last 6 blocks at level 3
2017-08-28 12:32:07 [0%]...ERROR: ReadBlockFromDisk: Deserialize or I/O error - ReadCompactSize(): size too large at CBlockDiskPos(nFile=976, nPos=115860659)
2017-08-28 12:32:07 ERROR: VerifyDB(): *** ReadBlockFromDisk failed at 481890, hash=000000000000000000752f7cdc3a89e9303c3f810bffe4ce9f73dfae8e0a9301
2017-08-28 12:32:18 Aborted block database rebuild. Exiting.
2017-08-28 12:32:18 scheduler thread interrupt
2017-08-28 12:32:18 Shutdown: In progress...
2017-08-28 12:32:18 Shutdown: done
2017-08-28 12:33:43

Looks like it consistently fails at block 481890 with hash 000000000000000000752f7cdc3a89e9303c3f810bffe4ce9f73dfae8e0a9301.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
I tried this method however I get an error from the Bitcoin ABC client when I attempt to start it.

Error Dialog box states:

"Corrupted Block database detected.

Do you want to rebuild the block database now?"

And there are two options: "OK" and "Abort".

If I select Abort, it exits the application and I don't get the opportunity to enter the invalidateblock command in debug console.
Weird. Are you pointing it to the correct data directory? Can you post the debug log?
full member
Activity: 198
Merit: 100
I tried this method however I get an error from the Bitcoin ABC client when I attempt to start it.

Error Dialog box states:

"Corrupted Block database detected.

Do you want to rebuild the block database now?"

And there are two options: "OK" and "Abort".

If I select Abort, it exits the application and I don't get the opportunity to enter the invalidateblock command in debug console.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
Should I enter the invalidateblock command in debug console after I've already pointed Bitcoin ABC to new data directory?
Yup.
Wouldn't Bitcoin ABC client just start syncing as soon as the client starts? Or maybe the invalidateblock command will make the client parse the block chain again?
No. The way Bitcoin full nodes work is that they will always follow the longest valid proof of work chain. IIRC, Bitcoin currently has the longest proof of work chain and due to that, the clients will not synchronize with your peers. Once you invalidate that block, you are "deleting" all the blocks till the point of fork. The Bitcoin Cash blockchain will now be able to be synchronized with your peers.
full member
Activity: 198
Merit: 100
No I didn't prune it. I don't even know what means Cheesy

So, I'm copying over the complete Data Directory from Bitcoin Core to Bitcoin ABC wallet as I'm writing this post.

Should I enter the invalidateblock command in debug console after I've already pointed Bitcoin ABC to new data directory? Wouldn't Bitcoin ABC client just start syncing as soon as the client starts? Or maybe the invalidateblock command will make the client parse the block chain again?
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
@ranochigo: Thanks. This information is very useful.

Can I copy over the entire Bitcoin data directory from Bitcoin Core to Bitcoin ABC wallet and not just specific files from it? There are a lot of dat files inside the data directory and I'm assuming that they should be valid for Bitcoin ABC wallet as well?
Yes. If you remove any of the files, the blockchain will be corrupted and you will have to download it again. Just asking, did you prune it?
full member
Activity: 198
Merit: 100
@ranochigo: Thanks. This information is very useful.

Can I copy over the entire Bitcoin data directory from Bitcoin Core to Bitcoin ABC wallet and not just specific files from it? There are a lot of dat files inside the data directory and I'm assuming that they should be valid for Bitcoin ABC wallet as well?
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
Is there any way I can re-use the Bitcoin Core blockchain with Bitcoin ABC wallet so that Bitcoin ABC wallet recognizes the incompatible blocks, discards them and then starts synchronizing again from August 1st? It would save me a lot of time.
Yes. Copy the Blockchain for Bitcoin over to another directory. Point Bitcoin ABC to that new directory using -datadir=[DIRECTORY] when starting up.

Next, go to Help>Debug Window>Console.

Type in this:
Code:
invalidateblock 00000000000000000019f112ec0a9982926f1258cdcc558dd7c3b7e5dc7fa148
. This will make your client discard the Bitcoin block immediately after the point of fork. If you have Bitcoin Cash peers connected to you, your client will get the Bitcoin Cash blocks from them.
full member
Activity: 198
Merit: 100
Hi All,

I need some help. I am trying to import my wallet from Bitcoin Core to Bitcoin ABC wallet to get my BCC. I have already moved my Bitcoins from the original wallet of Bitcoin Core to a new instance of wallet in Bitcoin Core. Now, I need to import my original wallet into Bitcoin ABC wallet to get my BCC.

Now, the issue is that Bitcoin ABC wallet is taking very long to synchronize the blockchain. It's been almost 1 week since it's running and till now only blocks till May 2016 have been synced. I still need to wait around 2 to 3 weeks more for the sychronization process to complete.

So, I need an alternative solution now. I already have the completely synced blockchain for Bitcoin Core. I know that both the blockchains are not entirely same. The pre hard fork blockchain history is the same (prior to August 1st) however after August 1st the Bitcoin Core blockchain is not compatible with Bitcoin ABC wallet.

Is there any way I can re-use the Bitcoin Core blockchain with Bitcoin ABC wallet so that Bitcoin ABC wallet recognizes the incompatible blocks, discards them and then starts synchronizing again from August 1st? It would save me a lot of time.

Please suggest some alternatives. I don't think Bitcoin ABC wallet full sync is an option for me right now since it's taking very long.

Thanks.
Jump to: