def T(value: int, expected: bytes) -> None:
     expected = unhexlify(expected)
     expected_int = VarIntSerializer.deserialize(expected)
     self.assertEqual(value, expected_int)
     actual = VarIntSerializer.serialize(value)
     self.assertEqual(actual, expected)
     roundtrip = VarIntSerializer.deserialize(actual)
     self.assertEqual(value, roundtrip)
 def to_buffer_writer(self) -> StringIO:
     buffer = StringIO()
     buffer.write(b2lx((self.version).to_bytes(4, 'big', signed=False)))
     buffer.write(b2lx(VarIntSerializer.serialize(len(self.inputs))))
     for _input in self.inputs:
         _input.write_buffer(buffer)
     buffer.write(b2lx(VarIntSerializer.serialize(len(self.outputs))))
     for _output in self.outputs:
         _output.write_buffer(buffer)
     buffer.write(b2lx((self.gas_limit).to_bytes(4, 'big', signed=False)))
     buffer.write(b2lx((self.lock_time).to_bytes(4, 'big', signed=True)))
     return buffer
 def write_buffer(self, buf):
     buf.write(b2lx(struct.pack(">q", self.amount)))
     buf.write(
         VarIntSerializer.serialize(len(
             Web3.toBytes(hexstr=self.pk_script))).hex())
     buf.write(self.pk_script)
     if self.assets:
         buf.write(
             VarIntSerializer.serialize(
                 len(Web3.toBytes(hexstr=self.assets))).hex())
         buf.write(self.assets)
     else:
         buf.write(b'\x00'.hex())
     if self.data:
         buf.write(
             VarIntSerializer.serialize(len(
                 Web3.toBytes(hexstr=self.data))).hex())
         buf.write(self.data)
     else:
         buf.write(b'\x00'.hex())
     return buf
 def write_buffer(self, buf):
     buf.write(self.prev_tx_id)
     buf.write(b2lx((self.vout).to_bytes(4, 'big', signed=False)))
     if self.sig_script:
         buf.write(
             VarIntSerializer.serialize(
                 len(Web3.toBytes(hexstr=self.sig_script))).hex())
         buf.write(self.sig_script)
     else:
         buf.write(b'\x00'.hex())
     buf.write(b2lx((self.sequence).to_bytes(4, 'big', signed=False)))
     return buf
Esempio n. 5
0
 def T(serialized):
     serialized = unhexlify(serialized)
     with self.assertRaises(SerializationTruncationError):
         VarIntSerializer.deserialize(serialized)
Esempio n. 6
0
 def T(serialized, expected_value):
     serialized = unhexlify(serialized)
     actual_value = VarIntSerializer.deserialize(serialized)
     self.assertEqual(actual_value, expected_value)
Esempio n. 7
0
 def T(value, expected):
     expected = unhexlify(expected)
     actual = VarIntSerializer.serialize(value)
     self.assertEqual(actual, expected)
     roundtrip = VarIntSerializer.deserialize(actual)
     self.assertEqual(value, roundtrip)
Esempio n. 8
0
def decode_varint(data):
    n, tail = VarIntSerializer.deserialize_partial(data)
    head = data[0: len(data) - len(tail)]
    return n, len(head)