From 25d20e92c09fc6f7deba81d01624a192930f5c96 Mon Sep 17 00:00:00 2001 From: Shannon Appelcline Date: Tue, 8 Sep 2020 09:36:10 -1000 Subject: [PATCH] Delete 18_4_accessing_bitcoind_with_python.py broke up the code into individual bits, per rest of chapter --- src/18_4_accessing_bitcoind_with_python.py | 192 --------------------- 1 file changed, 192 deletions(-) delete mode 100644 src/18_4_accessing_bitcoind_with_python.py diff --git a/src/18_4_accessing_bitcoind_with_python.py b/src/18_4_accessing_bitcoind_with_python.py deleted file mode 100644 index bb0e770..0000000 --- a/src/18_4_accessing_bitcoind_with_python.py +++ /dev/null @@ -1,192 +0,0 @@ -from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException -from pprint import pprint -import logging - -# logging.basicConfig() -# logging.getLogger("BitcoinRPC").setLevel(logging.DEBUG) - -# rpc_user and rpc_password are set in the bitcoin.conf file -rpc_user = "" -rpc_pass = "" -rpc_host = "127.0.0.1" -rpc_client = AuthServiceProxy(f"http://{rpc_user}:{rpc_pass}@{rpc_host}:18332", timeout=240) - - -# Getting Basic Info -print("Getting Basic Info") -## Get Wallet Info -wallet_info = rpc_client.getwalletinfo() -print("---------------------------------------------------------------") -print("Wallet Info:") -print("-----------") -pprint(wallet_info) -print("---------------------------------------------------------------\n") - -## Get Network Info -network_info = rpc_client.getnetworkinfo() -print("---------------------------------------------------------------") -print("Network Info:") -print("------------") -pprint(network_info) -print("---------------------------------------------------------------\n") - -## Get Blockcount -block_count = rpc_client.getblockcount() -print("---------------------------------------------------------------") -print("Block Count:", block_count) -print("---------------------------------------------------------------\n") - -# Get Blockchain Info -blockchain_info = rpc_client.getblockchaininfo() -print("---------------------------------------------------------------") -print("Blockchain Info:") -print("---------------") -pprint(blockchain_info) -print("---------------------------------------------------------------\n") - -# Get Peer Info -peer_info = rpc_client.getpeerinfo() -print("---------------------------------------------------------------") -print("Peer Info:") -print("---------") -pprint(peer_info) -print("---------------------------------------------------------------\n") - - -# Exploring a Block -print("Exploring a Block") -blockhash_630000 = rpc_client.getblockhash(630000) -block_630000 = rpc_client.getblock(blockhash_630000) -nTx = block_630000['nTx'] -if nTx > 10: - it_txs = 10 - list_tx_heading = "First 10 transactions: " -else: - it_txs = nTx - list_tx_heading = f"All the {it_txs} transactions: " -print("---------------------------------------------------------------") -print("BLOCK No. 630000 :") -print("-------------") -print("Block Hash...: ", blockhash_630000) -print("Merkle Root..: ", block_630000['merkleroot']) -print("Block Size...: ", block_630000['size']) -print("Block Weight.: ", block_630000['weight']) -print("Nonce........: ", block_630000['nonce']) -print("Difficulty...: ", block_630000['difficulty']) -print("Number of Tx.: ", nTx) -print(list_tx_heading) -print("---------------------") -i = 0 -while i < it_txs: - print(i, ":", block_630000['tx'][i]) - i += 1 -print("---------------------------------------------------------------\n") - - -# Exploring an Address -print("Exploring an Address") -track_address = "" -tx_list = rpc_client.listtransactions() -address_tx_list = [] -for tx in tx_list: - if tx['address'] == track_address: - address_tx_list.append(tx) -pprint(address_tx_list) - - -# Exploring UTXOs -print("Exploring UTXOs") -## List Utxos -utxos = rpc_client.listunspent() -print("Utxos: ") -print("-----") -pprint(utxos) -print("------------------------------------------\n") -## Select a UTXO - first one selected here -utxo_txid = utxos[0]['txid'] -## Get UTXO Hex -utxo_hex = rpc_client.gettransaction(utxo_txid)['hex'] -## Get tx Details -utxo_tx_details = rpc_client.decoderawtransaction(utxo_hex) -print("Details of Utxo with txid:", utxo_txid) -print("---------------------------------------------------------------") -print("UTXO Details:") -print("------------") -pprint(utxo_tx_details) -print("---------------------------------------------------------------\n") - - -# Creating a Transaction -print("Creating a Transaction") -## Create New Addresses -new_address = rpc_client.getnewaddress("Learning-Bitcoin-from-the-Command-Line") -new_change_address = rpc_client.getrawchangeaddress() -print("---------------------------------------------------------------") -print("New Address Recipient: ", new_address) -print("New Address Change...: ", new_change_address) -print("---------------------------------------------------------------\n") - -## Set Transaction Details -selected_utxo = utxos[0] # we select the first utxo here -utxo_address = selected_utxo['address'] -utxo_txid = selected_utxo['txid'] -utxo_vout = selected_utxo['vout'] -utxo_amt = float(selected_utxo['amount']) -# here we are sending bitcoins to an address generated by us in our own wallet. -recipient_address = new_address -recipient_amt = utxo_amt / 2 # sending half coins to recipient -miner_fee = 0.00000200 # choose appropriate fee based on your tx size -change_address = new_change_address -change_amt = float('%.8f'%((utxo_amt - recipient_amt) - miner_fee)) -print("---------------------------------------------------------------") -print("Transaction Details:") -print("-------------------") -print("UTXO Address.......: ", utxo_address) -print("UTXO Txid..........: ", utxo_txid) -print("Vector ID of Output: ", utxo_vout) -print("UTXO Amount........: ", utxo_amt) -print("Tx Amount..........: ", recipient_amt) -print("Recipient Address..: ", recipient_address) -print("Change Address.....: ", change_address) -print("Miner Fee..........: ", miner_fee) -print("Change Amount......: ", change_amt) -print("---------------------------------------------------------------\n") - -## create a raw transacion -txids_vouts = [{"txid": utxo_txid, "vout": utxo_vout}] -addresses_amts = {f"{recipient_address}": recipient_amt, f"{change_address}": change_amt} -create_raw_tx = rpc_client.createrawtransaction(txids_vouts, addresses_amts) -unsigned_tx_hex = create_raw_tx -print("---------------------------------------------------------------") -print("Unsigned Transaction Hex: ", unsigned_tx_hex) -print("---------------------------------------------------------------\n") - - -## Check details of the Transaction -tx_details = rpc_client.decoderawtransaction(unsigned_tx_hex) -print("---------------------------------------------------------------") -print("New Transaction Details:") -print("-----------------------") -pprint(tx_details) -print("---------------------------------------------------------------\n") - -## Sign Transanciton -address_priv_key = [] # list of priv keys of each utxo -address_priv_key.append(rpc_client.dumpprivkey(utxo_address)) -print("---------------------------------------------------------------") -print(f"Private key of address {utxo_address}: ", address_priv_key) -print("---------------------------------------------------------------\n") -signed_tx = rpc_client.signrawtransactionwithkey(unsigned_tx_hex, address_priv_key) -print("---------------------------------------------------------------") -print("Signed Transaction: ") -print("----------------------") -pprint(signed_tx) -print("---------------------------------------------------------------\n") - -## Send Transaction -send_tx = rpc_client.sendrawtransaction(signed_tx['hex']) -print("---------------------------------------------------------------") -print("TXID of sent transaction: ", send_tx) -print("---------------------------------------------------------------\n") - -print("Now explore! ;)")