Staking Pools

Migrate to new Scads Pools

The new ScadsPool is a new $SCADS staking contract built based on the manual Staking and designed to work with Scads MasterChef v1 to provide "stake $SCADS, earn multiple rewards($SCADS, $SNACKS...)".

Do I need to migrate?

If you are currently using old MasterChef, you will need to migrate to the new contract.

No compounding

No need compounding yet because Scads V1 has only manual staking pools.

Fees

Pools don't set any type of fees yet in Scads V1.

Overview

Deposit

If you are currently using the enterStaking(uint256 _amount) on the current Scads MasterChef. You need to migrate to deposit(uint256 _amount).

Staking Balance and Fees

struct UserInfo {
    uint256 amount; // How many staked tokens the user has provided
    uint256 rewardDebt; // Reward debt of zoinks. See explanation below.
    uint256 rewardDebtSnacks; // Reward debt of snacks. See explanation below.
    uint lastWithdrawDate; // Last Withdraw Time
}

Pending Rewards

/*
* @notice View function to see pending reward on frontend.
* @param _user: user address
* @return Pending reward for a given user
*/
function pendingReward(address _user) external view returns (uint256) {
  return userInfo[_user].rewardDebt;
}

Withdraw

If you are using the leaveStaking(uint256 _amount) method on the current Scads MasterChef. You need to migrate to withdraw(uint256 _shares).

/*
 * @notice Withdraw staked tokens and collect reward tokens
 * @param _amount: amount to withdraw (in rewardToken)
 */
function withdraw(uint256 _amount) external nonReentrant {
    UserInfo storage user = userInfo[msg.sender];
    require(user.amount >= _amount, "Amount to withdraw too high");
   
    if (_amount > 0) {
        user.amount = user.amount.sub(_amount);
        totalStakedZoinks = totalStakedZoinks.sub(_amount);

        if (user.lastWithdrawDate == 0 || (user.lastWithdrawDate + 1 days > block.timestamp)) {
            stakedToken.safeTransfer(seniorageAddress, _amount.div(2));
            stakedToken.safeTransfer(address(msg.sender), _amount.div(2));
        emit Withdraw(msg.sender, _amount.div(2));
        emit Withdraw(seniorageAddress, _amount.div(2));
        } else {
            stakedToken.safeTransfer(address(msg.sender), _amount);
    emit Withdraw(msg.sender, _amount);
        }
        user.lastWithdrawDate = block.timestamp;
    }

    rewardTransfer();
}

How to calculate the total rewards distributed to the new Scads pool?

The multiple reward is generated irregularly whenever Scads Inflation and $SNACS buy/buyback in Scads V1. So it's impossible to calculate the correct rewards amount in advance. Please check below to discover more details of how to provide/calculate rewards.

Mainnet Contract Address

Pool Contract is not deployed on mainnet yet in Scads V1.

Contract name: Scads Pool Contract address:

View the Scads: ScadsPool Contract on BscScan.

Testnet Environment

You can use the following testnet environment to test the integration of your project with the new Scads Pool. If you have any questions, please contact us.

Dummy Tokens:

  • $SCADS: 0xAeD1DeC6F344d70240BCC02514B599eA68f35582 (mintable by using mint(address _to, uint256 _amount) public)

  • $WBNB: 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd

Factory and Router

  • Factory V1: 0xc4FF830D46414bD3Aeb0Dd0942Ce044a860555c7

  • Router V1: 0x8e0A7Fde7E549Ea689c27A79d26798Cf8F27C8e8

MasterChef

  • v1: 0x97B631AcBAC4C38Bb0AA18691ea60dB2754609FB

    • pid0: Manual SCADS

    • pid4: Dummy Pool for MasterChef v1

SCADS Pool

0x3a88e377a53310d829262F8b747a82512B74EA47

SNACKS Pool

0xc474FF61B82416d06B0535F5DB5ecAeFC64fca97

Last updated