81 lines
3.0 KiB
TypeScript
81 lines
3.0 KiB
TypeScript
import {HardhatRuntimeEnvironment} from "hardhat/types";
|
|
import {DeployFunction} from "hardhat-deploy/types";
|
|
import {deplayOne, loadData} from "../scripts/utils";
|
|
import {ZeroAddress} from "ethers";
|
|
import { assert } from "chai";
|
|
|
|
|
|
|
|
const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
const config = require(`../config/config_${hre.network.name}`);
|
|
const {cec, rewardPerSecond, vestingDuration} = config.staking;
|
|
const datas = loadData({ network: hre.network.name });
|
|
const esCEC = datas.find((item: any) => item.name === "esCEC");
|
|
const vester = datas.find((item: any) => item.name === "vester");
|
|
assert(esCEC, "esCEC not found");
|
|
assert(vester, "vester not found");
|
|
|
|
const stakedCecTracker = await deplayOne({
|
|
hre,
|
|
name: "stakedEsCecTracker",
|
|
type: "logic",
|
|
contractName: "RewardTracker",
|
|
args: ["Staked esCEC", "essCEC"],
|
|
verify: true,
|
|
});
|
|
|
|
const stakedCecDistributor = await deplayOne({
|
|
hre,
|
|
name: "stakedEsCecDistributor",
|
|
type: "logic",
|
|
contractName: "RewardDistributor",
|
|
args: [esCEC.address, stakedCecTracker.address],
|
|
verify: true,
|
|
});
|
|
|
|
const rewardRouter = await deplayOne({
|
|
hre,
|
|
name: "stakedEsCecRouter",
|
|
type: "logic",
|
|
contractName: "RewardRouter",
|
|
args: [esCEC.address, stakedCecTracker.address, ZeroAddress],
|
|
verify: true,
|
|
});
|
|
|
|
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);
|
|
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();
|
|
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);
|
|
await tx.wait();
|
|
console.log("==stakedEsCecTrackerContract setHandler");
|
|
const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address);
|
|
// 添加转账白名单
|
|
tx = await esCECContract.setHandler(stakedCecTracker.address, true);
|
|
await tx.wait();
|
|
tx = await esCECContract.setHandler(stakedCecDistributor.address, true);
|
|
await tx.wait();
|
|
console.log("==esCECContract setHandler");
|
|
};
|
|
|
|
deployNFTClaim.tags = ["StakingEsCEC"];
|
|
|
|
export default deployNFTClaim;
|