예제 #1
0
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))
예제 #2
0
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))
예제 #3
0
 def test_is_valid_address(self):
     self.assertTrue(is_valid(self.main_address))
     self.assertFalse(is_valid("not an address"))
예제 #4
0
 def test_is_valid_address(self):
     self.assertTrue(is_valid(self.main_address))
     self.assertFalse(is_valid("not an address"))