錯(cuò)誤提示:
server.block_processor.ChainError: UTXO 7502b7b60a21b7339e9a626f77ef421dc7e39e2c4a11bbedf73c50d97cdc26b9 / 1 not found in "h" table
在Electrumx中擴(kuò)展了IPChain的同步代碼,單筆交易和區(qū)塊測(cè)試都沒(méi)有問(wèn)題,但在同步測(cè)試中發(fā)現(xiàn)會(huì)出現(xiàn)上訴錯(cuò)誤,先是看了代碼,這部分代碼和自己寫的代碼邏輯并沒(méi)有關(guān)聯(lián)沦童。報(bào)錯(cuò)的詳細(xì)地址是block_processor.py中BLOCK_PROCESSOR類里面的spend_utxo方法,這部分代碼是用前綴b'h'+tx_hash+tx_idx在utxo_db中查詢上一筆交易信息叹话,報(bào)這個(gè)錯(cuò)的意思從分析來(lái)看是沒(méi)找到上一筆交易信息偷遗。在網(wǎng)上查了下相關(guān)信息,只找到兩三條和這個(gè)問(wèn)題相關(guān)的信息:
https://github.com/kyuupichan/electrumx/issues/343
https://github.com/kyuupichan/electrumx/issues/256
https://github.com/kyuupichan/electrumx/issues/414
都是在Electrumx的github項(xiàng)目中提到該問(wèn)題驼壶,根據(jù)Electrumx開發(fā)者的意思是說(shuō)錢包數(shù)據(jù)庫(kù)有問(wèn)題氏豌,建議重新下載錢包數(shù)據(jù)庫(kù),并重新reindex热凹。
實(shí)際實(shí)驗(yàn)之后發(fā)現(xiàn)并不是該問(wèn)題影響泵喘,又重新跟蹤調(diào)試代碼泪电。最終在BLOCK_PROCESSOR中調(diào)試advance_txs方法,發(fā)現(xiàn)自己在擴(kuò)展幣的時(shí)候把read_tx方法輸出output的時(shí)候?qū)戝e(cuò)了纪铺,從而導(dǎo)致生成交易號(hào)錯(cuò)誤相速。最終在同步的時(shí)候在幣的UXTO鏈上找不到這個(gè)交易號(hào),從而報(bào)了這個(gè)錯(cuò)誤鲜锚。修正之后同步正常突诬。