Пример #1
0
 def deserialize(self, reader: BinaryReader):
     self.index = reader.read_int32()
     self.peer_pubkey = a2b_hex(reader.read_var_str()).hex()
     self.address = Address(reader.read_bytes(20))
     self.status = reader.read_byte()
     self.init_pos = reader.read_int64()
     self.total_pos = reader.read_int64()
Пример #2
0
 def deserialize(self, reader: BinaryReader):
     self.peer_pubkey = a2b_hex(reader.read_var_str()).hex()
     self.address = Address(reader.read_bytes(20))
     self.consensus_pos = reader.read_int64()
     self.freeze_pos = reader.read_int64()
     self.new_pos = reader.read_int64()
     self.withdraw_pos = reader.read_int64()
     self.withdraw_freeze_pos = reader.read_int64()
     self.withdraw_unfreeze_pos = reader.read_int64()
Пример #3
0
class VmReader(object):
    def __init__(self, bys: bytearray):
        self.ms = StreamManager.GetStream(bys)
        self.reader = BinaryReader(self.ms)
        self.code = bys

    def read_byte(self):
        return self.reader.read_byte()

    def read_bool(self):
        b = self.reader.read_byte()
        return b == 1

    def read_bytes(self, count: int):
        return self.reader.read_bytes(count)

    def read_var_bytes(self):
        return self.reader.read_var_bytes()

    def read_uint16(self):
        return self.read_uint16()

    def read_uint32(self):
        return self.reader.read_int32()

    def read_uint64(self):
        return self.reader.read_int64()

    def position(self):
        return self.reader.stream.tell()

    def read_int16(self):
        try:
            res = bytearray(self.reader.read_bytes(2))
            res.reverse()
            return int(res.hex(), 16)
        except Exception as e:
            return 0

    def read_var_int(self):
        return self.reader.read_var_int()

    def seek(self, offset: int):
        return self.reader.stream.seek(offset)
Пример #4
0
 def read_bytes(reader: BinaryReader):
     code = reader.read_byte()
     if code == int.from_bytes(PUSHDATA4, 'little'):
         temp = reader.read_uint32()
         key_len = temp
     elif code == int.from_bytes(PUSHDATA2, 'little'):
         temp = reader.read_uint16()
         key_len = int(temp)
     elif code == int.from_bytes(PUSHDATA1, 'little'):
         temp = reader.read_uint8()
         key_len = int(temp)
     elif int.from_bytes(PUSHBYTES75, 'little') >= code >= int.from_bytes(PUSHBYTES1, 'little'):
         key_len = code - int.from_bytes(PUSHBYTES1, 'little') + 1
     else:
         key_len = 0
     res = reader.read_bytes(key_len)
     return res
 def deserialize_from(txbytes: bytes):
     ms = StreamManager.GetStream(txbytes)
     reader = BinaryReader(ms)
     tx = Transaction()
     tx.version = reader.read_uint8()
     tx.tx_type = reader.read_uint8()
     tx.nonce = reader.read_uint32()
     tx.gas_price = reader.read_uint64()
     tx.gas_limit = reader.read_uint64()
     tx.payer = reader.read_bytes(20)
     tx.payload = reader.read_var_bytes()
     attri_len = reader.read_var_int()
     if attri_len is 0:
         tx.attributes = bytearray()
     sigs_len = reader.read_var_int()
     tx.sigs = []
     for i in range(sigs_len):
         tx.sigs.append(Sig.deserialize(reader))
     return tx
Пример #6
0
 def deserialize_from(bytes_tx: bytes):
     ms = StreamManager.get_stream(bytes_tx)
     reader = BinaryReader(ms)
     tx = Transaction()
     tx.version = reader.read_uint8()
     tx.tx_type = reader.read_uint8()
     tx.nonce = reader.read_uint32()
     tx.gas_price = reader.read_uint64()
     tx.gas_limit = reader.read_uint64()
     tx.payer = reader.read_bytes(20)
     tx.payload = reader.read_var_bytes()
     attribute_len = reader.read_var_int()
     if attribute_len is 0:
         tx.attributes = bytearray()
     sig_len = reader.read_var_int()
     tx.sig_list = list()
     for _ in range(0, sig_len):
         tx.sig_list.append(Sig.deserialize(reader))
     return tx
Пример #7
0
 def deserialize(self, reader: BinaryReader):
     self.view = reader.read_int32()
     self.height = reader.read_int32()
     self.tx_hash = reader.read_bytes(32).hex()
Пример #8
0
 def deserialize(self, reader: BinaryReader):
     self.address = Address(reader.read_bytes(20))
     self.amount = reader.read_int64()
Пример #9
0
 def deserialize(self, reader: BinaryReader):
     self.address = Address(reader.read_bytes(20))
     self.stake = reader.read_int64()
     self.time_offset = reader.read_int32()