def cli(method, params, unsigned): # Get unsigned transaction serialisation. if bitcoin.is_valid(params['source']): if bitcoin.is_mine(params['source']): bitcoin.wallet_unlock() else: print('Source not in Bitcoind wallet.') answer = input('Public key (hexadecimal) or Private key (Wallet Import Format): ') # Public key or private key? try: binascii.unhexlify(answer) # Check if hex. params['pubkey'] = answer # If hex, assume public key. private_key_wif = None except binascii.Error: private_key_wif = answer # Else, assume private key. params['pubkey'] = bitcoin.private_key_to_public_key(private_key_wif) else: raise exceptions.AddressError('Invalid address.') unsigned_tx_hex = util.api(method, params) print('Transaction (unsigned):', unsigned_tx_hex) # Ask to sign and broadcast. if not unsigned and input('Sign and broadcast? (y/N) ') == 'y': if bitcoin.is_mine(params['source']): private_key_wif = None elif not private_key_wif: # If private key was not given earlier. private_key_wif = input('Private key (Wallet Import Format): ') # Sign and broadcast. signed_tx_hex = bitcoin.sign_tx(unsigned_tx_hex, private_key_wif=private_key_wif) print('Transaction (signed):', signed_tx_hex) print('Hash of transaction (broadcasted):', bitcoin.broadcast_tx(signed_tx_hex))
def test_is_valid_address(self): self.assertTrue(is_valid(self.main_address)) self.assertFalse(is_valid("not an address"))