commerceblock/ocean

miner: remove unnecessary fee outputs

Closed this issue · 0 comments

Miner creates placeholder outputs for all assets transacted but in the case of issuance/reissuance or any other policy, fees are zero. These placeholders are replaced by 0 amount policyAsset outputs that should be removed.

related code in miner.cpp:

    if (!nFees.empty())
    {
        coinbaseTx.vout.resize(nFees.size());
        int nCount = 0;
        for (auto const& fee : nFees)
        {
            coinbaseTx.vout[nCount].scriptPubKey = fee.second ? scriptPubKeyIn : CScript() << OP_RETURN;
            coinbaseTx.vout[nCount].nValue = fee.second;
            coinbaseTx.vout[nCount].nAsset = fee.second ? fee.first : policyAsset;
            nFeeSum += fee.second;
            nCount++;
        }
    }
    else
    {
        coinbaseTx.vout[0].scriptPubKey = CScript() << OP_RETURN;
        coinbaseTx.vout[0].nValue = 0;
        coinbaseTx.vout[0].nAsset = policyAsset;
    }