Protocol Workflows
Stakers Workflow
Staker Deposit Optimistic
- The Staker sends - depositmessage to Pool
- Pool instantly requests Jetton Pool minter to mint new tokens for the Staker. 
- Jetton Pool Minter sends Poll Jettons to Stakers Jetton Wallet 
Staker Withdrawal Optimistic
- The Staker burns his Jetton Pool amount at any time during the validation round. 
- Skater's Jetton Wallet sends notification about burn to Pool. 
- The Pool immediately sends back to the Staker's wallet unstaked funds with a reward. If the pool has not have enough funds, Staker will get back Pool Jettons to his Jetton Wallet. 
Staker Deposit Pessimistic
- The Staker sent a deposit during the validation round to the pool address. 
- The Staker received a Payout NFT Item (deposit) in return, with the corresponding amount for staking. 
- At the end of the same round, the Pool sends - start_distributionmessage, and the Staker's NFT is burned (on behalf of the collection contract).
- The Staker receives a Pool Jetton in exchange for TON staked at the beginning of the next validation round. 
Staker Withdraw Pessimistic
- The Staker sends a burn to their Pool Jetton Wallet during the current round. 
- For the burned Pool Jettons, the Pool contract sends a request to mint Payout NFT (withdrawal) in the Payouts Collection (withdrawal). 
- The Staker received Payout NFT (withdrawal). 
- At the end of the current round, the Pool sends - start_distributionmessage, and the Staker's NFT is burned (on behalf of the contract of the Payouts Collection (Withdrawal)).
- The Staker receives all rewards for the last round and all preceding ones. The next round is launched without the participation of his funds. 
Validator Workflows
Validator Request Loan
Before the start of elections, Validators can request a loan:
- The Validator requests from the Controller the ability to take a loan, indicating the acceptable percentage and desired amount. 
- The Controller sends a request to the Pool with the corresponding parameters. 
- If the Pool has an available amount to loan at the specified percentage, the pool returns a confirmation to the controller, along with the issued loan. 
After this, the Validator can send an application to participate in the elections through the Controller.
- The Validator sends a request to the Controller to participate in the elections. 
- If the Controller has a borrowed amount, it is added and redirected to the elector in the application. 
Validator Loan Repayment
- After the Validation cycle ends, the Elector returns the stake along with the reward to the Controller. 
- The Controller carries out the loan repayment in a - loan_repaymentmessage to the Pool.
- When the last debt in the Pool is repaid, the round_update() is carried out. 
Optional Workflow Types
- Optimistic (instant) deposits/withdrawals vs Pessimistic (delayed) deposits/withdrawals 
- NFT bills vs Delayed Jettons Payouts 
- Liquidity pool Jetton DAO - governance voting 
- Governor Multisignature Wallet vs Governor DAO 
Last updated