Feature/my work#42
Conversation
…unctionality - Introduced StealthSplitterContract to manage splits among multiple beneficiaries. - Added functionality to create splits with a maximum of 25 beneficiaries, ensuring unique split IDs through deterministic hashing. - Implemented funding mechanism that distributes amounts proportionally based on beneficiary weights. - Integrated error handling for various scenarios including initialization, beneficiary validation, and funding constraints. - Included unit tests to validate contract behavior, including edge cases for split creation and funding. - Documented resource budget analysis for contract operations.
|
@SHEROSE0 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! 🚀 |
|
The splitter design lands cleanly: immutable split definitions, deterministic Two small things worth tightening in a follow-up (not blocking):
Could you also file the SDK follow-up issue for the Thanks @SHEROSE0, real work. |
#closes #15
feat(stellar): 1-to-N stealth payment splitter contract
Overview
Implements a new Soroban contract module
contracts/stellar/stealth-splitter/introducing a 1-to-N weighted stealth payment splitter.A single funded deposit is distributed across multiple beneficiaries according to predefined weights, while preserving stealth address unlinkability and keeping recipient-level payout details off-chain.
This primitive is intended for DAO distributions, revenue sharing, royalties, and batch payout systems where allocation rules are public but execution outputs remain private.
Changes
Split creation
create_split(beneficiaries, asset, salt) -> SplitIdSupports up to 25 beneficiaries
Each beneficiary is
(meta_address, weight)SplitId is deterministically derived from:
Immutable after creation (no updates allowed)
Funding + distribution
fund_split(split_id, amount)Distributes funds proportionally based on weights
Executes all transfers in a single atomic flow:
Each payout:
Split query
get_split(split_id) -> SplitDetailsReturns:
Does not expose stealth addresses or execution-level payout data
Design notes
Tests
Unit tests for:
Property-based validation for weight proportionality
Adversarial cases:
Atomicity test ensuring full rollback on mid-execution failure
Notes for reviewers
stealth-batch-senderSoroban contract #9) for complementary payout workflows.#closes