diff --git a/src/contracts/Staking.sol b/src/contracts/Staking.sol index cb27171..7d70503 100644 --- a/src/contracts/Staking.sol +++ b/src/contracts/Staking.sol @@ -439,6 +439,11 @@ contract Staking is OwnableUpgradeable, StakingStorage { // amount must be non zero require(_amount > 0, "Must have valid amount"); + if (warmUpPeriod > 0) { + // can't stake for someone else if contract is using warmUp period + require(_recipient == msg.sender, "Can't stake for someone else with warmup"); + } + uint256 yieldyTotalSupply = IYieldy(YIELDY_TOKEN).totalSupply(); require( yieldyTotalSupply + _amount <= totalSupplyLimit, diff --git a/test/stakingTest.ts b/test/stakingTest.ts index c9c8c15..6c6b81b 100644 --- a/test/stakingTest.ts +++ b/test/stakingTest.ts @@ -566,6 +566,15 @@ describe("Staking", function () { const stakingAmount = transferAmount; const stakingTokenStaker1 = stakingToken.connect(staker1Signer as Signer); await stakingTokenStaker1.approve(staking.address, stakingAmount); + + // can't stake to other addresses with warmup period + await expect( + stakingStaker1.functions["stake(uint256,address)"]( + stakingAmount, + staking.address + ) + ).to.be.revertedWith("Can't stake for someone else with warmup"); + await stakingStaker1.functions["stake(uint256)"](stakingAmount); // balance should still be zero, until we claim the rewardToken.