コード例 #1
0
class TranInfoLogParser(BaseParser):
    table = "trans_ret_log"

    colIndex = [
        ColumnIndex(name="trans_id", fromAppend=True),
        ColumnIndex(name="log_index", fromAppend=True),
        ColumnIndex(name="address", oc=OriginColumn(name="address")),
        ColumnIndex(name="data", oc=OriginColumn(name="data")),
    ]

    def Parse(self, writer, data, appendData):
        ret = super().Parse(writer, data, appendData)
        if not ret:
            return False
        for i, topic in enumerate(data.topics):
            writer.write(
                "trans_ret_log_topics",
                [
                    appendData["trans_id"],
                    appendData["log_index"],
                    i,
                    bytes2HexStr(topic),
                ],
            )
        return True
コード例 #2
0
class CallValueInfoParser(BaseParser):
    table = "trans_ret_inter_trans_call_value"

    colIndex = [
        ColumnIndex(name="trans_id", fromAppend=True),
        ColumnIndex(name="inter_index", fromAppend=True),
        ColumnIndex(name="call_index", fromAppend=True),
        ColumnIndex(
            name="call_value",
            oc=OriginColumn(name="callValue", colType="int64"),
        ),
        ColumnIndex(
            name="token_id",
            oc=OriginColumn(name="tokenId", colType="string"),
        ),
    ]
コード例 #3
0
class TranInfoInterTransParser(BaseParser):
    table = "trans_ret_inter_trans"

    colIndex = [
        ColumnIndex(name="trans_id", fromAppend=True),
        ColumnIndex(name="inter_index", fromAppend=True),
        ColumnIndex(name="hash", oc=OriginColumn(name="hash")),
        ColumnIndex(
            name="caller_address",
            oc=OriginColumn(name="caller_address", castFunc=addressFromBytes),
        ),
        ColumnIndex(
            name="transferTo_address",
            oc=OriginColumn(name="transferTo_address",
                            castFunc=addressFromBytes),
        ),
        ColumnIndex(name="note", oc=OriginColumn(name="note")),
        ColumnIndex(name="rejected",
                    oc=OriginColumn(name="rejected", colType="bool")),
    ]

    callValueParser = CallValueInfoParser()

    def Parse(self, writer, data, appendData):
        ret = super().Parse(writer, data, appendData)
        if not ret:
            return False
        for i, callValue in enumerate(data.callValueInfo):
            appendData.update({"call_index": i})
            ret = self.callValueParser.Parse(writer, callValue, appendData)
            if not ret:
                return False
        return True
コード例 #4
0
class FrozenSupplyParser(BaseParser):
    table = "asset_issue_v2_frozen_supply"
    colIndex = [
        ColumnIndex(
            name="asset_id",
            fromAppend=True,
        ),
        ColumnIndex(
            name="asset_name",
            fromAppend=True,
        ),
        ColumnIndex(
            name="frozen_amount",
            oc=OriginColumn(name="frozen_amount", colType="int64"),
        ),
        ColumnIndex(
            name="frozen_days",
            oc=OriginColumn(name="frozen_days", colType="int64"),
        ),
    ]
コード例 #5
0
class OrderDetailParser(BaseParser):
    table = "trans_ret_order_detail"

    colIndex = [
        ColumnIndex(name="trans_id", fromAppend=True),
        ColumnIndex(name="order_index", fromAppend=True),
        ColumnIndex(name="call_index", fromAppend=True),
        ColumnIndex(
            name="makerOrderId",
            oc=OriginColumn(name="makerOrderId"),
        ),
        ColumnIndex(
            name="takerOrderId",
            oc=OriginColumn(name="takerOrderId"),
        ),
        ColumnIndex(
            name="fillSellQuantity",
            oc=OriginColumn(name="fillSellQuantity", colType="bigint"),
        ),
        ColumnIndex(
            name="fillSellQuantity",
            oc=OriginColumn(name="fillSellQuantity", colType="bigint"),
        ),
    ]
