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.'''
|
'''Given a header return the hash.'''
|
||||||
import x11_hash
|
import x11_hash
|
||||||
return x11_hash.getPoWHash(header)
|
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)
|
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):
|
class DeserializerBitcoinAtom(DeserializerSegWit):
|
||||||
FORK_BLOCK_HEIGHT = 505888
|
FORK_BLOCK_HEIGHT = 505888
|
||||||
|
|
||||||
@ -503,7 +579,7 @@ class DeserializerDecred(Deserializer):
|
|||||||
outputs = self._read_outputs()
|
outputs = self._read_outputs()
|
||||||
locktime = self._read_le_uint32()
|
locktime = self._read_le_uint32()
|
||||||
expiry = 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))
|
witness = self._read_witness(len(inputs))
|
||||||
return TxDcr(
|
return TxDcr(
|
||||||
version,
|
version,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user