Skip to content

Consensus conflict caused by maxWitnessItemsPerInput #1906

@brockaegean

Description

@brockaegean

Bitcoin has a consensus rule that limits the number of stack items in a row to 1000. However, a P2TR spend containing OP_SUCCESSx precedes this rule regardless.

I made a P2TR spend containing an OP_SUCCESSx opcode with 500,001 empty pushes, which as a result, caused a consensus conflict between btcd and core:
https://blockstream.info/tx/73be398c4bdc43709db7398106609eea2a7841aaf3a4fa2000dc18184faa2a7e

Changing the maxWitnessItemsPerInput parameter from 500,000 to 4,000,000 solves the issue:
https://github.com/btcsuite/btcd/blob/master/wire/msgtx.go#L103

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions