Accumulated Funds - Shareholding
Who Can Access the Accumulated Funds in the Shareholding Contract?
Who Can Access the Accumulated Funds in the Shareholding Contract?
1. Funds from Share Purchases and System Fees
Where do they go? All native currency (e.g., POL on Polygon) sent to the contract—either from buying shares or from system fees—is immediately credited to shareholders as pending rewards.
How can funds be withdrawn? Only the shareholders themselves can withdraw their accumulated rewards, using the
claimRewards()
function. Each shareholder can only claim what is owed to them—no one else can claim your rewards.Analogy: It’s like a group safe deposit box with individual drawers: you can open your own drawer and take out your earnings, but no one—including the manager—can touch anyone else’s drawer.
2. Owner’s Powers
Before renouncing ownership: The owner can:
Pause/unpause the contract (temporarily stopping buying/reinvesting for safety).
Update price parameters or limit max share purchases per buy.
Withdraw any leftover (unassigned) native currency from the contract using
withdrawNative()
.But: Normally, all purchase/system funds are distributed instantly to shareholders, so this leftover should be zero unless something unusual happens (like an accidental direct transfer not routed as a reward).
Cannot withdraw user rewards, take shares from others, or change the number of shares.
After ownership is renounced:
No one (not even the original owner) can pause, change, or withdraw anything with owner-only functions. The contract becomes fully immutable and self-governing.
Analogy: The owner is like a referee: they can pause the game or tweak minor settings, but they can never take prize money that belongs to players.
3. Special Cases: Direct Transfers
If someone sends native currency directly to the contract (not using a buy function), it’s treated as system fees and is immediately distributed among all shareholders (can be claimed via
claimRewards()
).No one—including the owner—can take these funds outright.
4. No “Emergency Withdraw,” No Admin Backdoor
There are no functions that allow the owner (or anyone else) to withdraw other users’ rewards or bypass the public process.
Every shareholder’s pending rewards are tracked in the ledger and can only be claimed by that address.
Summary Table
Rewards from purchases
Only the individual shareholder (using claimRewards()
)
Rewards from system fees
Only the individual shareholder (using claimRewards()
)
Unassigned leftovers
Only the owner (via withdrawNative()
), but should be zero
Shares
Only those with a share balance; never taken by owner/admin
In Simple Words
You (and only you) can claim your share of the rewards.
The owner can never take your pending rewards or shares.
If ownership is renounced, the protocol runs forever, as written.
Any funds in the system are either (a) instantly distributed to shareholders, or (b) remain unclaimed only if someone sends funds outside the standard methods (in which case, the owner can withdraw only that leftover amount).
Bottom line: No one—not even the owner—can ever take user rewards or shares. The contract is built for trustless, automated, and transparent distribution. The only exception is rare leftover funds not already owed to users, which the owner can withdraw. After ownership is renounced, not even that is possible—full trustlessness forever.
Last updated