spesmilo / electrumx

Alternative implementation of spesmilo/electrum-server
MIT License
429 stars 343 forks source link

ElectrumX Deutsche eMark (DEM) doesn't work #253

Closed Master-Win closed 4 months ago

Master-Win commented 4 months ago

INFO:DB:coin: Deutsche eMark Feb 22 02:20:16 electrumx_server[4767]: INFO:DB:network: mainnet Feb 22 02:20:16 electrumx_server[4767]: INFO:DB:height: 0 Feb 22 02:20:16 electrumx_server[4767]: INFO:DB:tip: 000000bc0ddf15573115c44b81d8b10e9ebd868b5c967f408bda273656f30e28 Feb 22 02:20:16 electrumx_server[4767]: INFO:DB:tx count: 0 Feb 22 02:20:16 electrumx_server[4767]: INFO:DB:flushing DB cache at 1,200 MB Feb 22 02:20:16 electrumx_server[4767]: INFO:History:history DB version: 1 Feb 22 02:20:16 electrumx_server[4767]: INFO:History:flush count: 1 Feb 22 02:20:16 electrumx_server[4767]: INFO:Prefetcher:catching up to daemon height 137,524 (137,524 blocks behind) Feb 22 02:20:16 electrumx_server[4767]: 1 Feb 22 02:20:16 electrumx_server[4767]: 2 Feb 22 02:20:16 electrumx_server[4767]: 3 Feb 22 02:20:16 electrumx_server[4767]: 4 Feb 22 02:20:16 electrumx_server[4767]: 5 Feb 22 02:20:16 electrumx_server[4767]: 6 Feb 22 02:20:16 electrumx_server[4767]: 7 Feb 22 02:20:16 electrumx_server[4767]: 8 Feb 22 02:20:16 electrumx_server[4767]: 9 Feb 22 02:20:16 electrumx_server[4767]: 10 Feb 22 02:20:16 electrumx_server[4767]: INFO:BlockProcessor:our height: 10 daemon: 137,524 UTXOs 0MB hist 0MB Feb 22 02:20:16 electrumx_server[4767]: INFO:BlockProcessor:processed 10 blocks size 0.00 MB in 0.0s Feb 22 02:21:08 electrumx_server[4767]: 11 Feb 22 02:21:08 electrumx_server[4767]: 12 Feb 22 02:21:08 electrumx_server[4767]: 13 Feb 22 02:21:08 electrumx_server[4767]: 14 Feb 22 02:21:08 electrumx_server[4767]: 15 Feb 22 02:21:08 electrumx_server[4767]: 16 Feb 22 02:21:08 electrumx_server[4767]: 17 Feb 22 02:21:08 electrumx_server[4767]: 18 Feb 22 02:21:08 electrumx_server[4767]: 19 Feb 22 02:21:08 electrumx_server[4767]: 20 Feb 22 02:21:08 electrumx_server[4767]: 21 Feb 22 02:21:08 electrumx_server[4767]: 22 Feb 22 02:21:08 electrumx_server[4767]: 23 Feb 22 02:21:08 electrumx_server[4767]: 24 Feb 22 02:21:08 electrumx_server[4767]: 25 Feb 22 02:21:08 electrumx_server[4767]: 26 Feb 22 02:21:08 electrumx_server[4767]: 27 Feb 22 02:21:08 electrumx_server[4767]: 28 Feb 22 02:21:08 electrumx_server[4767]: 29 Feb 22 02:21:08 electrumx_server[4767]: 30 Feb 22 02:21:08 electrumx_server[4767]: 31 Feb 22 02:21:08 electrumx_server[4767]: 32 Feb 22 02:21:08 electrumx_server[4767]: 33 Feb 22 02:21:08 electrumx_server[4767]: 34 Feb 22 02:21:08 electrumx_server[4767]: 35 Feb 22 02:21:08 electrumx_server[4767]: 36 Feb 22 02:21:08 electrumx_server[4767]: 37 Feb 22 02:21:08 electrumx_server[4767]: 38 Feb 22 02:21:08 electrumx_server[4767]: 39 Feb 22 02:21:08 electrumx_server[4767]: 40 Feb 22 02:21:08 electrumx_server[4767]: 41 Feb 22 02:21:08 electrumx_server[4767]: 42 Feb 22 02:21:08 electrumx_server[4767]: 43 Feb 22 02:21:08 electrumx_server[4767]: 44 Feb 22 02:21:08 electrumx_server[4767]: 45 Feb 22 02:21:08 electrumx_server[4767]: 46 Feb 22 02:21:08 electrumx_server[4767]: 47 Feb 22 02:21:08 electrumx_server[4767]: 48 Feb 22 02:21:08 electrumx_server[4767]: 49 Feb 22 02:21:08 electrumx_server[4767]: 50 Feb 22 02:21:08 electrumx_server[4767]: 51 Feb 22 02:21:08 electrumx_server[4767]: 52 Feb 22 02:21:08 electrumx_server[4767]: 53 Feb 22 02:21:08 electrumx_server[4767]: 54 Feb 22 02:21:08 electrumx_server[4767]: 55 Feb 22 02:21:08 electrumx_server[4767]: 56 Feb 22 02:21:08 electrumx_server[4767]: 57 Feb 22 02:21:08 electrumx_server[4767]: 58 Feb 22 02:21:08 electrumx_server[4767]: 59 Feb 22 02:21:08 electrumx_server[4767]: 60 Feb 22 02:21:08 electrumx_server[4767]: 61 Feb 22 02:21:08 electrumx_server[4767]: 62 Feb 22 02:21:08 electrumx_server[4767]: 63 Feb 22 02:21:08 electrumx_server[4767]: 64 Feb 22 02:21:08 electrumx_server[4767]: 65 Feb 22 02:21:08 electrumx_server[4767]: 66 Feb 22 02:21:08 electrumx_server[4767]: 67 Feb 22 02:21:08 electrumx_server[4767]: 68 Feb 22 02:21:08 electrumx_server[4767]: 69 Feb 22 02:21:08 electrumx_server[4767]: 70 Feb 22 02:21:08 electrumx_server[4767]: 71 Feb 22 02:21:08 electrumx_server[4767]: 72 Feb 22 02:21:08 electrumx_server[4767]: 73 Feb 22 02:21:08 electrumx_server[4767]: 74 Feb 22 02:21:08 electrumx_server[4767]: 75 Feb 22 02:21:08 electrumx_server[4767]: 76 Feb 22 02:21:08 electrumx_server[4767]: 77 Feb 22 02:21:08 electrumx_server[4767]: 78 Feb 22 02:21:08 electrumx_server[4767]: 79 Feb 22 02:21:08 electrumx_server[4767]: 80 Feb 22 02:21:08 electrumx_server[4767]: 81 Feb 22 02:21:08 electrumx_server[4767]: 82 Feb 22 02:21:08 electrumx_server[4767]: 83 Feb 22 02:21:08 electrumx_server[4767]: 84 Feb 22 02:21:08 electrumx_server[4767]: INFO:Prefetcher:cancelled; prefetcher stopping Feb 22 02:21:08 electrumx_server[4767]: INFO:Controller:shutting down Feb 22 02:21:08 electrumx_server[4767]: INFO:Controller:shutdown complete


