예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
__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
        ))
예제 #5
0
__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()


######################
예제 #6
0
__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()