feat: make MAX_SPONSORS configurable per deployment (#96) - #138
Open
rafaio1 wants to merge 1 commit into
Open
Conversation
- Add optional max_sponsors parameter to initialize() in both escrow and milestones contracts - Store limit in instance storage under DataKey::MaxSponsors - Default to 20 (DEFAULT_MAX_SPONSORS) when not specified for backward compatibility - Reject zero value with InvalidAmount error - Update all tests to pass None for new parameter - Fixes MergeFi#96
|
Someone is attempting to deploy a commit to the chonilius' projects Team on Vercel. A member of the Team first needs to authorize it. |
Author
CI NoteThe Vercel deployment check failure is expected and unrelated to this PR's code changes. It requires team authorization for the This PR modifies only Soroban smart contract Rust code (
If there's a separate Rust CI workflow configured for this repo, I'm happy to address any feedback from it. Otherwise, the code changes are ready for review. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Resolves #96
This PR makes
MAX_SPONSORSa per-deployment configuration parameter instead of a hardcoded compile-time constant, enabling different escrow/milestone instances to support varying numbers of sponsors based on their specific use case (e.g., $50 single-issue bounties vs $50k release milestones).Changes
max_sponsors: Option<u32>parameter toinitialize(). Stores value in instance storage underDataKey::MaxSponsors. Defaults to 20 (DEFAULT_MAX_SPONSORS) whenNoneis passed for backward compatibility. Rejects zero withInvalidAmount.MaxSponsorsvariant toDataKeyenum.initialize/try_initializecalls in both contracts' test suites to pass&Nonefor the new parameter. Replacedcrate::MAX_SPONSORSreferences withcrate::DEFAULT_MAX_SPONSORS.Testing
cargo test --manifest-path contracts/escrow/Cargo.toml— 36 tests passedcargo test --manifest-path contracts/milestones/Cargo.toml— 20 tests passedcargo buildsucceeds for both contractsBackward Compatibility
Existing deployments are unaffected. New deployments that omit the
max_sponsorsparameter will default to 20, matching current behavior. Theinitializesignature change is breaking for direct callers but this is expected for a pre-mainnet contract.