I have been told flat out that the devs will NOT get to it anytime soon. Apparently they have other things they are working on that are way more important than fixing this. Its also quite clear that they don't have the grasp on the bigger picture that some of us do. Its up to us to get the ball rolling, once we can get the network up to speed, more wallets and coins should start coming online to keep it going.
Ok, I will look/test this out. Can only compile/test on Linux though so don't ask for a Windows client...but if someone has
good instructions on how to compile for Windows I might give it a go.
Can we come to a consensus on an appropriate number for
nStakeCombineThreshold?
It is currently set to
2000000 * COIN:
23 // we split the coinstake output in two to avoid concentrating
24 // too many coins in one output. currently almost always split.
25 unsigned int nStakeSplitAge = 45 * 24 * 60 * 60; // 45 days
26 // avoid concentrated transactions. on average, each block contains:
27 // generated interest ~= 27b * 5% / 365 / 1440 ~= 2.5k
28 // corresponding stake ~= 27b / 365 / 1440 ~= 50k
29 // optimally each output stakes once every week so 50k * 52 = 2.6m
30 // but only a fraction of the total money supply is staked on the network
31 int64 nStakeCombineThreshold = 2000000 * COIN;
I included the relevant part of the code above. I also want to highlight
nStakeSplitAge as perhaps someone can determine the right amount of time if it should not be 45 days.
Here is the part of the code that does the splitting:
1650 if (GetCoinAgeWeight(block.GetBlockTime(), (int64)txNew.nTime) < nStakeSplitAge && nCredit >= nStakeCombineThreshold)
1651 txNew.vout.push_back(CTxOut(0, scriptPubKeyOut)); //split stake
Also, looks like it will stop at 100 inputs:
1673 // Stop adding more inputs if already too many inputs
1674 if (txNew.vin.size() >= 100)
1675 break;
Stops adding inputs if it reaches nStakeCombineThreshold
1676 // Stop adding more inputs if value is already pretty significant
1677 if (nCredit >= nStakeCombineThreshold)
1678 break;
etc.
1679 // Stop adding inputs if reached reserve limit
1680 if (nCredit + pcoin.first->vout[pcoin.second].nValue > nBalance - nReserveBalance)
1681 break;
1682 // Do not add additional significant input
1683 if (pcoin.first->vout[pcoin.second].nValue >= nStakeCombineThreshold)
Line 31 is the ticket...lets figure out the appropriate amount. Would prefer to do this on testnet but since we don't have that yet guess I will have to risk real coin....not that big of a risk though.
Edit: The comments on lines 23-30 should be updated for POT too.