def dispatch_request(self): config = app.config['yada_config'] mongo = app.config['yada_mongo'] address = request.args.get('address') bulletin_secret = request.args.get('bulletin_secret').replace(' ', "+") rid = TU.generate_rid(config, bulletin_secret) unspent_transactions = [ x for x in BU.get_wallet_unspent_transactions( config, mongo, address) ] regular_txns = [] txns_for_fastgraph = [] for txn in unspent_transactions: if 'signatures' in txn and txn['signatures']: fastgraph = FastGraph.from_dict(config, mongo, txn) origin_fasttrack = fastgraph.get_origin_relationship(rid) if origin_fasttrack: txns_for_fastgraph.append(txn) else: if 'rid' in txn and txn[ 'rid'] == rid and 'dh_public_key' in txn and txn[ 'dh_public_key']: txns_for_fastgraph.append(txn) else: regular_txns.append(txn) wallet = { 'balance': BU.get_wallet_balance(config, mongo, address), 'unspent_transactions': regular_txns, 'txns_for_fastgraph': txns_for_fastgraph } return json.dumps(wallet, indent=4)
def dispatch_request(self): address = request.args.get('address') wallet = { 'balance': BU.get_wallet_balance(address), 'unspent_transactions': [x for x in BU.get_wallet_unspent_transactions(address)] } return json.dumps(wallet, indent=4)
def faucet(): Mongo.init() used_inputs = [] new_inputs = [] for x in Mongo.site_db.faucet.find({'active': True}): balance = BU.get_wallet_balance(x['address']) if balance >= 25: Mongo.site_db.faucet.update({'_id': x['_id']}, { 'active': False, 'address': x['address'] }) continue last_id_in_blockchain = x.get('last_id') if last_id_in_blockchain and not Mongo.db.blocks.find({ 'transactions.id': last_id_in_blockchain }).count(): continue try: transaction = TransactionFactory( fee=0.01, public_key=Config.public_key, private_key=Config.private_key, outputs=[Output(to=x['address'], value=5)]) except NotEnoughMoneyException as e: print "not enough money yet" return except Exception as e: print x try: transaction.transaction.verify() except: Mongo.site_db.failed_faucet_transactions.insert( transaction.transaction.to_dict()) print 'faucet transaction failed' TU.save(transaction.transaction) x['last_id'] = transaction.transaction.transaction_signature Mongo.site_db.faucet.update({'_id': x['_id']}, x) print 'saved. sending...', x['address'] for peer in Peers.peers: try: socketIO = SocketIO(peer.host, peer.port, wait_for_connection=False) chat_namespace = socketIO.define(ChatNamespace, '/chat') chat_namespace.emit('newtransaction', transaction.transaction.to_dict()) socketIO.disconnect() except Exception as e: print e
def dispatch_request(self): config = app.config['yada_config'] mongo = app.config['yada_mongo'] address = request.args.get('address') wallet = { 'balance': BU.get_wallet_balance(config, mongo, address), 'unspent_transactions': [ x for x in BU.get_wallet_unspent_transactions( config, mongo, address) ], } return json.dumps(wallet, indent=4)
def get_logged_in_user(): user = None tests = [] res = Mongo.db.blocks.aggregate([{ "$match": { "transactions.challenge_code": session['challenge_code'] } }, { '$unwind': "$transactions" }, { "$match": { "transactions.challenge_code": session['challenge_code'] } }]) for transaction in res: transaction = transaction['transactions'] tests = BU.get_transactions_by_rid(transaction['rid'], rid=True) for test in tests: if 'relationship' in test and 'shared_secret' in test[ 'relationship']: cipher = Crypt( hashlib.sha256(test['relationship'] ['shared_secret']).digest().encode('hex')) answer = cipher.decrypt(transaction['answer']) if answer == transaction['challenge_code']: for txn_output in transaction['outputs']: if txn_output['to'] != Config.address: to = txn_output['to'] user = { 'balance': BU.get_wallet_balance(to), 'authenticated': True, 'rid': transaction['rid'], 'bulletin_secret': test['relationship']['bulletin_secret'] } return user if user else {'authenticated': False}
def dispatch_request(self): config = app.config['yada_config'] mongo = app.config['yada_mongo'] if not request.args.get('term'): return '{}' try: term = int(request.args.get('term')) res = mongo.db.blocks.find({'index': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_height', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') res = mongo.db.blocks.find({'public_key': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_height', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') res = mongo.db.blocks.find({'transactions.public_key': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_height', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]{64}', term).group(0) res = mongo.db.blocks.find({'hash': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_hash', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term').replace(' ', '+') base64.b64decode(term) res = mongo.db.blocks.find({'id': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_id', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]{64}', term).group(0) res = mongo.db.blocks.find({'transactions.hash': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'txn_hash', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]{64}', term).group(0) res = mongo.db.blocks.find({'transactions.rid': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'txn_rid', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term').replace(' ', '+') base64.b64decode(term) res = mongo.db.blocks.find({'transactions.id': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'txn_id', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]+', term).group(0) res = mongo.db.blocks.find({ 'transactions.outputs.to': term }, { '_id': 0 }).sort('index', -1).limit(10) if res.count(): balance = BU.get_wallet_balance(config, mongo, term) return json.dumps( { 'balance': "{0:.8f}".format(balance), 'resultType': 'txn_outputs_to', 'result': [self.changetime(x) for x in res] }, indent=4) except: pass return '{}'
def explorer_search(): if not request.args.get('term'): return '{}' try: term = int(request.args.get('term')) res = Mongo.db.blocks.find({'index': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_height', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') res = Mongo.db.blocks.find({'public_key': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_height', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') res = Mongo.db.blocks.find({'transactions.public_key': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_height', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]{64}', term).group(0) res = Mongo.db.blocks.find({'hash': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_hash', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term').replace(' ', '+') base64.b64decode(term) res = Mongo.db.blocks.find({'id': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'block_id', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]{64}', term).group(0) res = Mongo.db.blocks.find({'transactions.hash': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'txn_hash', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]{64}', term).group(0) res = Mongo.db.blocks.find({'transactions.rid': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'txn_rid', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term').replace(' ', '+') base64.b64decode(term) res = Mongo.db.blocks.find({'transactions.id': term}, {'_id': 0}) if res.count(): return json.dumps( { 'resultType': 'txn_id', 'result': [changetime(x) for x in res] }, indent=4) except: pass try: term = request.args.get('term') re.search(r'[A-Fa-f0-9]+', term).group(0) res = Mongo.db.blocks.find({ 'transactions.outputs.to': term }, { '_id': 0 }).sort('index', -1) if res.count(): balance = BU.get_wallet_balance(term) return json.dumps( { 'balance': balance, 'resultType': 'txn_outputs_to', 'result': [changetime(x) for x in res] }, indent=4) except: pass return '{}'