import struct from lbrynet.wallet.script import OutputScript from torba.server.script import ScriptPubKey, OpCodes from torba.server.util import cachedproperty from torba.server.hash import hash_to_hex_str, HASHX_LEN from hashlib import sha256 from torba.server.coins import Coin, CoinError class LBC(Coin): from .session import LBRYElectrumX from .block_processor import LBRYBlockProcessor from .daemon import LBCDaemon from .db import LBRYDB DAEMON = LBCDaemon SESSIONCLS = LBRYElectrumX BLOCK_PROCESSOR = LBRYBlockProcessor DB = LBRYDB NAME = "LBRY" SHORTNAME = "LBC" NET = "mainnet" BASIC_HEADER_SIZE = 112 CHUNK_SIZE = 96 XPUB_VERBYTES = bytes.fromhex("0488b21e") XPRV_VERBYTES = bytes.fromhex("0488ade4") P2PKH_VERBYTE = bytes.fromhex("55") P2SH_VERBYTES = bytes.fromhex("7A") WIF_BYTE = bytes.fromhex("1C") GENESIS_HASH = ('9c89283ba0f3227f6c03b70216b9f665' 'f0118d5e0fa729cedf4fb34d6a34f463') TX_COUNT = 2716936 TX_COUNT_HEIGHT = 329554 TX_PER_BLOCK = 1 RPC_PORT = 9245 REORG_LIMIT = 200 PEERS = [ ] @classmethod def genesis_block(cls, block): '''Check the Genesis block is the right one for this coin. Return the block less its unspendable coinbase. ''' header = cls.block_header(block, 0) header_hex_hash = hash_to_hex_str(cls.header_hash(header)) if header_hex_hash != cls.GENESIS_HASH: raise CoinError('genesis block has hash {} expected {}' .format(header_hex_hash, cls.GENESIS_HASH)) return block @classmethod def electrum_header(cls, header, height): version, = struct.unpack('