Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- DataStructure
- javascript 초급
- Javascript
- 제로초
- SQL
- hyperledger fabric
- 깃
- 프로그래밍
- 하이퍼레저
- 블록몽키
- javascript 게임
- javascirpt
- 생활코딩 nodejs
- Blockmonkey
- 블록체인개론
- 블록체인
- nodejs
- 파이썬 알고리즘
- 자바스크립트
- js
- Nodejs 프로젝트
- vs code
- 컴퓨터사이언스
- al
- 컴퓨터공학개론
- 관계형데이터베이스
- hyperledger
- mysql
- algorithum
- 생활코딩
Archives
- Today
- Total
Blockmonkey
Hardhat - Upgradable Contract & Verify Contract 본문
1. Project Settiing
# Initialize
npm init -y
# install hardhat
npm i hardhat --dev
# hardhat initialize
npx hardhat
# init openzeppelin
npm install @openzeppelin/hardhat-upgrades --dev
# For Verify Contract
npm install @nomiclabs/hardhat-etherscan --dev
2. Hardhat 기본 사용법
# View Accounts
npx hardhat accounts
# Compile Solidity
npx hardhat compile
# TESTING
npx hardhat test ./test/mycontract.test.js
# TESTNETWORK START (ex: GETH)
npx hardhat node
# RUN DEPLOY CONTRACT
npx hardhat run --network localhost ./scripts/MyContract.deploy.js
# Open Console
npx hardhat console --network localhost
3. USE Contract In Console
# GET CONTRACT
const f = await ethers.getContractFactory("MyContract")
# Set Contract with address;
const mc = await f.attach("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9")
# Run Contract Function
(await mc.get()).toString()
4. Make Upgradable Contract
// hardhat.config.js
require("@nomiclabs/hardhat-waffle");
// Upgradable Contract Lib
require("@openzeppelin/hardhat-upgrades");
// Verify Contract
require("@nomiclabs/hardhat-etherscan");
// This is a sample Hardhat task. To learn how to create your own go to
// https://hardhat.org/guides/create-task.html
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
const accounts = await hre.ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more
/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports = {
networks: {
rinkeby: {
url: "https://rinkeby.infura.io/v3/e9da57059982446d8514371157fdd050",
accounts: ["e5db84f8d6393e84959782e0afe6d27786370c5295cbc5bb5a6596f87c5c873c"]
}
},
solidity: "0.8.2",
etherscan: {
apiKey: "X83XAQV5TJQ3QMPSEIJ5CX6UAKCJCJJXIY"
}
};
Deploy Version1 File
// MyContract.deploy.js
const hre = require("hardhat");
async function main() {
const MyContract = await hre.ethers.getContractFactory("MyContract");
const mc = await upgrades.deployProxy(MyContract, [1], { initializer : "set" });
console.log(`--My Contract--`);
console.log(MyContract);
console.log(`--MC--`);
console.log(mc);
console.log(`Deployed To : ${mc.address}`);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Deploy Version2 File
const { upgrades } = require("hardhat");
const hre = require("hardhat");
async function main() {
// Version 1 Contract Address === proxyContractAddress;
const proxyContractAddress = "0x359c1FfCb0114d86501929f68642244d8A49C7fB";
const MyContract_V2 = await hre.ethers.getContractFactory("MyContract_V2");
const mc2 = await upgrades.upgradeProxy(proxyContractAddress, MyContract_V2);
console.log(`-- Upgraded Proxy Contract Address --`);
console.log(mc2.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
5. Verify Contract
5.1 컨트렉트를 배포한다.
5.2 컨트렉트 Verify
npx hardhat verify --network rinkeby "0x359c1FfCb0114d86501929f68642244d8A49C7fB" --show-stack-traces
'BlockChain' 카테고리의 다른 글
| 공동소유 NFT (Fractional NFT) (0) | 2022.08.22 |
|---|---|
| [Solditiy] CEI & Mutex Pattern (0) | 2022.08.18 |
| Blockchain Dev Initial Setting (0) | 2022.04.21 |
| Install IPFS IN Ubuntu (0) | 2022.04.19 |
| [Ethereum] GSN (0) | 2022.03.15 |