Пример #1
0
def analysis_block():
    gph = Graphene(node=nodeaddress)
    from PythonMiddleware.instance import set_shared_graphene_instance
    set_shared_graphene_instance(gph)
    while 1:
        if pending_block_num_q:
            try:
                pending_block_num_deque_lock.acquire()
                block_num = pending_block_num_q.popleft()
                pending_block_num_deque_lock.release()
                logger.debug('pop block number: {}'.format(block_num))
                try:
                    block_info = gph.rpc.get_block(block_num)
                    time = block_info["timestamp"]
                    transactions = block_info["transactions"]
                    operations_list = parse_operations(gph, block_num, time,
                                                       transactions)
                    #logger.debug('block: {}, trx_list: {}'.format(block_num, operations_list))
                except Exception as e:
                    logger.error(
                        'parse block exception. block {}, error {}'.format(
                            block_num, repr(e)))
                if operations_list:
                    op_deque_lock.acquire()
                    operations_q.append(operations_list)
                    op_deque_lock.release()
            except Exception as e:
                logger.error("pending_block_num_q: {}, except: '{}'".format(
                    pending_block_num_q, repr(e)))
        sleep(0.7)
Пример #2
0
def listen_block():
    def on_block_callback(recv_block_id):
        global global_last_block_num
        info = gph.info()
        # logger.debug('info: {}'.format(info))
        head_block_id = info['head_block_id']
        head_block_number = info['head_block_number']
        # logger.debug('head_block_num {}, recv_block_id: {}, head_block_id {}'.format(head_block_number, recv_block_id, head_block_id))
        if recv_block_id == head_block_id:
            if head_block_number != global_last_block_num+1:
                if global_last_block_num > 0:
                    logger.info('head_block_num {}, recv_block_id: {}, head_block_id {}'.format(head_block_number, recv_block_id, head_block_id))
                    logger.warn('current block num: {}, last block num: {}'.format(head_block_number, global_last_block_num))
                    #send message
            global_last_block_num = head_block_number
        else:
            try:
                logger.info('head_block_num {}, recv_block_id: {}, head_block_id {}'.format(head_block_number, recv_block_id, head_block_id))
                block = gph.rpc.get_block(global_last_block_num+1)
                global_last_block_num = global_last_block_num+1
                logger.warn('>> get_block {}, recv_block_id: {}, head_block_id: {}, get block response: {}'.format(
                    global_last_block_num, recv_block_id, head_block_id, block['block_id']))
            except Exception as e:
                logger.error('get_block exception. block {}, error {}'.format(global_last_block_num+1, repr(e)))

    gph = Graphene(node=nodeaddress)
    from PythonMiddleware.instance import set_shared_graphene_instance
    set_shared_graphene_instance(gph)
    notify = Notify(
        on_block = on_block_callback,
        graphene_instance = gph
    )
    notify.listen()
Пример #3
0
def listen_block():
    def on_block_callback(recv_block_id):
        info = gph.info()
        #logger.debug('info: {}'.format(info))
        head_block_id = info['head_block_id']
        block_num = info['head_block_number']
        logger.info(
            'recv_block_id: {}, head_block_id {}, head_block_num {}'.format(
                recv_block_id, head_block_id, block_num))
        if recv_block_id == head_block_id:
            pending_block_num_deque_lock.acquire()
            pending_block_num_q.append(block_num)
            pending_block_num_deque_lock.release()
            logger.info("pending deque >>>: {}".format(pending_block_num_q))

            try:
                block = gph.rpc.get_block(block_num)
                #witness_id = block['witness']
                # block_witness = gph.rpc.get_object(gph.rpc.get_object(block['witness'])['witness_account'])['name']
                witness_obj = gph.rpc.get_object(block['witness'])
                witness_account_obj = gph.rpc.get_object(
                    witness_obj['witness_account'])
            except Exception as e:
                logger.error('get_object exception. block {}, error {}'.format(
                    block_num, repr(e)))
            block_time = block['timestamp']
            transactions = block["transactions"]
            witness_sign = block['witness_signature']
            trx_total = 0
            ops_total = 0
            transactions_id = []
            if transactions:
                trx_total = len(transactions)
                for trx in transactions:
                    transactions_id.append(trx[0])
                    ops_total += len(trx[1]["operations"])
            block_data = {
                "block_num": block_num,
                "time": block_time,
                "witness_id": witness_obj["id"],
                "witness_account_id": witness_account_obj['id'],
                "witness_account_name": witness_account_obj["name"],
                "witness_sign": witness_sign,
                "transactions_total": trx_total,
                "transactions_id": transactions_id,
                "operations_total": ops_total
            }
            block_info_deque_lock.acquire()
            block_info_q.append(block_data)
            block_info_deque_lock.release()

    gph = Graphene(node=nodeaddress)
    from PythonMiddleware.instance import set_shared_graphene_instance
    set_shared_graphene_instance(gph)
    notify = Notify(on_block=on_block_callback, graphene_instance=gph)
    notify.listen()  # 启动监听服务
Пример #4
0
    def __init__(self, **kwargs):
        print("kwargs:", kwargs)

        self.gph = Graphene(node=self.node_address,
                            blocking=self.blocking,
                            **kwargs)
        set_shared_graphene_instance(self.gph)
        if self.gph.wallet.created() is False:
            self.gph.wallet.newWallet(self.wallet_pwd)
        self.gph.wallet.unlock(self.wallet_pwd)
        try:
            self.gph.wallet.addPrivateKey(self.wifkey)
        except:
            pass
Пример #5
0
    "id": "1.2.16",
    "private_key": "5J2SChqa9QxrCkdMor9VC2k9NT4R4ctRrJA6odQCPkb3yL89vxo",
    "public_key": "COCOS56a5dTnfGpuPoWACnYj65dahcXMpTrNQkV3hHWCFkLxMF5mXpx",
}

## wallet_password
wallet_password = "******"

## chain-node ws config
# nodeAddress = "wss://api.cocosbcx.net" 
nodeAddress = "wss://test.cocosbcx.net" 
# nodeAddress = "ws://127.0.0.1:8049"
################################ config END ################################

gph = Graphene(node=nodeAddress, blocking=True)
set_shared_graphene_instance(gph)

def get_account(name):
    try:
        account = Account(name)
        return account
    except Exception as e:
        error_msg = repr(e)
        print('[WARN]name {}, error: {}'.format(name, repr(e)))
        return None

def create_account(name, owner_key, active_key, memo_key, registrar):
    try:
        response = gph.create_account(account_name=name, registrar=registrar,
                           owner_key=owner_key, active_key=active_key, memo_key=memo_key)
        print(response)