def serialize(self, vds=None): if not vds: vds = BCDataStream() serialize_input(vds, self.vin) vds.write(hash_decode(self.block_hash)) vds.write_int64(self.sig_time) vds.write_string(self.sig) return vds.input.encode('hex')
def create_proposal_tx(self, proposal_name, password, save = True): """Create a fee transaction for proposal_name.""" proposal = self.get_proposal(proposal_name) if proposal.fee_txid: print_error('Warning: Proposal "%s" already has a fee tx: %s' % (proposal_name, proposal.fee_txid)) if proposal.submitted: raise Exception('Proposal has already been submitted') h = bitcoin.hash_decode(proposal.get_hash()).encode('hex') script = '6a20' + h # OP_RETURN hash outputs = [(bitcoin.TYPE_SCRIPT, script.decode('hex'), BUDGET_FEE_TX)] tx = self.wallet.mktx(outputs, password, self.config) proposal.fee_txid = tx.hash() if save: self.save() return tx
def serialize_input(vds, vin): vds.write(hash_decode(vin['prevout_hash'])) vds.write_uint32(vin['prevout_n']) vds.write_string(vin['scriptSig']) vds.write_uint32(vin['sequence'])