美文网首页
2020-07-10数据处理

2020-07-10数据处理

作者: 程序里的小仙女 | 来源:发表于2020-07-10 15:11 被阅读0次
# -*- coding: utf-8 -*-
"""
 @Time   : 2020/7/10 10:52 
 @Athor   : LinXiao
 @功能   :
"""
# ------------------------------
from pprint import pprint
from copy import deepcopy


def get_outputList(tx):
    voutValues=0
    vinValues=0

    outputValue=0
    vout=tx["vout"]  # list
    vin=tx["vin"]  # list
    for vi in vin:
        outputList=[]
        if vi['id'] == 'coinbase':
            for vout_data in vout:

                if vout_data["address"] != "":
                    dic={
                        "address": vout_data["address"][0],
                        "value": vout_data["value"]
                    }
                    outputValue=dic["value"]
                    outputList.append(dic)
                    # pprint(f"coinbase  outputList is:  {outputList}")
                    # pprint(f"coinbase  outputValue is:  {outputValue}")
                    # return outputValue, outputList
                    btc_data={

                        "outputList": outputList,
                        "voutValues": outputValue,
                        "vinValues": 0,
                        "outputValue": dic["value"],
                        "fee": dic["value"],
                    }
                    # pprint(btc_data)
                    tx.update(btc_data)
                    pprint(tx)
                    return tx
        else:
            # 判断vin中的地址是否在vout中出现,若出现在vout中,则删除掉vout中的这笔交易

            vout1=deepcopy(vout)
            for vi in vin:
                vinValues+=vi["value"]
                for vo in vout1:
                    if vi["address"] == vo["address"]:
                        vout1.remove(vo)

            for vo1 in vout1:
                output={
                    "address": vo1["address"][0],
                    "value": vo1["value"]
                }
                outputValue+=vo1["value"]
                outputList.append(output)

        for vot in vout:
            voutValues+=vot["value"]

        fee=vinValues - voutValues

        # pprint(f"outputList :  {outputList}")
        # pprint(f"voutValues :  {voutValues}")
        # pprint(f"vinValues  :  {vinValues}")
        # pprint(f"outputValue:  {outputValue}")
        # pprint(f"fee   :  {fee}")
        # return outputValue, outputList, voutValues, vinValues, fee
        btc_data={

            "outputList": outputList,
            "voutValues": voutValues,
            "vinValues": vinValues,
            "outputValue": outputValue,
            "fee": fee,
        }
        tx.update(btc_data)
        pprint(tx)
        return tx


# pprint(outputList)


if __name__ == '__main__':
    tx={'_id': '0ca067b886f20efcf9c4cdaa4317f68bb39e0d3adf04eba5ddc025a8ef35119d',
        'blocknumber': 77913,
        'blocktime': 1283548095,
        'vin': [{'address': [''], 'id': 'coinbase', 'value': 0.0}],
        'vout': [{'address': ['1BwaFhJVVAwzv7zWyfyxfW9QKBdmruYUB4'],
                  'id': '0',
                  'value': 50.0}]}

    tx1={"_id": "a82bcbade7f2ab98a0b9208dae2e5fa6b44f5e37f8403ec8f74ca63c4d6189d2",
         "blocknumber": 80002,
         "blocktime": 1284615935,
         "vin": [{"id": "11", "value": 10.50, "address": ["1LgsbKRKTcw7gYohUwntSUh6rtEWShxSH8"]},
                 {"id": "232", "value": 20.0, "address": ["qwe234"]},
                 {"id": "22", "value": 30.0, "address": ["qwerty123"]},
                 {"id": "22", "value": 80.0, "address": ["qwerty12323455"]},
                 ],
         "vout": [{"id": "0", "value": 10.0, "address": ["1LgsbKRKTcw7gYohUwntSUh6rtEWShxSH8"]},
                  {"id": "22", "value": 20.0, "address": ["qwe123"]},
                  {"id": "232", "value": 30.0, "address": ["zuuEcUSsBjL7s"]},
                  {"id": "232", "value": 40.0, "address": ["eeeeeeee"]},
                  {"id": "232", "value": 10.0, "address": ["qwerty12323455"]}
                  ]}

    # pprint(tx)

    get_outputList(tx1)

相关文章

网友评论

      本文标题:2020-07-10数据处理

      本文链接:https://www.haomeiwen.com/subject/fgrmcktx.html