update address for staking with testnet

This commit is contained in:
CounterFire2023 2024-09-12 13:27:11 +08:00
parent 2c10ee82da
commit 619c3264c0
14 changed files with 282 additions and 1585 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -16,6 +16,10 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
args: [tokenName, tokenSymbol], args: [tokenName, tokenSymbol],
verify: true, verify: true,
}); });
const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address);
let tx = await esCECContract.setInPrivateTransferMode(true);
await tx.wait();
console.log("==esCECContract setInPrivateTransferMode");
}; };
deployNFTClaim.tags = ["EsCEC"]; deployNFTClaim.tags = ["EsCEC"];

View File

@ -16,25 +16,17 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
name: "stakedCecTracker", name: "stakedCecTracker",
type: "logic", type: "logic",
contractName: "RewardTracker", contractName: "RewardTracker",
args: ["Staked CEC", "sCEC"], args: [esCEC.address, cec, rewardPerSecond, 18],
verify: true, verify: true,
}); });
const stakedCecDistributor = await deplayOne({
hre,
name: "stakedCecDistributor",
type: "logic",
contractName: "RewardDistributor",
args: [esCEC.address, stakedCecTracker.address],
verify: true,
});
const vester = await deplayOne({ const vester = await deplayOne({
hre, hre,
name: "vester", name: "vester",
type: "logic", type: "logic",
contractName: "Vester", contractName: "Vester",
args: ["Vested CEC", "veCEC", vestingDuration, esCEC.address, ZeroAddress, cec, stakedCecTracker.address, true], args: ["Vested CEC", "veCEC", vestingDuration, esCEC.address, cec, stakedCecTracker.address, ZeroAddress,true],
verify: true, verify: true,
}); });
@ -49,27 +41,13 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
}); });
const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address); const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address);
const stakedCecDistributorContract = await hre.ethers.getContractAt(
"RewardDistributor",
stakedCecDistributor.address,
);
const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address); const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address);
let tx = await stakedCecTrackerContract.initialize([cec, esCEC.address], stakedCecDistributor.address); let tx = await stakedCecTrackerContract.setInPrivateStakingMode(true);
await tx.wait();
console.log("==stakedCecTrackerContract initialized");
tx = await stakedCecTrackerContract.setInPrivateTransferMode(true);
await tx.wait();
console.log("==stakedCecTrackerContract setInPrivateTransferMode");
tx = await stakedCecTrackerContract.setInPrivateStakingMode(true);
await tx.wait(); await tx.wait();
console.log("==stakedCecTrackerContract setInPrivateStakingMode"); console.log("==stakedCecTrackerContract setInPrivateStakingMode");
tx = await stakedCecDistributorContract.updateLastDistributionTime();
await tx.wait();
console.log("==stakedCecDistributorContract updateLastDistributionTime");
tx = await stakedCecDistributorContract.setTokensPerInterval(rewardPerSecond);
await tx.wait();
console.log("==stakedCecDistributorContract setTokensPerInterval");
tx = await stakedCecTrackerContract.setHandler(rewardRouter.address, true); tx = await stakedCecTrackerContract.setHandler(rewardRouter.address, true);
await tx.wait(); await tx.wait();
console.log("==stakedCecTrackerContract setHandler"); console.log("==stakedCecTrackerContract setHandler");
@ -77,15 +55,9 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
tx = await esCECContract.setMinter(vester.address, true); tx = await esCECContract.setMinter(vester.address, true);
await tx.wait(); await tx.wait();
console.log("==esCECContract setMinter"); console.log("==esCECContract setMinter");
// 设定esCEC不能公开转账
tx = await esCECContract.setInPrivateTransferMode(true);
await tx.wait();
console.log("==esCECContract setInPrivateTransferMode");
// 添加转账白名单 // 添加转账白名单
tx = await esCECContract.setHandler(stakedCecTracker.address, true); tx = await esCECContract.setHandler(stakedCecTracker.address, true);
await tx.wait(); await tx.wait();
tx = await esCECContract.setHandler(stakedCecDistributor.address, true);
await tx.wait();
tx = await esCECContract.setHandler(vester.address, true); tx = await esCECContract.setHandler(vester.address, true);
await tx.wait(); await tx.wait();
console.log("==esCECContract setHandler"); console.log("==esCECContract setHandler");