コード例 #6
0
class AssetIssueV2Parser(BaseParser):
    def __init__(self):
        self.frozenSupplyParser = FrozenSupplyParser()

    colIndex = [
        ColumnIndex(
            name="id",
            oc=OriginColumn(
                name="id", colType="string"
            ),  # TODO: check id not null and unique after decode
        ),
        # ColumnIndex(
        #     name="owner_address",
        #     oc=OriginColumn(name="owner_address", castFunc=addressFromBytes),
        # ),
        ColumnIndex(
            name="name",
            oc=OriginColumn(name="name", castFunc=autoDecode),
        ),
        # ColumnIndex(
        #     name="abbr",
        #     oc=OriginColumn(name="abbr", castFunc=autoDecode),
        # ),
        # ColumnIndex(
        #     name="total_supply",
        #     oc=OriginColumn(name="total_supply", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="trx_num",
        #     oc=OriginColumn(name="trx_num", colType="int32"),
        # ),
        # ColumnIndex(
        #     name="precision",
        #     oc=OriginColumn(name="precision", colType="int32"),
        # ),
        # ColumnIndex(
        #     name="num",
        #     oc=OriginColumn(name="num", colType="int32"),
        # ),
        # ColumnIndex(
        #     name="start_time",
        #     oc=OriginColumn(name="start_time", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="end_time",
        #     oc=OriginColumn(name="end_time", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="order_",
        #     oc=OriginColumn(name="order", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="vote_score",
        #     oc=OriginColumn(name="account_address", colType="int32"),
        # ),
        # ColumnIndex(
        #     name="description",
        #     oc=OriginColumn(name="description", castFunc=autoDecode),
        # ),
        # ColumnIndex(
        #     name="url",
        #     oc=OriginColumn(name="url", castFunc=autoDecode),
        # ),
        # ColumnIndex(
        #     name="free_asset_net_limit",
        #     oc=OriginColumn(name="free_asset_net_limit", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="public_free_asset_net_limit",
        #     oc=OriginColumn(name="public_free_asset_net_limit", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="public_free_asset_net_usage",
        #     oc=OriginColumn(name="public_free_asset_net_usage", colType="int64"),
        # ),
        # ColumnIndex(
        #     name="public_latest_free_net_time",
        #     oc=OriginColumn(name="public_latest_free_net_time", colType="int64"),
        # ),
    ]
    table = "asset_issue_v2"

    def Parse(self, writer, data, appendData):
        ret = super().Parse(writer, data, appendData)
        return ret
        if not ret:
            return False
        frozenAppend = {
            "asset_id": data.id,
            "asset_name": autoDecode(data.name),
        }
        for f in data.frozen_supply:
            ret = self.frozenSupplyParser.Parse(writer, f, frozenAppend)
            if not ret:
                return False
        return True
