---
# System prepended metadata

title: Loopfi for Saddle
tags: [Deployed Contracts]

---

# Loopfi for Saddle

###### tags: `Deployed Contracts`

## Prepare to deploy

***Locker:***
1. maximumBoostPayment: 0, lock 时的 donate 比率最大值。
2. boostRate： 10000， 100%
3. nextMaximumBoostPayment： 0，
4. nextBoostRate： 10000， 100%
5. minimumStake： 10000，从locker存储到staking proxy 的最小比率值
6. maximumStake： 10000，从locker存储到staking proxy 的最大比率值
7. stakeOffsetOnLock： 500，从locker存储到staking proxy 的偏差比率值
8. kickRewardEpochDelay： 4，解锁时间之后的延长自行取回的epoch 时间，即到期4个epoch后，其他用户可以帮用户kick.
9. kickRewardPerEpoch： 100,kick用户时，获取的奖励比率，1%?


// 给locker添加reward token
addReward(
    address _rewardsToken,
    address _distributor,
    bool _useBoost
)

***LpfStakingProxy:***

1. callIncentive: 100， 获取奖励分发时，调用者获取奖励的比率， 1%


***LPFRewardPool:***
1. newRewardRatio: 830，新earmark的奖励打入后，奖励是累加进本阶段还是不做处理的界限比率值。

***SdlBaseRewardPool:***
1. newRewardRatio: 830，新earmark的奖励打入后，奖励是累加进本阶段还是不做处理的界限比率值。

***SdlVirtualBalanceRewardPool:***
1. newRewardRatio: 830，新earmark的奖励打入后，奖励是累加进本阶段还是不做处理的界限比率值。

***SdlBooster:***
1. lockIncentive:1000; //incentive to sdl stakers
2. stakerIncentive:450; //incentive to native token stakers
3. earmarkIncentive:50; //incentive to users who spend gas to make calls
4. platformFee:0; //possible fee to build treasury
5. MaxFees:2000; 以上所有费用的总和最大值

***SdlDepositor：***
1. lockIncentive：10， deposit 时同时lock的奖励比率，0.1%



---

## Trigger actions