Feb 22 02:21:08 electrumx_server[4767]: ERROR:electrumx:ElectrumX server terminated abnormally Feb 22 02:21:08 electrumx_server[4767]: Traceback (most recent call last): Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx_server", line 35, in main Feb 22 02:21:08 electrumx_server[4767]: asyncio.run(controller.run()) Feb 22 02:21:08 electrumx_server[4767]: File "/usr/lib/python3.8/asyncio/runners.py", line 44, in run Feb 22 02:21:08 electrumx_server[4767]: return loop.run_until_complete(main) Feb 22 02:21:08 electrumx_server[4767]: File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete Feb 22 02:21:08 electrumx_server[4767]: return future.result() Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/server_base.py", line 129, in run Feb 22 02:21:08 electrumx_server[4767]: await server_task Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/server_base.py", line 102, in serve Feb 22 02:21:08 electrumx_server[4767]: await self.serve(shutdown_event) Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/server/controller.py", line 137, in serve Feb 22 02:21:08 electrumx_server[4767]: await group.spawn(wait_for_catchup()) Feb 22 02:21:08 electrumx_server[4767]: File "/usr/local/lib/python3.8/dist-packages/aiorpcx/curio.py", line 297, in aexit Feb 22 02:21:08 electrumx_server[4767]: await self.join() Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/util.py", line 370, in join Feb 22 02:21:08 electrumx_server[4767]: task.result() Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/server/block_processor.py", line 712, in fetch_and_process_blocks Feb 22 02:21:08 electrumx_server[4767]: await group.spawn(self._process_prefetched_blocks()) Feb 22 02:21:08 electrumx_server[4767]: File "/usr/local/lib/python3.8/dist-packages/aiorpcx/curio.py", line 297, in aexit Feb 22 02:21:08 electrumx_server[4767]: await self.join() Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/util.py", line 370, in join Feb 22 02:21:08 electrumx_server[4767]: task.result() Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/server/block_processor.py", line 673, in _process_prefetched_blocks Feb 22 02:21:08 electrumx_server[4767]: await self.check_and_advance_blocks(blocks) Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/server/block_processor.py", line 231, in check_and_advance_blocks Feb 22 02:21:08 electrumx_server[4767]: blocks = [self.coin.block(raw_block, first + n) Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/server/block_processor.py", line 231, in Feb 22 02:21:08 electrumx_server[4767]: blocks = [self.coin.block(raw_block, first + n) Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/coins.py", line 264, in block Feb 22 02:21:08 electrumx_server[4767]: txs = cls.DESERIALIZER(raw_block, start=len(header)).read_tx_block() Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 158, in read_tx_block Feb 22 02:21:08 electrumxserver[4767]: return [read() for in range(self._read_varint())] Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 158, in Feb 22 02:21:08 electrumxserver[4767]: return [read() for in range(self._read_varint())] Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 148, in read_tx_and_hash Feb 22 02:21:08 electrumx_server[4767]: return self.read_tx(), self.TX_HASH_FN(self.binary[start:self.cursor]) Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 602, in read_tx Feb 22 02:21:08 electrumx_server[4767]: self._read_inputs(), # inputs Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 162, in _read_inputs Feb 22 02:21:08 electrumx_server[4767]: return [read_input() for i in range(self._read_varint())] Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 162, in Feb 22 02:21:08 electrumx_server[4767]: return [read_input() for i in range(self._read_varint())] Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 168, in _read_input Feb 22 02:21:08 electrumx_server[4767]: self._read_varbytes(), # script Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 194, in _read_varbytes Feb 22 02:21:08 electrumx_server[4767]: return self._read_nbytes(self._read_varint()) Feb 22 02:21:08 electrumx_server[4767]: File "/home/elex/electrumx/electrumx/lib/tx.py", line 190, in _read_nbytes Feb 22 02:21:08 electrumx_server[4767]: assert self.binary_length >= end Feb 22 02:21:08 electrumx_server[4767]: AssertionError Feb 22 02:21:08 systemd[1]: electrumx_DEM.service: Succeeded.


class eMark(Coin): NAME = "Deutsche eMark" SHORTNAME = "DEM" NET = "mainnet" P2PKH_VERBYTE = bytes.fromhex("35") P2SH_VERBYTES = bytes.fromhex("1e") WIF_BYTE = bytes.fromhex("b5") GENESIS_HASH = ('000000bc0ddf15573115c44b81d8b10e' '9ebd868b5c967f408bda273656f30e28') DESERIALIZER = lib_tx.DeserializerTxTime DAEMON = daemon.LegacyRPCDaemon TX_COUNT = 241959 TX_COUNT_HEIGHT = 241860 TX_PER_BLOCK = 2 RPC_PORT = 4444 REORG_LIMIT = 5000


https://github.com/emarkproject/eMark

thanks for help

SomberNight commented 4 months ago

DESERIALIZER = lib_tx.DeserializerTxTime

You can see from the trace that the tx deserializer is raising. Maybe you need a custom one for your altcoin. You will need to figure that out for yourself. The most I can do for altcoins is merge working PRs.