def gen_2of3_multisig_key_pair(): key_pairs = [] for i in range(0, 3): key, pri_hex = _gen_pri_key() my_key = Key(secret_exponent=key, prefer_uncompressed=False, netcode=NET_CODE) # return wif or hex format, use your own strategy key_pairs.append((my_key.wif(), my_key.sec_as_hex())) return get_multisig_address( 2, [binascii.unhexlify(key[1]) for key in key_pairs]), key_pairs
print() ## Public key and address public_key = my_key.public_pair() (public_key_x, public_key_y) = public_key print("Public Key Pair: ", public_key) print(" x as hex: ", hex(public_key[0])) print(" y as hex: ", hex(public_key[1])) #compressed_indicator_1 = '02' if (public_key_y % 2) == 0 else '03' compressed_indicator = True if (public_key_y % 2) == 0 else False print("Public key y parity: ", 'even' if compressed_indicator else 'odd') assert(compressed_indicator != my_key._use_uncompressed) print("Public key hex: ", my_key.sec_as_hex()) print(" uncompressed: ", my_key.sec_as_hex(use_uncompressed=True)) assert(my_key.sec_as_hex() == bitcoin.core.b2x(my_key.sec())) print("Public key hash160: ", b2h(my_key.hash160())) print(" uncompressed: ", b2h(my_key.hash160(use_uncompressed=True))) #print("Bitcoin Address : ", my_key.address()) addr_compressed = encoding.public_pair_to_bitcoin_address(public_key, True, my_addr_prefix) addr_uncompressed = encoding.public_pair_to_bitcoin_address(public_key, False, my_addr_prefix) print("Bitcoin Address: ", addr_compressed) print(" uncompressed: ", addr_uncompressed) assert(encoding.is_valid_bitcoin_address(addr_compressed, my_addr_prefix)) assert(encoding.is_valid_bitcoin_address(addr_uncompressed, my_addr_prefix))