def get_scriptPubKey(address): #we want the following script: #"OP_DUP OP_HASH160 <160 byte hex hash of address> OP_EQUALVERIFY OP_CHECKSIG" address_hash = bc_address_to_hash_160(address) #chr(20) is the length of the address_hash (20 bytes or 160 bits) return chr(opcodes.OP_DUP) + chr(opcodes.OP_HASH160) + \ chr(20) + address_hash + chr(opcodes.OP_EQUALVERIFY) + chr(opcodes.OP_CHECKSIG)
def gather_pubkeys(type, d): if type == "name": pubkeys.append(bc_address_to_hash_160(d['hash']))
#'sequence' tx_fields['sequence'] = 0xffffffff sign_tx.write_uint32(tx_fields['sequence']) ##then we write the number of transaction outputs. we'll just use a single output in this example tx_fields['num_txout'] = 1 sign_tx.write_compact_size(tx_fields['num_txout']) ##then we write the actual transaction output data #we'll redeem everything from the original output minus TX_FEE tx_fields['value'] = tx_info['txOut'][OUTPUT_INDEX]['value']-(TX_FEE*COIN) sign_tx.write_int64(tx_fields['value']) ##this is where our scriptPubKey goes (a script that pays out to an address) #we want the following script: #"OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG" address_hash = bc_address_to_hash_160(SEND_TO_ADDRESS) #chr(20) is the length of the address_hash (20 bytes or 160 bits) scriptPubKey = chr(opcodes.OP_DUP) + chr(opcodes.OP_HASH160) + \ chr(20) + address_hash + chr(opcodes.OP_EQUALVERIFY) + chr(opcodes.OP_CHECKSIG) #first write the length of this lump of data tx_fields['scriptPubKey'] = scriptPubKey sign_tx.write_compact_size(len(tx_fields['scriptPubKey'])) #then the data sign_tx.write(tx_fields['scriptPubKey']) #write locktime (0) tx_fields['locktime'] = 0 sign_tx.write_uint32(tx_fields['locktime']) #and hash code type (1) tx_fields['hash_type'] = SIGHASH_ALL sign_tx.write_int32(tx_fields['hash_type'])
#'sequence' tx_fields['sequence'] = 0xffffffff sign_tx.write_uint32(tx_fields['sequence']) ##then we write the number of transaction outputs. we'll just use a single output in this example tx_fields['num_txout'] = 1 sign_tx.write_compact_size(tx_fields['num_txout']) ##then we write the actual transaction output data #we'll redeem everything from the original output minus TX_FEE tx_fields['value'] = tx_info['txOut'][OUTPUT_INDEX]['value'] - (TX_FEE * COIN) sign_tx.write_int64(tx_fields['value']) ##this is where our scriptPubKey goes (a script that pays out to an address) #we want the following script: #"OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG" address_hash = bc_address_to_hash_160(SEND_TO_ADDRESS) #chr(20) is the length of the address_hash (20 bytes or 160 bits) scriptPubKey = chr(opcodes.OP_DUP) + chr(opcodes.OP_HASH160) + \ chr(20) + address_hash + chr(opcodes.OP_EQUALVERIFY) + chr(opcodes.OP_CHECKSIG) #first write the length of this lump of data tx_fields['scriptPubKey'] = scriptPubKey sign_tx.write_compact_size(len(tx_fields['scriptPubKey'])) #then the data sign_tx.write(tx_fields['scriptPubKey']) #write locktime (0) tx_fields['locktime'] = 0 sign_tx.write_uint32(tx_fields['locktime']) #and hash code type (1) tx_fields['hash_type'] = SIGHASH_ALL sign_tx.write_int32(tx_fields['hash_type'])
def bc_address_to_hash_160(addr): """Deprecated.""" return base58.bc_address_to_hash_160(addr)