Hardhat, Truffle, Foundry์ ๊ฐ์ ์ต๊ณ ์ DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ดํด๋ณด์ธ์. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ํ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๋ค๋ฃน๋๋ค.
๋ฏธ๋ ์ค๊ณํ๊ธฐ: DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ํ ๊ธ๋ก๋ฒ ๊ฐ์ด๋
๋์งํธ ํ๊ฒฝ์ ๊ธฐ๋ ๋น์ ์ธ ๋ณํ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์น2์ ์ค์ ์ง์ค์ ํ๋ซํผ์์ ์น3์ ํ์ค์ํ๋ ์ฌ์ฉ์ ์์ ์ธํฐ๋ท์ผ๋ก ์ด๋ํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ํ๋ช ์ ํต์ฌ์ ๋จ์ผ ์๋ฒ ๋์ ๋ธ๋ก์ฒด์ธ๊ณผ ๊ฐ์ P2P ๋คํธ์ํฌ์์ ์คํ๋๋ ํ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ (DApp)์ ๋๋ค. ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ์ด๊ฒ์ ์ค๋ฆด ๋์น๋ ๊ธฐํ์ด์ ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ ์๋ฏธํฉ๋๋ค. DApp์ ๊ตฌ์ถํ๋ ๊ฒ์ ์ค์๊ฐ ํฐ ๋น์ฉ์ ์ด๋ํ๊ณ ์๊ตฌ์ ์ผ ์ ์๋ ๋ณต์กํ๊ณ ๋ถ๋ณ์ ์์คํ ๊ณผ ์ํธ ์์ฉํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
์ด๊ฒ์ด DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ๊ฐ ํ์์ ์ธ ์ด์ ์ ๋๋ค. ํ๋ ์์ํฌ๋ ๊ฐ๋ฐ์๊ฐ ๊ฒฌ๊ณ ํ๊ณ ์์ ํ ์ค๋งํธ ์ปจํธ๋ํธ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ ์ ์๋๋ก ํ๋ ๋ฐํ์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ฉด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํฌ๊ฒ ๋จ์ถํ๊ณ ๋ณด์์ ๊ฐ์ ํ๋ฉฐ ๊ธ๋ก๋ฒ ํ ๋ด ํ์ ์ ๊ฐ์ํํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ ๋ฐฉ๊ฐ๋ก๋ฅด์ ์คํํธ์ ๋ถํฐ ๋ฐ๋์ ํํ ํฌ ํ์ฌ, ์ํ์ธ๋ฃจ์ ํ๋ฆฌ๋์ ๊ฐ๋ฐ์์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์ธ๊ณ ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํด DApp ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ณ ๋ค์ ์น3 ํ๋ก์ ํธ์ ์ ํฉํ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๋ฐ ๋์์ ์ฃผ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค.
DApp ๊ฐ๋ฐ ์คํ ์ดํดํ๊ธฐ
ํน์ ํ๋ ์์ํฌ์ ๋ค์ด๊ฐ๊ธฐ ์ ์, ํ๋ ์์ํฌ๊ฐ ๋ ๋์ DApp ์ํคํ ์ฒ ๋ด์์ ์ด๋์ ์ ํฉํ์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ DApp์ ๊ฐ๊ฐ ๊ณ ์ ํ ๋ชฉ์ ์ ๊ฐ์ง ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํ๋ ์์ํฌ๋ ์ด๋ฌํ ๊ณ์ธต ๊ฐ์ ์ํธ ์์ฉ์ ์กฐ์จํ๋ ์ ์ฐฉ์ ์ญํ ์ ํฉ๋๋ค.
- ๊ณ์ธต 1: ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ: ์ด๊ฒ์ ๋ชจ๋ ํธ๋์ญ์ ๊ณผ ์ํ ๋ณ๊ฒฝ์ด ๊ธฐ๋ก๋๋ ๋ถ์ฐ ๊ณต๊ฐ ์์ฅ์ธ ๊ธฐ๋ฐ ๊ณ์ธต์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋๋ฆฌ์, ์๋ผ๋, ํด๋ฆฌ๊ณค, BNB ์ฒด์ธ ๋ฐ ์๋ฐ๋์ฒด๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ํต์ฌ ๊ฐ๋ ์ EVM (์ด๋๋ฆฌ์ ๊ฐ์ ๋จธ์ ) ํธํ์ฑ์ผ๋ก, ์ด๋ ๋ธ๋ก์ฒด์ธ์ด ์ด๋๋ฆฌ์์ฉ์ผ๋ก ์ค๊ณ๋ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ์คํํ ์ ์์์ ์๋ฏธํ๋ฉฐ, ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ ๋ฐ ๊ฐ๋ฐ์ ํ์ ํฌ๊ฒ ํ์ฅํฉ๋๋ค.
- ๊ณ์ธต 2: ์ค๋งํธ ์ปจํธ๋ํธ: ์ด๊ฒ์ ํฉ์ ์กฐ๊ฑด์ด ์ฝ๋์ ์ง์ ์์ฑ๋ ์์ฒด ์คํ ์ปจํธ๋ํธ์ ๋๋ค. ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์์ ์คํ๋๋ DApp์ ๋ฐฑ์๋ ๋ก์ง์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Solidity(EVM ์ฒด์ธ์ฉ) ๋๋ Rust(์๋ผ๋์ฉ)์ ๊ฐ์ ์ธ์ด๋ก ์์ฑ๋ฉ๋๋ค.
- ๊ณ์ธต 3: ํต์ ๊ณ์ธต (API/SDK): ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก ํธ์๋๋ ๋ธ๋ก์ฒด์ธ๊ณผ ํต์ ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ํธ๋์ญ์ ์ ๋ณด๋ด๊ณ , ์ค๋งํธ ์ปจํธ๋ํธ์ ์ํธ ์์ฉํ๊ธฐ ์ํด์์ ๋๋ค. ethers.js ๋ฐ web3.js์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํ์ค์ํ ๋ฐฑ์๋ ๊ฐ์ ๋ค๋ฆฌ ์ญํ ์ ํ์ฌ ์ด ์ค์ํ ์ฐ๊ฒฐ์ ์ ๊ณตํฉ๋๋ค.
- ๊ณ์ธต 4: ํ๋ก ํธ์๋: ์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ์ํธ ์์ฉํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)์ ๋๋ค. React, Vue ๋๋ Angular์ ๊ฐ์ ํ์ค ์น ๊ธฐ์ ๋ก ๊ตฌ์ถํ ์ ์์ต๋๋ค. ํ๋ก ํธ์๋๋ ํต์ ๊ณ์ธต์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง๊ฐ(์: MetaMask, Phantom)์ ์ฐ๊ฒฐํ๊ณ ์ค๋งํธ ์ปจํธ๋ํธ์ ์ํธ ์์ฉํฉ๋๋ค.
- ๊ณ์ธต 5: ํ์ค์ํ ์ธํ๋ผ: ์ง์ ํ ํ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ ์ค์ ์ง์ค์ ์คํจ ์ง์ ์ ํผํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ์ผ ๋ฐ ํ๋ก ํธ์๋ ์์ฐ์ ํธ์คํ ํ๊ธฐ ์ํ IPFS (ํ์ฑ ๊ฐ ํ์ผ ์์คํ ) ๋๋ Arweave์ ๊ฐ์ ํ์ค์ํ ์คํ ๋ฆฌ์ง ์๋ฃจ์ ๊ณผ ๋ธ๋ก์ฒด์ธ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๋ ๊ทธ๋ํ(The Graph)์ ๊ฐ์ ๋ฐ์ดํฐ ์ธ๋ฑ์ฑ ์๋น์ค๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฒด์ธ๋งํฌ(Chainlink)์ ๊ฐ์ ์ค๋ผํด์ ์ค์ ์คํ์ฒด์ธ ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ก์ฒด์ธ์ผ๋ก ๊ฐ์ ธ์ค๋ ์์ ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํ๋ ์์ํฌ๋ ์ด๋์ ์ ์ฉ๋ ๊น์? DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ ์ ์ฒด ์ค๋งํธ ์ปจํธ๋ํธ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํฉ๋๋ค. ์ค๋งํธ ์ปจํธ๋ํธ(๊ณ์ธต 2)๋ฅผ ์์ฑ, ์ปดํ์ผ, ํ ์คํธ, ๋๋ฒ๊ทธ ๋ฐ ๋ฐฐํฌํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๋์์ ํต์ ๊ณ์ธต(๊ณ์ธต 3) ๋ฐ ํ๋ก ํธ์๋(๊ณ์ธต 4)์์ ํตํฉ์ ๊ฐ์ํํฉ๋๋ค.
DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ ์ ํ ๊ธฐ์ค
ํ๋ ์์ํฌ ์ ํ์ ํ๋ก์ ํธ์ ํจ์จ์ฑ, ๋ณด์ ๋ฐ ํ์ฅ์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ์ ๋ต์ ๊ฒฐ์ ์ ๋๋ค. ๋ค์์ ์ง๋ฆฌ์ ์์น์ ๊ด๊ณ์์ด ๊ฐ๋ฐ์์ ํ์ด ๊ณ ๋ คํด์ผ ํ ์ฃผ์ ๊ธฐ์ค์ ๋๋ค.
1. ๋ธ๋ก์ฒด์ธ ๋ฐ ์ธ์ด ์ง์
์ด๋ค ๋ธ๋ก์ฒด์ธ ์์์ ๊ฐ๋ฐํ ์์ ์ธ๊ฐ์? EVM ํธํ์ธ๊ฐ์? ๋ชฉํ๋ก ํ๋ ์ํ๊ณ์ ๋ฐ๋ผ ์ ํ์ ํญ์ด ์ฆ์ ์ข์์ง๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ๋ฌธ ์ง์๋ ์ฃผ์ ์์ธ์ ๋๋ค. ์น3์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ธ์ด๋ JavaScript/TypeScript, Solidity, Rust ๋ฐ Python์ ๋๋ค.
2. ์ฌ์ฉ ํธ์์ฑ ๋ฐ ํ์ต ๊ณก์
ํ์ ์๋ก์ด ๊ฐ๋ฐ์๊ฐ ์ผ๋ง๋ ๋นจ๋ฆฌ ์์ฐ์ฑ์ ๋ฐํํ ์ ์์๊น์? ๋ช ํํ๊ณ ํฌ๊ด์ ์ธ ๋ฌธ์, ์ง๊ด์ ์ธ ๋ช ๋ น์ค ์ธํฐํ์ด์ค(CLI), ๊ทธ๋ฆฌ๊ณ ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ์ถ ํ๋ ์์ํฌ๋ฅผ ์ฐพ์ผ์ธ์. ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ ํ๋ก์ ํธ๋ฅผ ์ง์ฐ์ํค๊ณ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค.
3. ์ปค๋ฎค๋ํฐ ๋ฐ ์ํ๊ณ
ํ๊ธฐ์ฐฌ ๊ธ๋ก๋ฒ ์ปค๋ฎค๋ํฐ๋ ๊ฐ๋ ฅํ ์์ฐ์ ๋๋ค. ์ด๋ ๋ ๋ง์ ์จ๋ผ์ธ ํํ ๋ฆฌ์ผ, ํ์ฑ ์ง์ ์ฑ๋(Discord ๋๋ Telegram ๋ฑ), ํ์ฌ ํ๋ฌ๊ทธ์ธ, ๊ทธ๋ฆฌ๊ณ ๊ณ ์ฉํ ์ ์๋ ๋ ํฐ ์ธ์ฌ ํ์ ์๋ฏธํฉ๋๋ค. ๊ฐ๋ ฅํ ์ํ๊ณ๋ฅผ ๊ฐ์ง ํ๋ ์์ํฌ๋ ๊ณ ๋ฆฝ๋์ง ์๊ณ ์ปค๋ฎค๋ํฐ๊ฐ ๊ตฌ์ถํ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
4. ํ ์คํธ ๋ฐ ๋๋ฒ๊น ๊ธฐ๋ฅ
์ค๋งํธ ์ปจํธ๋ํธ ๋ฒ๊ทธ๋ ์น๋ช ์ ์ธ ์ฌ์ ์ ์์ค๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋ฐ์ด๋ ํ๋ ์์ํฌ๋ ๊ฒฌ๊ณ ํ ํ ์คํธ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ฐพ์์ผ ํ ์ฃผ์ ๊ธฐ๋ฅ์๋ ๋น ๋ฅธ ํ ์คํธ ์คํ์ ์ํ ๋ก์ปฌ ๋ธ๋ก์ฒด์ธ, ํ์ค์ ์ธ ํ ์คํธ๋ฅผ ์ํ ๋ผ์ด๋ธ ๋ฉ์ธ๋ท ์ํ ํฌํน ๋๊ตฌ, ๊ทธ๋ฆฌ๊ณ ๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํฌํจ๋ฉ๋๋ค. Hardhat์ด ๊ฐ์ฒํ ๊ธฐ๋ฅ์ธ Solidity ๋ด์์ `console.log` ๋ฌธ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๋๋ฒ๊น ์ ์์ด ํ๋๋ฅผ ๋ฐ๊พธ๋ ๊ธฐ๋ฅ์ ๋๋ค.
5. ํ๋ก ํธ์๋ ํตํฉ
ํ๋ ์์ํฌ๊ฐ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ํ๋ก ํธ์๋์ ์ผ๋ง๋ ์ํํ๊ฒ ์ฐ๊ฒฐํ๋์? ์ปจํธ๋ํธ ABI(์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค) ๋ฐ ํ์ ์ ์(์: TypeScript์ฉ)๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ด ํตํฉ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๊ธฐ๋ฅ์ ์ฐพ์๋ณด์ธ์.
6. ๋ณด์ ๊ธฐ๋ฅ
ํ๋ ์์ํฌ๊ฐ Slither ๋๋ MythX์ ๊ฐ์ ๋ณด์ ๋ถ์ ๋๊ตฌ์ ํตํฉ๋์ด ์๋์? ์ค๊ณ์ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฅ๋ คํ๋์? ์ด๋ค ํ๋ ์์ํฌ๋ ๋ณด์์ ๋ณด์ฅํ ์๋ ์์ง๋ง, ์ผ๋ถ ํ๋ ์์ํฌ๋ ์ฝ๋ ๊ฐ์ฌ ๋ฐ ๊ฐํ๋ฅผ ๋๋ ๋ ๋์ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฌ์ธต ๋ถ์: ์ต๊ณ ์ DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ
์ค๋๋ ์น3 ๊ฐ๋ฐ ๊ณต๊ฐ์ ์ง๋ฐฐํ๋ ์ ๋์ ์ธ ํ๋ ์์ํฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ ํ๋ ์์ํฌ๋ ๊ณ ์ ํ ์ฒ ํ, ๊ฐ์ ๋ฐ ์ด์์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
1. Hardhat (EVM์ ์ ๊ณ ํ์ค)
๊ฐ์: Hardhat์ JavaScript ๋ฐ TypeScript๋ก ์์ฑ๋ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋น ๋ฅธ ์ด๋๋ฆฌ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋๋ค. ๊ฐ๋ ฅํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๋ํ ์ง์ค ๋๋ถ์ EVM ํธํ ์ฒด์ธ์์ ๊ฐ๋ฐํ๋ ์ ๋ฌธ ํ์ ์ํ ์ฌ์ค์์ ํ์ค์ด ๋์์ต๋๋ค.
์ง์ ๋ธ๋ก์ฒด์ธ: ๋ชจ๋ EVM ํธํ ์ฒด์ธ (์ด๋๋ฆฌ์, ํด๋ฆฌ๊ณค, BNB ์ฒด์ธ, Arbitrum, Optimism ๋ฑ).
์ฃผ์ ๊ธฐ๋ฅ:
- Hardhat Network: ๊ฐ๋ฐ์ฉ์ผ๋ก ์ค๊ณ๋ ๋๋๋๋ก ๋น ๋ฅธ ๋ก์ปฌ ์ด๋๋ฆฌ์ ๋คํธ์ํฌ์ ๋๋ค. ๋ฉ์ธ๋ท ํฌํน, ์๋ ์ค๋ฅ ๋ณด๊ณ , Solidity ์ฝ๋ ๋ด `console.log` ์ง์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ํ๋ฌ๊ทธ์ธ ์ํ๊ณ: Hardhat์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ๋๋ค. ์ปค๋ฎค๋ํฐ๋ Etherscan ์ปจํธ๋ํธ ๊ฒ์ฆ, ๊ฐ์ค ๋ณด๊ณ , Waffle ๋ฐ TypeChain๊ณผ ๊ฐ์ ๋๊ตฌ์์ ํตํฉ๊ณผ ๊ฐ์ ์์ ์ ์ํ ์๋ฐฑ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ๊ตฌ์ถํ์ต๋๋ค.
- TypeScript ๋ค์ดํฐ๋ธ: TypeScript์ ๋ํ ๊ฐ๋ ฅํ ์ง์์ ์ ๊ณตํ์ฌ ํ ์คํธ, ์คํฌ๋ฆฝํธ ๋ฐ ์ปจํธ๋ํธ ์ํธ ์์ฉ์ ๋ํ ํ์ ์์ ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ํ์คํฌ ๋ฌ๋: ์ผ๋ฐ์ ์ธ ์์ ์ ์๋ํํ๊ณ ๋ณต์กํ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์ ์ฐํ ์์คํ ์ ๋๋ค.
์ฅ์ :
- ๋งค์ฐ ์ ์ฐํ๊ณ ๊ตฌ์ฑ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ฐ์ด๋ ๋๋ฒ๊น ๊ธฐ๋ฅ.
- ๋ฐฉ๋ํ๊ณ ํ๋ฐํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ.
- ๋ ์์ ํ ์ฝ๋๋ฅผ ์ํ ํ์ํ TypeScript ํตํฉ.
๋จ์ :
- ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ ๋ ๋จ์ ์ธ ํ๋ ์์ํฌ์ ๋นํด ์ด๊ธฐ ์ค์ ๋ฐ ๊ตฌ์ฑ์ด ๋ ๋ง์ด ํ์ํ ์ ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ: ์ ์ฐ์ฑ, ๊ฐ๋ ฅํ ๋๋ฒ๊น ๋๊ตฌ ๋ฐ ํ๋ถํ ์ํ๊ณ๋ฅผ ์ค์ํ๊ฒ ์๊ฐํ๋ ์ ๋ฌธ ๊ฐ๋ฐ ํ ๋ฐ ๊ฐ๋ณ ๊ฐ๋ฐ์. ์ค๋๋ ๋๋ถ๋ถ์ ์ฌ๊ฐํ EVM ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์ํ ์ต๊ณ ์ ์ ํ์ ๋๋ค.
2. Truffle Suite (๋ฒ ํ ๋ ํ๋ ์์ํฌ)
๊ฐ์: ๊ฐ์ฅ ์ด๊ธฐ์ DApp ๊ฐ๋ฐ ํ๊ฒฝ ์ค ํ๋์ธ Truffle์ ์ค๋ ์ญ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํฌ๊ด์ ์ธ ์ฌ์ธ์ ์๋ฃจ์ ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. ์ด ์ค์ํธ์๋ ์ธ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค: Truffle(๊ฐ๋ฐ ํ๊ฒฝ), Ganache(๋ก์ปฌ ๊ฐ๋ฐ์ฉ ๊ฐ์ธ ๋ธ๋ก์ฒด์ธ), Drizzle(ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์).
์ง์ ๋ธ๋ก์ฒด์ธ: ๋ชจ๋ EVM ํธํ ์ฒด์ธ.
์ฃผ์ ๊ธฐ๋ฅ:
- ํตํฉ ์ค์ํธ: Truffle, Ganache, Drizzle์ ์ํํ๊ฒ ํจ๊ป ์๋ํ๋๋ก ์ค๊ณ๋์ด ์์ ํ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ํ๋ ์ปจํธ๋ํธ ํ ์คํธ: JavaScript ๋ฐ Solidity ๋ชจ๋์์ ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฑ์ํ ํ๋ ์์ํฌ์ ๋๋ค.
- ๋ด์ฅ ๋ง์ด๊ทธ๋ ์ด์ : ์ค๋งํธ ์ปจํธ๋ํธ ๋ฐฐํฌ๋ฅผ ์ํ ๊ตฌ์กฐํ๋ ์์คํ ์ผ๋ก, ๋ณต์กํ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- Truffle DB: ํธ๋์ญ์ ์คํ์ ๋จ๊ณ๋ณ๋ก ์งํํ๊ธฐ ์ํ ๋ด์ฅ ๋๋ฒ๊ฑฐ์ ๋๋ค.
์ฅ์ :
- ๊ตฌ์กฐํ๋ ์ ๊ทผ ๋ฐฉ์๊ณผ ๊ด๋ฒ์ํ ๋ฌธ์ ๋๋ถ์ ์ด๋ณด์์๊ฒ ํ์ํฉ๋๋ค.
- ์๋ ๋์ ์ฑ์ํ๊ณ ์ค์ ์์ ๊ฒ์ฆ๋์์ต๋๋ค.
- ์ฌ์ธ์ ์ค์ํธ๋ ์ด๊ธฐ ์ค์ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค.
๋จ์ :
- Hardhat๋ณด๋ค ๋ ์๊ฒฉํ๊ณ ์ ์ฐ์ฑ์ด ๋ถ์กฑํ๋ค๊ณ ๋๊ปด์ง ์ ์์ต๋๋ค.
- ๊ฒฝ์์ฌ์ ๋นํด ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ก๊ณ , ์ํ๊ณ๊ฐ Hardhat๋งํผ ์ญ๋์ ์ด์ง ์์ต๋๋ค.
- Ganache๋ ๋๊ท๋ชจ ํ ์คํธ ์ค์ํธ๋ฅผ ์คํํ ๋ Hardhat Network๋ณด๋ค ๋๋ฆด ์ ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ: ์น3 ๊ณต๊ฐ์ ์ง์ ํ๋ ์ด๋ณด์, ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ์ ๊ฐ๋ฅด์น๋ ๊ต์ก์, ๊ทธ๋ฆฌ๊ณ ์ค๋ ์ญ์ฌ๋ฅผ ๊ฐ์ง ์์ ์ ์ธ ์ฌ์ธ์ ์๋ฃจ์ ์ ์ ํธํ๋ ํ.
3. Foundry (Rust ๊ธฐ๋ฐ ์ฑ๋ฆฐ์ )
๊ฐ์: Foundry๋ Rust๋ก ์์ฑ๋ ์ด๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์๋กญ๊ณ ๋งค์ฐ ๋น ๋ฅด๋ฉฐ ์ด์ ๊ฐ๋ฅํ ํดํท์ ๋๋ค. ์ฃผ์ ์ฐจ๋ณ์ ์ ๊ฐ๋ฐ์๊ฐ ํ ์คํธ๋ฅผ JavaScript๋ก ์ปจํ ์คํธ ์ ํํ๋ ๊ฒ๋ณด๋ค ๋ ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๋ Solidity๋ก ์ง์ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ง์ ๋ธ๋ก์ฒด์ธ: ๋ชจ๋ EVM ํธํ ์ฒด์ธ.
์ฃผ์ ๊ธฐ๋ฅ:
- Forge: ํ ์คํธ ํ๋ ์์ํฌ์ ๋๋ค. ๋งค์ฐ ๋น ๋ฅด๋ฉฐ Solidity๋ก ํ ์คํธ, ํผ์ฆ ํ ์คํธ ๋ฐ ํ์ ์ฆ๋ช ์ ์์ฑํ ์ ์์ต๋๋ค.
- Cast: EVM ์ฒด์ธ์ RPC ํธ์ถ์ ํ๋ ๊ฐ๋ ฅํ ๋ช ๋ น์ค ๋๊ตฌ์ ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ํธ๋์ญ์ ์ ๋ณด๋ด๊ณ , ์ปจํธ๋ํธ๋ฅผ ํธ์ถํ๊ณ , ์ฒด์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Anvil: Hardhat Network ๋๋ Ganache๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋์ฒดํ๋ ๋ก์ปฌ ํ ์คํธ๋ท ๋ ธ๋์ ๋๋ค.
- Solidity ์คํฌ๋ฆฝํ : JavaScript ๋์ Solidity๋ก ๋ฐฐํฌ ๋ฐ ์ํธ ์์ฉ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ์์ฑํฉ๋๋ค.
์ฅ์ :
- ๋ฐ์ด๋ ์๋: Rust๋ก ์์ฑ๋์ด JavaScript ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
- Solidity๋ก ํ ์คํธ ์์ฑ: Solidity ๊ฐ๋ฐ์์๊ฒ ์ฃผ์ํ ์ธ์ฒด๊ณตํ์ ์ด์ ์ ๋๋ค.
- ๊ฐ๋ ฅํ ํด๋ง: Cast๋ ์จ์ฒด์ธ ์ํธ ์์ฉ์ ์ํ ๋ค์ฌ๋ค๋ฅํ๊ณ ๊ฐ๋ ฅํ CLI ๋๊ตฌ์ ๋๋ค.
- ํผ์ฆ ํ ์คํธ: ์ฃ์ง ์ผ์ด์ค๋ฅผ ์ฐพ๊ธฐ ์ํ ์์ฑ ๊ธฐ๋ฐ ํ ์คํธ ์ง์์ด ๋ด์ฅ๋์ด ์์ต๋๋ค.
๋จ์ :
- Hardhat ๋ฐ Truffle๋ณด๋ค ์ ์์ด๋ฏ๋ก ์ปค๋ฎค๋ํฐ ๋ฐ ํ์ฌ ํด๋ง์ด ์์ง ์ฑ์ฅ ์ค์ ๋๋ค.
- ๋ช ๋ น์ค ๋๋ Foundry ์ฒ ํ์ ์ต์ํ์ง ์์ ์ฌ๋๋ค์๊ฒ๋ ํ์ต ๊ณก์ ์ด ๋ ๊ฐํ๋ฅผ ์ ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ: ์ฑ๋ฅ์ ์ฐ์ ์ํ๊ณ Solidity๋ก ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ ํธํ๋ ๊ฐ๋ฐ์. ๋งค์ฐ ๋น ๋ฅธ ์๋์ ๊ฐ๋ ฅํ ํ ์คํธ ๊ธฐ๋ฅ์ด ํ์ํ ๋ณด์ ์ฐ๊ตฌ์ ๋ฐ DeFi ํ๋กํ ์ฝ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๋น ๋ฅด๊ฒ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค.
4. Brownie (ํ์ด์ฌ ๊ฐ๋ฐ์์ ์ ํ)
๊ฐ์: Brownie๋ EVM์ ๋์์ผ๋ก ํ๋ ์ค๋งํธ ์ปจํธ๋ํธ์ฉ Python ๊ธฐ๋ฐ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ํ๋ ์์ํฌ์ ๋๋ค. Python์ ๊ฐ๋ ฅํ ์คํฌ๋ฆฝํ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ ๋ถ์, ์๋ํ ๋ฐ ๋ณด์์ ์ํ ๊ด๋ฒ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์ ์ธ๊ณ์ ๋ง์ Python ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ์ดํํฉ๋๋ค.
์ง์ ๋ธ๋ก์ฒด์ธ: ๋ชจ๋ EVM ํธํ ์ฒด์ธ.
์ฃผ์ ๊ธฐ๋ฅ:
- Python ๊ธฐ๋ฐ ์คํฌ๋ฆฝํ : Python์ ์ฌ์ฉํ์ฌ ํ ์คํธ, ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ๋ฐ ๋ณต์กํ ์ํธ ์์ฉ ๋ก์ง์ ์์ฑํฉ๋๋ค.
- Pytest ํตํฉ: ์ธ๊ธฐ ์๊ณ ๊ฐ๋ ฅํ `pytest` ํ๋ ์์ํฌ๋ฅผ ํ ์คํธ์ ํ์ฉํ์ฌ ํฝ์ค์ฒ ๋ฐ ์์ธ ๋ณด๊ณ ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ปจํธ๋ํธ ๊ธฐ๋ฐ ํ ์คํธ: ์ปจํธ๋ํธ ์ํธ ์์ฉ์ ์ค์ฌ์ผ๋ก ํ๋ ํ ์คํธ ์ฒ ํ.
- ์ฝ์ ์ํธ ์์ฉ: ๋น ๋ฅธ ๋๋ฒ๊น ๋ฐ ์จ์ฒด์ธ ์ํธ ์์ฉ์ ์ํ ๋ํํ ์ฝ์.
์ฅ์ :
- ๊ฐ๋ ฅํ Python ๋ฐฐ๊ฒฝ์ ๊ฐ์ง ๊ฐ๋ฐ์์๊ฒ ์๋ฒฝํฉ๋๋ค.
- ์คํฌ๋ฆฝํ , ๋ฐ์ดํฐ ๊ณผํ ๋ฐ ๋ณด์ ๋ถ์์ ์ํด ๋ฐฉ๋ํ๊ณ ์ฑ์ํ Python ์ํ๊ณ๋ฅผ ํ์ฉํฉ๋๋ค.
- ๋ณต์กํ ์ ๋ ๋ถ์ ๋ฐ ๋ชจ๋ธ๋ง์ด ํ์ํ DeFi ํ๋ก์ ํธ์ ํ์ํฉ๋๋ค.
๋จ์ :
- JavaScript ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ ๋นํด ํ์ ์์ฅ์ด๋ฉฐ ์ปค๋ฎค๋ํฐ ๊ท๋ชจ๊ฐ ์์ต๋๋ค.
- ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ธ๊ณ๋ JavaScript ์ค์ฌ์ด์ด์ ๋ง์ฐฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ: ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์ผ๋ถ๋ก ๋ณต์กํ ์คํฌ๋ฆฝํ , ๋ฐ์ดํฐ ๋ถ์ ๋๋ ๋ณด์ ํ ์คํธ๋ฅผ ์ํํด์ผ ํ๋ Python ๊ฐ๋ฐ์, ์ ๋ ๋ถ์๊ฐ ๋ฐ DeFi ํ.
5. Anchor (์๋ผ๋ ํ์ค)
๊ฐ์: EVM ์ํ๊ณ๋ฅผ ๋์ด, Anchor๋ ์๋ผ๋ ๋ธ๋ก์ฒด์ธ์์ ์ ํ๋ฆฌ์ผ์ด์ ("ํ๋ก๊ทธ๋จ"์ด๋ผ๊ณ ํจ)์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ์ ๋๋ค. ์๋ผ๋์ ์ํคํ ์ฒ๋ ์ด๋๋ฆฌ์๊ณผ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅด๋ฉฐ, Anchor๋ Rust์์ ๊ฐ๋ฐ์ ๋จ์ํํ๋ ๋ฐ ํ์ํ ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค.
์ง์ ๋ธ๋ก์ฒด์ธ: ์๋ผ๋.
์ฃผ์ ๊ธฐ๋ฅ:
- ์์ฉ๊ตฌ ๊ฐ์: ์๋ผ๋ ํ๋ก๊ทธ๋จ์ ํ์ํ ์์ฉ๊ตฌ ์ฝ๋์ ์์ ํ๊ธฐ์ ์ผ๋ก ์ค์ ๋๋ค.
- ์ธํฐํ์ด์ค ์ ์ ์ธ์ด (IDL): Rust ์ฝ๋์์ IDL์ ์๋์ผ๋ก ์์ฑํ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ์ฌ TypeScript/JavaScript๋ก ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ํ๋ก ํธ์๋ ํตํฉ์ ๋จ์ํํ ์ ์์ต๋๋ค.
- ๋ณด์ ์ถ์ํ: ์ผ๋ฐ์ ์ธ ๋ณด์ ๊ฒ์ฌ(์: ๊ณ์ ์์ ๊ถ)๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค.
- ์ํฌ์คํ์ด์ค ๊ด๋ฆฌ: ๋จ์ผ ํ๋ก์ ํธ ๋ด์์ ์ฌ๋ฌ ๊ด๋ จ ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฅ์ :
- ๋ชจ๋ ์ง์งํ ์๋ผ๋ ๊ฐ๋ฐ์ ํ์์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
- ์๋ผ๋์์ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ๋ณด์์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
- ์๋ ์์ฑ๋ IDL์ ํตํ ์ํํ ํ๋ก ํธ์๋ ํตํฉ.
๋จ์ :
- ์๋ผ๋ ์ํ๊ณ์๋ง ํนํ๋์ด ์์ผ๋ฉฐ, ์ง์์ด EVM ์ฒด์ธ์ผ๋ก ์ง์ ์ด์ ๋์ง ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ: ์๋ผ๋ ๋ธ๋ก์ฒด์ธ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ชจ๋ ๊ฐ๋ฐ์ ๋๋ ํ.
ํ๋ ์์ํฌ ๋น๊ต: ์ฌ์ธต ๋ถ์ํ
์ฐจ์ด์ ์ ์๊ฐํํ๋ ๋ฐ ๋์์ด ๋๋๋ก ์์ฝ ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
| ํ๋ ์์ํฌ | ์ฃผ์ ์ธ์ด | ์ฃผ์ ๊ธฐ๋ฅ | ์ต์ ์ ๋์ |
|---|---|---|---|
| Hardhat | JavaScript / TypeScript | ํ๋ฌ๊ทธ์ธ ์ํ๊ณ & `console.log` | ์ ์ฐ์ฑ๊ณผ ๊ฐ๋ ฅํ ๋๋ฒ๊น ์ด ํ์ํ ์ ๋ฌธ EVM ํ. |
| Truffle Suite | JavaScript | ์ฌ์ธ์ ์ค์ํธ (Truffle, Ganache) | ๊ตฌ์กฐํ๋๊ณ ์ฑ์ํ ํ๊ฒฝ์ ์ฐพ๋ ์ด๋ณด์ ๋ฐ ๊ต์ก์. |
| Foundry | Rust / Solidity | ๊ทน๋์ ์๋ & Solidity ํ ์คํธ | ์ฑ๋ฅ ์ค์ฌ ๊ฐ๋ฐ์ ๋ฐ ๋ณด์ ์ฐ๊ตฌ์. |
| Brownie | Python | Pytest ํตํฉ & Python ์คํฌ๋ฆฝํ | Python ๊ฐ๋ฐ์, ํนํ DeFi ๋ฐ ๋ฐ์ดํฐ ๋ถ์ ๋ถ์ผ. |
| Anchor | Rust | ๊ฐ์ํ๋ ์๋ผ๋ ๊ฐ๋ฐ & IDL | ์๋ผ๋ ๋ธ๋ก์ฒด์ธ์์ ๊ฐ๋ฐํ๋ ๋ชจ๋ ๊ฐ๋ฐ์. |
์์ํ๊ธฐ: Hardhat์ ์ด์ฉํ ์ค์ฉ์ ์ธ ๊ณผ์
์ด๋ก ์ ํ๋ฅญํ์ง๋ง, ์ค์ต์ด ๋ ์ค์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ธ Hardhat ํ๋ก์ ํธ๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ์์๋ Node.js๊ฐ ์ค์น๋ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ผํ ์ ์๋ ๋ณดํธ์ ์ธ ๋ด์ฉ์ ๋๋ค.
1๋จ๊ณ: ํ๊ฒฝ ์ค์
Node.js (v16 ์ด์) ๋ฐ npm (๋๋ yarn)์ ์ต์ ๋ฒ์ ์ด ์ค์น๋์ด ์๋์ง ํ์ธํ์ธ์. ํฐ๋ฏธ๋์์ `node -v` ๋ฐ `npm -v`๋ฅผ ์คํํ์ฌ ํ์ธํ ์ ์์ต๋๋ค.
2๋จ๊ณ: Hardhat ํ๋ก์ ํธ ์ด๊ธฐํ
์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ Hardhat์ผ๋ก ์ด๊ธฐํํ์ธ์.
mkdir my-dapp && cd my-dapp
npm init -y
npm install --save-dev hardhat
npx hardhat
๋ช ๊ฐ์ง ์ง๋ฌธ์ด ๋์ต๋๋ค. ์ด ์์์์๋ "Create a TypeScript project"๋ฅผ ์ ํํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ์๋ฝํ์ธ์.
3๋จ๊ณ: ํ๋ก์ ํธ ๊ตฌ์กฐ ๊ฒํ
Hardhat์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ ์ํ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
- contracts/: Solidity ์์ค ํ์ผ์ด ์๋ ๊ณณ (์: `Lock.sol`).
- scripts/: ๋ฐฐํฌ ๋ฐ ์ํธ ์์ฉ ์คํฌ๋ฆฝํธ์ฉ (์: `deploy.ts`).
- test/: ํ ์คํธ ํ์ผ์ฉ (์: `Lock.ts`).
- hardhat.config.ts: ํ๋ก์ ํธ์ ์ค์ ๊ตฌ์ฑ ํ์ผ.
4๋จ๊ณ: ์ปจํธ๋ํธ ์ปดํ์ผ
์ปดํ์ผ ์์ ์ ์คํํฉ๋๋ค. Hardhat์ ์ง์ ๋ Solidity ์ปดํ์ผ๋ฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ปจํธ๋ํธ๋ฅผ ์ปดํ์ผํ์ฌ `artifacts/` ๋๋ ํ ๋ฆฌ์ ABI ๋ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
npx hardhat compile
5๋จ๊ณ: ํ ์คํธ ์คํ
Hardhat์ ์ํ ํ ์คํธ ํ์ผ์ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ์คํํ๋ ค๋ฉด ํ ์คํธ ๋ช ๋ น์ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ธ๋ฉ๋ชจ๋ฆฌ Hardhat Network ์ธ์คํด์ค๊ฐ ์์๋๊ณ , ์ปจํธ๋ํธ๊ฐ ๋ฐฐํฌ๋๋ฉฐ, ํ ์คํธ๊ฐ ์คํ๋ ๋ค์ ๋ชจ๋ ๊ฒ์ด ํด์ฒด๋ฉ๋๋ค.
npx hardhat test
์ฝ์์ ์ฑ๊ณต์ ์ธ ํ ์คํธ ์คํ์ด ํ์๋ ๊ฒ์ ๋๋ค. ์ด ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ๊ฐ ํ๋ ์์ํฌ๋ฅผ ๊ฐ๋ ฅํ๊ฒ ๋ง๋๋ ์ด์ ์ ๋๋ค.
6๋จ๊ณ: ์ปจํธ๋ํธ ๋ฐฐํฌ
`scripts/` ํด๋์ ์ํ `deploy.ts` ์คํฌ๋ฆฝํธ๋ ์ปจํธ๋ํธ๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ก์ปฌ Hardhat Network์์ ์คํํ๋ ค๋ฉด:
npx hardhat run scripts/deploy.ts --network localhost
์ถํํฉ๋๋ค! ๋ฐฉ๊ธ ์ ๋ฌธ ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ์ปดํ์ผ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ์ต๋๋ค.
DApp ํ๋ ์์ํฌ์ ๋ฏธ๋: ์ฃผ๋ชฉํด์ผ ํ ํธ๋ ๋
์น3 ๊ณต๊ฐ์ ๋๋ผ์ด ์๋๋ก ์งํํ๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ฐ ๋๊ตฌ๋ ์์ธ๋ ์๋๋๋ค. ๋ค์์ DApp ํ๋ ์์ํฌ์ ๋ฏธ๋๋ฅผ ํ์ฑํ๋ ๋ช ๊ฐ์ง ์ฃผ์ ํธ๋ ๋์ ๋๋ค.
- ๋ฉํฐ์ฒด์ธ ๋ฐ L2 ํตํฉ: ์๋ง์ ๋ ์ด์ด1 ๋ฐ ๋ ์ด์ด2 ์ค์ผ์ผ๋ง ์๋ฃจ์ ์ผ๋ก ๋ธ๋ก์ฒด์ธ ํ๊ฒฝ์ด ๋์ฑ ๋ถ์ด๋จ์ ๋ฐ๋ผ, ํ๋ ์์ํฌ๋ ์ฌ๋ฌ ์ฒด์ธ์ ๊ฑธ์ณ ์ปจํธ๋ํธ๋ฅผ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ํํ ์ํด๋ฆญ ์ง์์ ์ ๊ณตํด์ผ ํ ๊ฒ์ ๋๋ค.
- ํฅ์๋ ๊ฐ๋ฐ์ ๊ฒฝํ (DX): ๊ฐ๋ฐ์๋ฅผ ์ ์นํ๊ธฐ ์ํ ๊ฒฝ์์ DX ํ์ ์ ์ฃผ๋ํ ๊ฒ์ ๋๋ค. ๋ ๋น ๋ฅธ ์ปดํ์ผ๋ฌ, ๋ ์ค๋งํธํ ์ฝ๋ ์์ฑ, ํธ๋์ญ์ ์ ์๊ฐ์ ์ผ๋ก ๋จ๊ณ๋ณ๋ก ์งํํ ์ ์๋ ํตํฉ ๋๋ฒ๊ฑฐ, ๊ทธ๋ฆฌ๊ณ ๋ ๊ฐ๋ ฅํ ๋ก์ปฌ ํ ์คํธ๋ท์ ๊ธฐ๋ํ์ธ์.
- ํตํฉ๋ ํ์ ๊ฒ์ฆ ๋ฐ ๋ณด์: ๋ณด์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ ๊ฒ์ด๋ฉฐ, ๋ ๋ง์ ํ๋ ์์ํฌ๊ฐ ์ ์ ๋ถ์, ํผ์ฆ ํ ์คํธ ๋ฐ ํ์ ๊ฒ์ฆ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ์ง์ ํตํฉํ์ฌ ๋ฐฐํฌ๋๊ธฐ ์ ์ ๋ฒ๊ทธ๋ฅผ ์ก์๋ผ ๊ฒ์ ๋๋ค.
- ๊ณ์ ์ถ์ํ (ERC-4337): ์ด ์ฃผ์ ์ด๋๋ฆฌ์ ์ ๊ทธ๋ ์ด๋๋ ๋ ์ ์ฐํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ์ง๊ฐ ์ค๊ณ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํ๋ ์์ํฌ๋ ์ค๋งํธ ์ปจํธ๋ํธ ์ง๊ฐ ๋ฐ ์๋ก์ด ํธ๋์ญ์ ํ๋ฆ์ ์๋ฒฝํ๊ฒ ์ง์ํ๊ธฐ ์ํด ํ ์คํธ ๋ฐ ๋ฐฐํฌ ๋๊ตฌ๋ฅผ ์กฐ์ ํด์ผ ํ ๊ฒ์ ๋๋ค.
- AI ์ง์ ๊ฐ๋ฐ: AI ๋๊ตฌ๊ฐ ์ค๋งํธ ์ปจํธ๋ํธ ์์ฑ ๋ฐ ๊ฐ์ฌ, ํ ์คํธ ์์ฑ, ๊ฐ์ค ์ฌ์ฉ๋ ์ต์ ํ๋ฅผ ์ง์ํ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ์ด ๋ชจ๋ ๊ฒ์ด ํ๋ ์์ํฌ ํ๊ฒฝ ๋ด์ ์ง์ ํตํฉ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก : ํ์ค์ํ๋ ์ธ์์ ์ํ ๊ตฌ์ถ
DApp ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ ๋จ์ํ ๋๊ตฌ ์ด์์ ๋๋ค. ๊ฐ๋ฐ์๋ค์ด ์ฐจ์ธ๋ ์ธํฐ๋ท์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํ๋ ํฌ๊ด์ ์ธ ํ๊ฒฝ์ ๋๋ค. Hardhat์ ์ ์ฐํ ํ๋ถํฐ Foundry์ ์์ฒญ๋ ์๋์ ์ด๋ฅด๊ธฐ๊น์ง, ์ฌ๋ฐ๋ฅธ ํ๋ ์์ํฌ๋ ๋ณต์กํ ์์ด๋์ด๋ฅผ ์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ฑ๊ณต์ ์ธ ํ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
๊ทํ์ ์ ํ์ ๊ถ๊ทน์ ์ผ๋ก ํ์ ๊ธฐ์ , ํ๋ก์ ํธ์ ๋์ ๋ธ๋ก์ฒด์ธ, ๊ทธ๋ฆฌ๊ณ ์ฑ๋ฅ, ๋ณด์ ๋ฐ ์ ์ฐ์ฑ์ ๋ํ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ๊ฒ์ ๋๋ค. ์ ์ธ๊ณ ๋ชจ๋ ๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ์ข์ ์กฐ์ธ์ ์คํํด ๋ณด๋ ๊ฒ์ ๋๋ค. ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด๊ณ , ๋์ธ ๊ฐ์ง ๋ค๋ฅธ ํ๋ ์์ํฌ๋ก ์์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ์ฌ ์ด๋ค ํ๋ ์์ํฌ๊ฐ ๊ฐ์ฅ ์์ฐ์ค๋ฝ๊ณ ์์ฐ์ ์ธ์ง ํ์ธํ์ญ์์ค.
์ด๋ฌํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ๋ง์คํฐํจ์ผ๋ก์จ ์ฌ๋ฌ๋ถ์ ๋จ์ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ๋ชจ๋ ์ฌ๋์ ์ํ ๋ ๊ฐ๋ฐฉ์ ์ด๊ณ ํฌ๋ช ํ๋ฉฐ ์ฌ์ฉ์ ์ค์ฌ์ ์ธ ๋์งํธ ๋ฏธ๋๋ฅผ ์ค๊ณํ๋ ๊ฒ์ ๋๋ค.