bitcoin-abe / bitcoin-abe

Abe: block browser for Bitcoin and similar currencies
GNU Affero General Public License v3.0
982 stars 653 forks source link

Failed to catch up error #233

Open skoroneos opened 7 years ago

skoroneos commented 7 years ago

Have the latest version pulled after a system update and then had this error Any idea what might be wrong ?

block 482011 already in chain 1 commit Exception at 8653327013179591703 Failed to catch up {'blkfile_offset': 87472868, 'blkfile_number': 100976, 'chain_id': None, 'loader': None, 'dirname': '/root/.bitcoin', 'id': Decimal('1')} Traceback (most recent call last): File "Abe/DataStore.py", line 2562, in catch_up store.catch_up_dir(dircfg) File "Abe/DataStore.py", line 2842, in catch_up_dir store.import_blkdat(dircfg, ds, blkfile['name']) File "Abe/DataStore.py", line 2964, in import_blkdat b = chain.ds_parse_block(ds) File "Abe/Chain/init.py", line 82, in ds_parse_block d['transactions'].append(chain.ds_parse_transaction(ds)) File "Abe/Chain/init.py", line 75, in ds_parse_transaction return deserialize.parse_Transaction(ds) File "Abe/deserialize.py", line 90, in parse_Transaction d['txIn'].append(parse_TxIn(vds)) File "Abe/deserialize.py", line 46, in parse_TxIn d['sequence'] = vds.read_uint32() File "Abe/BCDataStream.py", line 71, in read_uint32 def read_uint32 (self): return self._read_num('<I') File "Abe/BCDataStream.py", line 110, in _read_num (i,) = struct.unpack_from(format, self.input, self.read_cursor) error: unpack_from requires a buffer of at least 4 bytes

dermoth commented 7 years ago

Segwit is not yet supported... I could give you the code to decode properly segwit transactions, but it would not save the witness part of it if you have set Abe to save scriptSig. It migth work OK otherwise... I'd have to double check it saves the right tx id too.

The plan was to add witness (whenever scriptSig is saved too) and real tx hash to the database, however I haven't had the time to complete coding and testing, and even then it would take me weeks to alter my own database on standard spindle disks.

Regards,

RoadRunnr commented 7 years ago

@dermoth could you post the segwit somewhere, please?

dermoth commented 7 years ago

It's in my fork, segwit branch

https://github.com/dermoth/bitcoin-abe/tree/segwit

dermoth commented 7 years ago

It's still work in progress, I haven't had much time to finish it, and at this point there is no chances I can catch up on my current hardware, let alone test upgrade scenarios.

Since it's a soft-fork you can always import from a non-segwit node... you will be missing the segwit data but it'll work... OTOH going back to segwit after means both bitcoind and abe will have to rollback blocks and re-apply them with segwit (or better yet, backup before segwit and restore backup before upgrade)