def accumulation_hook(self, db_session):

        self.block.count_log = len(self.block.logs)

        for idx, log_data in enumerate(self.block.logs):
            log_digest = LogDigest(ScaleBytes(log_data))
            log_digest.decode()

            log = Log(
                block_id=self.block.id,
                log_idx=idx,
                type_id=log_digest.index,
                type=log_digest.index_value,
                data=log_digest.value,
            )

            if log.type == 'PreRuntime':
                if log.data['value']['engine'] == 'BABE':
                    # Determine block producer
                    self.block.authority_index = log.data['value']['data']['authorityIndex']
                    self.block.slot_number = log.data['value']['data']['slotNumber']

                if log.data['value']['engine'] == 'aura':
                    self.block.slot_number = log.data['value']['data']['slotNumber']

            log.save(db_session)
Example #2
0
    def accumulation_hook(self, db_session):

        self.block.count_log = len(self.block.logs)

        for idx, log_data in enumerate(self.block.logs):
            log_digest = LogDigest(ScaleBytes(log_data))
            log_digest.decode()

            if log_digest.index_value == "PreRuntime":
                data = log_digest.value.get('value').get('data')
                if data:
                    res = RawBabePreDigest(ScaleBytes("0x{}".format(data)))
                    if data[0:2] == "01" and len(data) == 34:
                        res.decode()
                        self.block.account_index = res.value.get("Secondary").get("authorityIndex")
                    else:
                        res.decode(check_remaining=False)
                        self.block.account_index = res.value.get("Primary").get("authorityIndex")

                    self.block.save(db_session)

            log = Log(
                block_id=self.block.id,
                log_idx=idx,
                type_id=log_digest.index,
                type=log_digest.index_value,
                data=log_digest.value,
            )

            log.save(db_session)
Example #3
0
    def accumulation_hook(self, db_session):

        self.block.count_log = len(self.block.logs)

        for idx, log_data in enumerate(self.block.logs):
            log_digest = LogDigest(ScaleBytes(log_data))
            log_digest.decode()

            log = Log(
                block_id=self.block.id,
                log_idx=idx,
                type_id=log_digest.index,
                type=log_digest.index_value,
                data=log_digest.value,
            )

            if log.type == 'PreRuntime':
                if log.data['value']['engine'] == 'BABE':
                    # Determine block producer
                    babe_predigest_cls = RuntimeConfiguration(
                    ).get_decoder_class('RawBabePreDigest')

                    babe_predigest = babe_predigest_cls(
                        ScaleBytes(
                            bytearray.fromhex(
                                log.data['value']['data'].replace(
                                    '0x', '')))).decode()

                    if len(list(babe_predigest.values())) > 0:

                        babe_predigest_value = list(babe_predigest.values())[0]

                        log.data['value']['data'] = babe_predigest_value
                        self.block.authority_index = log.data['value']['data'][
                            'authorityIndex']
                        self.block.slot_number = log.data['value']['data'][
                            'slotNumber']

                if log.data['value']['engine'] == 'aura':
                    aura_predigest_cls = RuntimeConfiguration(
                    ).get_decoder_class('RawAuraPreDigest')

                    aura_predigest = aura_predigest_cls(
                        ScaleBytes(
                            bytearray.fromhex(
                                log.data['value']['data'].replace(
                                    '0x', '')))).decode()

                    log.data['value']['data'] = aura_predigest
                    self.block.slot_number = aura_predigest['slotNumber']

            log.save(db_session)
    def accumulation_hook(self, db_session):

        self.block.count_log = len(self.block.logs)

        for idx, log_data in enumerate(self.block.logs):
            log_digest = LogDigest(ScaleBytes(log_data))
            log_digest.decode()

            log = Log(
                block_id=self.block.id,
                log_idx=idx,
                type_id=log_digest.index,
                type=log_digest.index_value,
                data=log_digest.value,
            )

            log.save(db_session)
    def accumulation_hook(self, db_session):
        #print('start add_block Process block processors {} =='.format("Process block log processors"))

        self.block.count_log = len(self.block.logs)
        if self.block.count_log != 0:
            for idx, log_data in enumerate(self.block.logs):
                if idx == 1:
                    num = log_data.index('03000000000000000000')
                    final = '0x' + log_data[20 + num:]
                    oy = ScaleDecoder.get_decoder_class(
                        'Vec<(SessionKey, u64)>', ScaleBytes(final))
                    oy.decode()
                    for i in range(len(oy.value)):
                        oy.value[i] = "{'authoritiy': '" + oy.value[i][
                            "col1"] + "', 'weight': " + str(
                                oy.value[i]["col2"]) + "}"
                    log = Log(
                        block_id=self.block.bid,
                        log_idx=1,
                        type_id=0,
                        type='Other',
                        data=oy.value,
                        shard_num=self.block.shard_num,
                    )
                else:
                    log_digest = LogDigest(ScaleBytes(log_data))
                    log_digest.decode()

                    log = Log(
                        block_id=self.block.bid,
                        log_idx=idx,
                        type_id=log_digest.index,
                        type=log_digest.index_value,
                        data=log_digest.value,
                        shard_num=self.block.shard_num,
                    )
                log.save(db_session)