您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ IsMine函数代码示例

51自学网 2021-06-01 21:41:50
  C++
这篇教程C++ IsMine函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中IsMine函数的典型用法代码示例。如果您正苦于以下问题:C++ IsMine函数的具体用法?C++ IsMine怎么用?C++ IsMine使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了IsMine函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: LOCK2

QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx){    // individual tx do not affect any representation    static const bool fMultiSig = true;    QString strHTML;    LOCK2(cs_main, wallet->cs_wallet);    strHTML.reserve(4000);    strHTML += "<html><font face='verdana, arial, helvetica, sans-serif'>";    int64_t nTime = wtx.GetTxTime();    std::map<int, int64_t> mapDebit, mapCredit, mapChange, mapNet;    // debits    wallet->FillDebits(wtx, mapDebit, fMultiSig);    // credits (mature)    wallet->FillMatures(wtx, mapCredit, fMultiSig);    // nets (mature - debits)    FillNets(mapDebit, mapCredit, mapNet);    strHTML += "<b>" + tr("Status") + ":</b> " + FormatTxStatus(wtx);    int nRequests = wtx.GetRequestCount();    if (nRequests != -1)    {        if (nRequests == 0)            strHTML += tr(", has not been successfully broadcast yet");        else if (nRequests > 0)            strHTML += tr(", broadcast through %n node(s)", "", nRequests);    }    strHTML += "<br>";    strHTML += "<b>" + tr("Date") + ":</b> " + (nTime ? GUIUtil::dateTimeStr(nTime) : "") + "<br>";    //    // From    //    if (wtx.IsCoinBase() || wtx.IsCoinStake())    {        strHTML += "<b>" + tr("Source") + ":</b> " + tr("Generated") + "<br>";    }    else if (wtx.mapValue.count("from") && !wtx.mapValue["from"].empty())    {        // Online transaction        strHTML += "<b>" + tr("From") + ":</b> " + GUIUtil::HtmlEscape(wtx.mapValue["from"]) + "<br>";    }    else    {        // Offline transaction        if (ValueMapAllPositive(mapNet))        {            // Credit            BOOST_FOREACH(const CTxOut& txout, wtx.vout)            {                if (wallet->IsMine(txout, fMultiSig) & ISMINE_ALL)                {                    CTxDestination address;                    if (ExtractDestination(txout.scriptPubKey, address) &&                        (IsMine(*wallet, address, fMultiSig) & ISMINE_ALL))                    {                        if (wallet->mapAddressBook.count(address))                        {                            strHTML += "<b>" + tr("From") + ":</b> " + tr("unknown") + "<br>";                            strHTML += "<b>" + tr("To") + ":</b> ";                            CBitcoinAddress addr(address, txout.nColor);                            strHTML += GUIUtil::HtmlEscape(addr.ToString());                            // indicate distinction between own address and watch address                            if (IsMine(*wallet, address, fMultiSig) & ISMINE_SPENDABLE)                            {                                if (!wallet->mapAddressBook[address].empty())                                {                                    strHTML += " (" + tr("own address") + ", " + tr("label") + ": " +                                                   GUIUtil::HtmlEscape(wallet->mapAddressBook[address]) + ")";                                }                                else                                {                                    strHTML += " (" + tr("own address") + ")";                                }                            }                            else                            {                                if (!wallet->mapAddressBook[address].empty())                                {                                    strHTML += " (" + tr("watch address") + ", " + tr("label") + ": " +                                                   GUIUtil::HtmlEscape(wallet->mapAddressBook[address]) + ")";                                }                                else                                {                                    strHTML += " (" + tr("watch address") + ")";                                }                            }                            strHTML += "<br>";                        }                    }                    break;                }            }        }//.........这里部分代码省略.........
开发者ID:BreakoutCoin,项目名称:Breakout-Chain-Client,代码行数:101,


示例2: sub

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    int64_t nCredit = wtx.GetCredit(true);    int64_t nDebit = wtx.GetDebit();    int64_t nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash(), hashPrev = 0;    std::map<std::string, std::string> mapValue = wtx.mapValue;		char cbuf[256];    if (nNet > 0 || wtx.IsCoinBase() || wtx.IsCoinStake())    {        //        // Credit        //        for (unsigned int nOut = 0; nOut < wtx.vout.size(); nOut++)        {            const CTxOut& txout = wtx.vout[nOut];			if(wallet->IsMine(txout))            {                TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = parts.size(); // sequence number                sub.credit = txout.nValue;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Roscoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CRoscoinAddress(address).ToString();                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                snprintf(cbuf, sizeof(cbuf), "n_%u", nOut);                mapValue_t::const_iterator mi = wtx.mapValue.find(cbuf);                if (mi != wtx.mapValue.end() && !mi->second.empty())                    sub.narration = mi->second;				if (wtx.IsCoinBase())                {                    // Generated (proof-of-work)                    sub.type = TransactionRecord::Generated;                }                if (wtx.IsCoinStake())                {                    // Generated (proof-of-stake)                    if (hashPrev == hash)                        continue; // last coinstake output                    sub.type = TransactionRecord::Generated;                    sub.credit = nNet > 0 ? nNet : wtx.GetValueOut() - nDebit;                    hashPrev = hash;                }                parts.append(sub);            }        }    }    else    {        bool fAllFromMe = true;        BOOST_FOREACH(const CTxIn& txin, wtx.vin)            fAllFromMe = fAllFromMe && wallet->IsMine(txin);        bool fAllToMe = true;        BOOST_FOREACH(const CTxOut& txout, wtx.vout)            fAllToMe = fAllToMe && wallet->IsMine(txout);        if (fAllFromMe && fAllToMe)        {            // Payment to self            int64_t nChange = wtx.GetChange();            std::string narration("");            mapValue_t::const_iterator mi;            for (mi = wtx.mapValue.begin(); mi != wtx.mapValue.end(); ++mi)            {                if (mi->first.compare(0, 2, "n_") != 0)                    continue;                narration = mi->second;                break;            };                        parts.append(TransactionRecord(hash, nTime, TransactionRecord::SendToSelf, "", narration,                            -(nDebit - nChange), nCredit - nChange));        }        else if (fAllFromMe)        {            //            // Debit            //            int64_t nTxFee = nDebit - wtx.GetValueOut();//.........这里部分代码省略.........
开发者ID:FrankenRockt,项目名称:roscoin,代码行数:101,


示例3: IsMine

isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest, SigVersion sigversion){    bool isInvalid = false;    return IsMine(keystore, dest, isInvalid, sigversion);}
开发者ID:bsjung,项目名称:bitcoin,代码行数:5,


示例4: validateaddress

UniValue validateaddress(const JSONRPCRequest& request){    if (request.fHelp || request.params.size() != 1)        throw std::runtime_error(            "validateaddress /"address/"/n"            "/nReturn information about the given bitcoin address./n"            "/nArguments:/n"            "1. /"address/"     (string, required) The bitcoin address to validate/n"            "/nResult:/n"            "{/n"            "  /"isvalid/" : true|false,       (boolean) If the address is valid or not. If not, this is the only property returned./n"            "  /"address/" : /"address/", (string) The bitcoin address validated/n"            "  /"scriptPubKey/" : /"hex/",       (string) The hex encoded scriptPubKey generated by the address/n"            "  /"ismine/" : true|false,        (boolean) If the address is yours or not/n"            "  /"iswatchonly/" : true|false,   (boolean) If the address is watchonly/n"            "  /"isscript/" : true|false,      (boolean) If the key is a script/n"            "  /"script/" : /"type/"             (string, optional) The output script type. Possible types: nonstandard, pubkey, pubkeyhash, scripthash, multisig, nulldata, witness_v0_keyhash, witness_v0_scripthash/n"            "  /"hex/" : /"hex/",                (string, optional) The redeemscript for the p2sh address/n"            "  /"addresses/"                   (string, optional) Array of addresses associated with the known redeemscript/n"            "    [/n"            "      /"address/"/n"            "      ,.../n"            "    ]/n"            "  /"sigsrequired/" : xxxxx        (numeric, optional) Number of signatures required to spend multisig output/n"            "  /"pubkey/" : /"publickeyhex/",    (string) The hex value of the raw public key/n"            "  /"iscompressed/" : true|false,  (boolean) If the address is compressed/n"            "  /"account/" : /"account/"         (string) DEPRECATED. The account associated with the address, /"/" is the default account/n"            "  /"timestamp/" : timestamp,        (number, optional) The creation time of the key if available in seconds since epoch (Jan 1 1970 GMT)/n"            "  /"hdkeypath/" : /"keypath/"       (string, optional) The HD keypath if the key is HD and available/n"            "  /"hdmasterkeyid/" : /"<hash160>/" (string, optional) The Hash160 of the HD master pubkey/n"            "}/n"            "/nExamples:/n"            + HelpExampleCli("validateaddress", "/"1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc/"")            + HelpExampleRpc("validateaddress", "/"1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc/"")        );#ifdef ENABLE_WALLET    CWallet * const pwallet = GetWalletForJSONRPCRequest(request);    LOCK2(cs_main, pwallet ? &pwallet->cs_wallet : nullptr);#else    LOCK(cs_main);#endif    CTxDestination dest = DecodeDestination(request.params[0].get_str());    bool isValid = IsValidDestination(dest);    UniValue ret(UniValue::VOBJ);    ret.push_back(Pair("isvalid", isValid));    if (isValid)    {        std::string currentAddress = EncodeDestination(dest);        ret.push_back(Pair("address", currentAddress));        CScript scriptPubKey = GetScriptForDestination(dest);        ret.push_back(Pair("scriptPubKey", HexStr(scriptPubKey.begin(), scriptPubKey.end())));#ifdef ENABLE_WALLET        isminetype mine = pwallet ? IsMine(*pwallet, dest) : ISMINE_NO;        ret.push_back(Pair("ismine", bool(mine & ISMINE_SPENDABLE)));        ret.push_back(Pair("iswatchonly", bool(mine & ISMINE_WATCH_ONLY)));        UniValue detail = boost::apply_visitor(DescribeAddressVisitor(pwallet), dest);        ret.pushKVs(detail);        if (pwallet && pwallet->mapAddressBook.count(dest)) {            ret.push_back(Pair("account", pwallet->mapAddressBook[dest].name));        }        if (pwallet) {            const auto& meta = pwallet->mapKeyMetadata;            const CKeyID *keyID = boost::get<CKeyID>(&dest);            auto it = keyID ? meta.find(*keyID) : meta.end();            if (it == meta.end()) {                it = meta.find(CScriptID(scriptPubKey));            }            if (it != meta.end()) {                ret.push_back(Pair("timestamp", it->second.nCreateTime));                if (!it->second.hdKeypath.empty()) {                    ret.push_back(Pair("hdkeypath", it->second.hdKeypath));                    ret.push_back(Pair("hdmasterkeyid", it->second.hdMasterKeyID.GetHex()));                }            }        }#endif    }    return ret;}
开发者ID:jally76,项目名称:bitcoin,代码行数:85,


示例5: IsMine

isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey){    bool isInvalid = false;    return IsMine(keystore, scriptPubKey, isInvalid);}
开发者ID:994920256,项目名称:bitcoin,代码行数:5,


示例6: LOCK

QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx){    QString strHTML;    {        LOCK(wallet->cs_wallet);        strHTML.reserve(4000);        strHTML += "<html><font face='verdana, arial, helvetica, sans-serif'>";        int64 nTime = wtx.GetTxTime();        int64 nCredit = wtx.GetCredit();        int64 nDebit = wtx.GetDebit();        int64 nNet = nCredit - nDebit;        strHTML += "<b>" + tr("Status") + ":</b> " + FormatTxStatus(wtx);        int nRequests = wtx.GetRequestCount();        if (nRequests != -1)        {            if (nRequests == 0)                strHTML += tr(", has not been successfully broadcast yet");            else if (nRequests > 0)                strHTML += tr(", broadcast through %n node(s)", "", nRequests);        }        strHTML += "<br>";        strHTML += "<b>" + tr("Date") + ":</b> " + (nTime ? GUIUtil::dateTimeStr(nTime) : "") + "<br>";        //        // From        //        if (wtx.IsCoinBase())        {            strHTML += "<b>" + tr("Source") + ":</b> " + tr("Generated") + "<br>";        }        else if (!wtx.mapValue["from"].empty())        {            // Online transaction            if (!wtx.mapValue["from"].empty())                strHTML += "<b>" + tr("From") + ":</b> " + GUIUtil::HtmlEscape(wtx.mapValue["from"]) + "<br>";        }        else        {            // Offline transaction            if (nNet > 0)            {                // Credit                BOOST_FOREACH(const CTxOut& txout, wtx.vout)                {                    if (wallet->IsMine(txout))                    {                        CTxDestination address;                        if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                        {                            if (wallet->mapAddressBook.count(address))                            {                                strHTML += "<b>" + tr("From") + ":</b> " + tr("unknown") + "<br>";                                strHTML += "<b>" + tr("To") + ":</b> ";                                strHTML += GUIUtil::HtmlEscape(CBitcoinAddress(address).ToString());                                if (!wallet->mapAddressBook[address].empty())                                    strHTML += " (" + tr("own address") + ", " + tr("label") + ": " + GUIUtil::HtmlEscape(wallet->mapAddressBook[address]) + ")";                                else                                    strHTML += " (" + tr("own address") + ")";                                strHTML += "<br>";                            }                        }                        break;                    }                }            }        }        //        // To        //        if (!wtx.mapValue["to"].empty())        {            // Online transaction            std::string strAddress = wtx.mapValue["to"];            strHTML += "<b>" + tr("To") + ":</b> ";            CTxDestination dest = CBitcoinAddress(strAddress).Get();            if (wallet->mapAddressBook.count(dest) && !wallet->mapAddressBook[dest].empty())                strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[dest]) + " ";            strHTML += GUIUtil::HtmlEscape(strAddress) + "<br>";        }        //        // Amount        //        if (wtx.IsCoinBase() && nCredit == 0)        {            //            // Coinbase            //            int64 nUnmatured = 0;            BOOST_FOREACH(const CTxOut& txout, wtx.vout)                nUnmatured += wallet->GetCredit(txout);            strHTML += "<b>" + tr("Credit") + ":</b> ";            if (wtx.IsInMainChain())                strHTML += BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, nUnmatured)+ " (" + tr("matures in %n more block(s)", "", wtx.GetBlocksToMaturity()) + ")";            else//.........这里部分代码省略.........
开发者ID:DARKMI5T,项目名称:paycoin,代码行数:101,


示例7: sub

//.........这里部分代码省略.........        // Credit        //        for (unsigned int nOut = 0; nOut < wtx.vout.size(); nOut++)        {            const CTxOut& txout = wtx.vout[nOut];            if (wtx.nVersion == ANON_TXN_VERSION                && txout.IsAnonOutput())            {                const CScript &s = txout.scriptPubKey;                CKeyID ckidD = CPubKey(&s[2+1], 33).GetID();                if (wallet->HaveKey(ckidD))                {                    TransactionRecord sub(hash, nTime);                    sub.idx = parts.size(); // sequence number                    sub.credit = txout.nValue;                    sub.type = TransactionRecord::RecvButterfly;                    sub.address = CBitcoinAddress(ckidD).ToString();                    //sub.address = wallet->mapAddressBook[ckidD]                    snprintf(cbuf, sizeof(cbuf), "n_%u", nOut);                    mapValue_t::const_iterator mi = wtx.mapValue.find(cbuf);                    if (mi != wtx.mapValue.end() && !mi->second.empty())                        sub.narration = mi->second;                    parts.append(sub);                };            };            if (wallet->IsMine(txout))            {                TransactionRecord sub(hash, nTime);                sub.idx = parts.size(); // sequence number                CTxDestination address;                sub.credit = txout.nValue;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Bitcoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CBitcoinAddress(address).ToString();                } else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                snprintf(cbuf, sizeof(cbuf), "n_%u", nOut);                mapValue_t::const_iterator mi = wtx.mapValue.find(cbuf);                if (mi != wtx.mapValue.end() && !mi->second.empty())                    sub.narration = mi->second;                if (wtx.IsCoinBase())                {                    // Generated (proof-of-work)                    sub.type = TransactionRecord::Generated;                };                if (wtx.IsCoinStake())                {
开发者ID:butterflypay,项目名称:butterflymaster,代码行数:67,


示例8: sub

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64 nTime = wtx.GetTxTime();    int64 nCredit = wtx.GetCredit(true);    int64 nDebit = wtx.GetDebit();    int64 nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash();    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (showTransaction(wtx))    {        if (wtx.IsCoinStake()) // lomocoin: coinstake transaction        {            TransactionRecord sub(hash, nTime, TransactionRecord::StakeMint, "", -nDebit, wtx.GetValueOut());            CTxDestination address;            CTxOut txout = wtx.vout[1];            if(ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                sub.address = CBitcoinAddress(address).ToString();            parts.append(sub);        }        else if (nNet > 0 || wtx.IsCoinBase())        {            //            // Credit            //            BOOST_FOREACH(const CTxOut& txout, wtx.vout)            {                if(wallet->IsMine(txout))                {                TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = parts.size(); // sequence number                sub.credit = txout.nValue;                    if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Bitcoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CBitcoinAddress(address).ToString();                }                else                {                        // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                        sub.type = TransactionRecord::RecvFromOther;                        sub.address = mapValue["from"];                    }                    if (wtx.IsCoinBase())                    {                        // Generated                        sub.type = TransactionRecord::Generated;                    }                    parts.append(sub);                }            }        }        else        {
开发者ID:huanghao2008,项目名称:lomocoin-qt,代码行数:64,


示例9: BOOST_FOREACH

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    int64_t nCredit = wtx.GetCredit(true);    int64_t nDebit = wtx.GetDebit();    int64_t nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash(), hashPrev = 0;    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (nNet > 0 || wtx.IsCoinBase() || wtx.IsCoinStake())    {        //        // Credit - Calculate Net from CryptoLottery Rob Halford - 4-3-2015-1        //        BOOST_FOREACH(const CTxOut& txout, wtx.vout)        {            if(wallet->IsMine(txout))            {                TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = parts.size(); // sequence number                sub.credit = txout.nValue;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Bitcoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CBitcoinAddress(address).ToString();                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                if (wtx.IsCoinBase())                {                    // Generated (proof-of-work)                    sub.type = TransactionRecord::Generated;                }                if (wtx.IsCoinStake())                {                    // Generated (proof-of-stake)			        if (hashPrev == hash)                        continue; // last coinstake output					if (wtx.vout.size()==2)					{  						//Standard POR CoinStake						sub.type = TransactionRecord::Generated;						sub.credit = nNet > 0 ? nNet : wtx.GetValueOut() - nDebit;						hashPrev = hash;					}					else					{						//CryptoLottery - CoinStake - 4-3-2015						sub.type = TransactionRecord::Generated;						if (nDebit == 0)						{							sub.credit = GetMyValueOut(wallet,wtx);							sub.RemoteFlag = 1;						}						else						{							sub.credit = nNet > 0 ? nNet : GetMyValueOut(wallet,wtx) - nDebit;						}													hashPrev = hash;					}                }                parts.append(sub);            }        }    }
开发者ID:Tahvok,项目名称:Gridcoin-Research,代码行数:78,


示例10: sub

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    CAmount nCredit = wtx.GetCredit(ISMINE_ALL);    CAmount nDebit = wtx.GetDebit(ISMINE_ALL);    CAmount nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash();    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (nNet > 0 || wtx.IsCoinBase())    {        //        // Credit        //        for(unsigned int i = 0; i < wtx.tx->vout.size(); i++)        {            const CTxOut& txout = wtx.tx->vout[i];            isminetype mine = wallet->IsMine(txout);            if(mine)            {                TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = i; // vout index                sub.credit = txout.nValue;                sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Dash Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CBitcoinAddress(address).ToString();                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                if (wtx.IsCoinBase())                {                    // Generated                    sub.type = TransactionRecord::Generated;                }                parts.append(sub);            }        }    }    else    {        bool fAllFromMeDenom = true;        int nFromMe = 0;        bool involvesWatchAddress = false;        isminetype fAllFromMe = ISMINE_SPENDABLE;        BOOST_FOREACH(const CTxIn& txin, wtx.tx->vin)        {            if(wallet->IsMine(txin)) {                fAllFromMeDenom = fAllFromMeDenom && wallet->IsDenominated(txin.prevout);                nFromMe++;            }            isminetype mine = wallet->IsMine(txin);            if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;            if(fAllFromMe > mine) fAllFromMe = mine;        }        isminetype fAllToMe = ISMINE_SPENDABLE;        bool fAllToMeDenom = true;        int nToMe = 0;        BOOST_FOREACH(const CTxOut& txout, wtx.tx->vout) {            if(wallet->IsMine(txout)) {                fAllToMeDenom = fAllToMeDenom && CPrivateSend::IsDenominatedAmount(txout.nValue);                nToMe++;            }            isminetype mine = wallet->IsMine(txout);            if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;            if(fAllToMe > mine) fAllToMe = mine;        }        if(fAllFromMeDenom && fAllToMeDenom && nFromMe * nToMe) {            parts.append(TransactionRecord(hash, nTime, TransactionRecord::PrivateSendDenominate, "", -nDebit, nCredit));            parts.last().involvesWatchAddress = false;   // maybe pass to TransactionRecord as constructor argument        }        else if (fAllFromMe && fAllToMe)        {            // Payment to self            // TODO: this section still not accurate but covers most cases,            // might need some additional work however            TransactionRecord sub(hash, nTime);            // Payment to self by default            sub.type = TransactionRecord::SendToSelf;            sub.address = "";            if(mapValue["DS"] == "1")            {                sub.type = TransactionRecord::PrivateSend;                CTxDestination address;//.........这里部分代码省略.........
开发者ID:bancoteam,项目名称:dash,代码行数:101,


示例11: LogPrintf

void BuysPage::LoadBuys(){    LogPrintf("BuysPage::LoadBuys() called./n");   // date, status, vendor, item, itemid, request id    ui->tableWidget->clearContents();    ui->tableWidget->setRowCount(0);    BOOST_FOREACH(PAIRTYPE(const uint256, CBuyRequest)& p, mapBuyRequests)    {		    CTxDestination dest = p.second.buyerKey.GetID();            if(IsMine(*pwalletMain, dest))	    {		LogPrintf("Buy Request buyer key Is Mine./n");		// add it		QTableWidgetItem *dateItem = new QTableWidgetItem(QString::fromStdString(DateTimeStrFormat(p.second.nDate)));				std::string statusText = "UNKNOWN";		switch(p.second.nStatus)		{		    case LISTED:			statusText = "Listed";			break;		    case BUY_REQUESTED:			statusText = "Buy Requested";			break;		    case BUY_ACCEPTED:			statusText = "Accepted";			break;		    case BUY_REJECTED:			statusText = "Rejected";			break;		    case ESCROW_LOCK:			statusText = "Escrow Locked";			break;		    case DELIVERY_DETAILS:			statusText = "Delivery Details";			break;		    case ESCROW_PAID:			statusText = "Escrow Paid";			break;		    case REFUND_REQUESTED:			statusText = "Refund Requested";			break;		    case REFUNDED:			statusText = "Refunded";			break;		    case PAYMENT_REQUESTED:			statusText = "Payment Requested";			break;		    default:			statusText = "UNKNOWN";		 	break;		}				QTableWidgetItem *statusItem = new QTableWidgetItem(QString::fromStdString(statusText));		QTableWidgetItem *vendorItem = new QTableWidgetItem(QString::fromStdString(CBitcoinAddress(mapListings[p.second.listingId].listing.sellerKey.GetID()).ToString()));		QTableWidgetItem *itemItem = new QTableWidgetItem(QString::fromStdString(mapListings[p.second.listingId].listing.sTitle));		QTableWidgetItem *itemIdItem = new QTableWidgetItem(QString::fromStdString(mapListings[p.second.listingId].GetHash().ToString()));		QTableWidgetItem *requestIdItem = new QTableWidgetItem(QString::fromStdString(p.second.requestId.ToString()));		ui->tableWidget->insertRow(0);		ui->tableWidget->setItem(0, 0, dateItem);		ui->tableWidget->setItem(0, 1, statusItem);		ui->tableWidget->setItem(0, 2, vendorItem);		ui->tableWidget->setItem(0, 3, itemItem);		ui->tableWidget->setItem(0, 4, itemIdItem);		ui->tableWidget->setItem(0, 5, requestIdItem);	    }	    else	    {		LogPrintf("Buy request buyer key Is NOT Mine./n");	    }            }}
开发者ID:CryptoDJ,项目名称:sling,代码行数:75,


示例12: sub

/* * Decompose CWallet transaction to model transaction records. */QList<Credits_TransactionRecord> Credits_TransactionRecord::decomposeTransaction(const Credits_CWallet *keyholder_wallet, const Credits_CWalletTx &wtx){    //The decomposed transactions should not be affected by prepared deposits. Passing in empty list.    map<uint256, set<int> > mapPreparedDepositTxInPoints;    QList<Credits_TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    int64_t nCredit = wtx.GetCredit(mapPreparedDepositTxInPoints, keyholder_wallet);    int64_t nDebit = wtx.GetDebit(keyholder_wallet);    int64_t nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash();    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (nNet > 0 || wtx.IsCoinBase())    {        //        // Credit        //		for (unsigned int nOut = 0; nOut < wtx.vout.size(); nOut++)		{			const CTxOut& txout = wtx.vout[nOut];            if(keyholder_wallet->IsMine(txout))            {                Credits_TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = parts.size(); // sequence number                sub.credit = txout.nValue;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*keyholder_wallet, address))                {                    // Received by Credits Address                    sub.type = Credits_TransactionRecord::RecvWithAddress;                    sub.address = CBitcoinAddress(address).ToString();                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = Credits_TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                if (wtx.IsCoinBase())                {                    // Generated                    sub.type = Credits_TransactionRecord::Generated;                }                else if (wtx.IsDeposit())                {                	if(nOut == 0) {                		sub.type = Credits_TransactionRecord::Deposit;                	} else {                		sub.type = Credits_TransactionRecord::DepositChange;                	}                }                parts.append(sub);            }        }    }    else    {        bool fAllFromMe = true;        BOOST_FOREACH(const Credits_CTxIn& txin, wtx.vin)            fAllFromMe = fAllFromMe && keyholder_wallet->IsMine(txin);        bool fAllToMe = true;        BOOST_FOREACH(const CTxOut& txout, wtx.vout)            fAllToMe = fAllToMe && keyholder_wallet->IsMine(txout);        if (fAllFromMe && fAllToMe)        {            // Payment to self            int64_t nChange = wtx.GetChange(keyholder_wallet);            Credits_TransactionRecord sub(hash, nTime, Credits_TransactionRecord::SendToSelf, "", -(nDebit - nChange), nCredit - nChange);            SetupAllFromMeAllToMeDepositSub(wtx, 0, sub);            parts.append(sub);            if(wtx.IsDeposit() && wtx.vout.size() == 2) {                Credits_TransactionRecord sub(hash, nTime, Credits_TransactionRecord::SendToSelf, "", -(nDebit - nChange), nCredit - nChange);                SetupAllFromMeAllToMeDepositSub(wtx, 1, sub);                parts.append(sub);            }        }        else if (fAllFromMe)        {            //            // Debit            //            int64_t nTxFee = nDebit - wtx.GetValueOut();            for (unsigned int nOut = 0; nOut < wtx.vout.size(); nOut++)            {                const CTxOut& txout = wtx.vout[nOut];                Credits_TransactionRecord sub(hash, nTime);                sub.idx = parts.size();                if(!wtx.IsDeposit()) {					if(keyholder_wallet->IsMine(txout))//.........这里部分代码省略.........
开发者ID:credits-currency,项目名称:credits,代码行数:101,


示例13: name_pending

UniValuename_pending (const JSONRPCRequest& request){  if (request.fHelp || request.params.size() > 1)    throw std::runtime_error (        "name_pending (/"name/")/n"        "/nList unconfirmed name operations in the mempool./n"        "/nIf a name is given, only check for operations on this name./n"        "/nArguments:/n"        "1. /"name/"        (string, optional) only look for this name/n"        "/nResult:/n"        "[/n"        "  {/n"        "    /"op/": xxxx       (string) the operation being performed/n"        "    /"name/": xxxx     (string) the name operated on/n"        "    /"value/": xxxx    (string) the name's new value/n"        "    /"txid/": xxxx     (string) the txid corresponding to the operation/n"        "    /"ismine/": xxxx   (boolean) whether the name is owned by the wallet/n"        "  },/n"        "  .../n"        "]/n"        + HelpExampleCli ("name_pending", "")        + HelpExampleCli ("name_pending", "/"d/domob/"")        + HelpExampleRpc ("name_pending", "")      );#ifdef ENABLE_WALLET    LOCK2 (pwalletMain ? &pwalletMain->cs_wallet : NULL, mempool.cs);#else    LOCK (mempool.cs);#endif  std::vector<uint256> txHashes;  if (request.params.size () == 0)    mempool.queryHashes (txHashes);  else    {      const std::string name = request.params[0].get_str ();      const valtype vchName = ValtypeFromString (name);      const uint256 txid = mempool.getTxForName (vchName);      if (!txid.IsNull ())        txHashes.push_back (txid);    }  UniValue arr(UniValue::VARR);  for (std::vector<uint256>::const_iterator i = txHashes.begin ();       i != txHashes.end (); ++i)    {      std::shared_ptr<const CTransaction> tx = mempool.get (*i);      if (!tx || !tx->IsNamecoin ())        continue;      for (const auto& txOut : tx->vout)        {          const CNameScript op(txOut.scriptPubKey);          if (!op.isNameOp () || !op.isAnyUpdate ())            continue;          const valtype vchName = op.getOpName ();          const valtype vchValue = op.getOpValue ();          const std::string name = ValtypeToString (vchName);          const std::string value = ValtypeToString (vchValue);          std::string strOp;          switch (op.getNameOp ())            {            case OP_NAME_FIRSTUPDATE:              strOp = "name_firstupdate";              break;            case OP_NAME_UPDATE:              strOp = "name_update";              break;            default:              assert (false);            }          UniValue obj(UniValue::VOBJ);          obj.push_back (Pair ("op", strOp));          obj.push_back (Pair ("name", name));          obj.push_back (Pair ("value", value));          obj.push_back (Pair ("txid", tx->GetHash ().GetHex ()));#ifdef ENABLE_WALLET          isminetype mine = ISMINE_NO;          if (pwalletMain)            mine = IsMine (*pwalletMain, op.getAddress ());          const bool isMine = (mine & ISMINE_SPENDABLE);          obj.push_back (Pair ("ismine", isMine));#endif          arr.push_back (obj);        }    }  return arr;}
开发者ID:gjhiggins,项目名称:vcoincore,代码行数:97,


示例14: LOCK2

QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx, int vout, int unit){    QString strHTML;    LOCK2(cs_main, wallet->cs_wallet);    strHTML.reserve(4000);    strHTML += "<html><font face='verdana, arial, helvetica, sans-serif'>";    int64_t nTime = wtx.GetTxTime();    int64_t nCredit = wtx.GetCredit();    int64_t nDebit = wtx.GetDebit();    int64_t nNet = nCredit - nDebit;    strHTML += "<b>" + tr("Status") + ":</b> " + FormatTxStatus(wtx);    int nRequests = wtx.GetRequestCount();    if (nRequests != -1)    {        if (nRequests == 0)            strHTML += tr(", has not been successfully broadcast yet");        else if (nRequests > 0)            strHTML += tr(", broadcast through %n node(s)", "", nRequests);    }    strHTML += "<br>";    strHTML += "<b>" + tr("Date") + ":</b> " + (nTime ? GUIUtil::dateTimeStr(nTime) : "") + "<br>";    //    // From    //    if (wtx.IsCoinBase())    {        strHTML += "<b>" + tr("Source") + ":</b> " + tr("Generated") + "<br>";    }    else if (wtx.mapValue.count("from") && !wtx.mapValue["from"].empty())    {        // Online transaction        strHTML += "<b>" + tr("From") + ":</b> " + GUIUtil::HtmlEscape(wtx.mapValue["from"]) + "<br>";    }    else    {        // Offline transaction        if (nNet > 0)        {            // Credit            BOOST_FOREACH(const CTxOut& txout, wtx.vout)            {                if (wallet->IsMine(txout))                {                    CTxDestination address;                    if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                    {                        if (wallet->mapAddressBook.count(address))                        {                            strHTML += "<b>" + tr("From") + ":</b> " + tr("unknown") + "<br>";                            strHTML += "<b>" + tr("To") + ":</b> ";                            strHTML += GUIUtil::HtmlEscape(CMonetaryUnitAddress(address).ToString());                            if (!wallet->mapAddressBook[address].name.empty())                                strHTML += " (" + tr("own address") + ", " + tr("label") + ": " + GUIUtil::HtmlEscape(wallet->mapAddressBook[address].name) + ")";                            else                                strHTML += " (" + tr("own address") + ")";                            strHTML += "<br>";                        }                    }                    break;                }            }        }    }
开发者ID:bankonme,项目名称:MUE-Src,代码行数:68,


示例15: BOOST_FOREACH

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    int64_t nCredit = wtx.GetCredit(true);    int64_t nDebit = wtx.GetDebit();    int64_t nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash(), hashPrev = 0;	std::string dzeel = "";  	if (!wtx.strDZeel.empty())  	{  	dzeel = wtx.strDZeel;  	}  	    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (nNet > 0 || wtx.IsCoinBase() || wtx.IsCoinStake())    {        //        // Credit        //        BOOST_FOREACH(const CTxOut& txout, wtx.vout)        {            if(wallet->IsMine(txout))            {                TransactionRecord sub(hash, nTime);                CTxDestination address;				sub.dzeel = dzeel;                sub.idx = parts.size(); // sequence number                sub.credit = txout.nValue;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Bitcoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CBitcoinAddress(address).ToString();                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                if (wtx.IsCoinBase())                {                    // Generated (proof-of-work)                    sub.type = TransactionRecord::Generated;                }                if (wtx.IsCoinStake())                {                    // Generated (proof-of-stake)                    if (hashPrev == hash)                        continue; // last coinstake output                    sub.type = TransactionRecord::Generated;                    sub.credit = nNet > 0 ? nNet : wtx.GetValueOut() - nDebit;                    hashPrev = hash;                }                parts.append(sub);            }        }    }
开发者ID:navcoindev,项目名称:navcoin2,代码行数:66,


示例16: sub

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet* wallet, const CWalletTx& wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetComputedTxTime();    CAmount nCredit = wtx.GetCredit(ISMINE_ALL);    CAmount nDebit = wtx.GetDebit(ISMINE_ALL);    CAmount nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash();    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (wtx.IsCoinStake()) {        TransactionRecord sub(hash, nTime);        CTxDestination address;        if (!ExtractDestination(wtx.vout[1].scriptPubKey, address))            return parts;        if (!IsMine(*wallet, address)) {            //if the address is not yours then it means you have a tx sent to you in someone elses coinstake tx            for (unsigned int i = 1; i < wtx.vout.size(); i++) {                CTxDestination outAddress;                if (ExtractDestination(wtx.vout[i].scriptPubKey, outAddress)) {                    if (IsMine(*wallet, outAddress)) {                        isminetype mine = wallet->IsMine(wtx.vout[i]);                        sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;                        sub.type = TransactionRecord::MNReward;                        sub.address = CBitcoinAddress(outAddress).ToString();                        sub.credit = wtx.vout[i].nValue;                    }                }            }        } else {            //stake reward            isminetype mine = wallet->IsMine(wtx.vout[1]);            sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;            sub.type = TransactionRecord::StakeMint;            sub.address = CBitcoinAddress(address).ToString();            sub.credit = nNet;        }        parts.append(sub);    } else if (wtx.IsZerocoinSpend()) {        // a zerocoin spend that was created by this wallet        libzerocoin::CoinSpend zcspend = TxInToZerocoinSpend(wtx.vin[0]);        bool fSpendFromMe = wallet->IsMyZerocoinSpend(zcspend.getCoinSerialNumber());        //zerocoin spend outputs        bool fFeeAssigned = false;        for (const CTxOut txout : wtx.vout) {            // change that was reminted as zerocoins            if (txout.IsZerocoinMint()) {                // do not display record if this isn't from our wallet                if (!fSpendFromMe)                    continue;                TransactionRecord sub(hash, nTime);                sub.type = TransactionRecord::ZerocoinSpend_Change_zPiv;                sub.address = mapValue["zerocoinmint"];                sub.debit = -txout.nValue;                if (!fFeeAssigned) {                    sub.debit -= (wtx.GetZerocoinSpent() - wtx.GetValueOut());                    fFeeAssigned = true;                }                sub.idx = parts.size();                parts.append(sub);                continue;            }            string strAddress = "";            CTxDestination address;            if (ExtractDestination(txout.scriptPubKey, address))                strAddress = CBitcoinAddress(address).ToString();            // a zerocoinspend that was sent to an address held by this wallet            isminetype mine = wallet->IsMine(txout);            if (mine) {                TransactionRecord sub(hash, nTime);                sub.type = (fSpendFromMe ? TransactionRecord::ZerocoinSpend_FromMe : TransactionRecord::RecvFromZerocoinSpend);                sub.debit = txout.nValue;                sub.address = mapValue["recvzerocoinspend"];                if (strAddress != "")                    sub.address = strAddress;                sub.idx = parts.size();                parts.append(sub);                continue;            }            // spend is not from us, so do not display the spend side of the record            if (!fSpendFromMe)                continue;            // zerocoin spend that was sent to someone else            TransactionRecord sub(hash, nTime);            sub.debit = -txout.nValue;            sub.type = TransactionRecord::ZerocoinSpend;            sub.address = mapValue["zerocoinspend"];            if (strAddress != "")                sub.address = strAddress;            sub.idx = parts.size();//.........这里部分代码省略.........
开发者ID:michaili,项目名称:PIVX,代码行数:101,


示例17: GetDebit

void CWalletTx::GetAmounts(std::list<COutputEntry>& listReceived,                           std::list<COutputEntry>& listSent, CAmount& nFee, const isminefilter& filter, CKeyStore* from) const{    if (!from)        from = pwallet->activeAccount;    nFee = 0;    listReceived.clear();    listSent.clear();    // Compute fee:    CAmount nDebit = GetDebit(filter);    if (nDebit > 0) // debit>0 means we signed/sent this transaction    {        CAmount nValueOut = tx->GetValueOut();        nFee = nDebit - nValueOut;    }    // Sent.    for (unsigned int i = 0; i < tx->vin.size(); ++i)    {        const CTxIn& txin = tx->vin[i];        std::map<uint256, CWalletTx>::const_iterator mi = pwallet->mapWallet.find(txin.prevout.getHash());        if (mi != pwallet->mapWallet.end())        {            const CWalletTx& prev = (*mi).second;            if (txin.prevout.n < prev.tx->vout.size())            {                const auto& prevOut =  prev.tx->vout[txin.prevout.n];                isminetype fIsMine = IsMine(*from, prevOut);                if ((fIsMine & filter))                {                    CTxDestination address;                    if (!ExtractDestination(prevOut, address) && !prevOut.IsUnspendable())                    {                        LogPrintf("CWalletTx::GetAmounts: Unknown transaction type found, txid %s/n",                                this->GetHash().ToString());                        address = CNoDestination();                    }                    //fixme: (Post-2.1) - There should be a seperate CInputEntry class/array here or something.                    COutputEntry output = {address, prevOut.nValue, (int)i};                    // We are debited by the transaction, add the output as a "sent" entry                    listSent.push_back(output);                }            }        }    }    // received.    for (unsigned int i = 0; i < tx->vout.size(); ++i)    {        const CTxOut& txout = tx->vout[i];        isminetype fIsMine = IsMine(*from, txout);        if (!(fIsMine & filter))            continue;        // Get the destination address        CTxDestination address;        if (!ExtractDestination(txout, address) && !txout.IsUnspendable())        {            LogPrintf("CWalletTx::GetAmounts: Unknown transaction type found, txid %s/n",                     this->GetHash().ToString());            address = CNoDestination();        }        COutputEntry output = {address, txout.nValue, (int)i};        // We are receiving the output, add it as a "received" entry        listReceived.push_back(output);    }}
开发者ID:ALEX196969,项目名称:gulden-official,代码行数:77,


示例18: sub

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    CAmount nCredit = wtx.GetCredit(ISMINE_ALL);    CAmount nDebit = wtx.GetDebit(ISMINE_ALL);    CAmount nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash();    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (nNet > 0 || wtx.IsCoinBase())    {        //        // Credit        //        for(unsigned int i = 0; i < wtx.tx->vout.size(); i++)        {            const CTxOut& txout = wtx.tx->vout[i];            isminetype mine = wallet->IsMine(txout);            if(mine)            {                TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = i; // vout index                sub.credit = txout.nValue;                sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Bitcoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = EncodeDestination(address);                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                if (wtx.IsCoinBase())                {                    // Generated                    sub.type = TransactionRecord::Generated;                }                parts.append(sub);            }        }    }    else    {        bool involvesWatchAddress = false;        isminetype fAllFromMe = ISMINE_SPENDABLE;        for (const CTxIn& txin : wtx.tx->vin)        {            isminetype mine = wallet->IsMine(txin);            if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;            if(fAllFromMe > mine) fAllFromMe = mine;        }        isminetype fAllToMe = ISMINE_SPENDABLE;        for (const CTxOut& txout : wtx.tx->vout)        {            isminetype mine = wallet->IsMine(txout);            if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;            if(fAllToMe > mine) fAllToMe = mine;        }        if (fAllFromMe && fAllToMe)        {            // Payment to self            CAmount nChange = wtx.GetChange();            parts.append(TransactionRecord(hash, nTime, TransactionRecord::SendToSelf, "",                            -(nDebit - nChange), nCredit - nChange));            parts.last().involvesWatchAddress = involvesWatchAddress;   // maybe pass to TransactionRecord as constructor argument        }        else if (fAllFromMe)        {            //            // Debit            //            CAmount nTxFee = nDebit - wtx.tx->GetValueOut();            for (unsigned int nOut = 0; nOut < wtx.tx->vout.size(); nOut++)            {                const CTxOut& txout = wtx.tx->vout[nOut];                TransactionRecord sub(hash, nTime);                sub.idx = nOut;                sub.involvesWatchAddress = involvesWatchAddress;                if(wallet->IsMine(txout))                {                    // Ignore parts sent to self, as this is usually the change                    // from a transaction sent back to our own address.                    continue;                }//.........这里部分代码省略.........
开发者ID:21E14,项目名称:bitcoin,代码行数:101,


示例19: BOOST_FOREACH

/* * Decompose CWallet transaction to model transaction records. */QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx){    QList<TransactionRecord> parts;    int64_t nTime = wtx.GetTxTime();    CAmount nCredit = wtx.GetCredit(ISMINE_ALL);    CAmount nDebit = wtx.GetDebit(ISMINE_ALL);    CAmount nNet = nCredit - nDebit;    uint256 hash = wtx.GetHash(), hashPrev = 0;    std::map<std::string, std::string> mapValue = wtx.mapValue;    if (nNet > 0 || wtx.IsCoinBase() || wtx.IsCoinStake())    {        //        // Credit        //        BOOST_FOREACH(const CTxOut& txout, wtx.vout)        {            isminetype mine = wallet->IsMine(txout);            if(mine)            {                TransactionRecord sub(hash, nTime);                CTxDestination address;                sub.idx = parts.size(); // sequence number                sub.credit = txout.nValue;                sub.involvesWatchAddress = mine == ISMINE_WATCH_ONLY;                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))                {                    // Received by Bitcoin Address                    sub.type = TransactionRecord::RecvWithAddress;                    sub.address = CTaoAddress(address).ToString();                }                else                {                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction                    sub.type = TransactionRecord::RecvFromOther;                    sub.address = mapValue["from"];                }                if (wtx.IsCoinBase())                {                    // Generated (proof-of-work)                    sub.type = TransactionRecord::Generated;                }                if (wtx.IsCoinStake())                {                    // Generated (proof-of-stake)                    if (hashPrev == hash)                        continue; // last coinstake output                    CAmount nValueOut = 0;                    BOOST_FOREACH(const CTxOut& txout, wtx.vout)                    {                        if (IsMine(*wallet,txout.scriptPubKey))                            nValueOut += txout.nValue;                        if (!MoneyRange(txout.nValue) || !MoneyRange(nValueOut))                            throw std::runtime_error("CTransaction::GetValueOut() : value out of range");                    }                    sub.type = TransactionRecord::Generated;                    sub.credit = nNet > 0 ? nNet : nValueOut - nDebit;                    hashPrev = hash;                }                parts.append(sub);            }        }    }
开发者ID:taoblockchain,项目名称:tao-core,代码行数:69,



注:本文中的IsMine函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ IsModal函数代码示例
C++ IsMember函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。