Adding a new class FLO in coins.py and writing new functions in tx.py to deserialize FLO's transactions
This commit is contained in:
parent
71b3d30842
commit
acba52786c
@ -1897,3 +1897,22 @@ class Monoeci(Coin):
|
||||
'''Given a header return the hash.'''
|
||||
import x11_hash
|
||||
return x11_hash.getPoWHash(header)
|
||||
|
||||
class Flo(Coin):
|
||||
NAME = "Flo"
|
||||
SHORTNAME = "FLO"
|
||||
NET = "mainnet"
|
||||
XPUB_VERBYTES = bytes.fromhex("0134406b")
|
||||
XPRV_VERBYTES = bytes.fromhex("01343c31")
|
||||
P2PKH_VERBYTE = bytes.fromhex("23")
|
||||
P2SH_VERBYTES = [bytes.fromhex("08")]
|
||||
WIF_BYTE = bytes.fromhex("b0")
|
||||
GENESIS_HASH = ('09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea')
|
||||
TX_COUNT = 8908766
|
||||
TX_COUNT_HEIGHT = 1105256
|
||||
TX_PER_BLOCK = 10
|
||||
RPC_PORT = 7313
|
||||
REORG_LIMIT = 800
|
||||
PEERS = [
|
||||
]
|
||||
DESERIALIZER = lib_tx.DeserializerFlo
|
||||
|
||||
@ -402,6 +402,82 @@ class DeserializerTxTimeAuxPow(DeserializerTxTime):
|
||||
return self._read_nbytes(header_end)
|
||||
|
||||
|
||||
class TxFlo(namedtuple("Tx", "version inputs outputs locktime txcomment")):
|
||||
'''Class representing a transaction.'''
|
||||
|
||||
@cachedproperty
|
||||
def is_coinbase(self):
|
||||
return self.inputs[0].is_coinbase
|
||||
|
||||
|
||||
class TxFloSegWit(namedtuple("Tx", "version marker flag inputs outputs "
|
||||
"witness locktime txcomment")):
|
||||
'''Class representing a SegWit transaction.'''
|
||||
|
||||
@cachedproperty
|
||||
def is_coinbase(self):
|
||||
return self.inputs[0].is_coinbase
|
||||
|
||||
|
||||
class DeserializerFlo(DeserializerSegWit):
|
||||
|
||||
# https://bitcoincore.org/en/segwit_wallet_dev/#transaction-serialization
|
||||
|
||||
def _read_tx(self):
|
||||
'''Return a deserialized transaction.'''
|
||||
version = self._read_le_int32()
|
||||
inputs = self._read_inputs()
|
||||
outputs = self._read_outputs()
|
||||
locktime = self._read_le_uint32()
|
||||
|
||||
if version >= 2:
|
||||
comment = self._read_varbytes()
|
||||
else:
|
||||
comment = ""
|
||||
|
||||
return TxFlo(version, inputs, outputs, locktime, comment)
|
||||
|
||||
def _read_tx_parts(self):
|
||||
'''Return a (deserialized TX, tx_hash, vsize) tuple.'''
|
||||
start = self.cursor
|
||||
marker = self.binary[self.cursor + 4]
|
||||
if marker:
|
||||
tx = self._read_tx()
|
||||
tx_hash = double_sha256(self.binary[start:self.cursor])
|
||||
return tx, tx_hash, self.binary_length
|
||||
|
||||
# Ugh, this is nasty.
|
||||
version = self._read_le_int32()
|
||||
orig_ser = self.binary[start:self.cursor]
|
||||
|
||||
marker = self._read_byte()
|
||||
flag = self._read_byte()
|
||||
|
||||
start = self.cursor
|
||||
inputs = self._read_inputs()
|
||||
outputs = self._read_outputs()
|
||||
orig_ser += self.binary[start:self.cursor]
|
||||
|
||||
base_size = self.cursor - start
|
||||
witness = self._read_witness(len(inputs))
|
||||
|
||||
start = self.cursor
|
||||
locktime = self._read_le_uint32()
|
||||
|
||||
# FLO ->
|
||||
if version >= 2:
|
||||
tx_comment = self._read_varbytes()
|
||||
else:
|
||||
tx_comment = ""
|
||||
# <- FLO
|
||||
|
||||
orig_ser += self.binary[start:self.cursor]
|
||||
vsize = (3 * base_size + self.binary_length) // 4
|
||||
|
||||
return TxFloSegWit(version, marker, flag, inputs, outputs, witness,
|
||||
locktime, tx_comment), double_sha256(orig_ser), vsize
|
||||
|
||||
|
||||
class DeserializerBitcoinAtom(DeserializerSegWit):
|
||||
FORK_BLOCK_HEIGHT = 505888
|
||||
|
||||
@ -503,7 +579,7 @@ class DeserializerDecred(Deserializer):
|
||||
outputs = self._read_outputs()
|
||||
locktime = self._read_le_uint32()
|
||||
expiry = self._read_le_uint32()
|
||||
no_witness_tx = b'\x01\x00\x01\x00' + self.binary[start+4:self.cursor]
|
||||
no_witness_tx = b'\x01\x00\x01\x00' + self.binary[start + 4:self.cursor]
|
||||
witness = self._read_witness(len(inputs))
|
||||
return TxDcr(
|
||||
version,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user