Esempio n. 1
0
 def __serialize_stack_item(self, item: StackItems, writer: BinaryWriter):
     if type(item) == ByteArrayItem:
         writer.write_byte(BuildParams.Type.bytearraytype.value)
         bys = item.get_bytearray()
         writer.write_var_bytes(bys)
     elif type(item) == IntegerItem:
         writer.write_byte(BuildParams.Type.integertype.value)
         bys = item.get_bytearray()
         writer.write_var_bytes(bys)
     elif type(item) == BoolItem:
         writer.write_byte(BuildParams.Type.booltype.value)
         bys = item.get_bytearray()
         writer.write_var_bytes(bys)
     elif type(item) == ArrayItem:
         writer.write_byte(BuildParams.Type.arraytype.value)
         arr = item.get_array()
         writer.write_var_int(len(arr))
         for i in range(len(arr)):
             self.__serialize_stack_item(item, writer)
     elif type(item) == StructItem:
         pass
     elif type(item) == MapItem:
         writer.write_byte(BuildParams.Type.maptype.value)
         map = item.get_map()
         writer.write_var_int(len(map))
         for key, value in map.items():
             self.__serialize_stack_item(key, writer)
             self.__serialize_stack_item(value, writer)
     else:
         pass
Esempio n. 2
0
 def test_read_var_int(self):
     value = 123
     writer_stream = StreamManager.get_stream()
     writer = BinaryWriter(writer_stream)
     writer.write_var_int(value)
     reader_stream = StreamManager.get_stream(writer_stream.getbuffer())
     reader = BinaryReader(reader_stream)
     self.assertEqual(reader.read_var_int(), value)
 def serialize(self, is_hex: bool = False) -> bytes:
     ms = StreamManager.GetStream()
     writer = BinaryWriter(ms)
     writer.write_bytes(self.serialize_unsigned())
     writer.write_var_int(len(self.sigs))
     for sig in self.sigs:
         writer.write_bytes(sig.serialize())
     ms.flush()
     temp = ms.ToArray()
     StreamManager.ReleaseStream(ms)
     if is_hex:
         return temp
     else:
         return a2b_hex(temp)
Esempio n. 4
0
 def serialize(self, is_hex: bool = False) -> bytes or str:
     ms = StreamManager.get_stream()
     writer = BinaryWriter(ms)
     writer.write_bytes(self.serialize_unsigned(is_str=False))
     writer.write_var_int(len(self.sig_list))
     for sig in self.sig_list:
         writer.write_bytes(sig.serialize())
     ms.flush()
     bytes_tx = ms.to_bytes()
     StreamManager.release_stream(ms)
     if is_hex:
         return bytes_tx.hex()
     else:
         return bytes_tx
 def serialize_unsigned(self) -> bytes:
     ms = StreamManager.GetStream()
     writer = BinaryWriter(ms)
     writer.write_uint8(self.version)
     writer.write_uint8(self.tx_type)
     writer.write_uint32(self.nonce)
     writer.write_uint64(self.gas_price)
     writer.write_uint64(self.gas_limit)
     writer.write_bytes(bytes(self.payer))
     self.serialize_exclusive_data(writer)
     if hasattr(self, "payload"):
         writer.write_var_bytes(bytes(self.payload))
     writer.write_var_int(len(self.attributes))
     ms.flush()
     res = ms.ToArray()
     StreamManager.ReleaseStream(ms)
     return res
Esempio n. 6
0
 def serialize_unsigned(self) -> bytes or str:
     ms = StreamManager.get_stream()
     writer = BinaryWriter(ms)
     writer.write_uint8(self.version)
     writer.write_uint8(self.tx_type)
     writer.write_uint32(self.nonce)
     writer.write_uint64(self.gas_price)
     writer.write_uint64(self.gas_limit)
     writer.write_bytes(self.payer)
     self.serialize_exclusive_data(writer)
     if self.payload is not None and len(self.payload) != 0:
         writer.write_var_bytes(bytes(self.payload))
     writer.write_var_int(len(self.attributes))
     ms.flush()
     hex_bytes = ms.to_bytes()
     StreamManager.release_stream(ms)
     return hex_bytes