Skip to content

bytespersigop prevents bare multisig in v0.12 #8079

@rubensayshi

Description

@rubensayshi

in v0.12 #7081 (by @luke-jr) was merged adding -bytespersigop (with default of 20).

this is preventing simple bare multisig transactions from being accepted into mempool when the size is < 400 bytes.
eg; https://gist.github.com/rubensayshi/ac4f617207f7a50559e85d61c05800be

from 1-of-7 and onwards they are accepted because the ratio of bytes:sigops is high enough.
also having 2 or more inputs will work because it again tips the ratio of bytes:sigops over.

the reason mainly being that GetLegacySigOpCount calls GetSigOpCount with fAccurate=false.

It looks like changing GetLegacySigOpCount to use fAccurate=true would cause side effects in the few other places (ConnectBlock, CheckBlock, CreateNewBlock) and simply adding fAccurate as arg to GetLegacySigOpCount would affect the value stored in CTxMemPoolEntry.sigOpCount which in turn affects a bunch of other things.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions