Skip to content

Add TransactionProposalCancel for Cosign (XLS-0103) - #7979

Open
ckeshava wants to merge 2 commits into
XRPLF:ripple/cosignfrom
ckeshava:txnProposalCancel
Open

Add TransactionProposalCancel for Cosign (XLS-0103)#7979
ckeshava wants to merge 2 commits into
XRPLF:ripple/cosignfrom
ckeshava:txnProposalCancel

Conversation

@ckeshava

@ckeshava ckeshava commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

High Level Overview of Change

Adds the TransactionProposalCancel transaction (XLS-0103 §7, transaction type 94): deletes a TransactionProposal ledger entry and releases the proposer's reserve. Resolves DEFI-996.

Context of Change

Third transaction of the On-Chain Cosigner feature (XLS-0103), building on TransactionProposalCreate (#7887).

  • While a proposal is live, only its Owner (the proposer) or its target (the proposed transaction's Account, or the Delegate named in it) may cancel: tecNO_PERMISSION otherwise.
  • Once a proposal is terminal (its Expiration has passed, or the ledger has reached the proposed transaction's LastLedgerSequence), anyone may delete it.
  • A zero ProposalID is temMALFORMED; a missing entry is tecNO_ENTRY.
  • isProposalTx now also rejects proposing a Cancel, or any proposal transaction hidden inside a proposed Batch (XLS-0103 §5.3.1).
  • Includes shared jtx helper proposal::cancel and a 19-case test suite covering authorization, terminal boundaries, Batch/multisign/sponsorship/ticket interactions, and nesting rejections.

API Impact

  • libxrpl change (new amendment-gated transaction type, featureCosign)

🤖 Generated with Claude Code

- While a proposal is live, only its Owner (the proposer) or its target
  (the proposed transaction's Account, or the Delegate named in it) may
  cancel it.
- Once a proposal is terminal (its Expiration has passed, or the ledger
  has reached its proposed transaction's LastLedgerSequence), anyone may
  delete it and release the Owner's reserve.
- Proposing a proposal transaction (Create or Cancel), directly or hidden
  inside a proposed Batch, is rejected (XLS-0103 §5.3.1).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@codecov

codecov Bot commented Aug 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.80460% with 8 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...transactors/proposal/TransactionProposalCancel.cpp 78.1% 7 Missing ⚠️
...ude/xrpl/tx/transactors/proposal/ProposalHelpers.h 92.3% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Add the missing direct includes it reported, drop the unused AccountID
include from the test, and keep STArray.h under an IWYU pragma: the
range-for over getFieldArray needs the complete type, which the checker
cannot see through the implicit begin/end use.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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