Club Fundraising: Difference between revisions
Andrew.gore (talk | contribs) No edit summary |
Andrew.gore (talk | contribs) No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
Influence | Influence fundraising allows a '''club''' to issue '''new influence''' in exchange for contributions of '''SVC''' (Soccerverse Coin). The club receives the contributors' actually spent SVC multiplied by the fundraising multiplier. Contributors receive newly created influence, which carries voting power and eligibility for income payouts under the game's normal rules. | ||
Fundraising | Fundraising applies only to '''club influence''', not player influence. It increases outstanding influence by the amount actually issued and can take supply above the base supply of 1,000,000. It does not necessarily take supply above that level in every event. | ||
The parameter values below were checked against the live game on '''23 September 2026'''. Parameters can change. | |||
== Why Fundraising Exists == | == Why Fundraising Exists == | ||
# '''Helping clubs in debt.''' At season end, eligible negative-balance clubs get an automatic fundraising event, without a proposal or vote. There is no guarantee that it attracts contributions or raises enough to clear the debt. | |||
# '''Influencer-led funding.''' Eligible influence holders can propose fundraising for a club, whether or not the club is in debt. Influence holders vote on whether to proceed and on the fundraising terms. | |||
# ''' | |||
# ''' | |||
== The Lifecycle of a Fundraise == | == The Lifecycle of a Fundraise == | ||
| Line 14: | Line 14: | ||
=== 1. Triggering === | === 1. Triggering === | ||
Fundraising | ==== A. Automatic End-of-Season Fundraising ==== | ||
While fundraising is enabled, clubs whose balance is negative when the season-end fundraising check runs are considered for an automatic event. | |||
* The number of influence offered is <code>floor(outstanding_influence * seasonend-dilution-bp / 10,000)</code>, currently '''5% of actual outstanding influence, rounded down'''. | |||
* If that calculation produces zero, '''no event is created'''. | |||
* The minimum raise is zero. | |||
* The event goes '''directly to contributions'''. There is '''no proposal, upcoming phase or vote'''. | |||
==== B. User-Proposed Fundraising ==== | |||
To propose a fundraiser or add an option to an upcoming proposal, a user must hold at least: | |||
<pre>ceil(dilution-min-bps * max(outstanding_influence, 1,000,000) / 10,000)</pre> | |||
At the current 500-basis-point setting, this means: | |||
* '''50,000 influence''' when outstanding influence is at or below 1,000,000. | |||
* '''5% of actual outstanding influence, rounded up''' when outstanding influence exceeds 1,000,000. | |||
This is a '''proposal eligibility threshold''', not a voting turnout quorum. | |||
A new user-proposed fundraiser cannot be created until the club's cooldown has elapsed. Currently this is '''70 days after the previous user-proposed vote was finalised''', even if that vote selected "do nothing". An existing upcoming proposal can be amended with another valid option; once it enters voting, new options cannot be added. | |||
The proposed terms are: | |||
* | * '''<code>n</code>:''' The number of new influence offered, from 1 to <code>floor(outstanding_influence * dilution-max-bps / 10,000)</code>. Currently this is up to '''20% of actual outstanding influence, rounded down'''. Unlike proposal eligibility, this calculation does '''not''' use a 1,000,000 minimum denominator. | ||
* '''<code>mr</code>:''' The minimum amount the '''club must receive after allocation rounding and the funding multiplier'''. It may be zero. It is not a minimum for gross reserved contributions. | |||
=== 2. Proposal Phase (User-Proposed Fundraising Only) === | |||
* '''Upcoming phase:''' Currently 7 days. Eligible influence holders can add options with different <code>n</code> and <code>mr</code> combinations. | |||
* '''Voting phase:''' Currently 7 days. Influence holders vote with their influence. | |||
* '''Do nothing:''' A user-proposed fundraising ballot includes a default "do nothing" option. If it wins, no event is created. Otherwise the winning fundraising terms create an event. | |||
These stages also apply to a '''user-created proposal for a club in debt'''. It is the automatic season-end path, not debt status alone, that bypasses voting. | |||
=== 3. Contribution Phase === | |||
The | An event specifies the number of influence offered, its minimum raise and its end time. The contribution window is currently '''28 days from event creation'''. | ||
Any user with sufficient available SVC can contribute a positive amount. Contributions are not price bids: users do not choose a price per influence, and the final price and allocation are determined at settlement. | |||
* Contributions are '''reserved''' against the user's balance immediately, reducing available SVC. They are not yet deducted from the total balance. | |||
* Users can top up while the event remains active. Top-ups are combined into one contribution per user and retain the user's original contribution ID for tie-breaking. | |||
* The club's funding multiplier is currently '''100×''': each 1 SVC actually spent by contributors credits 100 SVC to the club. Unspent reservations do not generate club income. | |||
=== 4. Settlement === | |||
The game finalises an event when block time reaches or passes its end time. | |||
= | All monetary calculations use integer '''raw units''', where '''10,000 raw units = 1 SVC'''. Influence counts are whole influence and are not scaled. | ||
==== Price and Success Check ==== | |||
Let <code>G</code> be total gross contributions in raw units and <code>N</code> the number of influence offered: | |||
<pre>P = floor(G / N)</pre> | |||
< | <code>P</code> is the raw-unit price per influence. The price is therefore rounded down to '''0.0001 SVC increments, not whole SVC'''. | ||
For a positive price, the tentative number sold is: | |||
<pre>S = min(N, sum(floor(each_user_contribution / P))) | |||
club_receipt = floor(dilution-coins-multiplier-bps * S * P / 10,000)</pre> | |||
The event succeeds if at least one user contributed and the calculated club receipt meets the minimum raise. If it fails, no influence is issued, no contribution is spent and all reservations are released. | |||
==== Allocation and Payment ==== | |||
Contributors are processed in order of '''largest combined contribution first''', then '''lowest original contribution ID first''' for equal amounts. | |||
At a positive price: | |||
<pre>influence_bought = min(influence_remaining, floor(contribution / P)) | |||
amount_spent = influence_bought * P | |||
unspent_amount = contribution - amount_spent</pre> | |||
Only the amount spent is deducted from the user's total SVC balance. Newly issued influence is credited to the user. All remaining reservations are released. | |||
The club receives the total actually spent by all contributors multiplied by <code>dilution-coins-multiplier-bps / 10,000</code>, rounded down in raw units. Currently this is exactly '''100×''' the amount spent. | |||
'''Allocation is not guaranteed to be exactly proportional.''' Integer rounding and allocation order can leave later contributors with less influence or a full release of their reserved contribution. Some offered influence may remain unissued. | |||
If nobody contributes, the event fails and no influence is issued. | |||
== Key Parameters == | == Key Parameters == | ||
Values checked on 23 September 2026: | |||
{| class="wikitable" | {| class="wikitable" | ||
! Parameter !! | ! Parameter !! Meaning !! Value | ||
|- | |- | ||
| <code>dilutions-enabled</code> || | | <code>dilutions-enabled</code> || Fundraising enable switch || 1 | ||
|- | |- | ||
| <code>dilution-min-bps</code> || | | <code>dilution-min-bps</code> || Proposal threshold against the greater of actual outstanding influence and 1,000,000 || 500 (5%, rounded up) | ||
|- | |- | ||
| <code>dilution-max-bps</code> || Maximum new influence | | <code>dilution-max-bps</code> || Maximum user-proposed new influence against actual outstanding influence || 2,000 (20%, rounded down) | ||
|- | |- | ||
| <code>dilution-coins-multiplier-bps</code> || | | <code>dilution-coins-multiplier-bps</code> || Club-receipt multiplier used for settlement and minimum-raise checks || 1,000,000 (100×) | ||
|- | |- | ||
| <code>dilution-upcoming-seconds</code> || | | <code>dilution-upcoming-seconds</code> || Upcoming/amendable phase || 604,800 (7 days) | ||
|- | |- | ||
| <code>dilution-voting-seconds</code> || | | <code>dilution-voting-seconds</code> || Voting phase || 604,800 (7 days) | ||
|- | |- | ||
| <code>dilution-seconds</code> || | | <code>dilution-seconds</code> || Contribution window || 2,419,200 (28 days) | ||
|- | |- | ||
| <code>min-seconds-between-dilution-votes</code> || | | <code>min-seconds-between-dilution-votes</code> || Wait from finalising a user-proposed vote to allowing a new proposal || 6,048,000 (70 days) | ||
|- | |- | ||
| <code>seasonend-dilution-bp</code> || | | <code>seasonend-dilution-bp</code> || Automatic new influence against actual outstanding influence || 500 (5%, rounded down) | ||
|} | |} | ||
== | == Balance and Influence History == | ||
* | * Positive club receipts use the balance-sheet label <code>dilution_income</code>. | ||
* Positive user spending uses the user balance-sheet transaction type <code>dilution</code>. | |||
* Newly credited influence uses the influence transaction type <code>dilution</code>. | |||
* Releasing an unspent reservation is not a new SVC payment to the user: that SVC was never deducted from their total balance. | |||
* | |||
* | |||
== | == Move Summary == | ||
The following are move-field templates, not complete signed transactions. Replace the placeholder strings with valid integer values. '''Both <code>a</code> and <code>mr</code> are in raw units (10,000 per SVC), not displayed SVC amounts.''' Influence counts and IDs are not scaled. | |||
Propose fundraising or add an option to an upcoming proposal: | |||
<pre>{"p": {"s": {"club": "CLUB_ID"}, "dilute": {"n": "INFLUENCE_COUNT", "mr": "MINIMUM_CLUB_RECEIPT_RAW_UNITS"}}}</pre> | |||
Contribute to an event: | |||
<pre>{"dc": {"a": "CONTRIBUTION_RAW_UNITS", "e": "EVENT_ID"}}</pre> | |||
Vote on a proposal: | |||
<pre>{"v": {"p": "PROPOSAL_ID", "o": "OPTION_ID"}}</pre> | |||
For example, a contribution amount of <code>500000</code> represents '''50 SVC'''. | |||
== Summary == | == Summary == | ||
* '''User-proposed fundraising:''' propose → vote → contribute → settle. | |||
* '''Automatic season-end fundraising for eligible debt clubs:''' contribute → settle, with no vote. | |||
The final allocation uses integer pricing and largest-contribution-first ordering. The club receives the multiplied amount actually spent, not gross reserved contributions. Fundraising can increase outstanding influence beyond the base supply, but neither raising money nor exactly proportional allocation is guaranteed. | |||
[[Category:Game Mechanics]] | [[Category:Game Mechanics]] | ||
Latest revision as of 11:32, 24 September 2026
Influence fundraising allows a club to issue new influence in exchange for contributions of SVC (Soccerverse Coin). The club receives the contributors' actually spent SVC multiplied by the fundraising multiplier. Contributors receive newly created influence, which carries voting power and eligibility for income payouts under the game's normal rules.
Fundraising applies only to club influence, not player influence. It increases outstanding influence by the amount actually issued and can take supply above the base supply of 1,000,000. It does not necessarily take supply above that level in every event.
The parameter values below were checked against the live game on 23 September 2026. Parameters can change.
Why Fundraising Exists
- Helping clubs in debt. At season end, eligible negative-balance clubs get an automatic fundraising event, without a proposal or vote. There is no guarantee that it attracts contributions or raises enough to clear the debt.
- Influencer-led funding. Eligible influence holders can propose fundraising for a club, whether or not the club is in debt. Influence holders vote on whether to proceed and on the fundraising terms.
The Lifecycle of a Fundraise
1. Triggering
A. Automatic End-of-Season Fundraising
While fundraising is enabled, clubs whose balance is negative when the season-end fundraising check runs are considered for an automatic event.
- The number of influence offered is
floor(outstanding_influence * seasonend-dilution-bp / 10,000), currently 5% of actual outstanding influence, rounded down. - If that calculation produces zero, no event is created.
- The minimum raise is zero.
- The event goes directly to contributions. There is no proposal, upcoming phase or vote.
B. User-Proposed Fundraising
To propose a fundraiser or add an option to an upcoming proposal, a user must hold at least:
ceil(dilution-min-bps * max(outstanding_influence, 1,000,000) / 10,000)
At the current 500-basis-point setting, this means:
- 50,000 influence when outstanding influence is at or below 1,000,000.
- 5% of actual outstanding influence, rounded up when outstanding influence exceeds 1,000,000.
This is a proposal eligibility threshold, not a voting turnout quorum.
A new user-proposed fundraiser cannot be created until the club's cooldown has elapsed. Currently this is 70 days after the previous user-proposed vote was finalised, even if that vote selected "do nothing". An existing upcoming proposal can be amended with another valid option; once it enters voting, new options cannot be added.
The proposed terms are:
n: The number of new influence offered, from 1 tofloor(outstanding_influence * dilution-max-bps / 10,000). Currently this is up to 20% of actual outstanding influence, rounded down. Unlike proposal eligibility, this calculation does not use a 1,000,000 minimum denominator.mr: The minimum amount the club must receive after allocation rounding and the funding multiplier. It may be zero. It is not a minimum for gross reserved contributions.
2. Proposal Phase (User-Proposed Fundraising Only)
- Upcoming phase: Currently 7 days. Eligible influence holders can add options with different
nandmrcombinations. - Voting phase: Currently 7 days. Influence holders vote with their influence.
- Do nothing: A user-proposed fundraising ballot includes a default "do nothing" option. If it wins, no event is created. Otherwise the winning fundraising terms create an event.
These stages also apply to a user-created proposal for a club in debt. It is the automatic season-end path, not debt status alone, that bypasses voting.
3. Contribution Phase
An event specifies the number of influence offered, its minimum raise and its end time. The contribution window is currently 28 days from event creation.
Any user with sufficient available SVC can contribute a positive amount. Contributions are not price bids: users do not choose a price per influence, and the final price and allocation are determined at settlement.
- Contributions are reserved against the user's balance immediately, reducing available SVC. They are not yet deducted from the total balance.
- Users can top up while the event remains active. Top-ups are combined into one contribution per user and retain the user's original contribution ID for tie-breaking.
- The club's funding multiplier is currently 100×: each 1 SVC actually spent by contributors credits 100 SVC to the club. Unspent reservations do not generate club income.
4. Settlement
The game finalises an event when block time reaches or passes its end time.
All monetary calculations use integer raw units, where 10,000 raw units = 1 SVC. Influence counts are whole influence and are not scaled.
Price and Success Check
Let G be total gross contributions in raw units and N the number of influence offered:
P = floor(G / N)
P is the raw-unit price per influence. The price is therefore rounded down to 0.0001 SVC increments, not whole SVC.
For a positive price, the tentative number sold is:
S = min(N, sum(floor(each_user_contribution / P))) club_receipt = floor(dilution-coins-multiplier-bps * S * P / 10,000)
The event succeeds if at least one user contributed and the calculated club receipt meets the minimum raise. If it fails, no influence is issued, no contribution is spent and all reservations are released.
Allocation and Payment
Contributors are processed in order of largest combined contribution first, then lowest original contribution ID first for equal amounts.
At a positive price:
influence_bought = min(influence_remaining, floor(contribution / P)) amount_spent = influence_bought * P unspent_amount = contribution - amount_spent
Only the amount spent is deducted from the user's total SVC balance. Newly issued influence is credited to the user. All remaining reservations are released.
The club receives the total actually spent by all contributors multiplied by dilution-coins-multiplier-bps / 10,000, rounded down in raw units. Currently this is exactly 100× the amount spent.
Allocation is not guaranteed to be exactly proportional. Integer rounding and allocation order can leave later contributors with less influence or a full release of their reserved contribution. Some offered influence may remain unissued.
If nobody contributes, the event fails and no influence is issued.
Key Parameters
Values checked on 23 September 2026:
| Parameter | Meaning | Value |
|---|---|---|
dilutions-enabled |
Fundraising enable switch | 1 |
dilution-min-bps |
Proposal threshold against the greater of actual outstanding influence and 1,000,000 | 500 (5%, rounded up) |
dilution-max-bps |
Maximum user-proposed new influence against actual outstanding influence | 2,000 (20%, rounded down) |
dilution-coins-multiplier-bps |
Club-receipt multiplier used for settlement and minimum-raise checks | 1,000,000 (100×) |
dilution-upcoming-seconds |
Upcoming/amendable phase | 604,800 (7 days) |
dilution-voting-seconds |
Voting phase | 604,800 (7 days) |
dilution-seconds |
Contribution window | 2,419,200 (28 days) |
min-seconds-between-dilution-votes |
Wait from finalising a user-proposed vote to allowing a new proposal | 6,048,000 (70 days) |
seasonend-dilution-bp |
Automatic new influence against actual outstanding influence | 500 (5%, rounded down) |
Balance and Influence History
- Positive club receipts use the balance-sheet label
dilution_income. - Positive user spending uses the user balance-sheet transaction type
dilution. - Newly credited influence uses the influence transaction type
dilution. - Releasing an unspent reservation is not a new SVC payment to the user: that SVC was never deducted from their total balance.
Move Summary
The following are move-field templates, not complete signed transactions. Replace the placeholder strings with valid integer values. Both a and mr are in raw units (10,000 per SVC), not displayed SVC amounts. Influence counts and IDs are not scaled.
Propose fundraising or add an option to an upcoming proposal:
{"p": {"s": {"club": "CLUB_ID"}, "dilute": {"n": "INFLUENCE_COUNT", "mr": "MINIMUM_CLUB_RECEIPT_RAW_UNITS"}}}
Contribute to an event:
{"dc": {"a": "CONTRIBUTION_RAW_UNITS", "e": "EVENT_ID"}}
Vote on a proposal:
{"v": {"p": "PROPOSAL_ID", "o": "OPTION_ID"}}
For example, a contribution amount of 500000 represents 50 SVC.
Summary
- User-proposed fundraising: propose → vote → contribute → settle.
- Automatic season-end fundraising for eligible debt clubs: contribute → settle, with no vote.
The final allocation uses integer pricing and largest-contribution-first ordering. The club receives the multiplied amount actually spent, not gross reserved contributions. Fundraising can increase outstanding influence beyond the base supply, but neither raising money nor exactly proportional allocation is guaranteed.