Skip to content

Enforce Core-compatible OP_RETURN / datacarrier and standard tx-size limits in create_tx #339

Description

@tvpeter

Describe the enhancement

wallet create_tx can attach an OP_RETURN via --add_string / --add_data, but does not implement Bitcoin Core relay policy for:
how large that OP_RETURN script may be (datacarrier)
how large the resulting transaction may be (MAX_STANDARD_TX_WEIGHT)

The documentation says “max 80 bytes”, which matches the pre-v30 Core default. That limit is not actually enforced, and it is no longer the Core default.
A tx that create_tx successfully creates can be non-standard and fail at broadcast against default Core / most public relays.

Use case

Anyone embedding data with --add_string or --add_data currently will discover the problem only at broadcast, after building and signing. Failing at build time with a clear error about the tx weight and the limit will make it easier for users to reconstruct a transaction that can be relayed on the network.

The same check protects bump_fee, where a fee bump can push an already-large transaction over the limit, and any command whose inputs grow the witness.

Additional context
Split out of #326, which fixed the create_tx/bump_fee panics and --fee_rate truncation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

  • Status
    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions