Sergio,

I'm not sure what the data you present has to do with the discount.  A 75% discount prevents witness spam precisely because it is 75%, nothing more.  The current usage simply gives a guideline on how much capacity is gained through a particular discount.  With the data you show, it would imply that those blocks, with SegWit used where possible, would result in blocks of ~1.8MB.



On Mon, May 8, 2017 at 5:42 PM, Sergio Demian Lerner via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org> wrote:
I have processed 1000 blocks starting from Block #461653.

I computed several metrics, including the supposed size of witness data and non-witness data (onchain), assuming all P2SH inputs/outputs are converted to P2PWSH and all P2PKH inputs/outputs are converted to P2WPKH.

This takes into account that other types of transactions will not be modified by Segwit (e.g. OP_RETURN outputs, or P2PK). This analysis doesn't take into account that LN transactions may affect the current state,  increasing the segwit/nosegwit ratio.

Among a lot of information, I've got the following real world results...

acMainChainSpace =352608924
acSegwitSpace =599400403
Ratio segwit/nosegwit=1.6999

This implies that the 75% that discount is not the best option to prevent witness spam in a block of 4 MB, as stated in https://segwit.org/why-a-discount-factor-of-4-why-not-2-or-8-bbcebe91721e.

The non-witness data weight factor should not be 4 but 2.35. The closest integer value is 2, which leads to a 50% witness discount.

The Bitcoinj source code is available for anyone to review. I encourage anyone to re-compute this with another utility to cross-check. Maybe Antoine Le Calvez (p2sh.info) would like to double-check.






_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev