Skip to content

dip: adopt BIP174 (PSBT/PSDT) as a Dogecoin standard — draft for discussion#10

Draft
xanimo wants to merge 1 commit into
dogecoin:masterfrom
xanimo:dip-psbt
Draft

dip: adopt BIP174 (PSBT/PSDT) as a Dogecoin standard — draft for discussion#10
xanimo wants to merge 1 commit into
dogecoin:masterfrom
xanimo:dip-psbt

Conversation

@xanimo

@xanimo xanimo commented Jun 18, 2026

Copy link
Copy Markdown
Member

Adds an unnumbered draft DIP adopting the BIP174 Partially Signed Transaction format for Dogecoin, and resolving the open naming question (keep "PSBT" vs. adopt "PSDT"). Filename uses the BIP2 author-alias convention (dip-xanimo-psbt); not self-assigning a number — editor to assign (it derives from BIP174).

Why this fits the repo scope. This is a Dogecoin-specific adoption/variation of an existing BIP (BIP174), not new consensus design — the structure is BIP174 verbatim with Dogecoin specifics made explicit.

The decision the DIP frames (neutrally). Renaming to "PSDT" is not purely cosmetic, because BIP174 fixes a 5-byte magic header (0x70736274ff, ASCII psbt+0xff). So:

  • N1 — keep "PSBT", keep magic → full framing-level compat with the existing PSBT tooling ecosystem.
  • N2 — label "PSDT", magic unchanged → branded name, but the bytes still say psbt.
  • N3 — "PSDT" + new magic 0x70736474ff → intentional, hard incompatibility; requires editing the magic constant and re-deriving every test vector in both codebases plus downstream tooling.

The DIP makes no recommendation among N1/N2/N3; it only insists the choice be made with the magic-byte coupling explicit (N2 ≠ N3).

Reference implementations (both currently encode the unmodified BIP174 magic, i.e. assume N1/N2):

  • Dogecoin Core — 1.15.0-dev-bip174-psbt (PSBT structures + refactored signing API in script/sign.{h,cpp}, RPC, wallet/functional tests; vectors byte-identical to BIP174).
  • libdogecoin — 0.1.5-dev-psbt (multisig finalization, valgrind-clean coverage).

Scope note re: SegWit. Until SegWit activates on Dogecoin (separate proposal), only PSBT_IN_NON_WITNESS_UTXO is meaningful on mainnet; witness fields are carried structurally but signers must not produce witness signatures for non-witness inputs. The DIP states this so "compatible" isn't overread.

Full draft: https://github.com/xanimo/dips/blob/749731ba3f19023fa5cf055b4b8fd20cd628782f/dip-xanimo-psbt.mediawiki

Opening as Draft for discussion. Happy to trim the preamble to match the existing dip-007x style if the editor prefers.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant