解决Electrumx中server.block_processor.ChainError UTXO错误

错误提示:

server.block_processor.ChainError: UTXO 7502b7b60a21b7339e9a626f77ef421dc7e39e2c4a11bbedf73c50d97cdc26b9 / 1 not found in "h" table

在Electrumx中扩展了IPChain的同步代码,单笔交易和区块测试都没有问题,但在同步测试中发现会出现上诉错误,先是看了代码,这部分代码和自己写的代码逻辑并没有关联。报错的详细地址是block_processor.py中BLOCK_PROCESSOR类里面的spend_utxo方法,这部分代码是用前缀b'h'+tx_hash+tx_idx在utxo_db中查询上一笔交易信息,报这个错的意思从分析来看是没找到上一笔交易信息。在网上查了下相关信息,只找到两三条和这个问题相关的信息:

https://github.com/kyuupichan/electrumx/issues/343

https://github.com/kyuupichan/electrumx/issues/256

https://github.com/kyuupichan/electrumx/issues/414

都是在Electrumx的github项目中提到该问题,根据Electrumx开发者的意思是说钱包数据库有问题,建议重新下载钱包数据库,并重新reindex。

实际实验之后发现并不是该问题影响,又重新跟踪调试代码。最终在BLOCK_PROCESSOR中调试advance_txs方法,发现自己在扩展币的时候把read_tx方法输出output的时候写错了,从而导致生成交易号错误。最终在同步的时候在币的UXTO链上找不到这个交易号,从而报了这个错误。修正之后同步正常。

你可能感兴趣的:(解决Electrumx中server.block_processor.ChainError UTXO错误)