Hardhat-deploy: ๊ธฐ๋Šฅ ์š”์ฒญ: forking ๋ชจ๋“œ์—์„œ hardhat์˜ ๋ฉ”์ธ๋„ท์—์„œ ๋ฐฐํฌ ํ—ˆ์šฉ

์— ๋งŒ๋“  2020๋…„ 11์›” 19์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: wighawag/hardhat-deploy

hardhat forking ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ await ethers.getContract("Bar") ๊ฐ€ hardhat-deploy ๊ฐ€ --network hardhat ์ด ์‹ค์ œ๋กœ ๋ฐฐํฌ๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜๋„ ์žˆ์Œ์„ ์•Œ๋ฆฐ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ ์ฐธ์กฐ https://github.com/wighawag/hardhat-deploy-ethers/issues/6

enhancement

๋ชจ๋“  10 ๋Œ“๊ธ€

0.7.0-beta.29์—์„œ ๊ตฌํ˜„๋จ
hardhat node --fork ... --fork-deployments <networkName>

์ฐธ์กฐ๋ฅผ ์œ„ํ•ด ์ฑ„ํŒ…์—์„œ ๋ณต์‚ฌ:

--fork-deployments ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋„คํŠธ์›Œํฌ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๊นŒ? ์ด์ƒ์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋จผ์ € โ€”fork-deployments ๋ฐฐํฌ ํด๋”๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๊ณ„์•ฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
  2. ์‚ดํŽด๋ณด๊ธฐ โ€”๋„คํŠธ์›Œํฌ ๋ฐฐํฌ ํด๋” ๋‘ ๋ฒˆ์งธ

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธ๋Š” ๋ฉ”์ธ๋„ท์˜ ๋ถ„๊ธฐ๋œ ๊ณ„์•ฝ ์ธ์Šคํ„ด์Šค + hardhat ๋„คํŠธ์›Œํฌ์—๋งŒ ๋ฐฐํฌํ•˜๋ ค๋Š” ๋ชจ์˜ ๊ณ„์•ฝ ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒด์ธ์—์„œ localhost ๋กœ ๋ฐฐํฌ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋Š” ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐํฌ๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์•„ ๊ดœ์ฐฎ์•„. ๋ฐฐํฌ๋ฅผ ๋ณต์‚ฌํ•  ๋„คํŠธ์›Œํฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์••๋‹ˆ๊นŒ? forking.url ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๊นŒ?

  2. hardhat network ์ธ๋ฉ”๋ชจ๋ฆฌ ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ…Œ์ŠคํŠธ ์ค‘์— ์‹คํ–‰ ์ค‘์ธ hardhat node ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด hardhat ๋„คํŠธ์›Œํฌ์—์„œ ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

ํ•˜ ์•„๋‹ˆ์š”, ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋…ธ๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ์ž‘์—…์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์žฌ๊ฐœ์žฅ

re 1. : param์— ๋Œ€ํ•œ ์ธ์ˆ˜๋Š” ๋ณต์‚ฌํ•  ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ @gitpusha ๋Š” ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์„ค์ •๋˜๋Š”์ง€์— ๋Œ€ํ•œ repo ์˜ˆ์ œ๋ฅผ ๊ฐ€์ง€๊ณ 
ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋„คํŠธ์›Œํฌ์— ์žˆ์œผ๋ฉฐ ์‚ฌ์ „ ๋ฐฐํฌ๋œ ๊ณ„์•ฝ ์ •๋ณด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋น„์Šทํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์™ธ๋ถ€ ๋ฐฐํฌ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ๊ฒƒ :

hardhat.config.js

module.exports = {
 ...
  external: {
    deployments: {
      hardhat: ['deployments/mainnet'],
    },
  },
}

์‹ค์ œ๋กœ ์™ธ๋ถ€ ๋ฐฐํฌ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‹ฌ์ฝคํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

hardhat: ['deployments/mainnet']

๋„๊ตฌ๋Š” hardhat ์—์„œ deployments/mainnet ์™€ deployments/hardhat ๋ชจ๋‘ ์‚ดํŽด๋ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ๋ฐฐํฌ๊ฐ€ ์šฐ์„  ์ ์šฉ๋ฉ๋‹ˆ๊นŒ? ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์•ฝ ๊ฐ„์— ์ค‘๋ณต์ด ์žˆ๋Š” ๊ฒฝ์šฐ deployments/mainnet ๊ฐ€ ์šฐ์„  ์ ์šฉ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ deployments/hardhat ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณ ๋ ค๋ฉ๋‹ˆ๊นŒ?

๋‹ค์Œ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์ด ์–ผ๋งˆ๋‚˜ ์œ ์šฉํ•œ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

await hre.ethers.getContractAt(abi, address)

๋Œ€์‹  forkmode ์—์„œ ํŠน์ • ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐฐํฌ๋œ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ •๋ง ๊ทธ๋ƒฅ ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์œ„์— ๊ฒŒ์‹œํ•œ ์ œ์•ˆ์„ ์‹œ๋„ํ–ˆ๊ณ  ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์™ธ๋ถ€์— ์ง€์ •๋œ ๋ฐฐํฌ๋Š” ์šฐ์„ ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐํฌ/ํ•˜๋“œํ–‡์—์„œ ๊ณ„์•ฝ์„ ์žฌ์„ค์ •ํ•˜๋Š” ๋…ธ๋“œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฏ€๋กœ ์ด๋ฏธ ๋ฐฐํฌ๋œ ๊ณ„์•ฝ์„ ๊ฐ•์ œ๋กœ ์žฌ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ฐฐํฌ/๋ฉ”์ธ๋„ท์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ๊ฒƒ์ด์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ์žฌ๊ฐœํ•˜์‹ญ์‹œ์˜ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