View File

@ -20,16 +20,7 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
name: "stakedEsCecTracker", name: "stakedEsCecTracker",
type: "logic", type: "logic",
contractName: "RewardTracker", contractName: "RewardTracker",
args: ["Staked esCEC", "essCEC"], args: [esCEC.address, esCEC.address, rewardPerSecond, 18],
verify: true,
});
const stakedCecDistributor = await deplayOne({
hre,
name: "stakedEsCecDistributor",
type: "logic",
contractName: "RewardDistributor",
args: [esCEC.address, stakedCecTracker.address],
verify: true, verify: true,
}); });
@ -43,26 +34,10 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
}); });
const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address); const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address);
const stakedCecDistributorContract = await hre.ethers.getContractAt(
"RewardDistributor",
stakedCecDistributor.address,
);
let tx = await stakedCecTrackerContract.initialize([cec, esCEC.address], stakedCecDistributor.address); let tx = await stakedCecTrackerContract.setInPrivateStakingMode(true);
await tx.wait();
console.log("==stakedEsCecTrackerContract initialized");
tx = await stakedCecTrackerContract.setInPrivateTransferMode(true);
await tx.wait();
console.log("==stakedEsCecTrackerContract setInPrivateTransferMode");
tx = await stakedCecTrackerContract.setInPrivateStakingMode(true);
await tx.wait(); await tx.wait();
console.log("==stakedEsCecTrackerContract setInPrivateStakingMode"); console.log("==stakedEsCecTrackerContract setInPrivateStakingMode");
tx = await stakedCecDistributorContract.updateLastDistributionTime();
await tx.wait();
console.log("==stakedEsCecDistributorContract updateLastDistributionTime");
tx = await stakedCecDistributorContract.setTokensPerInterval(rewardPerSecond);
await tx.wait();
console.log("==stakedEsCecDistributorContract setTokensPerInterval");
tx = await stakedCecTrackerContract.setHandler(rewardRouter.address, true); tx = await stakedCecTrackerContract.setHandler(rewardRouter.address, true);
await tx.wait(); await tx.wait();
console.log("==stakedEsCecTrackerContract setHandler"); console.log("==stakedEsCecTrackerContract setHandler");
@ -70,9 +45,11 @@ const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnviro
// 添加转账白名单 // 添加转账白名单
tx = await esCECContract.setHandler(stakedCecTracker.address, true); tx = await esCECContract.setHandler(stakedCecTracker.address, true);
await tx.wait(); await tx.wait();
tx = await esCECContract.setHandler(stakedCecDistributor.address, true);
await tx.wait();
console.log("==esCECContract setHandler"); console.log("==esCECContract setHandler");
const vesterContract = await hre.ethers.getContractAt("Vester", vester.address);
tx = await vesterContract.setRewardTrackerEsCEC(stakedCecTracker.address);
await tx.wait();
console.log("==vesterContract setRewardTrackerEsCEC");
}; };
deployNFTClaim.tags = ["StakingEsCEC"]; deployNFTClaim.tags = ["StakingEsCEC"];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -45,42 +45,30 @@
"name": "stakedCecTracker", "name": "stakedCecTracker",
"type": "logic", "type": "logic",
"json": "assets/contracts/RewardTracker.json", "json": "assets/contracts/RewardTracker.json",
"address": "0x7554e677fF63212264db26dc743c67C277f219d2" "address": "0x4d0d113e7E271B07a031B638562fd7778e7fF0F9"
},
{
"name": "stakedCecDistributor",
"type": "logic",
"json": "assets/contracts/RewardDistributor.json",
"address": "0x53153a177F4483b53b3f732Ff63eeB48c6FE89E5"
}, },
{ {
"name": "vester", "name": "vester",
"type": "logic", "type": "logic",
"json": "assets/contracts/Vester.json", "json": "assets/contracts/Vester.json",
"address": "0xeD00165aBA9efaCcE9e07705e474e0EE1Bb35328" "address": "0x012ad686a48A887A6b6a70E2618828c3ef372eb2"
}, },
{ {
"name": "stakedCecRouter", "name": "stakedCecRouter",
"type": "logic", "type": "logic",
"json": "assets/contracts/RewardRouter.json", "json": "assets/contracts/RewardRouter.json",
"address": "0x576c3D53c6d4A19471E216c06945d41EC39f6014" "address": "0xeD11fA906275e5e0B15B1a1c575F60Af551687FC"
}, },
{ {
"name": "stakedEsCecTracker", "name": "stakedEsCecTracker",
"type": "logic", "type": "logic",
"json": "assets/contracts/RewardTracker.json", "json": "assets/contracts/RewardTracker.json",
"address": "0x30cd668d0f280C404aD504bFf5d7a3Bf535f2A92" "address": "0x47eFeaCdF6bE0CD4c1f654633D1DaaEDaD82DAB5"
},
{
"name": "stakedEsCecDistributor",
"type": "logic",
"json": "assets/contracts/RewardDistributor.json",
"address": "0x6Ee091c2c242470f4f6D3d55604e1a66c6FF4ff5"
}, },
{ {
"name": "stakedEsCecRouter", "name": "stakedEsCecRouter",
"type": "logic", "type": "logic",
"json": "assets/contracts/RewardRouter.json", "json": "assets/contracts/RewardRouter.json",
"address": "0x19934736a578527cF725a33201445166Cbb62e52" "address": "0x495Ba7734C9727117275807817bbd4C176a118c3"
} }
] ]

