swap流动性挖矿合约求解

最近看了sushi的流动性挖矿合约,这块有点疑问

function  deposit(uint256 _pid, uint256 _amount) public{
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][msg.sender];
updatePool(_pid);
if(user.amount > 0) {
uint256 pending = user.amount.mul(pool.accSushiPerShare).div(1e12).sub(user.rewardDebt);
safeSushiTransfer(msg.sender, pending);
}
pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount);
user.amount = user.amount.add(_amount);
user.rewardDebt = user.amount.mul(pool.accSushiPerShare).div(1e12);
emit Deposit(msg.sender, _pid, _amount);
}

这里是用户刚质押LP进来的操作,那为什么马上计算了user.rewardDebt,这个值不是用户已提取的收益吗,这里用户好像都还没有收益呀?

请先 登录 后评论

最佳答案 2021-06-02 08:50

用户的收益都会统一从起始点开始计算。

当用户从中间点进来, 起始点到中间点就需要扣除掉, 也就是rewardDebt 这个值。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,2745 浏览
  • 执灯一盏 提出于 2021-06-01 18:30