Exemple #1
0
 def serialize(self):
     return b''.join((
         self.prev_hash,
         pack_le_uint32(self.prev_idx),
         pack_varbytes(self.script),
         pack_le_uint32(self.sequence),
     ))
Exemple #2
0
 def serialize(self):
     return b''.join((
         self.keyimage,
         self.ringsize,
         pack_varbytes(self.script),
         pack_le_uint32(self.sequence),
     ))
Exemple #3
0
 def serialize(self):
     return b''.join(
         (pack_le_int32(self.version), pack_varint(len(self.inputs)),
          b''.join(tx_in.serialize() for tx_in in self.inputs),
          pack_varint(len(self.outputs)),
          b''.join(tx_out.serialize() for tx_out in self.outputs),
          pack_le_uint32(self.locktime)))
Exemple #4
0
    def _read_tx_parts(self, produce_hash=True):
        start = self.cursor
        version = self._read_le_int32()
        inputs = self._read_inputs()
        outputs = self._read_outputs()
        locktime = self._read_le_uint32()
        expiry = self._read_le_uint32()
        end_prefix = self.cursor
        witness = self._read_witness(len(inputs))

        if produce_hash:
            # TxSerializeNoWitness << 16 == 0x10000
            no_witness_header = pack_le_uint32(0x10000 | (version & 0xffff))
            prefix_tx = no_witness_header + self.binary[start+4:end_prefix]
            tx_hash = self.blake256(prefix_tx)
        else:
            tx_hash = None

        return TxDcr(
            version,
            inputs,
            outputs,
            locktime,
            expiry,
            witness
        ), tx_hash, self.cursor - start
Exemple #5
0
    def push_data(cls, data):
        """Returns the opcodes to push the data on the stack."""
        assert isinstance(data, (bytes, bytearray))

        n = len(data)
        if n < OpCodes.OP_PUSHDATA1:
            return bytes([n]) + data
        if n < 256:
            return bytes([OpCodes.OP_PUSHDATA1, n]) + data
        if n < 65536:
            return bytes([OpCodes.OP_PUSHDATA2]) + pack_le_uint16(n) + data
        return bytes([OpCodes.OP_PUSHDATA4]) + pack_le_uint32(n) + data