zoukankan      html  css  js  c++  java
  • 手动计算UTXO

    const TX_TYPE_IN = 1;
    const TX_TYPE_OUT = 2;
    
    export const CreateUtxos = async (address: string, data: any) => {
        let mapData = new Map();
        let temp = new Map();
        for (const iter of data) {
            mapData.set(iter.hash, iter);
            // console.log(iter.hash);
            let type = TX_TYPE_IN;
            for (const input of iter.inputs) {
                if (input.coin.coinbase) continue;
                if (address == input.coin.address) {
                    type = TX_TYPE_OUT;
                }
            }
            let out = -1;
            let balance = 0;
            for (const output of iter.outputs) {
                out++;
                if (address == output.address) {
                    balance = output.value;
                    break;
                }
            }
            temp.set(iter.hash, { type, out, balance, spentTxid: null, spentHeight: 0 });
        }
    
        for (const [key, value] of mapData) {
            for (const input of value.inputs) {
                if (input.coinbase) continue;
                if (temp.has(input.prevout.hash)) {
                    const pre = temp.get(input.prevout.hash);
                    const local = temp.get(key);
                    if (pre.spentHeight <= 0 && (pre.type != local.type || local.type == TX_TYPE_OUT)) {
                        pre.spentTxid = value.hash;
                        pre.spentHeight = value.height;
                    }
                }
            }
        }
        let balance = 0;
        let unspentList: Array<any> = [];
        for (const [key, value] of temp) {
            if (value.spentHeight === 0) {
                balance += value.balance;
                // console.info(key, value.out);
                unspentList.push(value);
            } /*else {
                temp.delete(key);
            }*/
        }
    
        // return {balance, unspentList: Array.from(temp.values())}
        return { balance, unspentList };
    }
    
    
  • 相关阅读:
    mongoDb学习以及spring管理 (包括百度云配置)
    Python循环嵌套
    Web应用功能测试测试点
    二维数组联通子数组
    二维数组最大子数组问题
    环一维数组最大子数组问题
    电梯调研
    最大子数组问题
    小学生题目
    3.13题目思路
  • 原文地址:https://www.cnblogs.com/flying_bat/p/11691103.html
Copyright © 2011-2022 走看看