Last active
May 18, 2018 13:43
-
-
Save carchrae/9a2a66ee8bc6f7025af69d33ea0399b8 to your computer and use it in GitHub Desktop.
sending with bitcoind like things
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -v | |
# description on how this works | |
# requires the tool `bc` to be installed, and obviously, the coin cli | |
# | |
# https://stackoverflow.com/questions/38493893/heres-how-to-send-raw-transaction-btc-using-bitcoin-cli-command | |
# path to the command you are using | |
CLI="./bitcoin-cli" | |
# you may want to set this! | |
FEE=0.00001 | |
# account or "label" as it is now known | |
ACCOUNT=$1 | |
# where to send the monies | |
TO_ADDRESS=$2 | |
# where to send any leftovers - miners get it otherwise | |
CHANGE_ADDRESS=$3 | |
# you may need to tweak this, it presumes JSON of unspent has the fields listed inside the while loop | |
TXN="`$CLI listunspent 1 9999999 | grep -B3 -A2 "$ACCOUNT"`" | |
# total amount in account | |
TOTAL=0 | |
while read -r TXID; do | |
read -r VOUT | |
read -r ADDRESS | |
read -r ACCOUNT | |
read -r SCRIPT_PUB_KEY | |
read -r AMOUNT | |
read -r line | |
# extract the tx, vout, and amount of the unspent txn | |
TXID=$(echo $TXID | cut -d'"' -f 4) | |
VOUT=$(echo $VOUT | cut -d':' -f 2) | |
VOUT=${VOUT::-1} | |
AMOUNT=$(echo $AMOUNT | cut -d':' -f 2) | |
AMOUNT=${AMOUNT::-1} | |
# add it to the total amount and inputs | |
TOTAL=$(echo $AMOUNT + $TOTAL | bc) | |
INPUTS="{\"txid\":\"$TXID\",\"vout\":$VOUT},$INPUTS" | |
done <<< "$TXN" | |
# remove trailing , | |
INPUTS=${INPUTS::-1} | |
# transfer everything! if you don't do this, you'll need to enable the change in line below that calls createrawtransaction | |
AMOUNT=$TOTAL | |
#deduct the fee (otherwise miners won't mine it) | |
AMOUNT=$(echo $AMOUNT - $FEE | bc) | |
#calculate the change | |
CHANGE=$(echo $TOTAL - $FEE | bc) | |
# SEND USING CHANGE | |
# RAW_TX=$($CLI createrawtransaction "[$INPUTS]" "{\"$TO_ADDRESS\":$AMOUNT, \"$CHANGE_ADDRESS\":$CHANGE}") | |
# SEND WITHOUT CHANGE - ALL FUNDS SENT | |
RAW_TX=$($CLI createrawtransaction "[$INPUTS]" "{\"$TO_ADDRESS\":$AMOUNT}") | |
echo "CHANGE $CHANGE - if you didn't enable CHANGE_ADDRESS you lose this and it goes to the miners. BEWARE" | |
# this is what it looks like before signing | |
echo RAW_TX: $RAW_TX | |
# now sign the transaction - wallet must be unlocked for this to work | |
SIGN_TX=$($CLI signrawtransaction $RAW_TX | grep "hex" | cut -d'"' -f 4) | |
echo SIGN_TX: $SIGN_TX | |
# WHEN YOU ARE SURE YOU WHAT YOU ARE DOING, UNCOMMENT THESE TO EXECUTE THE TX | |
# TX=$($CLI sendrawtransaction $SIGN_TX) | |
# echo "sent $AMOUNT in $TX" | |
echo "read the instructions in the script before using. then delete this, and if you lose funds, it is not my fault!" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment