// Basic tier (standard fees, requires deposit)
let market_id = client.create_market(
&creator,
&String::from_str(&env, "Will BTC reach $100k?"),
&options,
&deadline,
&resolution_deadline,
&oracle_config,
&MarketTier::Basic,
&native_token,
);
// Pro tier (25% fee discount, may skip deposit if reputation is Pro+)
let market_id = client.create_market(
&creator,
&description,
&options,
&deadline,
&resolution_deadline,
&oracle_config,
&MarketTier::Pro,
&native_token,
);
// Institutional tier (50% fee discount, may skip deposit if reputation is Institutional)
let market_id = client.create_market(
&creator,
&description,
&options,
&deadline,
&resolution_deadline,
&oracle_config,
&MarketTier::Institutional,
&native_token,
);| Reputation Level | Deposit Required? |
|---|---|
| None | ✅ Yes |
| Basic | ✅ Yes |
| Pro | ❌ No |
| Institutional | ❌ No |
// Set deposit amount (in stroops, 1 XLM = 10,000,000 stroops)
client.set_creation_deposit(&10_000_000); // 10 XLM
// Get current deposit amount
let deposit = client.get_creation_deposit();
// Disable deposits
client.set_creation_deposit(&0);// Set reputation
client.set_creator_reputation(
&creator_address,
&CreatorReputation::Pro
);
// Check reputation
let reputation = client.get_creator_reputation(&creator_address);
// Reputation levels
CreatorReputation::None // Default, requires deposit
CreatorReputation::Basic // Requires deposit
CreatorReputation::Pro // Skips deposit, 25% fee discount
CreatorReputation::Institutional // Skips deposit, 50% fee discount// After market is resolved, release creator's deposit
client.release_creation_deposit(&market_id, &native_token);Assuming base fee of 100 basis points (1%):
| Tier | Fee Multiplier | Effective Rate | Example (1000 XLM) |
|---|---|---|---|
| Basic | 100% | 1.00% | 10 XLM |
| Pro | 75% | 0.75% | 7.5 XLM |
| Institutional | 50% | 0.50% | 5 XLM |
// In fees module
let fee = calculate_tiered_fee(&env, amount, &market.tier);
// Examples:
// Basic tier: 1000 XLM * 1% = 10 XLM
// Pro tier: 1000 XLM * 0.75% = 7.5 XLM
// Institutional tier: 1000 XLM * 0.5% = 5 XLM- Creator has 100 XLM
- Creation deposit set to 10 XLM
- Creator calls
create_marketwith Basic tier - Contract locks 10 XLM deposit
- Market created successfully
- After resolution, admin calls
release_creation_deposit - Creator receives 10 XLM back
- Admin sets creator reputation to Pro
- Creator calls
create_marketwith Pro tier - No deposit required (bypassed)
- Market created with 25% fee discount
- No deposit to release after resolution
- Admin sets creator reputation to Institutional
- Creator calls
create_marketwith Institutional tier - No deposit required (bypassed)
- Market created with 50% fee discount
- No deposit to release after resolution
let result = client.try_create_market(...);
match result {
Ok(market_id) => {
// Market created successfully
},
Err(Ok(ErrorCode::InsufficientDeposit)) => {
// Creator doesn't have enough XLM for deposit
// Options:
// 1. Ask creator to add more XLM
// 2. Admin upgrades creator reputation
// 3. Admin reduces deposit requirement
},
Err(e) => {
// Other error
}
}- Start Conservative: Set deposit high initially (e.g., 50-100 XLM)
- Monitor Spam: Track market creation patterns
- Reward Quality: Upgrade reputation for creators with successful markets
- Adjust Dynamically: Lower deposit as platform matures
- Automate Releases: Build system to auto-release deposits after resolution
-
Criteria for Pro:
- 5+ successful markets
- No disputes or cancellations
- Good community feedback
-
Criteria for Institutional:
- 20+ successful markets
- Verified organization
- Significant trading volume
- Excellent track record
-
Downgrade Policy:
- Consider downgrading for repeated issues
- Implement appeals process
- Start with Basic: Build reputation over time
- Choose Appropriate Tier: Match tier to market importance
- Maintain Quality: Good markets lead to reputation upgrades
- Plan for Deposit: Ensure sufficient XLM balance
- Update frontend to show tier selection
- Display deposit requirements to creators
- Show fee discounts for each tier
- Implement reputation badge system
- Add admin panel for reputation management
- Create deposit release workflow
- Add analytics for tier usage
- Document tier benefits for users
For questions or issues:
- Check
IMPLEMENTATION_ISSUE_14.mdfor detailed implementation notes - Review test cases in
contracts/predict-iq/src/test.rs - See
PR_TEMPLATE_ISSUE_14.mdfor migration guide