From 53fbcb9ead8ff1f1445cda56cbeb61fdbf1e4d9b Mon Sep 17 00:00:00 2001 From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:07:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96staking=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=90=88=E7=BA=A6=E5=8F=91=E5=B8=83=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config_bsc_test.js | 4 +- deploy/8_deploy_staking.ts | 146 +++++++++----------- deployments/bsc_test/EsToken.json | 12 +- deployments/bsc_test/RewardDistributor.json | 22 +-- deployments/bsc_test/RewardRouter.json | 24 ++-- deployments/bsc_test/RewardTracker.json | 12 +- deployments/bsc_test/Vester.json | 24 ++-- hardhat.config.ts | 1 + out/bsc_test_dev.json | 10 +- scripts/utils.ts | 39 ++++++ 10 files changed, 157 insertions(+), 137 deletions(-) diff --git a/config/config_bsc_test.js b/config/config_bsc_test.js index dd52d61..cefeae9 100644 --- a/config/config_bsc_test.js +++ b/config/config_bsc_test.js @@ -51,7 +51,9 @@ const mint = { const staking = { cec: '0xe34c5ea0c3083d11a735dc0609533b92130319f5', // stake cec时, 每质押一个cec, 每年可获得的收益 - rewardPerSecond: BigInt(1.5 * 10 ** 18) / BigInt(365 * 24 * 60 * 60) + rewardPerSecond: BigInt(1.5 * 10 ** 18) / BigInt(365 * 24 * 60 * 60), + // esCEC 转化为cec的时间 + vestingDuration: BigInt(365 * 24 * 60 * 60) } var config = { diff --git a/deploy/8_deploy_staking.ts b/deploy/8_deploy_staking.ts index 1f5147c..83f8a02 100644 --- a/deploy/8_deploy_staking.ts +++ b/deploy/8_deploy_staking.ts @@ -1,123 +1,101 @@ import {HardhatRuntimeEnvironment} from "hardhat/types"; import {DeployFunction} from "hardhat-deploy/types"; -import {updateArray} from "../scripts/utils"; +import {updateArray, deplayOne} from "../scripts/utils"; import {ZeroAddress} from "ethers"; const secondsPerYear = 365 * 24 * 60 * 60; + + const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { - const provider = hre.ethers.provider; - const from = await (await provider.getSigner()).getAddress(); const config = require(`../config/config_${hre.network.name}`); const {mallFeeAddress, paymentTokens, verifier} = config.market; - const {cec, rewardPerSecond} = config.staking; + const {cec, rewardPerSecond, vestingDuration} = config.staking; const tokenName = "Escrowed CEC"; const tokenSymbol = "esCEC"; - const esCEC = await hre.deployments.deploy("EsToken", { - from, - args: [tokenName, tokenSymbol], - log: true, - }); - console.log("==EsToken addr=", esCEC.address); - updateArray({ + const esCEC = await deplayOne({ + hre, name: "esCEC", type: "erc20", - json: "assets/contracts/EsToken.json", - address: esCEC.address, - network: hre.network.name, + contractName: "EsToken", + args: [tokenName, tokenSymbol], + verify: true, }); - // verify the contract - try { - await hre.run("verify:verify", { - address: esCEC.address, - constructorArguments: [tokenName, tokenSymbol], - }); - } catch (e) { - console.log("==verify failed", e); - } - - const stakedCecTracker = await hre.deployments.deploy("RewardTracker", { - from, - args: ["Staked CEC", "sCEC"], - log: true, - }); - console.log("==RewardTracker addr=", stakedCecTracker.address); - updateArray({ + + const stakedCecTracker = await deplayOne({ + hre, name: "stakedCecTracker", type: "logic", - json: "assets/contracts/RewardTracker.json", - address: stakedCecTracker.address, - network: hre.network.name, - }); - const stakedCecDistributor = await hre.deployments.deploy("RewardDistributor", { - from, - args: [esCEC.address, stakedCecTracker.address], - log: true, + contractName: "RewardTracker", + args: ["Staked CEC", "sCEC"], + verify: true, }); - console.log("==RewardDistributor addr=", stakedCecDistributor.address); - updateArray({ + const stakedCecDistributor = await deplayOne({ + hre, name: "stakedCecDistributor", type: "logic", - json: "assets/contracts/RewardDistributor.json", - address: stakedCecDistributor.address, - network: hre.network.name, + contractName: "RewardDistributor", + args: [esCEC.address, stakedCecTracker.address], + verify: true, }); - const vester = await hre.deployments.deploy("Vester", { - from, - args: ["Vested CEC", "veCEC", secondsPerYear, esCEC.address, ZeroAddress, cec, ZeroAddress, false], - log: true, - }); - - console.log("==Vester addr=", vester.address); - updateArray({ + const vester = await deplayOne({ + hre, name: "vester", type: "logic", - json: "assets/contracts/Vester.json", - address: vester.address, - network: hre.network.name, + contractName: "Vester", + args: ["Vested CEC", "veCEC", vestingDuration, esCEC.address, ZeroAddress, cec, stakedCecTracker.address, true], + verify: true, }); - - const rewardRouter = await hre.deployments.deploy("RewardRouter", { - from, - args: [cec, - esCEC.address, - stakedCecTracker.address, - vester.address,], - log: true, - }); - console.log("==RewardRouter addr=", rewardRouter.address); - updateArray({ + + const rewardRouter = await deplayOne({ + hre, name: "rewardRouter", type: "logic", - json: "assets/contracts/RewardRouter.json", - address: rewardRouter.address, - network: hre.network.name, + contractName: "RewardRouter", + args: [cec, esCEC.address, stakedCecTracker.address, vester.address], + verify: true, }); const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address); - const stakedCecDistributorContract = await hre.ethers.getContractAt("RewardDistributor", stakedCecDistributor.address); + const stakedCecDistributorContract = await hre.ethers.getContractAt( + "RewardDistributor", + stakedCecDistributor.address, + ); const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address); - await stakedCecTrackerContract.initialize([cec, esCEC.address], stakedCecDistributor.address); - - await stakedCecTrackerContract.setInPrivateTransferMode(true) - - await stakedCecTrackerContract.setInPrivateStakingMode(true) - - await stakedCecDistributorContract.updateLastDistributionTime(); - - await stakedCecDistributorContract.setTokensPerInterval(rewardPerSecond); - - await stakedCecTrackerContract.setHandler(rewardRouter.address, true) + let tx = await stakedCecTrackerContract.initialize([cec, esCEC.address], stakedCecDistributor.address); + 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(); + 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); + await tx.wait(); + console.log("==stakedCecTrackerContract setHandler"); // 为了能调用burn方法 - await esCECContract.setMinter(vester.address, true) + tx = await esCECContract.setMinter(vester.address, true); + await tx.wait(); + console.log("==esCECContract setMinter"); // 设定esCEC不能公开转账 - await esCECContract.setInPrivateTransferMode(true) + tx = await esCECContract.setInPrivateTransferMode(true); + await tx.wait(); + console.log("==esCECContract setInPrivateTransferMode"); // 添加转账白名单 - await esCECContract.setHandler(stakedCecTracker.address, true) + tx = await esCECContract.setHandler(stakedCecTracker.address, true); + await tx.wait(); + console.log("==esCECContract setHandler"); }; deployNFTClaim.tags = ["Staking"]; diff --git a/deployments/bsc_test/EsToken.json b/deployments/bsc_test/EsToken.json index 03f2f16..3c76cbe 100644 --- a/deployments/bsc_test/EsToken.json +++ b/deployments/bsc_test/EsToken.json @@ -1,5 +1,5 @@ { - "address": "0x68Db28B700B2AC2A5034A5c8bD70c1Ffc3E587DD", + "address": "0x2824Dc12495f86349430099939282b48aeDD6036", "abi": [ { "inputs": [ @@ -450,18 +450,18 @@ "type": "function" } ], - "transactionHash": "0x0fd4619d427ed6f49903687918d6ad7812f56da708a76793387bbfa19f8358d4", + "transactionHash": "0x794009fab84f1226c6050bc4f42883823309b0901aed47f16d4fc55fa2faafa6", "receipt": { "to": null, "from": "0x50A8e60041A206AcaA5F844a1104896224be6F39", - "contractAddress": "0x68Db28B700B2AC2A5034A5c8bD70c1Ffc3E587DD", + "contractAddress": "0x2824Dc12495f86349430099939282b48aeDD6036", "transactionIndex": 0, "gasUsed": "993001", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x014958e22e0f6346035a83ae94f432df43c8d6ee7d018a3632ac2fb2bb5cea8d", - "transactionHash": "0x0fd4619d427ed6f49903687918d6ad7812f56da708a76793387bbfa19f8358d4", + "blockHash": "0xd8f84018634952a81dad4926dc625fccfc1fd45db1734d789c321633563fd87f", + "transactionHash": "0x794009fab84f1226c6050bc4f42883823309b0901aed47f16d4fc55fa2faafa6", "logs": [], - "blockNumber": 43369439, + "blockNumber": 43372868, "cumulativeGasUsed": "993001", "status": 1, "byzantium": true diff --git a/deployments/bsc_test/RewardDistributor.json b/deployments/bsc_test/RewardDistributor.json index 5f77262..7e3f9d8 100644 --- a/deployments/bsc_test/RewardDistributor.json +++ b/deployments/bsc_test/RewardDistributor.json @@ -1,5 +1,5 @@ { - "address": "0x96d38E8e6470871F756F1a2e9dF614BCebd57AE8", + "address": "0xb60c7312F56da4303CE3bf27124f1850dBe1D0E5", "abi": [ { "inputs": [ @@ -228,25 +228,25 @@ "type": "function" } ], - "transactionHash": "0xa82811369839dc96cebffba5d35701466fd1ef0b88fc0d2c6e77f80fbde2ff56", + "transactionHash": "0x596a9d19bedfedcfd6dda6a255bc4135f2cbe06cdab77e4f4938d807f3ef44f2", "receipt": { "to": null, "from": "0x50A8e60041A206AcaA5F844a1104896224be6F39", - "contractAddress": "0x96d38E8e6470871F756F1a2e9dF614BCebd57AE8", - "transactionIndex": 1, - "gasUsed": "701310", + "contractAddress": "0xb60c7312F56da4303CE3bf27124f1850dBe1D0E5", + "transactionIndex": 0, + "gasUsed": "701322", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x10e660e6adb766ae3f77b4432d1785945edf2a52e3b3a4017d79bf71424f9f68", - "transactionHash": "0xa82811369839dc96cebffba5d35701466fd1ef0b88fc0d2c6e77f80fbde2ff56", + "blockHash": "0x5a2b3f6b05be2d0fdaa97847f0b0eea06edcee180f00c410115c8d4d4c804006", + "transactionHash": "0x596a9d19bedfedcfd6dda6a255bc4135f2cbe06cdab77e4f4938d807f3ef44f2", "logs": [], - "blockNumber": 43369449, - "cumulativeGasUsed": "1019909", + "blockNumber": 43372886, + "cumulativeGasUsed": "701322", "status": 1, "byzantium": true }, "args": [ - "0x68Db28B700B2AC2A5034A5c8bD70c1Ffc3E587DD", - "0xC28165d2db25De1B258Db835d3557Dee044b1C3a" + "0x2824Dc12495f86349430099939282b48aeDD6036", + "0xEA374dC9f94E7A3A2eE8C0C910954cE15E2C469E" ], "numDeployments": 1, "solcInputHash": "35d1d20dc9b7194768908e34f12939fd", diff --git a/deployments/bsc_test/RewardRouter.json b/deployments/bsc_test/RewardRouter.json index d6b4c34..37d5545 100644 --- a/deployments/bsc_test/RewardRouter.json +++ b/deployments/bsc_test/RewardRouter.json @@ -1,5 +1,5 @@ { - "address": "0x932956063849FceE07d60D9daee94eC0651810bc", + "address": "0xa57131c08c7E13abAB9Dd95721d456E1C2895b64", "abi": [ { "inputs": [ @@ -309,27 +309,27 @@ "type": "function" } ], - "transactionHash": "0x7c7d7e75476ac867461da171c840455ff2344fc52bbe973330e8c7aeffa61fde", + "transactionHash": "0xbfd9d91bbb9fcab5fa4a74295add8b2f56efd4d7d5ffddc1b4d81424eddc7fd5", "receipt": { "to": null, "from": "0x50A8e60041A206AcaA5F844a1104896224be6F39", - "contractAddress": "0x932956063849FceE07d60D9daee94eC0651810bc", - "transactionIndex": 0, - "gasUsed": "917182", + "contractAddress": "0xa57131c08c7E13abAB9Dd95721d456E1C2895b64", + "transactionIndex": 1, + "gasUsed": "917194", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x7207c45d25062cc41ff0db8166b0993e289d8bb9537518c0ab4b741f42a7378c", - "transactionHash": "0x7c7d7e75476ac867461da171c840455ff2344fc52bbe973330e8c7aeffa61fde", + "blockHash": "0x3afb034c849912ab31f616b05e81a1efaa4aae6bea09c9861ab06bb4f74765b4", + "transactionHash": "0xbfd9d91bbb9fcab5fa4a74295add8b2f56efd4d7d5ffddc1b4d81424eddc7fd5", "logs": [], - "blockNumber": 43369456, - "cumulativeGasUsed": "917182", + "blockNumber": 43372903, + "cumulativeGasUsed": "938194", "status": 1, "byzantium": true }, "args": [ "0xe34c5ea0c3083d11a735dc0609533b92130319f5", - "0x68Db28B700B2AC2A5034A5c8bD70c1Ffc3E587DD", - "0xC28165d2db25De1B258Db835d3557Dee044b1C3a", - "0x10F883D6e26fBb56Ab20466502BFD9017a1ea144" + "0x2824Dc12495f86349430099939282b48aeDD6036", + "0xEA374dC9f94E7A3A2eE8C0C910954cE15E2C469E", + "0xF7AaF4b166E11146F4D44c91B2a3818Ada13CdFB" ], "numDeployments": 1, "solcInputHash": "35d1d20dc9b7194768908e34f12939fd", diff --git a/deployments/bsc_test/RewardTracker.json b/deployments/bsc_test/RewardTracker.json index 4ff9584..f22c51a 100644 --- a/deployments/bsc_test/RewardTracker.json +++ b/deployments/bsc_test/RewardTracker.json @@ -1,5 +1,5 @@ { - "address": "0xC28165d2db25De1B258Db835d3557Dee044b1C3a", + "address": "0xEA374dC9f94E7A3A2eE8C0C910954cE15E2C469E", "abi": [ { "inputs": [ @@ -911,18 +911,18 @@ "type": "function" } ], - "transactionHash": "0xd29e8e0c69a5b2155fe93564b0a7b1ea9b05c3afcb89fc8cf60a8ceaa817997e", + "transactionHash": "0x37734d5e7d8f812e142289230cc59cd0a21f2606c67438e5c68e0a6bb615487f", "receipt": { "to": null, "from": "0x50A8e60041A206AcaA5F844a1104896224be6F39", - "contractAddress": "0xC28165d2db25De1B258Db835d3557Dee044b1C3a", + "contractAddress": "0xEA374dC9f94E7A3A2eE8C0C910954cE15E2C469E", "transactionIndex": 0, "gasUsed": "2088810", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa0fa1b307dc52cfa8cffbfbf30ce2bd37a840750bfb85b115ef2320beea7a690", - "transactionHash": "0xd29e8e0c69a5b2155fe93564b0a7b1ea9b05c3afcb89fc8cf60a8ceaa817997e", + "blockHash": "0x678035ac2dbb8af0e9b57d676056e4f566d67c9d847e2b4653c528ba4d98d543", + "transactionHash": "0x37734d5e7d8f812e142289230cc59cd0a21f2606c67438e5c68e0a6bb615487f", "logs": [], - "blockNumber": 43369446, + "blockNumber": 43372875, "cumulativeGasUsed": "2088810", "status": 1, "byzantium": true diff --git a/deployments/bsc_test/Vester.json b/deployments/bsc_test/Vester.json index ddb2f12..e8cbabe 100644 --- a/deployments/bsc_test/Vester.json +++ b/deployments/bsc_test/Vester.json @@ -1,5 +1,5 @@ { - "address": "0x10F883D6e26fBb56Ab20466502BFD9017a1ea144", + "address": "0xF7AaF4b166E11146F4D44c91B2a3818Ada13CdFB", "abi": [ { "inputs": [ @@ -937,31 +937,31 @@ "type": "function" } ], - "transactionHash": "0x3d72e4119c6285d8b9c370d40df23728a91b88fe8b1ba500e00bb24ea87637b2", + "transactionHash": "0x450133cf5830d1a0f3a051964f9f01615f9c602660f9c6beeeab108d5b4853f4", "receipt": { "to": null, "from": "0x50A8e60041A206AcaA5F844a1104896224be6F39", - "contractAddress": "0x10F883D6e26fBb56Ab20466502BFD9017a1ea144", + "contractAddress": "0xF7AaF4b166E11146F4D44c91B2a3818Ada13CdFB", "transactionIndex": 0, - "gasUsed": "1763188", + "gasUsed": "1803252", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x9aef7f491be0a18042505cf640ef6c216ddff3964d5eaf263c05eb4c14994f3f", - "transactionHash": "0x3d72e4119c6285d8b9c370d40df23728a91b88fe8b1ba500e00bb24ea87637b2", + "blockHash": "0xbcd61437d0b157cd8ccfb5aa1456c22a1e6aadebb4a7d7d81fc412307252b3a4", + "transactionHash": "0x450133cf5830d1a0f3a051964f9f01615f9c602660f9c6beeeab108d5b4853f4", "logs": [], - "blockNumber": 43369453, - "cumulativeGasUsed": "1763188", + "blockNumber": 43372895, + "cumulativeGasUsed": "1803252", "status": 1, "byzantium": true }, "args": [ "Vested CEC", "veCEC", - 31536000, - "0x68Db28B700B2AC2A5034A5c8bD70c1Ffc3E587DD", + "31536000", + "0x2824Dc12495f86349430099939282b48aeDD6036", "0x0000000000000000000000000000000000000000", "0xe34c5ea0c3083d11a735dc0609533b92130319f5", - "0x0000000000000000000000000000000000000000", - false + "0xEA374dC9f94E7A3A2eE8C0C910954cE15E2C469E", + true ], "numDeployments": 1, "solcInputHash": "35d1d20dc9b7194768908e34f12939fd", diff --git a/hardhat.config.ts b/hardhat.config.ts index ac79d5f..83ce067 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -59,6 +59,7 @@ const config: HardhatUserConfig = { bsc_test: { url: process.env.BSC_TEST_URL || "", accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + gasPrice: 10000000000, }, arb_sepolia: { url: process.env.ARBITRUM_TEST_URL || "", diff --git a/out/bsc_test_dev.json b/out/bsc_test_dev.json index 43615c4..fa63594 100644 --- a/out/bsc_test_dev.json +++ b/out/bsc_test_dev.json @@ -39,30 +39,30 @@ "name": "esCEC", "type": "erc20", "json": "assets/contracts/EsToken.json", - "address": "0x68Db28B700B2AC2A5034A5c8bD70c1Ffc3E587DD" + "address": "0x2824Dc12495f86349430099939282b48aeDD6036" }, { "name": "stakedCecTracker", "type": "logic", "json": "assets/contracts/RewardTracker.json", - "address": "0xC28165d2db25De1B258Db835d3557Dee044b1C3a" + "address": "0xEA374dC9f94E7A3A2eE8C0C910954cE15E2C469E" }, { "name": "stakedCecDistributor", "type": "logic", "json": "assets/contracts/RewardDistributor.json", - "address": "0x96d38E8e6470871F756F1a2e9dF614BCebd57AE8" + "address": "0xb60c7312F56da4303CE3bf27124f1850dBe1D0E5" }, { "name": "vester", "type": "logic", "json": "assets/contracts/Vester.json", - "address": "0x10F883D6e26fBb56Ab20466502BFD9017a1ea144" + "address": "0xF7AaF4b166E11146F4D44c91B2a3818Ada13CdFB" }, { "name": "rewardRouter", "type": "logic", "json": "assets/contracts/RewardRouter.json", - "address": "0x932956063849FceE07d60D9daee94eC0651810bc" + "address": "0xa57131c08c7E13abAB9Dd95721d456E1C2895b64" } ] \ No newline at end of file diff --git a/scripts/utils.ts b/scripts/utils.ts index 0fa1fe0..0d7fdc8 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -27,3 +27,42 @@ export const loadData = function ({ network }: { network: string }) { const filename = `./out/${network}_${env}.json`; return read(filename, "json"); }; + +export const verifyContract = async function ({ hre, name, address, args }: + { hre: any, name: string, address: string, args: any[] }) { + try { + await hre.run("verify:verify", { + address, + constructorArguments: args, + }); + } catch (e) { + console.log(`==verify ${name} failed`, e); + } +} + +export const deplayOne = async function ({ hre, name, type, contractName, args, verify }: + { hre: any, name: string, type: string, contractName: string, args: any[], verify: boolean }) { + const provider = hre.ethers.provider; + const from = await (await provider.getSigner()).getAddress(); + const contract = await hre.deployments.deploy(contractName, { + from, + args, + log: true, + }); + console.log(`==${name} addr=`, contract.address); + updateArray({ + name, + type, + json: `assets/contracts/${contractName}.json`, + address: contract.address, + network: hre.network.name, + }); + if (!verify) { + return contract; + } + // Wait for 5 blocks + let currentBlock = await hre.ethers.provider.getBlockNumber(); + while (currentBlock + 5 > (await hre.ethers.provider.getBlockNumber())) {} + await verifyContract({ hre, name, address: contract.address, args }); + return contract; +}