def process_block(addr_queue, block_queue, blockheight): log = LogUtil.setup_logging('block_logger') while True: try: block_get_start = datetime.utcnow() block = get_block(blockheight) block_get_end = datetime.utcnow() break except socket.timeout: log.error('Timeout Connecting to Bitcoin Server, Retrying...') time.sleep(5) continue try: tx_pool = multiprocessing.Pool(config.cache_loader_blocktx_pool_size) get_tx_in_block_start = datetime.utcnow() rawTransactions = GetTransactionsInBlock(binascii.unhexlify(block)) get_tx_in_block_end = datetime.utcnow() start = datetime.utcnow() for tx in rawTransactions: tx_pool.apply_async(process_tx, args=(addr_queue, blockheight, tx)) tx_pool.close() tx_pool.join() end = datetime.utcnow() log.debug('Processed Block [BLOCK: %d | TX COUNT: %d | PROCESS TIME: %.2fs | GET BLOCK TIME: %.2fs | GET TX TIME: %.2fs]' % (blockheight, len(rawTransactions), (end - start).total_seconds(), (block_get_end-block_get_start).total_seconds(), (get_tx_in_block_end-get_tx_in_block_start).total_seconds())) except Exception as e: log.error('Process Block Exception: %s' % str(e)) block_queue.put(blockheight)
def process_queue(block_queue, addr_queue, queue_proc_stop): log = LogUtil.setup_logging('block_logger') while not queue_proc_stop.value: process_block_queue(block_queue) addr_drain = set() while True: try: temp_value = addr_queue.get(block=True, timeout=0.01) addr_drain.add(temp_value) if len(addr_drain) > 1000: break except Empty: break redis_conn = Redis.from_url(config.redis_addr_cache_uri) for blockheight, addr in addr_drain: if not redis_conn.get(addr): redis_conn.set(addr, blockheight) time.sleep(2)
import time import requests from addressimo.config import config from addressimo.data import IdObject from addressimo.plugin import PluginManager from addressimo.paymentprotocol.paymentrequest_pb2 import Output, PaymentRequest, PaymentDetails, Payment, PaymentACK from addressimo.util import LogUtil from ecdsa import SigningKey, curves from ecdsa.util import sigencode_der from pybitcointools import * from server import app from redis import Redis log = LogUtil.setup_logging() #################### # Bitcoin OP_CODES # #################### OP_DUP = 118 OP_HASH160 = 169 OP_EQUALVERIFY = 136 OP_CHECKSIG = 172 TEST_CERT = ''' -----BEGIN CERTIFICATE----- MIIDjjCCAnYCCQCEYiGXmolUUjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC VVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC0xvcyBBbmdlbGVzMRQw EgYDVQQKDAtOZXRraSwgSW5jLjETMBEGA1UEAwwKYWRkcmVzc2ltbzEjMCEGCSqG SIb3DQEJARYUb3BlbnNvdXJjZUBuZXRraS5jb20wHhcNMTUwNzA2MTc0NzU3WhcN
__author__ = 'Matt David' from addressimo.util import LogUtil from BaseLogger import BaseLogger log = LogUtil.setup_logging() class LocalLogger(BaseLogger): @classmethod def get_plugin_name(cls): return 'LOCAL' def log_payment_request(self, address, signer, amount, expires, memo, payment_url, mechant_data): log.info('PaymentRequest Generated [ADDRESS: %s | SIGNER: %s | AMOUNT: %s | EXPIRES: %s | MEMO: %s | PAYMENT_URL: %s | MERCHANT_DATA: %s' % ( address, signer, amount, expires, memo, payment_url, mechant_data ))
__author__ = 'frank' # System Imports # Third Party Imports from flask import Flask, Response, request # Addressimo Imports from addressimo.admin import admin from addressimo.plugin import PluginManager from addressimo.util import create_json_response, LogUtil # Setup Logging log = LogUtil.setup_logging('server.py') app = Flask(__name__) app.config.update(DEBUG=True, TESTING=True) # ########################################### # Setup Pre-Request Processing # ########################################### @app.before_request def before_request(): # Handle our pre-flight OPTIONS check if request.method == 'OPTIONS': return create_json_response() ######################
__author__ = 'frank' # System Imports # Third Party Imports from flask import Flask, Response, request # Addressimo Imports from addressimo.admin import admin from addressimo.plugin import PluginManager from addressimo.util import create_json_response, LogUtil # Setup Logging log = LogUtil.setup_logging('server.py') app = Flask(__name__) app.config.update( DEBUG=True, TESTING=True ) # ########################################### # Setup Pre-Request Processing # ########################################### @app.before_request def before_request(): # Handle our pre-flight OPTIONS check if request.method == 'OPTIONS': return create_json_response()