コード例 #7
0
class TransParser(BaseParser):

    colIndex = [
        ColumnIndex(name="id", fromAppend=True),
        ColumnIndex(name="block_hash", fromAppend=True),
        ColumnIndex(name="block_num", fromAppend=True),
        # ret
        ColumnIndex(name="fee",
                    oc=_retWrapper(OriginColumn(name="fee", colType="int64"))),
        ColumnIndex(name="ret",
                    oc=_retWrapper(OriginColumn(name="ret", colType="int"))),
        ColumnIndex(
            name="contract_type",
            oc=_rawDataWrapper(
                OriginColumn(
                    name="contract",
                    oc=OriginColumn(name="type", colType="int"),
                    listHead=True,
                )),
        ),
        ColumnIndex(
            name="contract_ret",
            oc=_retWrapper(OriginColumn(name="contractRet", colType="int")),
        ),
        ColumnIndex(
            name="asset_issue_id",
            oc=_retWrapper(OriginColumn(name="assetIssueID",
                                        colType="string")),
        ),
        ColumnIndex(
            name="withdraw_amount",
            oc=_retWrapper(
                OriginColumn(name="withdraw_amount", colType="int64")),
        ),
        ColumnIndex(
            name="unfreeze_amount",
            oc=_retWrapper(
                OriginColumn(name="unfreeze_amount", colType="int64")),
        ),
        ColumnIndex(
            name="exchange_received_amount",
            oc=_retWrapper(
                OriginColumn(name="exchange_received_amount",
                             colType="int64")),
        ),
        ColumnIndex(
            name="exchange_inject_another_amount",
            oc=_retWrapper(
                OriginColumn(name="exchange_inject_another_amount",
                             colType="int64")),
        ),
        ColumnIndex(
            name="exchange_withdraw_another_amount",
            oc=_retWrapper(
                OriginColumn(name="exchange_withdraw_another_amount",
                             colType="int64")),
        ),
        ColumnIndex(
            name="exchange_id",
            oc=_retWrapper(OriginColumn(name="exchange_id", colType="int64")),
        ),
        ColumnIndex(
            name="shielded_transaction_fee",
            oc=_retWrapper(
                OriginColumn(name="shielded_transaction_fee",
                             colType="int64")),
        ),
        ColumnIndex(
            name="order_id",
            oc=_retWrapper(OriginColumn(name="order_id", castFunc=autoDecode)),
        ),
        ColumnIndex(
            name="ref_block_bytes",
            oc=_rawDataWrapper(OriginColumn(name="ref_block_bytes")),
        ),
        ColumnIndex(
            name="ref_block_num",
            oc=_rawDataWrapper(
                OriginColumn(name="ref_block_num", colType="int64")),
        ),
        ColumnIndex(
            name="ref_block_hash",
            oc=_rawDataWrapper(
                OriginColumn(name="ref_block_hash", colType="bytes")),
        ),
        ColumnIndex(
            name="expiration",
            oc=_rawDataWrapper(OriginColumn(name="expiration",
                                            colType="int64")),
        ),
        ColumnIndex(
            name="trans_time",
            oc=_rawDataWrapper(OriginColumn(name="timestamp",
                                            colType="int64")),
        ),
        ColumnIndex(
            name="fee_limit",
            oc=_rawDataWrapper(OriginColumn(name="fee_limit",
                                            colType="int64")),
        ),
        ColumnIndex(
            name="scripts",
            # oc=_rawDataWrapper(OriginColumn(name="scripts", castFunc=autoDecode)),
            oc=_rawDataWrapper(OriginColumn(name="scripts")),
        ),
        ColumnIndex(
            name="data",
            # oc=_rawDataWrapper(OriginColumn(name="data", castFunc=autoDecode)),
            oc=_rawDataWrapper(OriginColumn(name="data")),
        ),
        ColumnIndex(
            name="signature",
            oc=OriginColumn(
                name="signature",
                listHead=True,
                oc=OriginColumn(name="signature", colType="bytes"),
            ),
        ),
    ]

    table = "trans"

    def Parse(self, writer, data, appendData):
        return super().Parse(writer, data, appendData)
