안녕하세요
제가 사용하고있는 config와 deploy 스크립트 전달드립니다.
hardhat.config.ts
import "dotenv/config";
import "@typechain/hardhat";
import "@nomiclabs/hardhat-ethers";
import "@nomiclabs/hardhat-waffle";
import { HardhatUserConfig } from 'hardhat/types';
const config: HardhatUserConfig = {
solidity: {
version: '0.5.6',
settings: {
optimizer: {
enabled: true,
runs: 200,
}
}
},
namedAccounts: {
deployer: 0,
},
networks: {
hardhat: {},
cypress: {
url: process.env.CYPRESS_URL,
httpHeaders: {
'Authorization': 'Basic ' + Buffer.from(process.env.ACCESS_KEY_ID + ':' + process.env.SECRET_ACCESS_KEY).toString('base64'),
'x-chain-id': '8217',
},
accounts: [
process.env.DEPLOYER || ''
],
chainId: 8217,
gas: 8500000,
},
baobab: {
url: process.env.BAOBAB_URL,
httpHeaders: {
'Authorization': 'Basic ' + Buffer.from(process.env.ACCESS_KEY_ID + ':' + process.env.SECRET_ACCESS_KEY).toString('base64'),
'x-chain-id': '1001',
},
accounts: [
process.env.DEPLOYER || ''
],
chainId: 1001,
gas: 8500000,
},
},
mocha: {
timeout: 100000
}
}
export default config;
deploy.ts
import "@nomiclabs/hardhat-ethers";
import "@nomiclabs/hardhat-waffle";
import { getNamedAccounts, config } from 'hardhat';
import { HttpNetworkUserConfig } from "hardhat/src/types/config";
import Caver from 'caver-js'
async function main() {
const { deployer } = await getNamedAccounts();
console.log("Deploying contracts with the account:", deployer);
const network = config.networks[process.env.HARDHAT_NETWORK as string] as HttpNetworkUserConfig;
const caver = new Caver(new Caver.providers.HttpProvider(network.url!, {
headers: [
{ name: 'Authorization', value: 'Basic ' + Buffer.from(process.env.ACCESS_KEY_ID + ':' + process.env.SECRET_ACCESS_KEY).toString('base64') },
{ name: 'x-chain-id', value: network.chainId!.toString() }
]
}));
caver.klay.accounts.wallet.add(caver.klay.accounts.privateKeyToAccount(process.env.DEPLOYER!));
const transaction = await caver.klay.sendTransaction({
type: 'SMART_CONTRACT_DEPLOY',
from: deployer,
data: '', /* bytecode */
gas: '50000000',
value: 0,
});
console.log(transaction);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
dependencies
"@klaytn/contracts": "^0.9.0",
"@nomiclabs/hardhat-ethers": "^2.0.0",
"@nomiclabs/hardhat-truffle5": "^2.0.3",
"@nomiclabs/hardhat-waffle": "^2.0.0",
"@openzeppelin/contracts": "2.5.1",
"@typechain/ethers-v5": "^7.2.0",
"@typechain/hardhat": "^3.0.0",
"@types/chai-as-promised": "^7.1.4",
"@types/mocha": "^9.0.0",
"caver-js": "^1.6.5",
"chai": "^3.4.0",
"chai-as-promised": "^7.1.1",
"dotenv": "^10.0.0",
"ethereum-waffle": "^3.0.0",
"ethers": "5.0.32",
"hardhat": "^2.8.0",
"hardhat-deploy": "^0.9.14",
"rimraf": "^3.0.2",
"ts-node": "^10.4.0",
"typechain": "^6.0.5",
"typescript": "^4.5.4"