Solved: Controlling size of transaction outputs for better minting process

Hey,

While I was looking enviously at these big ppc stack holders it occurred to me that many of them can not mint efficiently in terms of network security.
There are some address who have very big transactions outputs. Lets assume one of their outputs has x coins.
Even if they are eager to mint all the time they will only find 12 blocks per year with one output, due to the fact that their stacks have to mature for 30 days before they are allow to mint again.

They could find many more blocks if they would split their transaction output and keep their stacks online all the time (for example with the peerbox!).
Imagine their wallets would split this output of x coins into outputs with 1000 coins. Then the probability that one output finds a block in 90 days -including 30 days maturing - with PosDif=12 is given by
1-product_(k=1)^60 (1-k1000/12/2^32)^(360024) =0.95
Hence we can assume that every output finds 4 blocks in one year. Hence all outputs find x/1000*4 blocks.

Imagine their wallets would split this output of x coins into outputs with 250 coins. Then the probability that one ouput finds a block in 180 days -including 30 days maturing - with PosDif=12 is given by
1-product_(k=1)^60 (1-k250/12/2^32)^(360024) product_(k=1)^90 (1-60250/12/2^32)^(360024) =0.95
Hence we can assume that every output finds 2 blocks in one year. Hence all outputs find x/250
2 blocks.

For example addresses like these ones http://bitinfocharts.com/ppcoin/address/PXBf64T4gqKcn7Kruw75X8V5yeci34HG92
have very big outputs with x=250000. If the wallet would split this output into 250 outputs, the owner would find 250000/1000*4 =1000 blocks instead of just 12 blocks. That’s a big deal.

Benefits of the splitting:

  • more blocks would be found,=> increased PosDifficulty and security
  • there are more different minting inputs hence PosDifficulty will be more stable
  • it is relatively easy to implement.

Disadvantages:
-blockchains gets a little bit more loaded.
-effect could be small as many big stockholders refuse to mint regularly.

Do you agree with these considerations?

I think it could be useful to provide the option to split all own transactionoutputs. Maybe we can merge this feature into the newest Peerunity repository. But we could go a step ahead and allow only transactionsoutputs to mint which are smaller that - lets say - 5000 PPC. What do you think? Are the benefits worth the work of implementation?

Does the wallet automatically split large stacks when they mint? I seem to remember something like this. What are the exact criteria?

oh cool, I will check this in the sourcecode

The wallet currently already splits the output in two equal parts once a POS block is found. It is a voluntary actioin on the wallet side, however. The protocol doesn’t enforce the splitting.

Does this split cost a transaction fee? If so, would it cost the fee if the split did not occur? Is there a minimum size for splitting to take effect? I think maybe there should be – you wouldn’t want to split 1 PPC if you minted with it.

here is the code:
https://github.com/ppcoin/ppcoin/blob/master/src/wallet.cpp#L1311

Basically, the client splits the output if you needed less than 90 days to mint a block. Thus peers who mint a lot will get small outputs, while people who refuse to mint do not need extra space in the blockchain. Very intelligent.

No it does not cost fees if you split your output by minting. There seems to be no hard coded lower bound for the splitting. But your output of 1 PPC is unlikely to find a block in 90 days.

Great work josojo! It will make PoSDiff more stable, and attract more PoS minting.

All the honor goes to Sunny King. I haven’t done anything. I was just wondering why are there so many big transactions outputs in the blockchain. Apparently this is due to the fact that many big stacks do not mint regularly. But hopefully this will change with the new Peercoin 0.5 version.