コード例 #1
0
ファイル: __init__.py プロジェクト: HUSTGOC/electrumq
 def serialize(self):
     s = write_uint32(self.block_ver) \
         + self.block_prev.decode('hex')[::-1] \
         + self.block_root.decode('hex')[::-1] \
         + write_uint32(self.block_time) \
         + write_uint32(self.block_bits) \
         + write_uint32(self.block_nonce)
     return s
コード例 #2
0
ファイル: tx.py プロジェクト: HUSTGOC/electrumq
 def serialize_input(self, script):
     # Prev hash and index
     s = self.serialize_outpoint()
     # Script length, script, sequence
     s += int_to_hex(len(script) / 2)
     s += script
     s += write_uint32(self.in_sequence).encode('hex')
     return s
コード例 #3
0
ファイル: tx.py プロジェクト: HUSTGOC/electrumq
 def serialize(self, estimate_size=False, witness=True):
     version = write_uint32(self.tx_ver).encode('hex')
     locktime = write_uint32(self.locktime).encode('hex')
     # inputs = self.inputs()
     input_list = self.input_list()
     # outputs = self.outputs()
     output_list = self.output_list()
     txins = int_to_hex(len(input_list)) + ''.join(
         txin.serialize_input(txin.input_script(estimate_size))
         for txin in input_list)
     txouts = int_to_hex(len(output_list)) + ''.join(o.serialize_output()
                                                     for o in output_list)
     if witness and self.is_segwit():
         marker = '00'
         flag = '01'
         witness = ''.join(x.serialize_witness() for x in input_list)
         return version + marker + flag + txins + txouts + witness + locktime
     else:
         return version + txins + txouts + locktime
コード例 #4
0
    def serialize(self, estimate_size=False, witness=True):
        """
        raw to struct info

        :return:
        """
        version = write_uint32(self.tx_ver).encode('hex')
        locktime = write_uint32(self.tx_locktime).encode('hex')
        input_list = self._input_list
        output_list = self._output_list
        txins = int_to_hex(len(input_list)) + ''.join(
            txin.serialize_input() for txin in input_list)
        txouts = int_to_hex(len(output_list)) + ''.join(o.serialize_output() for o in output_list)
        if witness and self.is_segwit():
            marker = '00'
            flag = '01'
            witness = ''.join(x.serialize_witness() for x in input_list)
            return version + marker + flag + txins + txouts + witness + locktime
        else:
            return version + txins + txouts + locktime
コード例 #5
0
 def serialize_input_preimage(self, i):
     if i == self.in_sn:
         script = Script().get_script_pubkey(self.in_address)
     else:
         script = ''
     # Prev hash and index
     s = self.serialize_outpoint()
     # Script length, script, sequence
     s += int_to_hex(len(script) / 2)
     s += script
     s += write_uint32(self.in_sequence).encode('hex')
     return s
コード例 #6
0
    def serialize_input(self):
        script = self.in_signature
        # if script_type == 1:
        pubkeys, x_pubkeys = self.get_sorted_pubkeys()
        script = Script().input_script(self.in_dict, pubkeys, x_pubkeys)

        # Prev hash and index
        s = self.serialize_outpoint()
        # Script length, script, sequence
        s += int_to_hex(len(script) / 2)
        s += script
        s += write_uint32(self.in_sequence).encode('hex')
        return s
コード例 #7
0
 def serialize_preimage(self, i):
     """
     get to be sign content
     :param i:
     :return:
     """
     version = write_uint32(self.tx_ver).encode('hex')
     hash_type = write_uint32(1).encode('hex')
     locktime = write_uint32(self.tx_locktime).encode('hex')
     input_list = self._input_list
     output_list = self._output_list
     txin = input_list[i]
     if txin.is_segwit_input():
         hash_prevouts = double_sha256(
             ''.join(txin.serialize_outpoint() for txin in input_list).decode('hex')).encode(
             'hex')
         hash_sequence = double_sha256(
             ''.join(write_uint32(txin.in_sequence) for txin in input_list).decode(
                 'hex')).encode('hex')
         hash_outputs = double_sha256(
             ''.join(o.serialize_output() for o in output_list).decode('hex')).encode('hex')
         outpoint = txin.serialize_outpoint()
         pubkey = txin.in_dict['pubkeys'][0]
         pkh = hash_160(pubkey.decode('hex')).encode('hex')
         # redeem_script = '00' + push_script(pkh)
         script_code = push_script('76a9' + push_script(pkh) + '88ac')
         # script_hash = hash_160(redeem_script.decode('hex')).encode('hex')
         # script_pub_key = 'a9' + push_script(script_hash) + '87'
         amount = write_uint64(txin.in_value)
         sequence = write_uint32(txin.in_sequence)
         preimage = version + hash_prevouts + hash_sequence + outpoint + script_code + amount + sequence + hash_outputs + locktime + hash_type
     else:
         txins = int_to_hex(len(input_list)) + ''.join(
             txin.serialize_input_preimage(k) for
             k, txin in enumerate(input_list))
         txouts = int_to_hex(len(output_list)) + ''.join(
             o.serialize_output() for o in output_list)
         preimage = version + txins + txouts + locktime + hash_type
     return preimage
コード例 #8
0
 def serialize_outpoint(self):
     return self.prev_tx_hash.decode('hex')[::-1].encode('hex') \
            + write_uint32(self.prev_out_sn).encode('hex')
コード例 #9
0
ファイル: bip32.py プロジェクト: HUSTGOC/electrumq
def CKD_pub(cK, c, n):
    if n & BIP32_PRIME: raise
    return _CKD_pub(cK, c, write_uint32(n)[::-1])
コード例 #10
0
ファイル: bip32.py プロジェクト: HUSTGOC/electrumq
def CKD_priv(k, c, n):
    is_prime = n & BIP32_PRIME
    return _CKD_priv(k, c, write_uint32(n)[::-1], is_prime)