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

Funds Type
Who Can Withdraw or Access?

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