### 1. Lock SDL into veSDL 
- Trigger lock
```javascript
	await depositor.lockSaddle()
```
- Get trigger incentive
```javascript
	await depositor.incentiveSdl()
```
### 2. Earmark SDL reward
- Get LP Pool counts
```javascript
	const len = await booster.poolLength();
```
- Trigger earmark
```javascript!
	// Trigger earmark for Pool 0
	await booster.earmarkRewards(0);
```
- Get trigger incentive
```javascript
	await booster.callStatic.earmarkRewards(0);
```
### 3. Reward Distribute for LPF Locker:
LpfStakingProxy: [ABI](https://github.com/dforce-network/Stranger/blob/saddle/abi/IStakingProxy.json)

1. 分发locker的奖励： LpfStakingProxy.distribute()

- Get trigger incentive
```javascript
	await LpfStakingProxy.callStatic.distribute();
```

2. 分发locker的extra奖励：LpfStakingProxy.distributeOther(_token)

**前提：LPFRewardPool.extraRewardsLength() 返回值不为0，且对应的token在LpfStakingProxy合约中数量不为0**

[LPFRewardPool ABI](https://github.com/dforce-network/Stranger/blob/saddle/abi/ILPFRewardPool.json)

所以先调用 LPFRewardPool.extraRewardsLength()，获取长度，
然后调用 LPFRewardPool.extraRewards(), 获取对应的token地址，
例如 extraRewardsLength = 2， 
则token0地址为 extraRewards(0)
则token1地址为 extraRewards(1)
当这两种token存在LpfStakingProxy中时，则distributeOther(token0),distributeOther(token1)


### Lock LPF APY

首先拿 reward token地址, rewardTokenAddress = locker.rewardTokens(0), 默认填写0 即可。
然后是 rewardTokenDetails = locker.rewardData(rewardTokenAddress), 返回值为：
```
Reward {
    bool useBoost;
    uint40 periodFinish;
    uint208 rewardRate;
    uint40 lastUpdateTime;
    uint208 rewardPerTokenStored;
}
```
则当前token的reward rate为： rewardTokenDetails.rewardRate
则其APY为： rewardRate * rewardPrice * 365 * 24 * 60 * 60 / (totalLocked * lockedTokenPrice)

## Contract Addresses

### 08-29 Mainnet

|                 | address                                    | link                                                                            |
|:--------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
| SDL             | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| LPF             | 0x3650B69f86cB593f116e276C30666834336c0647 | [link](https://etherscan.io/address/0x3650B69f86cB593f116e276C30666834336c0647) |
| pSDL            | 0xC1B4dA8f275E9c74b67f170Cd5aa0bee82d4B5E0 | [link](https://etherscan.io/address/0xC1B4dA8f275E9c74b67f170Cd5aa0bee82d4B5E0) |
| voter           | 0x6E399F1d376237aE705DD015894fC3FB559521b4 | [link](https://etherscan.io/address/0x6E399F1d376237aE705DD015894fC3FB559521b4) |
| depositor       | 0xC64Cb881380Fb53944f6Fc24aC5348De23001633 | [link](https://etherscan.io/address/0xC64Cb881380Fb53944f6Fc24aC5348De23001633) |
| booster         | 0xbfd627aCC830B613A12e98e58d89839B1B4A56D4 | [link](https://etherscan.io/address/0xbfd627aCC830B613A12e98e58d89839B1B4A56D4) |
| pSDLStaking     | 0x8599657221E5495630B35A655F42cf978bd64c7B | [link](https://etherscan.io/address/0x8599657221E5495630B35A655F42cf978bd64c7B) |
| pSDLExtraReward | 0xBDd5A48427EB1A57d00c92441ECf3109192D94A7 | [link](https://etherscan.io/address/0xBDd5A48427EB1A57d00c92441ECf3109192D94A7) |
| proxyFactory    | 0x488A68953e06fc5AA462557e6c213a908a5Abd95 | [link](https://etherscan.io/address/0x488A68953e06fc5AA462557e6c213a908a5Abd95) |
| tokenFactory    | 0xb2f344e6bfa63CeF606d126dDb75916b1F6A2155 | [link](https://etherscan.io/address/0xb2f344e6bfa63CeF606d126dDb75916b1F6A2155) |
| rewardFactory   | 0xdBeF4388927e6C0883BE6f642C8c273F407C5191 | [link](https://etherscan.io/address/0xdBeF4388927e6C0883BE6f642C8c273F407C5191) |
| stashFactory    | 0x3e28F61A770Fa8806bceEF206DD3176a2Bb14D06 | [link](https://etherscan.io/address/0x3e28F61A770Fa8806bceEF206DD3176a2Bb14D06) |
| stashRewardV3   | 0xE5098FEcee6FF001Dfbff586FaCfD6e34F35b837 | [link](https://etherscan.io/address/0xE5098FEcee6FF001Dfbff586FaCfD6e34F35b837) |
| LPFStaking      | 0x7477004e5170B65a137bCc5D954703a1C0D09eEb | [link](https://etherscan.io/address/0x7477004e5170B65a137bCc5D954703a1C0D09eEb) |
| locker          | 0x74F55c24f07FDE50AFf00f4Ef027d1561C17C619 | [link](https://etherscan.io/address/0x74F55c24f07FDE50AFf00f4Ef027d1561C17C619) |
| LPFStakingProxy | 0x1503e9C2860c68930C64B16918B82a2f70B0eaCa | [link](https://etherscan.io/address/0x1503e9C2860c68930C64B16918B82a2f70B0eaCa) |
| LPF-USX LP      | 0xed4DD6aeAeCFC4d289A9578db12100b9a247DF2F | [link](https://etherscan.io/address/0xed4dd6aeaecfc4d289a9578db12100b9a247df2f) |


#### LP Staking Pools
|                              | address                                    | link                                                                            |
|:---------------------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
| USX_USDCLP                   | 0x1AE28a6ACA177c29b5773e91fbf74AfB0B7fE5C9 | [link](https://etherscan.io/address/0x1AE28a6ACA177c29b5773e91fbf74AfB0B7fE5C9) |
| USX_USDCLPStaking            | 0xb099220A4204F245D7384871Fb18a7977Cbf5A33 | [link](https://etherscan.io/address/0xb099220A4204F245D7384871Fb18a7977Cbf5A33) |
| USX_USDCLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| USX_USDC Saddle-Pool | 0x2bff1b48cc01284416e681b099a0cddca0231d72 | [link](https://etherscan.io/address/0x2bff1b48cc01284416e681b099a0cddca0231d72) |
| p-USX_USDC | 0xbc89a9b39bb295a8be4e2cbea1af9dc9b47017a3 | [link](https://etherscan.io/address/0xbc89a9b39bb295a8be4e2cbea1af9dc9b47017a3) |

|                                 | address                                    | link                                                                            |
| :------------------------------ | :----------------------------------------- | :------------------------------------------------------------------------------ |
| saddleUSDV2LP                   | 0x5f86558387293b6009d7896A61fcc86C17808D62 | [link](https://etherscan.io/address/0x5f86558387293b6009d7896A61fcc86C17808D62) |
| saddleUSDV2LPStaking            | 0xc576C2ff34C3FE72E447A2500665f4Bc477eAe06 | [link](https://etherscan.io/address/0xc576C2ff34C3FE72E447A2500665f4Bc477eAe06) |
| saddleUSDV2LPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| saddleUSDV2 Saddle-Pool         | 0x2bff1b48cc01284416e681b099a0cddca0231d72 | [link](https://etherscan.io/address/0x2bff1b48cc01284416e681b099a0cddca0231d72) |
| p-saddleUSDV2                   | 0xEf7DAe219C4771AdE9600fcE42518010A4AE0ECE | [link](https://etherscan.io/address/0xEf7DAe219C4771AdE9600fcE42518010A4AE0ECE) |

|                                | address                                    | link                                                                            |
| :----------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| FRAX_3poolLP                   | 0x0785aDDf5F7334aDB7ec40cD785EBF39bfD91520 | [link](https://etherscan.io/address/0x0785aDDf5F7334aDB7ec40cD785EBF39bfD91520) |
| FRAX_3poolLPStaking            | 0x11092DB71686266313dD37d10c95a2eaa181bFDa | [link](https://etherscan.io/address/0x11092DB71686266313dD37d10c95a2eaa181bFDa) |
| FRAX_3poolLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| FRAX_3pool Saddle-Pool         | 0x8cAEa59f3Bf1F341f89c51607E4919841131e47a | [link](https://etherscan.io/address/0x8cAEa59f3Bf1F341f89c51607E4919841131e47a) |
| p-FRAX_3pool                   | 0x7bCEA7E9676f7e084eE9Ce14A3A1fc7c211CF436 | [link](https://etherscan.io/address/0x7bCEA7E9676f7e084eE9Ce14A3A1fc7c211CF436) |

|                                | address                                    | link                                                                            |
| :----------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| FRAX_alUSDLP                   | 0x3cF7b9479a01eeB3bbfC43581fa3bb21cd888e2A | [link](https://etherscan.io/address/0x3cF7b9479a01eeB3bbfC43581fa3bb21cd888e2A) |
| FRAX_alUSDLPStaking            | 0xfaBAeCb9894c6A3A1a24Ac890C98b2A46C5fF764 | [link](https://etherscan.io/address/0xfaBAeCb9894c6A3A1a24Ac890C98b2A46C5fF764) |
| FRAX_alUSDLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| FRAX_alUSD Saddle-Pool         | 0xFB516cF3710fC6901F2266aAEB8834cF5e4E9558 | [link](https://etherscan.io/address/0xFB516cF3710fC6901F2266aAEB8834cF5e4E9558) |
| p-FRAX_alUSD                   | 0x1F056eDC06b6B3844Baa5D7ffF0Aa6c846ab92C1 | [link](https://etherscan.io/address/0x1F056eDC06b6B3844Baa5D7ffF0Aa6c846ab92C1) |

|                               | address                                    | link                                                                            |
| :---------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| FRAX_sUSDLP                   | 0x6Ac7a4cB3BFa90DC651CD53EB098e23c88d04e77 | [link](https://etherscan.io/address/0x6Ac7a4cB3BFa90DC651CD53EB098e23c88d04e77) |
| FRAX_sUSDLPStaking            | 0xb6b94BDA18F44B8D361787a34DBaC00Fa13Da6Bb | [link](https://etherscan.io/address/0xb6b94BDA18F44B8D361787a34DBaC00Fa13Da6Bb) |
| FRAX_sUSDLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| FRAX_sUSD Saddle-Pool         | 0x69baA0d7c2e864b74173922Ca069Ac79d3be1556 | [link](https://etherscan.io/address/0x69baA0d7c2e864b74173922Ca069Ac79d3be1556) |
| p-FRAX_sUSD                   | 0x08cFb063379c3E980e347Ca3217022FA35f9DaB9 | [link](https://etherscan.io/address/0x08cFb063379c3E980e347Ca3217022FA35f9DaB9) |

|                               | address                                    | link                                                                            |
| :---------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| FRAX_USDCLP                   | 0x927E6f04609A45B107C789aF34BA90Ebbf479f7f | [link](https://etherscan.io/address/0x927E6f04609A45B107C789aF34BA90Ebbf479f7f) |
| FRAX_USDCLPStaking            | 0x32dD7287F2061Cf6Ef009037F8DBE8d18D4d2d14 | [link](https://etherscan.io/address/0x32dD7287F2061Cf6Ef009037F8DBE8d18D4d2d14) |
| FRAX_USDCLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| FRAX_USDC Saddle-Pool         | 0x13Cc34Aa8037f722405285AD2C82FE570bfa2bdc | [link](https://etherscan.io/address/0x13Cc34Aa8037f722405285AD2C82FE570bfa2bdc) |
| p-FRAX_USDC                   | 0x64c4fAf939b148057f2CC6b39887b10E3740cf03 | [link](https://etherscan.io/address/0x64c4fAf939b148057f2CC6b39887b10E3740cf03) |

|                               | address                                    | link                                                                            |
| :---------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| FRAX_USDTLP                   | 0x486DFCfdbF9025c062110E8c0344a15279aD0a85 | [link](https://etherscan.io/address/0x486DFCfdbF9025c062110E8c0344a15279aD0a85) |
| FRAX_USDTLPStaking            | 0x93cAcF49F5A53d2D8cABbF21CcD01FB8e07850Dc | [link](https://etherscan.io/address/0x93cAcF49F5A53d2D8cABbF21CcD01FB8e07850Dc) |
| FRAX_USDTLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| FRAX_USDT Saddle-Pool         | 0xC765Cd3d015626244AD63B5FB63a97c5634643b9 | [link](https://etherscan.io/address/0xC765Cd3d015626244AD63B5FB63a97c5634643b9) |
| p-FRAX_USDT                   | 0xB580ba16D035E62Ea7769a7a476741Fc0f1Bd1fa | [link](https://etherscan.io/address/0xB580ba16D035E62Ea7769a7a476741Fc0f1Bd1fa) |

|                              | address                                    | link                                                                            |
| :--------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| FRAX_USXLP                   | 0xAaD59B28CC76eD4c9F7C83E697E5cC925fB0B920 | [link](https://etherscan.io/address/0xAaD59B28CC76eD4c9F7C83E697E5cC925fB0B920) |
| FRAX_USXLPStaking            | 0x55bacF825C7cb92e76F4eFF33a6686825F54C482 | [link](https://etherscan.io/address/0x55bacF825C7cb92e76F4eFF33a6686825F54C482) |
| FRAX_USXLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| FRAX_USX Saddle-Pool         | 0x1dcB69a2b9148C641a43F731fCee123e2be30bAb | [link](https://etherscan.io/address/0x1dcB69a2b9148C641a43F731fCee123e2be30bAb) |
| p-FRAX_USX                   | 0x242840fedD8a703e887309897681a88F4A63D87a | [link](https://etherscan.io/address/0x242840fedD8a703e887309897681a88F4A63D87a) |

|                              | address                                    | link                                                                            |
| :--------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| saddleD4LP                   | 0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A | [link](https://etherscan.io/address/0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A) |
| saddleD4LPStaking            | 0x3F8e1cfCF7f29CfF7Ed0057Ccbf4ff5396F2b862 | [link](https://etherscan.io/address/0x3F8e1cfCF7f29CfF7Ed0057Ccbf4ff5396F2b862) |
| saddleD4LPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| saddleD4 Saddle-Pool         | 0xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6 | [link](https://etherscan.io/address/0xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6) |
| p-saddleD4                   | 0xa1aFeF97041682F88230dFA09296264754d15471 | [link](https://etherscan.io/address/0xa1aFeF97041682F88230dFA09296264754d15471) |

|                              | address                                    | link                                                                            |
| :--------------------------- | :----------------------------------------- | :------------------------------------------------------------------------------ |
| SDL_ETHSLP                   | 0x0C6F06b32E6Ae0C110861b8607e67dA594781961 | [link](https://etherscan.io/address/0x0C6F06b32E6Ae0C110861b8607e67dA594781961) |
| SDL_ETHSLPStaking            | 0xC78aE8A82C17b6F65432FFDc2bBCac4B28A9182E | [link](https://etherscan.io/address/0xC78aE8A82C17b6F65432FFDc2bBCac4B28A9182E) |
| SDL_ETHSLPStakingRewardToken | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| SDL_ETH Saddle-Pool         | 0x0C6F06b32E6Ae0C110861b8607e67dA594781961 | [link](https://etherscan.io/address/0x0C6F06b32E6Ae0C110861b8607e67dA594781961) |
| p-SDL_ETH                   | 0x6b52876465a1cec0dB03b6Ed650De2C66dC0e97D | [link](https://etherscan.io/address/0x6b52876465a1cec0dB03b6Ed650De2C66dC0e97D) |

#### Farm
|                              | address                                    | link                                                                            |
|:---------------------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
 RewardDistributorImpl | 0x989960D0C6dFBbe4fc9594ffbfcE00E97BB6181c | [link](https://etherscan.io/address/0x989960D0C6dFBbe4fc9594ffbfcE00E97BB6181c) |
| rewardDistributor     | 0x03163e25EAE1599fF84e6142238929967e118E9F | [link](https://etherscan.io/address/0x03163e25EAE1599fF84e6142238929967e118E9F) |
| LPFUSXStaking         | 0xDCa2cA29dc5710fB03A8db7E8B039d2847B69565 | [link](https://etherscan.io/address/0xDCa2cA29dc5710fB03A8db7E8B039d2847B69565) |
| LPFUSX LP         | 0xed4dd6aeaecfc4d289a9578db12100b9a247df2f | [link](https://etherscan.io/token/0xed4dd6aeaecfc4d289a9578db12100b9a247df2f) |

### 08-25

|                 | address                                    | link                                                                            |
|:----------------|:-------------------------------------------|:--------------------------------------------------------------------------------|
| locker          | 0x033ac8137f89b6747dCeDf5a4403C74Cd0Bd3aae | [link](https://etherscan.io/address/0x033ac8137f89b6747dCeDf5a4403C74Cd0Bd3aae) |
| LPFStakingProxy | 0xf24A67ceC97FD7A2270FF37819341c6Eb2BC52eD | [link](https://etherscan.io/address/0xf24A67ceC97FD7A2270FF37819341c6Eb2BC52eD) |

### 08-24

|                 | address                                    | link                                                                            |
|:----------------|:-------------------------------------------|:--------------------------------------------------------------------------------|
| locker          | 0x4877Db58eB78f6D8Ba23Bd18b29847d676fA303e | [link](https://etherscan.io/address/0x4877Db58eB78f6D8Ba23Bd18b29847d676fA303e) |
| LPFStakingProxy | 0xB49DE8C83c9B9b13e8C6306d2680eB6584D5A1D6 | [link](https://etherscan.io/address/0xB49DE8C83c9B9b13e8C6306d2680eB6584D5A1D6) |

### 08-23 

|                 | address                                    | link                                                                            |
|:----------------|:-------------------------------------------|:--------------------------------------------------------------------------------|
| SDL             | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| LPF             | 0x3650B69f86cB593f116e276C30666834336c0647 | [link](https://etherscan.io/address/0x3650B69f86cB593f116e276C30666834336c0647) |
| saddleD4        | 0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A | [link](https://etherscan.io/address/0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A) |
| pSDL            | 0x5505c3B2de14AEAa2Ba14aCa697445291e2C26E2 | [link](https://etherscan.io/address/0x5505c3B2de14AEAa2Ba14aCa697445291e2C26E2) |
| voter           | 0xbF94DE76e4203B0a21B65e3C842B72F35aC7a861 | [link](https://etherscan.io/address/0xbF94DE76e4203B0a21B65e3C842B72F35aC7a861) |
| depositor       | 0xc6dfFA100fDFDC541cA0D5C0AD10cEE8d4E3A53D | [link](https://etherscan.io/address/0xc6dfFA100fDFDC541cA0D5C0AD10cEE8d4E3A53D) |
| booster         | 0x089955E3d1cF2cB3DD8563E246926dd6c6f8d2eB | [link](https://etherscan.io/address/0x089955E3d1cF2cB3DD8563E246926dd6c6f8d2eB) |
| pSDLStaking     | 0x2bE04Cf2B5A260Fe4bfFDaC2f0741eC1Aca2934a | [link](https://etherscan.io/address/0x2bE04Cf2B5A260Fe4bfFDaC2f0741eC1Aca2934a) |
| pSDLExtraReward | 0x6e3603ADBD0928dCbBF2B863C79Bd924F161794B | [link](https://etherscan.io/address/0x6e3603ADBD0928dCbBF2B863C79Bd924F161794B) |
| proxyFactory    | 0xd0D358Ae2Ce2420267Beb0882A29EDEB0eA031cc | [link](https://etherscan.io/address/0xd0D358Ae2Ce2420267Beb0882A29EDEB0eA031cc) |
| tokenFactory    | 0x843D47E27ee030f03d9b50707BcFd5096bDa049e | [link](https://etherscan.io/address/0x843D47E27ee030f03d9b50707BcFd5096bDa049e) |
| rewardFactory   | 0x2AC128f0f83999bE4ec446dca02b97F4bF5C224E | [link](https://etherscan.io/address/0x2AC128f0f83999bE4ec446dca02b97F4bF5C224E) |
| stashFactory    | 0x2816C5777fF5a248DcA9E286C98595C316DB6849 | [link](https://etherscan.io/address/0x2816C5777fF5a248DcA9E286C98595C316DB6849) |
| stashRewardV1   | 0x66685c8CC9FfA4b1858026d0e54a84b7896830F9 | [link](https://etherscan.io/address/0x66685c8CC9FfA4b1858026d0e54a84b7896830F9) |
| stashRewardV2   | 0x7C3636d146032216DD2E85000984DE2D5840F49C | [link](https://etherscan.io/address/0x7C3636d146032216DD2E85000984DE2D5840F49C) |
| stashRewardV3   | 0x618d279279Ac9ACaA44a1733901630c921771DfC | [link](https://etherscan.io/address/0x618d279279Ac9ACaA44a1733901630c921771DfC) |
| LPFStaking      | 0x181d12696619C60B82a7f06a0ec943D6bA49F2A6 | [link](https://etherscan.io/address/0x181d12696619C60B82a7f06a0ec943D6bA49F2A6) |
| locker          | 0x390f419B60a7937e41708941908f77ADE1Ab48E5 | [link](https://etherscan.io/address/0x390f419B60a7937e41708941908f77ADE1Ab48E5) |
| LPFStakingProxy | 0xec35E5A07958e9df8084C828EB79e8302FBEA028 | [link](https://etherscan.io/address/0xec35E5A07958e9df8084C828EB79e8302FBEA028) |
| treasury        | 0x203c34268C4Ef5189543fB507b372c0cAa21074A | [link](https://etherscan.io/address/0x203c34268C4Ef5189543fB507b372c0cAa21074A) |


#### LP Staking Pools
|                   | address                                    | link                                                                            |
|:----------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
| saddleD4          | 0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A | [link](https://etherscan.io/address/0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A) |
| saddleD4Staking       | 0x4837fa2c44fDe94d97d652A7C4658204605288c2 | [link](https://etherscan.io/address/0x4837fa2c44fDe94d97d652A7C4658204605288c2) |
| saddleD4StakingRewardToken       | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |

### 08-20 update
|                | address                                    | link                                                                            |
|:-------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
| pSDLExtraReward | 0x7b48d9C51135dF0769dE7bb66827C023b4285758 | [link](https://etherscan.io/address/0x7b48d9C51135dF0769dE7bb66827C023b4285758) |
| LPFExtraReward | 0xF39A9AC259ef0d83A884Bc01f3a993D47b8Aa155 | [link](https://etherscan.io/address/0xF39A9AC259ef0d83A884Bc01f3a993D47b8Aa155) |
| locker          | 0x169D0d77CE7626b6FB959a483c25b2A87be070d8 | [link](https://etherscan.io/address/0x169D0d77CE7626b6FB959a483c25b2A87be070d8) |
| LPFStakingProxy | 0x582bda485695cbF851F0d78ecaA44a31a5740d7C | [link](https://etherscan.io/address/0x582bda485695cbF851F0d78ecaA44a31a5740d7C) |
| treasury       | 0x0fb0c39257163B871C6ce191fB07430dD0a347C0 | [link](https://etherscan.io/address/0x0fb0c39257163B871C6ce191fB07430dD0a347C0) |

### 08-12 Tenderly Mainnet Fork

RPC: https://rpc.tenderly.co/fork/bc6bfd78-510f-45b8-bf93-6e57f6f8d08c

ETH and Token Faucet: https://codesandbox.io/s/tenderly-playground-mzxxv5

|                   | address                                    | link                                                                            |
|:----------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
| SDL               | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |
| LPF               | 0x3650B69f86cB593f116e276C30666834336c0647 | [link](https://etherscan.io/address/0x3650B69f86cB593f116e276C30666834336c0647) |
| saddleD4          | 0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A | [link](https://etherscan.io/address/0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A) |
| pSDL              | 0xE189e9585b392624c343b750632C00b452022d53 | [link](https://etherscan.io/address/0xE189e9585b392624c343b750632C00b452022d53) |
| voter             | 0xD86E43f400e65d1e68fE1eea409799506C51652F | [link](https://etherscan.io/address/0xD86E43f400e65d1e68fE1eea409799506C51652F) |
| depositor         | 0xB359f50FBCcb38b3Ee32A9DA523313F3Ad4C12BC | [link](https://etherscan.io/address/0xB359f50FBCcb38b3Ee32A9DA523313F3Ad4C12BC) |
| booster           | 0x23b43BFE32cd10b2E3baAf8d5F0D763728922DA0 | [link](https://etherscan.io/address/0x23b43BFE32cd10b2E3baAf8d5F0D763728922DA0) |
| pSDLStaking       | 0xA671198aC02b668b33F70A13131aC3175f60D100 | [link](https://etherscan.io/address/0xA671198aC02b668b33F70A13131aC3175f60D100) |
| proxyFactory      | 0x304708B4914f6009e34A542d3da3c14464b15D4c | [link](https://etherscan.io/address/0x304708B4914f6009e34A542d3da3c14464b15D4c) |
| tokenFactory      | 0x6F4b714e5a9B32391E0c1EF177BccCce1B210eD6 | [link](https://etherscan.io/address/0x6F4b714e5a9B32391E0c1EF177BccCce1B210eD6) |
| rewardFactory     | 0xD1A914121F1A748E2f38f8572d815C95c2521E0B | [link](https://etherscan.io/address/0xD1A914121F1A748E2f38f8572d815C95c2521E0B) |
| stashFactory      | 0x6356Db2b8C550B41195efE605b02dbD2d42F0393 | [link](https://etherscan.io/address/0x6356Db2b8C550B41195efE605b02dbD2d42F0393) |
| stashRewardV1     | 0xD44DE315762c9f5c585b23A4E8a3B1eBb10A79F2 | [link](https://etherscan.io/address/0xD44DE315762c9f5c585b23A4E8a3B1eBb10A79F2) |
| stashRewardV2     | 0xd3EefE9AEcC4F538434BAD29d82baBe7DA6C2C86 | [link](https://etherscan.io/address/0xd3EefE9AEcC4F538434BAD29d82baBe7DA6C2C86) |
| stashRewardV3     | 0xF5A838fa72c77Dd3E8D4fEfe6862697CF1D5fC14 | [link](https://etherscan.io/address/0xF5A838fa72c77Dd3E8D4fEfe6862697CF1D5fC14) |
| LPFStaking        | 0x263d04d9aF1f31302322d6a7F77b4ddcb6B5097C | [link](https://etherscan.io/address/0x263d04d9aF1f31302322d6a7F77b4ddcb6B5097C) |
| LPFExtraReward    | 0xA10df4d65E2DCEad594219E7d2996C4f8bdAa979 | [link](https://etherscan.io/address/0xA10df4d65E2DCEad594219E7d2996C4f8bdAa979) |
| locker            | 0x29aF456D5084603766D9dc127740D92f719eF260 | [link](https://etherscan.io/address/0x29aF456D5084603766D9dc127740D92f719eF260) |
| LPFStakingProxy   | 0x5cA7DdC0A7a7e1C4EbFdD2bBEF9Eb5e42d86EE61 | [link](https://etherscan.io/address/0x5cA7DdC0A7a7e1C4EbFdD2bBEF9Eb5e42d86EE61) |
| Snapshot Delegate | 0x469788fe6e9e9681c6ebf3bf78e7fd26fc015446 | [link](https://etherscan.io/address/0x469788fe6e9e9681c6ebf3bf78e7fd26fc015446) |


#### LP Staking Pools
|                   | address                                    | link                                                                            |
|:----------------- |:------------------------------------------ |:------------------------------------------------------------------------------- |
| saddleD4          | 0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A | [link](https://etherscan.io/address/0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A) |
| saddleD4Staking       | 0x42e992125aBA83380CaD66D1B3dA5e5F9AC6fFcb | [link](https://etherscan.io/address/0x42e992125aBA83380CaD66D1B3dA5e5F9AC6fFcb) |
| saddleD4StakingRewardToken       | 0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871 | [link](https://etherscan.io/address/0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871) |


## 分发速率

| 合约            | 质押token   | 分发速率          | 奖励token |
|:--------------- |:----------- |:----------------- |:--------- |
| pSDLStaking     | pSDL        | 28749185251393/s  | SDL       |
| saddleD4Staking | saddleD4 LP | 244368074636842/s | SDL       |
| locker          | LPF         |                   | pSDL      |


## ABI

All ABI can be found in https://github.com/dforce-network/Stranger/tree/saddle/abi

| Contract    | ABI                                                                                                        |
| :---------- | :--------------------------------------------------------------------------------------------------------- |
| SDL         | ERC20.json                                                                                                 |
| pSDL        | ERC20.json                                                                                                 |
| LPF         | ERC20.json                                                                                                 |
| saddleD4    | ERC20.json                                                                                                 |
| depositor   | [ISdlDepositor.json](https://github.com/dforce-network/Stranger/tree/saddle/abi/ISdlDepositor.json)         |
| booster     | [ISdlBooster.json](https://github.com/dforce-network/Stranger/tree/saddle/abi/ISdlBooster.json)               |
| pSDLStaking | [ISdlBaseRewardPool.json](https://github.com/dforce-network/Stranger/tree/saddle/abi/ISdlBaseRewardPool.json) |
| LPFStaking  | [ILPFRewardPool.json](https://github.com/dforce-network/Stranger/tree/saddle/abi/ILPFRewardPool.json)     |

## Usage

### Stake

#### Deposit

- Desposit & Stake `SDL` 

```javascript
function deposit(uint256 _amount, bool _lock, address _stakingAddress);
function depositAll(bool _lock, address _stakingAddress);
```

```javascript
	// 2）、deposit
	await depositor.deposit(depositAmount, false, AddressZero);

	// 1）、 deposit & staking
	await depositor.deposit(depositAmount, false, pSDLStaking.address);

	// deposit & trigger lock up
	await depositor.deposit(depositAmount, true, AddressZero);

	// deposit & trigger lock up & staking
	await depositor.deposit(depositAmount, true, pSDLStaking.address);


	// deposit all 
	await depositor.depositAll(false, AddressZero);

	// deposit all & trigger lock up
	await depositor.depositAll(true, AddressZero);

	// deposite all & trigger lock up & staking
	await depositor.depositAll(true, pSDLStaking.address);
```

- Stake `SDL`

```javascript
function stake(uint256 _amount)
function stakeAll()
```

```javascript
	await pSDLStaking.stake(amount);
	await pSDLStaking.stakeAll(amount);
```

- Trigger locking `SDL` 

```javascript
function lockSaddle() external
```
```javascript
	await depositor.lockSaddle()
```

#### UnStake
- Claim
```javascript
function getReward() external
```

```javascript
	// Stake pSDL
	await pSDLStaking.getReward();
```

- Unstake
```javascript
function withdraw(uint256 amount, bool claim)
```

```javascript
	// Unstake pSDL
	await pSDLStaking.withdraw(amount, true);
```

- Exit
```javascript
function withdrawAll(bool claim) external 
```

```javascript
	// Unstake pSDL
	await pSDLStaking.withdrawAll(true);
```

- Queue Rewards
```javascript
function earmarkRewards(uint256 _pid);
```
```javascript
	// earmarkRewards from saddleD4 LP, pid is 0
	await booster.earmarkRewards(0);
```

### Gauge

-  Stake `LP`

```javascript
function deposit(uint256 _pid, uint256 _amount, bool _stake)
function depositAll(uint256 _pid, bool _stake)
```

```javascript
	// deposit saddleD4 LP, pid is 0
	await booster.deposit(0, depositAmount, false);

	// deposit & staking
	await booster.deposit(0, depositAmount, true);

	// deposit all saddleD4 LP
	await booster.depositAll(0, false);

	// deposit all & staking
	await booster.depositAll(0, true);

```
- Get `LP` RewardPool

```javascript
	const address = await booster.poolInfo[0].sdlRewards;
	const saddleD4Staking = new ethers.Contract(address, ISdlBaseRewardPool.abi, provider);
```

- Unstake `LP`

```javascript
function withdrawAllAndUnwrap(bool claim) 
```

```javascript
	// deposit saddleD4 LP, pid is 0
	await saddleD4Staking.withdrawAndUnwrap(amount, true);

	// deposit saddleD4 LP, pid is 0
	await saddleD4Staking.withdrawAllAndUnwrap(true);
```

- Harvest
```javascript
function getReward() 
```

```javascript
	await saddleD4Staking.getReward();
```


### LPFLocker
https://hackmd.io/@Triumph/SyhKwZ-69


## Addresses 
https://docs.saddle.finance/contracts

## Sequence

### Add Pool
```sequence
PoolManager\nProxy->PoolManager: addPool()
Note right of PoolManager: Checks\nPool\nexistance
PoolManager->Booster: addPool()
Booster->TokenFactory: CreateDepositToken()
Booster->RewardFactory: CreateCrvRewards()
Booster->StashFactory: CreateStash()
Note right of Booster: Setup\nStash
```

### Deposit
```sequence
Booster->Staker: deposit()
Note right of Booster: Handle Stash
Booster->Token: mint()
Booster-->Reward:stakeFor()
```

### Withdraw
```sequence
Booster->Token: burn()
Booster->Staker: withdraw()
Note right of Booster: Handle Stash
```

### Get Reward
1. LP: claimRewards
```sequence
Booster->Staker:claimRewards()
```
2. CRV: earmarkRewards
```sequence
Booster->Staker:claimCrv()
Booster->Stash:claimRewards()
Booster->Stash:processStash()
Booster->Treasury:0% transfer()
Booster->Caller:0.5% transfer()
Booster->LPReward:85% queueNewRewards()
Booster->pSDLReward:10% queueNewRewards()
Booster->LPFReward:4.5% queueNewRewards()
```
3. Fee
```sequence
Booster->Staker:claimFees()
Booster->FeeReward\n(cvxCRVReward):queueNewRewards()
```
