Skip to content

feat: implement issues #833, #834, #835, #836 - #904

Merged
Kingsman-99 merged 2 commits into
Stellar-split:mainfrom
Danieljyde:feat/issues-833-834-835-836
Sep 30, 2026
Merged

Kingsman-99 merged 2 commits into
Stellar-split:mainfrom
Danieljyde:feat/issues-833-834-835-836

Conversation

@Danieljyde

Copy link
Copy Markdown
Contributor

#836 — Payment fallback recipient

  • Add set_fallback_recipient(caller, invoice_id, recipient, fallback) entry point
  • During release, if a recipient is locked and a fallback is configured, funds are routed to the fallback address instead of accumulating to UnreleasedFunds
  • Storage key: fallback_recipient_key(invoice_id, recipient)
  • Events: fallback_set, fallback_used

#835 — Multi-signature invoice creation (N-of-M co-signer approval)

  • Add cosign_invoice(signer, invoice_id) entry point
  • Add get_cosign_status(invoice_id) -> (approvals, required) entry point
  • At creation, co_signers + required_signatures config is persisted for the new cosign_invoice / get_cosign_status flow
  • Storage keys: multisig_required_key, multisig_signers_key, multisig_approvals_key
  • Events: invoice_cosigned, invoice_cosign_complete
  • Errors: SignerNotAuthorized (72), AlreadySigned (73)

#834 — On-chain invoice sentiment analysis

  • Add submit_sentiment(payer, invoice_id, positive) entry point (payer must have contributed; one vote per payer)
  • Add get_sentiment(invoice_id) -> (positive_count, negative_count) entry point
  • Storage keys: sentiment_positive_key, sentiment_negative_key, payer_sentiment_key
  • Event: sentiment_submitted
  • Reuses existing AlreadyRated (24) error for double-vote

#833 — Creator bankruptcy protection

  • create_invoice now panics with CreatorLocked (74) if creator has pending disputes
  • raise_dispute increments creator dispute count and sets creator_lock_key=true
  • resolve_dispute decrements dispute count; unlocks creator when count reaches 0
  • Add get_creator_lock_status(creator) and unlock_creator(caller, invoice_id) entry points
  • Storage keys: creator_lock_key, creator_dispute_count_key
  • Events: creator_locked, creator_unlocked
  • Error: CreatorLocked (74)

Tests: full coverage for all four features in test.rs
close #833
close #834
close #835
close #836

…split#835, Stellar-split#836

Stellar-split#836 — Payment fallback recipient
- Add set_fallback_recipient(caller, invoice_id, recipient, fallback) entry point
- During release, if a recipient is locked and a fallback is configured, funds
  are routed to the fallback address instead of accumulating to UnreleasedFunds
- Storage key: fallback_recipient_key(invoice_id, recipient)
- Events: fallback_set, fallback_used

Stellar-split#835 — Multi-signature invoice creation (N-of-M co-signer approval)
- Add cosign_invoice(signer, invoice_id) entry point
- Add get_cosign_status(invoice_id) -> (approvals, required) entry point
- At creation, co_signers + required_signatures config is persisted for the
  new cosign_invoice / get_cosign_status flow
- Storage keys: multisig_required_key, multisig_signers_key, multisig_approvals_key
- Events: invoice_cosigned, invoice_cosign_complete
- Errors: SignerNotAuthorized (72), AlreadySigned (73)

Stellar-split#834 — On-chain invoice sentiment analysis
- Add submit_sentiment(payer, invoice_id, positive) entry point
  (payer must have contributed; one vote per payer)
- Add get_sentiment(invoice_id) -> (positive_count, negative_count) entry point
- Storage keys: sentiment_positive_key, sentiment_negative_key, payer_sentiment_key
- Event: sentiment_submitted
- Reuses existing AlreadyRated (24) error for double-vote

Stellar-split#833 — Creator bankruptcy protection
- create_invoice now panics with CreatorLocked (74) if creator has pending disputes
- raise_dispute increments creator dispute count and sets creator_lock_key=true
- resolve_dispute decrements dispute count; unlocks creator when count reaches 0
- Add get_creator_lock_status(creator) and unlock_creator(caller, invoice_id) entry points
- Storage keys: creator_lock_key, creator_dispute_count_key
- Events: creator_locked, creator_unlocked
- Error: CreatorLocked (74)

Tests: full coverage for all four features in test.rs
@drips-wave

drips-wave Bot commented Sep 29, 2026

Copy link
Copy Markdown

@Danieljyde Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Kingsman-99
Kingsman-99 merged commit c91220d into Stellar-split:main Sep 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants