diff --git a/test/testStaking.ts b/test/testStaking.ts index a406d77..5e26e29 100644 --- a/test/testStaking.ts +++ b/test/testStaking.ts @@ -23,10 +23,10 @@ const blockTime = async (provider: any) => { const block = await provider.getBlock('latest') return block ? block.timestamp : 0 } -const showLog = async (tag: string, stakedGmxTracker: any, esCec: any, address: string) => { - console.log(tag+'\t', 'stake amount:', formatEther(await stakedGmxTracker.stakedAmounts(address)), - 'claimable: ', formatEther(await stakedGmxTracker.claimable(address)), - 'claimableReward: ', formatEther(await stakedGmxTracker.claimableReward(address)), +const showLog = async (tag: string, stakedCecTracker: any, esCec: any, address: string) => { + console.log(tag+'\t', 'stake amount:', formatEther(await stakedCecTracker.stakedAmounts(address)), + 'claimable: ', formatEther(await stakedCecTracker.claimable(address)), + 'claimableReward: ', formatEther(await stakedCecTracker.claimableReward(address)), 'esCec balance: ', formatEther(await esCec.balanceOf(address)), ) } @@ -45,10 +45,10 @@ describe('RewardRouter', function() { const RewardTracker = await hre.ethers.getContractFactory("RewardTracker"); const RewardDistributor = await hre.ethers.getContractFactory("RewardDistributor"); - const stakedGmxTracker = await RewardTracker.deploy("Staked GMX", "sGMX"); - const stakedGmxDistributor = await RewardDistributor.deploy(esCec.target, stakedGmxTracker.target); - await stakedGmxTracker.initialize([cec.target, esCec.target], stakedGmxDistributor.target); - await stakedGmxDistributor.updateLastDistributionTime(); + const stakedCecTracker = await RewardTracker.deploy("Staked CEC", "sCEC"); + const stakedCecDistributor = await RewardDistributor.deploy(esCec.target, stakedCecTracker.target); + await stakedCecTracker.initialize([cec.target, esCec.target], stakedCecDistributor.target); + await stakedCecDistributor.updateLastDistributionTime(); const Vester = await hre.ethers.getContractFactory("Vester"); const vester = await Vester.deploy( @@ -61,8 +61,8 @@ describe('RewardRouter', function() { ZeroAddress, ); - await stakedGmxTracker.setInPrivateTransferMode(true) - await stakedGmxTracker.setInPrivateStakingMode(true) + await stakedCecTracker.setInPrivateTransferMode(true) + await stakedCecTracker.setInPrivateStakingMode(true) // await esCec.setInPrivateTransferMode(true) @@ -70,19 +70,19 @@ describe('RewardRouter', function() { const rewardRouter = await RewardRouter.deploy( cec.target, esCec.target, - stakedGmxTracker.target, + stakedCecTracker.target, vester.target, ); await esCec.setMinter(owner.address, true) - await esCec.mint(stakedGmxDistributor.target, expandDecimals(50000, 18)) - await stakedGmxDistributor.setTokensPerInterval(rewardPerSecond) + await esCec.mint(stakedCecDistributor.target, expandDecimals(50000, 18)) + await stakedCecDistributor.setTokensPerInterval(rewardPerSecond) - await stakedGmxTracker.setHandler(rewardRouter.target, true) + await stakedCecTracker.setHandler(rewardRouter.target, true) await esCec.setMinter(vester.target, true) - await esCec.setHandler(stakedGmxTracker.target, true) + await esCec.setHandler(stakedCecTracker.target, true) - return { owner, user0, user1, user2, chainId, cec, esCec, stakedGmxTracker, stakedGmxDistributor, vester, rewardRouter }; + return { owner, user0, user1, user2, chainId, cec, esCec, stakedCecTracker, stakedCecDistributor, vester, rewardRouter }; } describe("Deployment", function () { it('should deploy RewardRouter', async function() { @@ -91,8 +91,8 @@ describe('RewardRouter', function() { }); }) describe("Staking", function () { - it("stakeGmxForAccount, stakeGmx, stakeEsCec, unstakeGmx, unstakeEsGmx, claimEsCec, claimFees, compound, batchCompoundForAccounts", async () => { - const {owner, user0, user1, user2, chainId, cec, esCec, stakedGmxTracker, stakedGmxDistributor, vester, rewardRouter} = await loadFixture(deployOneContract); + it("stakeCecForAccount, stakeCec, stakeEsCec, unstakeCec, unstakeEsCec, claimEsCec", async () => { + const {owner, user0, user1, user2, chainId, cec, esCec, stakedCecTracker, stakedCecDistributor, vester, rewardRouter} = await loadFixture(deployOneContract); const wallet = owner const provider = wallet.provider; await cec.setMinter(wallet.address, true) @@ -100,7 +100,7 @@ describe('RewardRouter', function() { expect(await cec.balanceOf(user0.address)).eq(expandDecimals(1500, 18)) // @ts-ignore - await cec.connect(user0).approve(stakedGmxTracker.target, expandDecimals(1000, 18)) + await cec.connect(user0).approve(stakedCecTracker.target, expandDecimals(1000, 18)) // @ts-ignore await expect(rewardRouter.connect(user0).stakeCecForAccount(user1.address, expandDecimals(1000, 18))) .to.be.revertedWith("Governable: forbidden") @@ -113,25 +113,25 @@ describe('RewardRouter', function() { await cec.mint(user1.address, expandDecimals(200, 18)) expect(await cec.balanceOf(user1.address)).eq(expandDecimals(200, 18)) // @ts-ignore - await cec.connect(user1).approve(stakedGmxTracker.target, expandDecimals(200, 18)) + await cec.connect(user1).approve(stakedCecTracker.target, expandDecimals(200, 18)) // @ts-ignore await rewardRouter.connect(user1).stakeCec(expandDecimals(200, 18)) expect(await cec.balanceOf(user1.address)).eq(0) - expect(await stakedGmxTracker.stakedAmounts(user0.address)).eq(0) - expect(await stakedGmxTracker.depositBalances(user0.address, cec.target)).eq(0) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).eq(expandDecimals(1000, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(1000, 18)) + expect(await stakedCecTracker.stakedAmounts(user0.address)).eq(0) + expect(await stakedCecTracker.depositBalances(user0.address, cec.target)).eq(0) + expect(await stakedCecTracker.stakedAmounts(user1.address)).eq(expandDecimals(1000, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(1000, 18)) - const totalSupply = await stakedGmxTracker.totalSupply() + const totalSupply = await stakedCecTracker.totalSupply() console.log('totalSupply: ', formatEther(totalSupply)) - await showLog('init', stakedGmxTracker, esCec, user1.address) + await showLog('init', stakedCecTracker, esCec, user1.address) await increaseTime(provider, Number(secondsOneDay)) await mineBlock(provider) - await showLog('1day', stakedGmxTracker, esCec, user1.address) - expect(await stakedGmxTracker.claimable(user0.address)).eq(0) - expect(await stakedGmxTracker.claimable(user1.address)).gt(expandDecimals(4, 18)) - expect(await stakedGmxTracker.claimable(user1.address)).lt(expandDecimals(5, 18)) + await showLog('1day', stakedCecTracker, esCec, user1.address) + expect(await stakedCecTracker.claimable(user0.address)).eq(0) + expect(await stakedCecTracker.claimable(user1.address)).gt(expandDecimals(4, 18)) + expect(await stakedCecTracker.claimable(user1.address)).lt(expandDecimals(5, 18)) @@ -143,29 +143,29 @@ describe('RewardRouter', function() { // await esCec.connect(tokenManager).transferFrom(tokenManager.address, user2.address, expandDecimals(500, 18)) await esCec.mint(user2.address, expandDecimals(500, 18)) // @ts-ignore - await esCec.connect(user2).approve(stakedGmxTracker.target, expandDecimals(500, 18)) + await esCec.connect(user2).approve(stakedCecTracker.target, expandDecimals(500, 18)) // @ts-ignore await rewardRouter.connect(user2).stakeEsCec(expandDecimals(500, 18)) - expect(await stakedGmxTracker.stakedAmounts(user0.address)).eq(0) - expect(await stakedGmxTracker.depositBalances(user0.address, cec.target)).eq(0) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).eq(expandDecimals(1000, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(1000, 18)) - expect(await stakedGmxTracker.stakedAmounts(user2.address)).eq(expandDecimals(500, 18)) - expect(await stakedGmxTracker.depositBalances(user2.address, esCec.target)).eq(expandDecimals(500, 18)) + expect(await stakedCecTracker.stakedAmounts(user0.address)).eq(0) + expect(await stakedCecTracker.depositBalances(user0.address, cec.target)).eq(0) + expect(await stakedCecTracker.stakedAmounts(user1.address)).eq(expandDecimals(1000, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(1000, 18)) + expect(await stakedCecTracker.stakedAmounts(user2.address)).eq(expandDecimals(500, 18)) + expect(await stakedCecTracker.depositBalances(user2.address, esCec.target)).eq(expandDecimals(500, 18)) await increaseTime(provider, Number(secondsOneDay)) await mineBlock(provider) - expect(await stakedGmxTracker.claimable(user0.address)).eq(0) - expect(await stakedGmxTracker.claimable(user1.address)).gt(expandDecimals(8, 18)) - expect(await stakedGmxTracker.claimable(user1.address)).lt(expandDecimals(9, 18)) - expect(await stakedGmxTracker.claimable(user2.address)).gt(expandDecimals(2, 18)) - expect(await stakedGmxTracker.claimable(user2.address)).lt(expandDecimals(5, 18)) + expect(await stakedCecTracker.claimable(user0.address)).eq(0) + expect(await stakedCecTracker.claimable(user1.address)).gt(expandDecimals(8, 18)) + expect(await stakedCecTracker.claimable(user1.address)).lt(expandDecimals(9, 18)) + expect(await stakedCecTracker.claimable(user2.address)).gt(expandDecimals(2, 18)) + expect(await stakedCecTracker.claimable(user2.address)).lt(expandDecimals(5, 18)) - await showLog('2day', stakedGmxTracker, esCec, user1.address) + await showLog('2day', stakedCecTracker, esCec, user1.address) expect(await esCec.balanceOf(user1.address)).eq(0) // @ts-ignore @@ -190,16 +190,16 @@ describe('RewardRouter', function() { await increaseTime(provider, Number(secondsOneDay)) await mineBlock(provider) - await showLog('claim cec 2day', stakedGmxTracker, esCec, user1.address) + await showLog('claim cec 2day', stakedCecTracker, esCec, user1.address) // @ts-ignore await rewardRouter.connect(user1).stakeEsCec(await esCec.balanceOf(user1.address)) - await showLog('compound', stakedGmxTracker, esCec, user1.address) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).gt(expandDecimals(1008, 18)) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).lt(expandDecimals(1009, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(1000, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, esCec.target)).gt(expandDecimals(8, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, esCec.target)).lt(expandDecimals(9, 18)) + await showLog('compound', stakedCecTracker, esCec, user1.address) + expect(await stakedCecTracker.stakedAmounts(user1.address)).gt(expandDecimals(1008, 18)) + expect(await stakedCecTracker.stakedAmounts(user1.address)).lt(expandDecimals(1009, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(1000, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, esCec.target)).gt(expandDecimals(8, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, esCec.target)).lt(expandDecimals(9, 18)) @@ -208,22 +208,22 @@ describe('RewardRouter', function() { await rewardRouter.connect(user1).unstakeCec(expandDecimals(300, 18)) expect(await cec.balanceOf(user1.address)).eq(expandDecimals(300, 18)) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).gt(expandDecimals(708, 18)) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).lt(expandDecimals(709, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(700, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, esCec.target)).gt(expandDecimals(8, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, esCec.target)).lt(expandDecimals(9, 18)) + expect(await stakedCecTracker.stakedAmounts(user1.address)).gt(expandDecimals(708, 18)) + expect(await stakedCecTracker.stakedAmounts(user1.address)).lt(expandDecimals(709, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(700, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, esCec.target)).gt(expandDecimals(8, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, esCec.target)).lt(expandDecimals(9, 18)) - const esGmxBalance1 = await esCec.balanceOf(user1.address) - const esGmxUnstakeBalance1 = await stakedGmxTracker.depositBalances(user1.address, esCec.target) + const esCecBalance1 = await esCec.balanceOf(user1.address) + const esCecUnstakeBalance1 = await stakedCecTracker.depositBalances(user1.address, esCec.target) // @ts-ignore - await rewardRouter.connect(user1).unstakeEsCec(esGmxUnstakeBalance1) - expect(await esCec.balanceOf(user1.address)).eq(esGmxBalance1 + esGmxUnstakeBalance1) + await rewardRouter.connect(user1).unstakeEsCec(esCecUnstakeBalance1) + expect(await esCec.balanceOf(user1.address)).eq(esCecBalance1 + esCecUnstakeBalance1) - expect(await stakedGmxTracker.stakedAmounts(user1.address)).eq(expandDecimals(700, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(700, 18)) - expect(await stakedGmxTracker.depositBalances(user1.address, esCec.target)).eq(0) + expect(await stakedCecTracker.stakedAmounts(user1.address)).eq(expandDecimals(700, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, cec.target)).eq(expandDecimals(700, 18)) + expect(await stakedCecTracker.depositBalances(user1.address, esCec.target)).eq(0) // @ts-ignore