Got to the end of the Terracoin chain and got this error:
Exception at 12175175
Failed to catch up {'blkfile_number': 100000, 'dirname': u'/home/ubuntu/.terracoin/', 'chain_id': Decimal('1'), 'id': 1L, 'blkfile_offset': 12125505}
Traceback (most recent call last):
File "Abe/DataStore.py", line 2389, in catch_up
store.catch_up_dir(dircfg)
File "Abe/DataStore.py", line 2442, in catch_up_dir
store.import_blkdat(dircfg, ds, filename[0])
File "Abe/DataStore.py", line 2566, in import_blkdat
store.import_block(b, chain_ids = chain_ids)
File "Abe/DataStore.py", line 1642, in import_block
raise MerkleRootMismatch(b['hash'], tx_hash_array)
MerkleRootMismatch: Block header Merkle root does not match its transactions. block hash=4be7570e8f70eb093640c8468274ba759745a7aa2b7d25ab1e0421b259845014
I was running Terracoind at the same time as Abe, would that be a problem? Although at the time it got this exception, it was at: block_tx 33750 42496
And Terracoind was saying there were this many blocks: 33747
hmmm....
Nope, it is a problem with the way TRC and PPC handle transactions. Not really a problem with the coins, but ABE does not understand some of the tweaks that were put into them. The ABE creator even gave this advice at one time, and this is what I do now:
In Datastore.py: Comment out ( With the # like below)
# Verify Merkle root.
#if b['hashMerkleRoot'] != util.merkle(tx_hash_array):
#raise MerkleRootMismatch(b['hash'], tx_hash_array)
IF somebody wants to spend the time reprogramming the Merkle root structure that ABE expects, more power to them. But for now, this is a 'dirty' way around it.
If anybody has found a better way around this issue, please tell because I would like a real solution myself.
Also With Terracoin (not PPC), after this fix, there is a second issue with ABE and the way difficulty is calculated. This bug does not effect anything because the issue is with predicting difficulty and corrects itself once the block is ready for hashing. The warning will also not terminate ABE, you just end up with alot of screen spam if you are monitoring it. I have tried to fix this one, but it has fallen down on my list of things to do because the difficulty ABE produces matches what the daemon says (It differs slightly a few decimal places down, but it is an insignificant amount).
File "Abe/util.py", line 57, in calculate_target
return (nBits & 0xffffff) << (8 * ((nBits >> 24) - 3))
ValueError: negative shift count
Anyway, good luck with your project, and if you come up with better ideas about these bugs, please let me know. I am always looking to improve my projects.