Key Operations Flows

1. Key Operation Flows

1.1 Staking Flow

This section contains the flows related to the staking part of the protocol.

1.1.1 sPRL1 Flow

1.1.1.1 sPRL1 Deposit

  • Transfer PRL tokens to the sPRL1 contract

  • Mint sPRL1 tokens to the user equivalent to the amount of PRL tokens transferred

1.1.1.2 sPRL1 Request Withdraw

  • Burn the amount of sPRL1 tokens that the user wants to withdraw

  • Set the unlocking time for this request

1.1.1.3 sPRL1 Withdraw

  • Calculate the penalty based on the time left before the unlocking time.

  • Send the PRL tokens to the user

  • mint sPRL1 tokens to the fee receiver equal to the amount slashed from the penalty.

1.1.1.4 sPRL1 EmergencyWithdraw

  • Burn the amount of sPRL1 tokens that the user wants to withdraw

  • Send the PRL tokens to the user without penalties.

1.1.2 sPRL2 Flow

This section contains the flows related to the sPRL2 contract.

1.1.2.1 sPRL2 Deposit PRL/WETH or PRL/ETH

  • Transfer PRL/WETH or PRL/ETH to the sPRL2 contract

  • Deposit ETH to WETH if needed

  • Add PRL/WETH liquidity into the Balancer pool (80PRL/20WETH)

  • Receive BPT tokens

  • Stake BPT tokens in Aura

  • mint sPRL2 tokens to the user equivalent to the amount of Aura BPT lp tokens received

1.1.2.2 sPRL2 Deposit BPT 80PRL/20WETH

  • Transfer BPT to the sPRL2 contract

  • Deposit BPT into Aura pool and stake it

  • Mint sPRL2 tokens to the user equivalent to the amount of BPT transferred

1.1.2.3 sPRL2 Request Withdraw

  • Burn the amount of sPRL2 tokens that the user wants to withdraw

  • Set the unlocking time for this request

1.1.2.4 sPRL2 Withdraw PRL/ETH or PRL/WETH

  • Calculate the penalty based on the time left before the unlocking time.

  • Withdraw and unwrap the amount of Aura BPT

  • Receive Balancer BPT tokens from Aura

  • Withdraw the amount of PRL/WETH from the Balancer pool

  • Send the PRL/WETH to the user or PRL/ETH to the user

  • Send the BPT lp penalty to the fee receiver

1.1.2.5 sPRL2 Withdraw BPT 80PRL/20WETH

  • Calculate the penalty based on the time left before the unlocking time.

  • Withdraw the amount of Aura BPT from Aura

  • Receive Balancer BPT tokens from Aura

  • Send the BPT lp tokens to the user

  • Send the BPT lp penalty to the fee receiver

1.1.2.6 sPRL2 EmergencyWithdraw

  • Burn the amount of sPRL2 tokens that the user wants to withdraw

  • Withdraw the amount of Aura BPT from Aura

  • Receive Balancer BPT tokens from Aura

  • Send the BPT tokens to the user without penalties.

1.2 Reward Distribution Flow

  • RewardMerkleDistributor will receive the fees from the MainFeeDistributor at any time.

  • Using off-chain events and calculations, the protocol retrieve the total amount received during a specific period.

  • Protocol will generate a merkle root based on the total amount received and the amount of rewards that will be distributed to the users.

  • The merkle root will be updated in the RewardMerkleDistributor contract.

  • Users will be able to claim their rewards using the merkle proof.

Last updated

Was this helpful?