def __init__(self): import dogecoinrpc import praw from messages_module import Messages_module self.d = dogecoinrpc.connect_to_local() self.r = praw.Reddit(user_agent="doge_multisig v0.3 by /u/Doomhammer458") self.m = Messages_module()
def send_from_unspent(to_address,amount,fee=0): import dogecoinrpc doge = dogecoinrpc.connect_to_local() for x in doge.listunspent(): if float(x.amount) > float(amount)+fee : unspent = x break in_list = [{"txid":unspent.txid,"vout":unspent.vout}] out_dict= {to_address: float(amount)-fee,\ "DLTyy9SFcsZZ5HEciKp7vU96EiyXe9UvAP":float(unspent.amount)-float(amount)-fee} raw = doge.createrawtransaction(in_list,out_dict) sign = doge.signrawtransaction(raw) tx_id = doge.sendrawtransaction(sign["hex"]) return tx_id
def redeem_funds(multi_address,to_address): import requests from multisigtables import multisig import sqlalchemy as sql from sqlalchemy.orm import sessionmaker import dogecoinrpc doge = dogecoinrpc.connect_to_local() engine = sql.create_engine("sqlite:///multisig.db") Session = sessionmaker(bind=engine) session = Session() instance= session.query(multisig).\ filter(multisig.multiaddress == multi_address).first() url = "https://dogechain.info/api/v1/unspent/"+multi_address resp = requests.get(url).json() unspent = resp["unspent_outputs"] value = 0.0 in_list=[] in_list=[] prev=[] for i in range(len(unspent)): tx_id = unspent[i]["tx_hash"] txn = unspent[i]["tx_output_n"] value += float(unspent[i]["value"])*10**-8 decodetx = doge.getrawtransaction(tx_id,True).vout scriptpubkey = decodetx[txn]["scriptPubKey"]["hex"] in_list.append({"txid":tx_id,"vout":txn}) prev.append({'txid': tx_id,'vout': txn, "scriptPubKey": scriptpubkey, 'redeemScript': instance.redeemscript}) out_dict = {to_address:value-1} raw = doge.createrawtransaction(in_list,out_dict) sign1 = doge.signrawtransaction(raw,prev,[instance.privkey1,instance.privkey2]) tx = doge.sendrawtransaction(sign1["hex"]) return tx
def generate_mutltisig_address(): from multisigtables import multisig import sqlalchemy as sql from sqlalchemy.orm import sessionmaker import dogecoinrpc doge = dogecoinrpc.connect_to_local() engine = sql.create_engine("sqlite:///multisig.db") Session = sessionmaker(bind=engine) session = Session() db_add = multisig() aone = doge.getnewaddress() db_add.address1=aone atwo = doge.getnewaddress() db_add.address2=atwo athree = doge.getnewaddress() db_add.address3=aone pone = doge.dumpprivkey(aone) db_add.privkey1 = pone ptwo = doge.dumpprivkey(atwo) db_add.privkey2 = ptwo pthree =doge.dumpprivkey(athree) db_add.privkey3 = pthree multi = [aone,atwo,athree] multiadd = doge.createmultisig(2,multi) db_add.redeemscript=multiadd["redeemScript"] db_add.multiaddress=multiadd["address"] session.add(db_add) session.commit() session.close() return multiadd
def __init__(s, address=None): s.conn = dogecoinrpc.connect_to_local() s.destination = address
def daemon(): return dogecoinrpc.connect_to_local()
from socket import error from httplib import HTTPException import dogecoinrpc from dinosaurs.exceptions import NoCoinServerError connection = dogecoinrpc.connect_to_local() def requires_connection(func): def wraps(*args, **kwargs): try: return func(*args, **kwargs) except (HTTPException, error): raise NoCoinServerError() return wraps def get_cost(): return 1 @requires_connection def generate_address(): return connection.getnewaddress() @requires_connection def check_balance(addr): return float(connection.getbalance(addr))
args = parser.parse_args() if __name__ == "__main__": if args.config: from dogecoinrpc.config import read_config_file cfg = read_config_file(args.config) else: from dogecoinrpc.config import read_default_config cfg = read_default_config(None) port = int(cfg.get('rpcport', '22555')) rpcuser = cfg.get('rpcuser', '') connections = [] if not args.nolocal: local_conn = dogecoinrpc.connect_to_local( ) # will use read_default_config connections.append(local_conn) if not args.noremote: remote_conn = dogecoinrpc.connect_to_remote( user=rpcuser, password=cfg['rpcpassword'], host='localhost', port=port, use_https=False) connections.append(remote_conn) for conn in connections: assert (conn.getinfo().testnet) # don't test on prodnet assert (type(conn.getblockcount()) is int) assert (type(conn.getconnectioncount()) is int)
def connectToDogecoinWallet(self): self.logger.info('connecting to the local dogecoin wallet') conn = dogecoinrpc.connect_to_local() return conn
args = parser.parse_args() if __name__ == "__main__": if args.config: from dogecoinrpc.config import read_config_file cfg = read_config_file(args.config) else: from dogecoinrpc.config import read_default_config cfg = read_default_config(None) port = int(cfg.get('rpcport', '22555')) rpcuser = cfg.get('rpcuser', '') connections = [] if not args.nolocal: local_conn = dogecoinrpc.connect_to_local() # will use read_default_config connections.append(local_conn) if not args.noremote: remote_conn = dogecoinrpc.connect_to_remote( user=rpcuser, password=cfg['rpcpassword'], host='localhost', port=port, use_https=False) connections.append(remote_conn) for conn in connections: assert(conn.getinfo().testnet) # don't test on prodnet assert(type(conn.getblockcount()) is int) assert(type(conn.getconnectioncount()) is int) assert(type(conn.getdifficulty()) is Decimal) assert(type(conn.getgenerate()) is bool) conn.setgenerate(True)