Please describe your proposed solution
Bootstrapping Staking Contracts allow projects to reward TVL and staking of tokens over a fixed period. Projects are able to provide a target amount of tokens staked and provide a limit of rewards to be distributed.
Rewards will be depleted organically as new stakes move the post closer to the goal.
Users create a Stake UTxO that records details like the staked amount, calculated rewards, and staking timestamp. Rewards can be claimed periodically throughout the staking duration.
The smart contracts state a limit of total rewards (K) of tokens, and staking remains active until a target amount of tokens staked (valued in ADA) is reached (J).
The rewards a user receives are based on the value of their deposit (amountToStake), measured in ADA, relative to the total amount deposited in ADA since the contract's launch (totalDeposited). The value of the tokens staked in the Stake UTxO is determined in ADA at the moment the staking action is performed. The formula for calculating rewards is:
Rewards can be claimed peridocally every "P" seconds, with each claim allowing:
where D is the total staking duration, during which withdrawals of the staked tokens are not allowed.
Parameters like total rewards (K), staking target (J), staking duration (D), and reward claiming period (P) are set in the contract, with the total deposited amount provided by theproject during each stake transaction.