CTxMemPoolEntry::GetTxSize()
returns the maximum between vsize and “sigop-adjusted size” which is used by mempool validation and mining code as a heuristic to avoid 2DKnapsacking the block weight and sigop limits.
Sigop-adjusted vsize is returned as the “vsize” value of a transaction for RPCs retrieving mempool entry information (e.g. getmempoolentry
andgetrawmempool
) and mempool acceptance (testmempoolaccept
and submitpackage
). The documentation for these RPCs usually says “virtual transaction size as defined in BIP 141” without mentioning the sigop adjustment. At least 1 user has expressed confusion in a tweet.
I think we should at least mention something in the docs about the sigop-adjusted size. But imo it would be better to provide 2 vsize results: one that is sigop-adjusted and one that isn’t.
Seeking feedback on what might be most clear/helpful for users.
This PR’s approach is to change the result for “vsize” to not include sigop limits. The sigop-adjusted vsize is returned as a new result, “mempool_vsize”.