Exemplo n.º 1
0
 def push_bytes(data):
     ms = StreamManager.GetStream()
     writer = BinaryWriter(ms)
     if len(data) == 0:
         raise ValueError("push data error: data is null")
     if len(data) <= int.from_bytes(PUSHBYTES75,
                                    'little') + 1 - int.from_bytes(
                                        PUSHBYTES1, 'little'):
         num = len(data) + int.from_bytes(PUSHBYTES1, 'little') - 1
         writer.WriteByte(num)
     elif len(data) < 0x100:
         writer.WriteByte(PUSHDATA1)
         writer.WriteUInt8(len(data))
     elif len(data) < 0x10000:
         writer.WriteByte(PUSHDATA2)
         writer.WriteUInt16(len(data))
     else:
         writer.WriteByte(PUSHDATA4)
         writer.WriteUInt32(len(data))
     writer.WriteBytes(data)
     ms.flush()
     res = ms.ToArray()
     StreamManager.ReleaseStream(ms)
     res = bytes_reader(res)
     return res
    def serialize(self) -> bytes:
        ms = StreamManager.GetStream()
        writer = BinaryWriter(ms)
        writer.WriteBytes(self.serialize_unsigned())
        writer.WriteVarInt(len(self.sigs))

        for sig in self.sigs:
            writer.WriteBytes(sig.serialize())

        ms.flush()
        temp = ms.ToArray()
        StreamManager.ReleaseStream(ms)
        return a2b_hex(temp)
 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)
 def serialize_unsigned(self) -> bytes:
     ms = StreamManager.GetStream()
     writer = BinaryWriter(ms)
     writer.WriteUInt8(self.version)
     writer.WriteUInt8(self.tx_type)
     writer.WriteUInt32(self.nonce)
     writer.WriteUInt64(self.gas_price)
     writer.WriteUInt64(self.gas_limit)
     writer.WriteBytes(bytes(self.payer))
     writer.WriteVarBytes(bytes(self.payload))
     writer.WriteVarInt(len(self.attributes))
     ms.flush()
     res = ms.ToArray()
     StreamManager.ReleaseStream(ms)
     return res
 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
Exemplo n.º 6
0
    def serialize(self) -> bytes:
        invoke_script = ProgramBuilder.program_from_params(self.sig_data)
        if len(self.public_keys) == 0:
            raise ValueError("no public key in sig")

        if len(self.public_keys) == 1:
            verification_script = ProgramBuilder.program_from_pubkey(
                self.public_keys[0])
        else:
            verification_script = ProgramBuilder.program_from_multi_pubkey(
                self.M, self.public_keys)
        ms = StreamManager.GetStream()
        writer = BinaryWriter(ms)
        writer.WriteVarBytes(invoke_script)
        writer.WriteVarBytes(verification_script)
        ms.flush()
        res = ms.ToArray()
        res = bytes_reader(res)
        StreamManager.ReleaseStream(ms)
        return res