Skip to content

feat: add 90-day no-planter sponsor withdrawal to campaign-funding - #822

Merged
Utilitycoder merged 2 commits into
Fundable-Protocol:mainfrom
daameeloolaa-png:feat/sponsor-withdraw-no-planter-deadline
Sep 1, 2026
Merged

feat: add 90-day no-planter sponsor withdrawal to campaign-funding#822
Utilitycoder merged 2 commits into
Fundable-Protocol:mainfrom
daameeloolaa-png:feat/sponsor-withdraw-no-planter-deadline

Conversation

@daameeloolaa-png

Copy link
Copy Markdown
Contributor
  • Add created_at (u64) and planter (OptionalAddress) fields to Campaign struct
  • Add OptionalAddress enum for Soroban-compatible Option semantics
  • Add NINETY_DAYS constant (7_776_000 seconds)
  • Add SponsorWithdrew variant to CampaignStatus
  • Add new error variants: PlanterAlreadyAssigned(17), WithdrawWindowNotOpen(18), PlanterAssigned(19), NothingToWithdraw(20)
  • Add PlanterAssignedEvent and SponsorWithdrewEvent event structs
  • Add assign_planter function: creator-only, one-time planter assignment
  • Add sponsor_withdraw function: if 90 days pass with no planter assigned, sponsor can withdraw full total_raised with zero protocol fee
  • Update create_campaign to set created_at = ledger timestamp, planter = None
  • Add 9 tests covering all new paths and edge cases (48 total, all passing)
  • Fix pre-existing duplicate soroban-sdk key in contracts/Cargo.toml
  • Update should_panic strings to Error(Contract, #N) format (soroban-sdk v27)
    closes feat(contract): Emergency withdrawal - sponsor can withdraw funds if planting deadline missed #660

- Add created_at (u64) and planter (OptionalAddress) fields to Campaign struct
- Add OptionalAddress enum for Soroban-compatible Option<Address> semantics
- Add NINETY_DAYS constant (7_776_000 seconds)
- Add SponsorWithdrew variant to CampaignStatus
- Add new error variants: PlanterAlreadyAssigned(17), WithdrawWindowNotOpen(18),
  PlanterAssigned(19), NothingToWithdraw(20)
- Add PlanterAssignedEvent and SponsorWithdrewEvent event structs
- Add assign_planter function: creator-only, one-time planter assignment
- Add sponsor_withdraw function: if 90 days pass with no planter assigned,
  sponsor can withdraw full total_raised with zero protocol fee
- Update create_campaign to set created_at = ledger timestamp, planter = None
- Add 9 tests covering all new paths and edge cases (48 total, all passing)
- Fix pre-existing duplicate soroban-sdk key in contracts/Cargo.toml
- Update should_panic strings to Error(Contract, #N) format (soroban-sdk v27)
@drips-wave

drips-wave Bot commented Sep 1, 2026

Copy link
Copy Markdown

@daameeloolaa-png 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

@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: ff0846b7-807a-4cca-b265-1b5e0fc41c00


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Utilitycoder

Copy link
Copy Markdown
Contributor

Thanks for the work. Kindly ensure you offramp with Fundable at https://stellar.fundable.finance/offramp

@Utilitycoder
Utilitycoder merged commit 3a2f472 into Fundable-Protocol:main Sep 1, 2026
1 check passed
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.

feat(contract): Emergency withdrawal - sponsor can withdraw funds if planting deadline missed

2 participants