View File

@ -34,8 +34,6 @@ describe('RewardRouter', function() {
async function deployOneContract() { async function deployOneContract() {
// Contracts are deployed using the first signer/account by default // Contracts are deployed using the first signer/account by default
const [owner, user0, user1, user2] = await hre.ethers.getSigners(); const [owner, user0, user1, user2] = await hre.ethers.getSigners();
const verifier = owner.address;
const chainId = hre.network.config.chainId const chainId = hre.network.config.chainId
const Cec = await hre.ethers.getContractFactory("MintableBaseToken"); const Cec = await hre.ethers.getContractFactory("MintableBaseToken");
@ -65,7 +63,7 @@ describe('RewardRouter', function() {
await stakedCecTracker.setInPrivateTransferMode(true) await stakedCecTracker.setInPrivateTransferMode(true)
await stakedCecTracker.setInPrivateStakingMode(true) await stakedCecTracker.setInPrivateStakingMode(true)
// await esCec.setInPrivateTransferMode(true) await esCec.setInPrivateTransferMode(true)
const RewardRouter = await hre.ethers.getContractFactory("RewardRouter"); const RewardRouter = await hre.ethers.getContractFactory("RewardRouter");
const rewardRouter = await RewardRouter.deploy( const rewardRouter = await RewardRouter.deploy(
@ -75,12 +73,14 @@ describe('RewardRouter', function() {
); );
await esCec.setMinter(owner.address, true) await esCec.setMinter(owner.address, true)
await esCec.setHandler(owner.address, true)
await esCec.mint(stakedCecDistributor.target, expandDecimals(50000, 18)) await esCec.mint(stakedCecDistributor.target, expandDecimals(50000, 18))
await stakedCecDistributor.setTokensPerInterval(rewardPerSecond) await stakedCecDistributor.setTokensPerInterval(rewardPerSecond)
await stakedCecTracker.setHandler(rewardRouter.target, true) await stakedCecTracker.setHandler(rewardRouter.target, true)
await esCec.setMinter(vester.target, true) await esCec.setMinter(vester.target, true)
await esCec.setHandler(stakedCecTracker.target, true) await esCec.setHandler(stakedCecTracker.target, true)
await esCec.setHandler(stakedCecDistributor.target, true)
return { owner, user0, user1, user2, chainId, cec, esCec, stakedCecTracker, stakedCecDistributor, vester, rewardRouter }; return { owner, user0, user1, user2, chainId, cec, esCec, stakedCecTracker, stakedCecDistributor, vester, rewardRouter };
} }
@ -90,7 +90,7 @@ describe('RewardRouter', function() {
// expect((await nftClaimer.mintConfig()).mintPrice).to.equal(100); // expect((await nftClaimer.mintConfig()).mintPrice).to.equal(100);
}); });
}) })
describe("Staking", function () { describe("Staking CEC", function () {
it("stakeCecForAccount, stakeCec, stakeEsCec, unstakeCec, unstakeEsCec, claimEsCec", async () => { it("stakeCecForAccount, stakeCec, stakeEsCec, unstakeCec, unstakeEsCec, claimEsCec", async () => {
const {owner, user0, user1, user2, chainId, cec, esCec, stakedCecTracker, stakedCecDistributor, vester, rewardRouter} = await loadFixture(deployOneContract); const {owner, user0, user1, user2, chainId, cec, esCec, stakedCecTracker, stakedCecDistributor, vester, rewardRouter} = await loadFixture(deployOneContract);
const wallet = owner const wallet = owner
@ -101,13 +101,29 @@ describe('RewardRouter', function() {
// @ts-ignore // @ts-ignore
await cec.connect(user0).approve(stakedCecTracker.target, expandDecimals(1000, 18)) await cec.connect(user0).approve(stakedCecTracker.target, expandDecimals(1000, 18))
let startTime1 = await blockTime(provider)
console.log('startTime1: ', startTime1)
const lastDistributioTime1 = await stakedCecDistributor.lastDistributionTime()
console.log('lastDistributioTime1: ', lastDistributioTime1)
// @ts-ignore // @ts-ignore
await expect(rewardRouter.connect(user0).batchStakeCecForAccount([user1.address], [expandDecimals(1000, 18)])) await expect(rewardRouter.connect(user0).batchStakeCecForAccount([user1.address], [expandDecimals(1000, 18)]))
.to.be.revertedWith("Governable: forbidden") .to.be.revertedWith("Governable: forbidden")
let startTime = await blockTime(provider)
console.log('startTime: ', startTime)
await rewardRouter.setGov(user0.address) await rewardRouter.setGov(user0.address)
const lastDistributioTime = await stakedCecDistributor.lastDistributionTime()
console.log('lastDistributioTime: ', lastDistributioTime)
// @ts-ignore // @ts-ignore
await rewardRouter.connect(user0).batchStakeCecForAccount([user1.address], [expandDecimals(800, 18)]) await rewardRouter.connect(user0).batchStakeCecForAccount([user1.address], [expandDecimals(800, 18)])
const lastDistributioTime2 = await stakedCecDistributor.lastDistributionTime()
console.log('lastDistributioTime2: ', lastDistributioTime2)
let nextTime = await blockTime(provider)
console.log('nextTime: ', nextTime)
let reward = BigInt(1000) * BigInt(nextTime - startTime) * rewardPerSecond
//@ts-ignore
expect(await stakedCecTracker.claimable(user1.address)).eq(reward)
expect(await cec.balanceOf(user0.address)).eq(expandDecimals(700, 18)) expect(await cec.balanceOf(user0.address)).eq(expandDecimals(700, 18))
await cec.mint(user1.address, expandDecimals(200, 18)) await cec.mint(user1.address, expandDecimals(200, 18))
@ -130,12 +146,11 @@ describe('RewardRouter', function() {
await mineBlock(provider) await mineBlock(provider)
await showLog('1day', stakedCecTracker, esCec, user1.address) await showLog('1day', stakedCecTracker, esCec, user1.address)
expect(await stakedCecTracker.claimable(user0.address)).eq(0) expect(await stakedCecTracker.claimable(user0.address)).eq(0)
console.log('blockTime: ', await blockTime(provider))
expect(await stakedCecTracker.claimable(user1.address)).gt(expandDecimals(4, 18)) expect(await stakedCecTracker.claimable(user1.address)).gt(expandDecimals(4, 18))
expect(await stakedCecTracker.claimable(user1.address)).lt(expandDecimals(5, 18)) expect(await stakedCecTracker.claimable(user1.address)).lt(expandDecimals(5, 18))
// await timelock.signalMint(esCec.target, tokenManager.address, expandDecimals(500, 18))
await increaseTime(provider, 20) await increaseTime(provider, 20)
await mineBlock(provider) await mineBlock(provider)