Browse Source

...and transaction sending

	new file:   mmgen-txsend
philemon 11 years ago
parent
commit
fbac4cceeb
1 changed files with 79 additions and 0 deletions
  1. 79 0
      mmgen-txsend

+ 79 - 0
mmgen-txsend

@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+#
+# mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
+# Copyright (C) 2013 by philemon <mmgen-py@yandex.com>
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+"""
+mmgen-txsend: Broadcast a Bitcoin transaction to the network 
+"""
+
+import sys
+#from hashlib import sha256
+
+from mmgen.Opts import *
+from mmgen.license import *
+from mmgen.config import *
+from mmgen.tx import *
+from mmgen.utils import msg,check_infile,get_lines_from_file,confirm_or_exit
+
+prog_name = sys.argv[0].split("/")[-1]
+
+help_data = {
+	'prog_name': prog_name,
+	'desc':    "Sign a Bitcoin transaction generated by mmgen-txcreate",
+	'usage':   "[opts] <transaction file>",
+	'options': """
+-h, --help                 Print this help message
+-q, --quiet                Suppress warnings; overwrite files without asking
+"""
+}
+
+short_opts = "hq"
+long_opts  = "help","quiet"
+
+opts,cmd_args = process_opts(sys.argv,help_data,short_opts,long_opts)
+
+if len(cmd_args) == 1:
+	infile = cmd_args[0]
+	check_infile(infile)
+else: usage(help_data)
+
+# Begin execution
+
+c = connect_to_bitcoind()
+
+tx_sig = get_lines_from_file(infile,"signed transaction")[0]
+
+from binascii import unhexlify
+try: unhexlify(tx_sig)
+except:
+	msg("Invalid transaction data")
+	sys.exit(3)
+
+msg("Successfully opened signed transaction file '%s'" % infile)
+
+confirm_or_exit("", "broadcast this transaction to the network")
+
+msg("Sending transaction")
+
+try:
+	tx = c.sendrawtransaction(tx_sig)
+except:
+	msg("Unable to send transaction")
+	sys.exit(3)
+
+msg("Transaction sent: %s" % tx)
+
+print_sent_tx_to_file(tx)