コード例 #8
0
class TransactionInfoParser(BaseParser):
    table = "trans_ret"

    colIndex = [
        ColumnIndex(name="id", oc=OriginColumn(name="id")),
        ColumnIndex(name="fee", oc=OriginColumn(name="fee", colType="int64")),
        ColumnIndex(name="block_number",
                    oc=OriginColumn(name="blockNumber", colType="int64")),
        ColumnIndex(
            name="block_timestamp",
            oc=OriginColumn(name="blockTimeStamp", colType="int64"),
        ),
        ColumnIndex(
            name="contract_address",
            oc=OriginColumn(name="contract_address",
                            castFunc=addressFromBytes),
        ),
        ColumnIndex(
            name="receipt_energy_usage",
            oc=_receiptWrapper(
                OriginColumn(name="energy_usage", colType="int64")),
        ),
        ColumnIndex(
            name="receipt_energy_fee",
            oc=_receiptWrapper(OriginColumn(name="energy_fee",
                                            colType="int64")),
        ),
        ColumnIndex(
            name="receipt_origin_energy_usage",
            oc=_receiptWrapper(
                OriginColumn(name="origin_energy_usage", colType="int64")),
        ),
        ColumnIndex(
            name="receipt_energy_usage_total",
            oc=_receiptWrapper(
                OriginColumn(name="energy_usage_total", colType="int64")),
        ),
        ColumnIndex(
            name="receipt_net_usage",
            oc=_receiptWrapper(OriginColumn(name="net_usage",
                                            colType="int64")),
        ),
        ColumnIndex(
            name="receipt_net_fee",
            oc=_receiptWrapper(OriginColumn(name="net_fee", colType="int64")),
        ),
        ColumnIndex(
            name="receipt_result",
            oc=_receiptWrapper(OriginColumn(name="result", colType="int")),
        ),
        ColumnIndex(name="result",
                    oc=OriginColumn(name="result", colType="int")),
        ColumnIndex(
            name="resMessage",
            oc=OriginColumn(name="resMessage"),
        ),
        ColumnIndex(
            name="asset_issue_id",
            oc=OriginColumn(name="assetIssueID", colType="string"),
        ),
        ColumnIndex(
            name="withdraw_amount",
            oc=OriginColumn(name="withdraw_amount", colType="int64"),
        ),
        ColumnIndex(
            name="unfreeze_amount",
            oc=OriginColumn(name="unfreeze_amount", colType="int64"),
        ),
        ColumnIndex(
            name="exchange_received_amount",
            oc=OriginColumn(name="exchange_received_amount", colType="int64"),
        ),
        ColumnIndex(
            name="exchange_inject_another_amount",
            oc=OriginColumn(name="exchange_inject_another_amount",
                            colType="int64"),
        ),
        ColumnIndex(
            name="exchange_withdraw_another_amount",
            oc=OriginColumn(name="exchange_withdraw_another_amount",
                            colType="int64"),
        ),
        ColumnIndex(name="exchange_id",
                    oc=OriginColumn(name="exchange_id", colType="int64")),
        ColumnIndex(
            name="shielded_transaction_fee",
            oc=OriginColumn(name="shielded_transaction_fee", colType="int64"),
        ),
        ColumnIndex(
            name="order_id",
            oc=OriginColumn(name="orderId", castFunc=autoDecode),
        ),
        ColumnIndex(name="packing_fee",
                    oc=OriginColumn(name="packingFee", colType="int64")),
    ]

    logParser = TranInfoLogParser()
    interTransParser = TranInfoInterTransParser()
    orderDetailParser = OrderDetailParser()

    def Parse(self, writer, data, appendData):
        ret = super().Parse(writer, data, appendData)
        if not ret:
            return False
        transId = self.colIndex[0].oc.getattr(data)
        if hasattr(data, "contractResult"):
            for i, contractResult in enumerate(data.contractResult):
                writer.write(
                    "trans_ret_contract_result",
                    [transId, i, bytes2HexStr(contractResult)],
                )
        if hasattr(data, "log"):
            for i, log in enumerate(data.log):
                ret = self.logParser.Parse(writer, log, {
                    "trans_id": transId,
                    "log_index": i
                })
                if not ret:
                    return False
        if hasattr(data, "internal_transactions"):
            for i, inter_trans in enumerate(data.internal_transactions):
                ret = self.interTransParser.Parse(writer, inter_trans, {
                    "trans_id": transId,
                    "inter_index": i
                })
                if not ret:
                    return False
        if hasattr(data, "orderDetails"):
            for i, order in enumerate(data.orderDetails):
                ret = self.orderDetailParser.Parse(writer, order, {
                    "trans_id": transId,
                    "order_index": i
                })
                if not ret:
                    return False
        return True