Ver3.0
์ ์ฒด ์ด๋
Ver3.0 ๐ง ์ ๋์ฑ ํ(Liquidity Pool) ์๋ ์๋ฆฌ

๐ง ์ ๋์ฑ ํ(Liquidity Pool) ์๋ ์๋ฆฌ
ํ์ค์ํ ๊ธ์ต์ ์ฌ์ฅ, ์ ๋์ฑ ํ์ ๋ชจ๋ ๊ฒ์ ํํค์ณ๋ณด์! ๐
์๋
! ์ค๋์ ๋ธ๋ก์ฒด์ธ๊ณผ DeFi(ํ์ค์ํ ๊ธ์ต) ์ธ๊ณ์์ ์ ๋ง ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ ์ ๋์ฑ ํ(Liquidity Pool)์ ๋ํด ์ด์ผ๊ธฐํด๋ณผ๊ฒ. ๐
ํน์ ์ํธํํ ๊ฑฐ๋์์์ ํ ํฐ์ ๊ตํํด๋ณธ ์ ์์ด? ๊ทธ๋ผ ์ด๋ฏธ ์ ๋์ฑ ํ์ ์ฌ์ฉํด๋ณธ ๊ฑฐ์ผ! ๊ทผ๋ฐ ์ด๊ฒ ์ ํํ ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ ํ์ํ์ง ๊ถ๊ธํ์ง ์์์ด? ๐ค
๊ฑฑ์ ๋ง! ์ค๋ ์น๊ตฌํํ ์ค๋ช ํ๋ฏ์ด ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ์๋ ค์ค๊ฒ. ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ๋์ฑ ํฅ๋ฏธ๋ก์ธ ๊ฑฐ์ผ. ์๋ํ๋ฉด ์ด๊ฑด ๋จ์ํ ๊ธ์ต ๊ฐ๋ ์ด ์๋๋ผ, ์ค๋งํธ ์ปจํธ๋ํธ๋ก ๊ตฌํ๋ ์ ๊ตํ ์๊ณ ๋ฆฌ์ฆ์ด๊ฑฐ๋ ! ๐ป
ํน์ ์ํธํํ ๊ฑฐ๋์์์ ํ ํฐ์ ๊ตํํด๋ณธ ์ ์์ด? ๊ทธ๋ผ ์ด๋ฏธ ์ ๋์ฑ ํ์ ์ฌ์ฉํด๋ณธ ๊ฑฐ์ผ! ๊ทผ๋ฐ ์ด๊ฒ ์ ํํ ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ ํ์ํ์ง ๊ถ๊ธํ์ง ์์์ด? ๐ค
๊ฑฑ์ ๋ง! ์ค๋ ์น๊ตฌํํ ์ค๋ช ํ๋ฏ์ด ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ์๋ ค์ค๊ฒ. ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ๋์ฑ ํฅ๋ฏธ๋ก์ธ ๊ฑฐ์ผ. ์๋ํ๋ฉด ์ด๊ฑด ๋จ์ํ ๊ธ์ต ๊ฐ๋ ์ด ์๋๋ผ, ์ค๋งํธ ์ปจํธ๋ํธ๋ก ๊ตฌํ๋ ์ ๊ตํ ์๊ณ ๋ฆฌ์ฆ์ด๊ฑฐ๋ ! ๐ป
๐ฏ ์ ๋์ฑ ํ์ด ๋ญ๊ธธ๋?
์, ๋จผ์ ๊ธฐ๋ณธ ๊ฐ๋
๋ถํฐ ์ก๊ณ ๊ฐ์!
์ ๋์ฑ ํ(Liquidity Pool)์ ์ฝ๊ฒ ๋งํด์ ์ค๋งํธ ์ปจํธ๋ํธ์ ์ ๊ฒจ์๋ ํ ํฐ๋ค์ ์ ์ฅ์์ผ. ๋ง์น ํฐ ์์์ฅ์ ๋ฌผ์ด ๊ฐ๋ ์ฐจ ์๋ ๊ฒ์ฒ๋ผ, ์ด ํ์๋ ๋ค์ํ ์ํธํํ ํ ํฐ๋ค์ด ์(pair)์ผ๋ก ๋ด๊ฒจ ์์ด. ๐โโ๏ธ
์๋ฅผ ๋ค์ด๋ณผ๊ฒ:
โข ETH/DAI ํ: ์ด๋๋ฆฌ์๊ณผ ๋ค์ด(์คํ ์ด๋ธ์ฝ์ธ)๊ฐ ํจ๊ป ๋ด๊ธด ํ
โข USDC/USDT ํ: ๋ ๊ฐ์ ์คํ ์ด๋ธ์ฝ์ธ์ด ๋ด๊ธด ํ
โข BTC/ETH ํ: ๋นํธ์ฝ์ธ๊ณผ ์ด๋๋ฆฌ์์ด ๋ด๊ธด ํ
์ด ํ๋ค์ ํ์ค์ํ ๊ฑฐ๋์(DEX)์์ ์ฌ์ฉ์๋ค์ด ํ ํฐ์ ๊ตํํ ์ ์๊ฒ ํด์ฃผ๋ ํต์ฌ ์ธํ๋ผ์ผ. ์ ํต์ ์ธ ์ค์ํ ๊ฑฐ๋์์ฒ๋ผ ์ฃผ๋ฌธ์(Order Book)๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋์ผ๋ก ๊ฐ๊ฒฉ์ ๊ฒฐ์ ํ๊ณ ๊ฑฐ๋๋ฅผ ์คํํ์ง! ๐ค
์ ๋์ฑ ํ(Liquidity Pool)์ ์ฝ๊ฒ ๋งํด์ ์ค๋งํธ ์ปจํธ๋ํธ์ ์ ๊ฒจ์๋ ํ ํฐ๋ค์ ์ ์ฅ์์ผ. ๋ง์น ํฐ ์์์ฅ์ ๋ฌผ์ด ๊ฐ๋ ์ฐจ ์๋ ๊ฒ์ฒ๋ผ, ์ด ํ์๋ ๋ค์ํ ์ํธํํ ํ ํฐ๋ค์ด ์(pair)์ผ๋ก ๋ด๊ฒจ ์์ด. ๐โโ๏ธ
์๋ฅผ ๋ค์ด๋ณผ๊ฒ:
โข ETH/DAI ํ: ์ด๋๋ฆฌ์๊ณผ ๋ค์ด(์คํ ์ด๋ธ์ฝ์ธ)๊ฐ ํจ๊ป ๋ด๊ธด ํ
โข USDC/USDT ํ: ๋ ๊ฐ์ ์คํ ์ด๋ธ์ฝ์ธ์ด ๋ด๊ธด ํ
โข BTC/ETH ํ: ๋นํธ์ฝ์ธ๊ณผ ์ด๋๋ฆฌ์์ด ๋ด๊ธด ํ
์ด ํ๋ค์ ํ์ค์ํ ๊ฑฐ๋์(DEX)์์ ์ฌ์ฉ์๋ค์ด ํ ํฐ์ ๊ตํํ ์ ์๊ฒ ํด์ฃผ๋ ํต์ฌ ์ธํ๋ผ์ผ. ์ ํต์ ์ธ ์ค์ํ ๊ฑฐ๋์์ฒ๋ผ ์ฃผ๋ฌธ์(Order Book)๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋์ผ๋ก ๊ฐ๊ฒฉ์ ๊ฒฐ์ ํ๊ณ ๊ฑฐ๋๋ฅผ ์คํํ์ง! ๐ค
๐ก ์ ์ ๋์ฑ ํ์ด ํ์ํ ๊น?
์ ํต์ ์ธ ๊ฑฐ๋์์์๋ ๋งค์์์ ๋งค๋์๊ฐ ๋ง๋์ผ ๊ฑฐ๋๊ฐ ์ฑ๋ฆฝ๋ผ. ํ์ง๋ง ํ์ค์ํ ํ๊ฒฝ์์๋ ํญ์ ๊ฑฐ๋ ์๋๋ฐฉ์ ์ฐพ๊ธฐ ์ด๋ ค์ธ ์ ์์ด. ์ ๋์ฑ ํ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด! ์ธ์ ๋ ์ง ํ์์ ํ ํฐ์ ๊ตํํ ์ ์์ผ๋๊น ๋ง์ด์ผ. ๐
๐ง ์ ๋์ฑ ํ์ ์๋ ์๋ฆฌ
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์๋ ์๋ฆฌ๋ฅผ ํํค์ณ๋ณด์! ๊ฐ๋ฐ์๋ผ๋ฉด ์ด ๋ถ๋ถ์ด ์ ๋ง ํฅ๋ฏธ๋ก์ธ ๊ฑฐ์ผ. ๐
1๏ธโฃ AMM (Automated Market Maker) ์๊ณ ๋ฆฌ์ฆ
์ ๋์ฑ ํ์ ํต์ฌ์ AMM(์๋ํ๋ ์์ฅ ์กฐ์ฑ์)์ด์ผ. ์ด๊ฒ ๋ญ๋๋ฉด, ์ํ ๊ณต์์ ์ฌ์ฉํด์ ์๋์ผ๋ก ํ ํฐ ๊ฐ๊ฒฉ์ ๊ฒฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด์ง! ๐
๊ฐ์ฅ ์ ๋ช ํ AMM ๊ณต์์ Constant Product Formula์ผ. Uniswap์ด ์ฒ์ ๋์ ํ๊ณ , ์ง๊ธ๋ ๋ง์ DEX์์ ์ฌ์ฉํ๊ณ ์์ด.
๊ฐ์ฅ ์ ๋ช ํ AMM ๊ณต์์ Constant Product Formula์ผ. Uniswap์ด ์ฒ์ ๋์ ํ๊ณ , ์ง๊ธ๋ ๋ง์ DEX์์ ์ฌ์ฉํ๊ณ ์์ด.
๐Constant Product Formula
์ฌ๊ธฐ์:
โข x = ํ์ ์๋ ํ ํฐ A์ ์๋
โข y = ํ์ ์๋ ํ ํฐ B์ ์๋
โข k = ์์ (ํญ์ ์ผ์ ํ๊ฒ ์ ์ง๋จ)
์ด ๊ณต์์ ํต์ฌ์ k ๊ฐ์ด ํญ์ ์ผ์ ํ๊ฒ ์ ์ง๋๋ค๋ ๊ฑฐ์ผ! ๋๊ตฐ๊ฐ ํ ํฐ์ ๊ตํํ๋ฉด x์ y์ ๋น์จ์ด ๋ฐ๋์ง๋ง, ๊ณฑํ ๊ฐ์ ํญ์ ๊ฐ์์ผ ํด. ๐ฏ
x ร y = k์ฌ๊ธฐ์:
โข x = ํ์ ์๋ ํ ํฐ A์ ์๋
โข y = ํ์ ์๋ ํ ํฐ B์ ์๋
โข k = ์์ (ํญ์ ์ผ์ ํ๊ฒ ์ ์ง๋จ)
์ด ๊ณต์์ ํต์ฌ์ k ๊ฐ์ด ํญ์ ์ผ์ ํ๊ฒ ์ ์ง๋๋ค๋ ๊ฑฐ์ผ! ๋๊ตฐ๊ฐ ํ ํฐ์ ๊ตํํ๋ฉด x์ y์ ๋น์จ์ด ๋ฐ๋์ง๋ง, ๊ณฑํ ๊ฐ์ ํญ์ ๊ฐ์์ผ ํด. ๐ฏ
2๏ธโฃ ์ค์ ๊ฑฐ๋ ์์๋ก ์ดํดํ๊ธฐ
์ด๋ก ๋ง ๋ค์ผ๋ฉด ํท๊ฐ๋ฆฌ๋๊น, ์ค์ ์์๋ก ์ค๋ช
ํด๋ณผ๊ฒ! ๐งฎ
์ด๊ธฐ ์ํ:
โข ETH/DAI ํ์ 10 ETH์ 10,000 DAI๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์
โข k = 10 ร 10,000 = 100,000
โข ํ์ฌ 1 ETH = 1,000 DAI
๊ฑฐ๋ ๋ฐ์:
์ฒ ์๊ฐ 1 ETH๋ฅผ DAI๋ก ๊ตํํ๊ณ ์ถ์ดํด. ์ฒ ์๊ฐ 1 ETH๋ฅผ ํ์ ๋ฃ์ผ๋ฉด:
โข ํ์ ETH: 10 + 1 = 11 ETH
โข k = 100,000์ด ์ ์ง๋์ด์ผ ํ๋ฏ๋ก
โข 100,000 รท 11 = 9,090.9 DAI
โข ์ฒ ์๊ฐ ๋ฐ๋ DAI: 10,000 - 9,090.9 = 909.1 DAI
์ด? 1 ETH๋ฅผ ๋ฃ์๋๋ฐ 909.1 DAI๋ง ๋ฐ์๋ค? ๐ค
์ด๊ฒ ๋ฐ๋ก ์ฌ๋ฆฌํผ์ง(Slippage)์ผ! ๊ฑฐ๋ ๊ท๋ชจ๊ฐ ํด์๋ก ๊ฐ๊ฒฉ์ด ๋ ๋ถ๋ฆฌํ๊ฒ ์์ง์ฌ. ์ด๊ฑด ํ์ ๊ท ํ์ ์ ์งํ๊ธฐ ์ํ ์์ฐ์ค๋ฌ์ด ๋ฉ์ปค๋์ฆ์ด์ผ.
์ด๊ธฐ ์ํ:
โข ETH/DAI ํ์ 10 ETH์ 10,000 DAI๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์
โข k = 10 ร 10,000 = 100,000
โข ํ์ฌ 1 ETH = 1,000 DAI
๊ฑฐ๋ ๋ฐ์:
์ฒ ์๊ฐ 1 ETH๋ฅผ DAI๋ก ๊ตํํ๊ณ ์ถ์ดํด. ์ฒ ์๊ฐ 1 ETH๋ฅผ ํ์ ๋ฃ์ผ๋ฉด:
โข ํ์ ETH: 10 + 1 = 11 ETH
โข k = 100,000์ด ์ ์ง๋์ด์ผ ํ๋ฏ๋ก
โข 100,000 รท 11 = 9,090.9 DAI
โข ์ฒ ์๊ฐ ๋ฐ๋ DAI: 10,000 - 9,090.9 = 909.1 DAI
์ด? 1 ETH๋ฅผ ๋ฃ์๋๋ฐ 909.1 DAI๋ง ๋ฐ์๋ค? ๐ค
์ด๊ฒ ๋ฐ๋ก ์ฌ๋ฆฌํผ์ง(Slippage)์ผ! ๊ฑฐ๋ ๊ท๋ชจ๊ฐ ํด์๋ก ๊ฐ๊ฒฉ์ด ๋ ๋ถ๋ฆฌํ๊ฒ ์์ง์ฌ. ์ด๊ฑด ํ์ ๊ท ํ์ ์ ์งํ๊ธฐ ์ํ ์์ฐ์ค๋ฌ์ด ๋ฉ์ปค๋์ฆ์ด์ผ.
โก ๊ฐ๋ฐ์ ํ: ์ค๋งํธ ์ปจํธ๋ํธ์์ ์ด ๊ณ์ฐ์ ๊ตฌํํ ๋๋ ์ ๋ฐ๋(precision) ๋ฌธ์ ๋ฅผ ์กฐ์ฌํด์ผ ํด! Solidity์์๋ ์์์ ์ฐ์ฐ์ด ์์ผ๋๊น ๋ณดํต ํฐ ์ ์๋ก ๋ณํํด์ ๊ณ์ฐํ๊ณ , ๋์ค์ ๋ค์ ๋๋ ์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํด. ์๋ฅผ ๋ค์ด Wei ๋จ์๋ก ๊ณ์ฐํ๋ ๊ฑฐ์ง!
3๏ธโฃ ์ ๋์ฑ ๊ณต๊ธ์ (Liquidity Provider)
๊ทธ๋ผ ์ด ํ์ ์๋ ํ ํฐ๋ค์ ๋๊ฐ ์ ๊ณตํ๋ ๊ฑธ๊น? ๋ฐ๋ก ์ ๋์ฑ ๊ณต๊ธ์(LP, Liquidity Provider)๋ค์ด์ผ! ๐ฅ
๋๊ตฌ๋ ์ ๋์ฑ ๊ณต๊ธ์๊ฐ ๋ ์ ์์ด. ํ์ ํ ํฐ ์์ ์์นํ๋ฉด ๋๊ฑฐ๋ ! ์๋ฅผ ๋ค์ด ETH/DAI ํ์ ์ ๋์ฑ์ ๊ณต๊ธํ๊ณ ์ถ๋ค๋ฉด:
1. ๋์ผํ ๊ฐ์น์ ETH์ DAI๋ฅผ ์ค๋นํด (์: 1 ETH + 1,000 DAI)
2. ์ค๋งํธ ์ปจํธ๋ํธ์ ๋ ํ ํฐ์ ๋ชจ๋ ์์นํด
3. ๊ทธ๋ฌ๋ฉด LP ํ ํฐ์ ๋ฐ๊ฒ ๋ผ
LP ํ ํฐ์ด ๋ญ๋๊ณ ? ๐ซ
LP ํ ํฐ์ ํ์์ ๋น์ ์ ์ง๋ถ์ ๋ํ๋ด๋ ์ฆํ์ผ. ๋ง์น ์ฃผ์์ฒ๋ผ ๋ง์ด์ผ! ๋์ค์ ์ด LP ํ ํฐ์ ๋ฐํํ๋ฉด ์๋ ์์นํ ํ ํฐ๋ค๊ณผ ๊ทธ๋์ ๋ฐ์ํ ์์๋ฃ ์์ต์ ๋๋ ค๋ฐ์ ์ ์์ด.
๋๊ตฌ๋ ์ ๋์ฑ ๊ณต๊ธ์๊ฐ ๋ ์ ์์ด. ํ์ ํ ํฐ ์์ ์์นํ๋ฉด ๋๊ฑฐ๋ ! ์๋ฅผ ๋ค์ด ETH/DAI ํ์ ์ ๋์ฑ์ ๊ณต๊ธํ๊ณ ์ถ๋ค๋ฉด:
1. ๋์ผํ ๊ฐ์น์ ETH์ DAI๋ฅผ ์ค๋นํด (์: 1 ETH + 1,000 DAI)
2. ์ค๋งํธ ์ปจํธ๋ํธ์ ๋ ํ ํฐ์ ๋ชจ๋ ์์นํด
3. ๊ทธ๋ฌ๋ฉด LP ํ ํฐ์ ๋ฐ๊ฒ ๋ผ
LP ํ ํฐ์ด ๋ญ๋๊ณ ? ๐ซ
LP ํ ํฐ์ ํ์์ ๋น์ ์ ์ง๋ถ์ ๋ํ๋ด๋ ์ฆํ์ผ. ๋ง์น ์ฃผ์์ฒ๋ผ ๋ง์ด์ผ! ๋์ค์ ์ด LP ํ ํฐ์ ๋ฐํํ๋ฉด ์๋ ์์นํ ํ ํฐ๋ค๊ณผ ๊ทธ๋์ ๋ฐ์ํ ์์๋ฃ ์์ต์ ๋๋ ค๋ฐ์ ์ ์์ด.
๐ฐ ์์ต ๊ตฌ์กฐ
์ ๋์ฑ ๊ณต๊ธ์๋ค์ ์ด๋ป๊ฒ ๋์ ๋ฒ๊น? ๊ฐ๋จํด! ํ์์ ๋ฐ์ํ๋ ๋ชจ๋ ๊ฑฐ๋์์ ์์๋ฃ๋ฅผ ๋ฐ์. ๋ณดํต 0.3% ์ ๋์ผ.
์๋ฅผ ๋ค์ด ๋๊ตฐ๊ฐ 1,000 DAI๋ฅผ ๊ฑฐ๋ํ๋ฉด 3 DAI๊ฐ ์์๋ฃ๋ก ํ์ ๋จ๊ณ , ์ด๊ฒ ๋ชจ๋ LP๋ค์๊ฒ ์ง๋ถ ๋น์จ๋๋ก ๋ถ๋ฐฐ๋ผ! ๐
์๋ฅผ ๋ค์ด ๋๊ตฐ๊ฐ 1,000 DAI๋ฅผ ๊ฑฐ๋ํ๋ฉด 3 DAI๊ฐ ์์๋ฃ๋ก ํ์ ๋จ๊ณ , ์ด๊ฒ ๋ชจ๋ LP๋ค์๊ฒ ์ง๋ถ ๋น์จ๋๋ก ๋ถ๋ฐฐ๋ผ! ๐
โ๏ธ ์ค๋งํธ ์ปจํธ๋ํธ ๊ตฌํ ์ดํด๋ณด๊ธฐ
์, ์ด์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ฅ ๊ถ๊ธํดํ ๋ถ๋ถ! ์ค์ ๋ก ์ด๊ฒ ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ๋ณผ๊น? ๐
Uniswap V2๋ฅผ ๊ธฐ์ค์ผ๋ก ํต์ฌ ๋ก์ง์ ๊ฐ๋จํ ์ดํด๋ณด์. (์ค์ ์ฝ๋๋ ํจ์ฌ ๋ณต์กํ์ง๋ง, ํต์ฌ๋ง ์ถ๋ ค๋ณผ๊ฒ!)
Uniswap V2๋ฅผ ๊ธฐ์ค์ผ๋ก ํต์ฌ ๋ก์ง์ ๊ฐ๋จํ ์ดํด๋ณด์. (์ค์ ์ฝ๋๋ ํจ์ฌ ๋ณต์กํ์ง๋ง, ํต์ฌ๋ง ์ถ๋ ค๋ณผ๊ฒ!)
๐น ์ ๋์ฑ ์ถ๊ฐ (Add Liquidity)
function addLiquidity(
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin
) external returns (uint amountA, uint amountB, uint liquidity) {
// ์ต์ ์ ํ ํฐ ๋น์จ ๊ณ์ฐ
(amountA, amountB) = _calculateOptimalAmounts(
amountADesired,
amountBDesired,
amountAMin,
amountBMin
);
// ํ ํฐ ์ ์ก
tokenA.transferFrom(msg.sender, pair, amountA);
tokenB.transferFrom(msg.sender, pair, amountB);
// LP ํ ํฐ ๋ฐํ
liquidity = pair.mint(msg.sender);
}
์ด ํจ์๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ์๋์ ํ ํฐ์ ํ์ ์์นํ๊ณ , ๊ทธ์ ์์ํ๋ LP ํ ํฐ์ ๋ฐํํด์ค. amountAMin๊ณผ amountBMin์ ์ฌ๋ฆฌํผ์ง ๋ณดํธ๋ฅผ ์ํ ์ต์๊ฐ์ด์ผ! ๐ก๏ธ
๐น ํ ํฐ ์ค์ (Swap)
function swap(
uint amount0Out,
uint amount1Out,
address to
) external {
// ์
๋ ฅ ๊ฒ์ฆ
require(amount0Out > 0 || amount1Out > 0, 'INSUFFICIENT_OUTPUT');
// ํ์ฌ ์์ก ์กฐํ
(uint112 reserve0, uint112 reserve1,) = getReserves();
// ํ ํฐ ์ ์ก
if (amount0Out > 0) _safeTransfer(token0, to, amount0Out);
if (amount1Out > 0) _safeTransfer(token1, to, amount1Out);
// ์๋ก์ด ์์ก ์กฐํ
uint balance0 = IERC20(token0).balanceOf(address(this));
uint balance1 = IERC20(token1).balanceOf(address(this));
// k = x * y ๊ฒ์ฆ
require(
balance0 * balance1 >= uint(reserve0) * uint(reserve1),
'K_INVARIANT_VIOLATED'
);
// ์ํ ์
๋ฐ์ดํธ
_update(balance0, balance1, reserve0, reserve1);
}
์ค์ ํจ์์ ํต์ฌ์ ๋ง์ง๋ง ๋ถ๋ถ์ด์ผ! k ๊ฐ์ด ์ ์ง๋๋์ง ๊ฒ์ฆํ๋ ๊ฑฐ์ง. ๋ง์ฝ k๊ฐ ๊ฐ์ํ๋ค๋ฉด ๊ฑฐ๋๋ฅผ ๊ฑฐ๋ถํด. ์ด๊ฒ ๋ฐ๋ก Constant Product Formula๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ด์ผ! ๐
๐ ๋ณด์ ํฌ์ธํธ: ์ค์ Uniswap ์ฝ๋์์๋ ์ฌ์ง์
๊ณต๊ฒฉ(Reentrancy Attack)์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ณด์ ์ฅ์น๊ฐ ์์ด. ReentrancyGuard ํจํด์ด๋ ์ํ ์
๋ฐ์ดํธ ์์๋ฅผ ์ ์คํ๊ฒ ์ค๊ณํ๋ ๊ฑฐ์ง. ์ค๋งํธ ์ปจํธ๋ํธ ๊ฐ๋ฐํ ๋ ํญ์ ๋ณด์์ ์ต์ฐ์ ์ผ๋ก ์๊ฐํด์ผ ํด! ๐ก๏ธ
๐ ๋ค์ํ AMM ๋ชจ๋ธ๋ค
Constant Product Formula๋ง ์๋ ๊ฒ ์๋์ผ! ์ฌ๋ฌ ํ๋ก์ ํธ๋ค์ด ๊ฐ์์ ํน์ฑ์ ๋ง๋ AMM ๋ชจ๋ธ์ ๊ฐ๋ฐํ์ด. ๋ช ๊ฐ์ง ์ดํด๋ณผ๊น? ๐
1๏ธโฃ Constant Sum Formula (x + y = k)
x + y = k์ด ๋ชจ๋ธ์ ๊ฐ๊ฒฉ์ด ํญ์ 1:1๋ก ์ ์ง๋ผ. ์คํ ์ด๋ธ์ฝ์ธ๋ผ๋ฆฌ ๊ตํํ ๋ ์ ์ฉํด! ์๋ฅผ ๋ค์ด USDC์ USDT๋ ๋ ๋ค 1๋ฌ๋ฌ ๊ฐ์น๋ฅผ ๊ฐ์ง๋๊น, ์ด ๊ณต์์ด ์ ํฉํ์ง. ๐ต
์ฅ์ : ์ฌ๋ฆฌํผ์ง๊ฐ ๊ฑฐ์ ์์ด
๋จ์ : ๊ฐ๊ฒฉ ๋ณ๋์ด ํฐ ํ ํฐ์๋ ๋ถ์ ํฉํด
2๏ธโฃ Constant Mean Formula (Balancer)
Balancer๋ ๋ ๋ณต์กํ ๊ณต์์ ์ฌ์ฉํด:
์ฌ๊ธฐ์ w1, w2, w3๋ ๊ฐ ํ ํฐ์ ๊ฐ์ค์น์ผ. ์๋ฅผ ๋ค์ด 80% ETH, 20% DAI ๊ฐ์ ๋น๋์นญ ํ์ ๋ง๋ค ์ ์์ด! ๐จ
์ด๊ฑด ๋ง์น ์ธ๋ฑ์ค ํ๋์ฒ๋ผ ์๋ํด. ์ฌ๋ฌ ํ ํฐ์ ์ํ๋ ๋น์จ๋ก ๋ด์ ์ ์์ผ๋๊น ๋ง์ด์ผ.
(x^w1) ร (y^w2) ร (z^w3) ... = k์ฌ๊ธฐ์ w1, w2, w3๋ ๊ฐ ํ ํฐ์ ๊ฐ์ค์น์ผ. ์๋ฅผ ๋ค์ด 80% ETH, 20% DAI ๊ฐ์ ๋น๋์นญ ํ์ ๋ง๋ค ์ ์์ด! ๐จ
์ด๊ฑด ๋ง์น ์ธ๋ฑ์ค ํ๋์ฒ๋ผ ์๋ํด. ์ฌ๋ฌ ํ ํฐ์ ์ํ๋ ๋น์จ๋ก ๋ด์ ์ ์์ผ๋๊น ๋ง์ด์ผ.
3๏ธโฃ Curve's StableSwap
Curve๋ ์คํ
์ด๋ธ์ฝ์ธ ๊ตํ์ ํนํ๋ AMM์ด์ผ. Constant Product์ Constant Sum์ ์ฅ์ ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋ธ์ ์ฌ์ฉํด! ๐
๊ฐ๊ฒฉ์ด ๋น์ทํ ๋๋ Constant Sum์ฒ๋ผ ์๋ํด์ ์ฌ๋ฆฌํผ์ง๋ฅผ ์ต์ํํ๊ณ , ๊ฐ๊ฒฉ ์ฐจ์ด๊ฐ ์ปค์ง๋ฉด Constant Product์ฒ๋ผ ์๋ํด์ ์ ๋์ฑ์ ๋ณดํธํด. ์ ๋ง ๋๋ํ์ง? ๐ง
๊ฐ๊ฒฉ์ด ๋น์ทํ ๋๋ Constant Sum์ฒ๋ผ ์๋ํด์ ์ฌ๋ฆฌํผ์ง๋ฅผ ์ต์ํํ๊ณ , ๊ฐ๊ฒฉ ์ฐจ์ด๊ฐ ์ปค์ง๋ฉด Constant Product์ฒ๋ผ ์๋ํด์ ์ ๋์ฑ์ ๋ณดํธํด. ์ ๋ง ๋๋ํ์ง? ๐ง
| AMM ๋ชจ๋ธ | ๊ณต์ | ์ต์ ์ฌ์ฉ์ฒ | ๋ํ ํ๋ก์ ํธ |
|---|---|---|---|
| Constant Product | x ร y = k | ์ผ๋ฐ ํ ํฐ ์ | Uniswap, SushiSwap |
| Constant Sum | x + y = k | ์คํ ์ด๋ธ์ฝ์ธ | mStable |
| Constant Mean | (x^w1)(y^w2) = k | ๋ค์ค ํ ํฐ ํ | Balancer |
| StableSwap | ํ์ด๋ธ๋ฆฌ๋ | ์ ์ฌ ๊ฐ๊ฒฉ ์์ฐ | Curve |
โ ๏ธ ์ ๋์ฑ ๊ณต๊ธ์ ๋ฆฌ์คํฌ
์ ๋์ฑ ๊ณต๊ธ์ด ์์ต์ ๊ฐ์ ธ๋ค์ฃผ๋ ๊ฑด ์ฌ์ค์ด์ง๋ง, ๋ฆฌ์คํฌ๋ ์์ด. ํนํ ๋น์๊ตฌ์ ์์ค(Impermanent Loss)์ด๋ผ๋ ๊ฐ๋
์ ๊ผญ ์์์ผ ํด! ๐ฐ
๐ ๋น์๊ตฌ์ ์์ค (Impermanent Loss)
์ด๊ฒ ๋ญ๋๋ฉด, ํ์ ํ ํฐ์ ์์นํ ํ ํ ํฐ ๊ฐ๊ฒฉ์ด ๋ณ๋ํ๋ฉด ๊ทธ๋ฅ ํ ํฐ์ ๋ณด์ ํ๊ณ ์๋ ๊ฒ๋ณด๋ค ์ํด๋ฅผ ๋ณผ ์ ์๋ค๋ ๊ฑฐ์ผ.
์์๋ก ์ดํดํด๋ณด์: ๐
์ด๊ธฐ ์ํ:
โข 1 ETH = 1,000 DAI
โข ๋น์ ์ด 1 ETH + 1,000 DAI๋ฅผ ํ์ ์์น
โข ์ด ๊ฐ์น: 2,000 DAI
ETH ๊ฐ๊ฒฉ์ด 2๋ฐฐ ์์น:
โข 1 ETH = 2,000 DAI
โข ์ฐจ์ต๊ฑฐ๋์๋ค์ด ํ์์ ETH๋ฅผ ์ฌ๊ฐ๊ณ DAI๋ฅผ ๋ฃ์
โข ํ์ ๊ท ํ์ด ์กฐ์ ๋จ: 0.707 ETH + 1,414 DAI
โข ๋น์ ์ ์ง๋ถ ๊ฐ์น: (0.707 ร 2,000) + 1,414 = 2,828 DAI
๊ทธ๋ฅ ๋ณด์ ํ๋ค๋ฉด:
โข 1 ETH + 1,000 DAI = 3,000 DAI
์ฐจ์ด๊ฐ ๋ณด์ด์ง? 172 DAI์ ์์ค์ด ๋ฐ์ํ์ด! ๐ฑ
์ด๊ฒ ๋ฐ๋ก ๋น์๊ตฌ์ ์์ค์ด์ผ. "๋น์๊ตฌ์ "์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ด์ ๋ ๊ฐ๊ฒฉ์ด ์๋๋๋ก ๋์์ค๋ฉด ์์ค๋ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด์ผ. ํ์ง๋ง ๊ฐ๊ฒฉ์ด ๊ณ์ ๋ณ๋ํ๋ฉด ์ค์ ์์ค์ด ๋ ์ ์์ด.
์์๋ก ์ดํดํด๋ณด์: ๐
์ด๊ธฐ ์ํ:
โข 1 ETH = 1,000 DAI
โข ๋น์ ์ด 1 ETH + 1,000 DAI๋ฅผ ํ์ ์์น
โข ์ด ๊ฐ์น: 2,000 DAI
ETH ๊ฐ๊ฒฉ์ด 2๋ฐฐ ์์น:
โข 1 ETH = 2,000 DAI
โข ์ฐจ์ต๊ฑฐ๋์๋ค์ด ํ์์ ETH๋ฅผ ์ฌ๊ฐ๊ณ DAI๋ฅผ ๋ฃ์
โข ํ์ ๊ท ํ์ด ์กฐ์ ๋จ: 0.707 ETH + 1,414 DAI
โข ๋น์ ์ ์ง๋ถ ๊ฐ์น: (0.707 ร 2,000) + 1,414 = 2,828 DAI
๊ทธ๋ฅ ๋ณด์ ํ๋ค๋ฉด:
โข 1 ETH + 1,000 DAI = 3,000 DAI
์ฐจ์ด๊ฐ ๋ณด์ด์ง? 172 DAI์ ์์ค์ด ๋ฐ์ํ์ด! ๐ฑ
์ด๊ฒ ๋ฐ๋ก ๋น์๊ตฌ์ ์์ค์ด์ผ. "๋น์๊ตฌ์ "์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ด์ ๋ ๊ฐ๊ฒฉ์ด ์๋๋๋ก ๋์์ค๋ฉด ์์ค๋ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด์ผ. ํ์ง๋ง ๊ฐ๊ฒฉ์ด ๊ณ์ ๋ณ๋ํ๋ฉด ์ค์ ์์ค์ด ๋ ์ ์์ด.
๐ฏ ๋น์๊ตฌ์ ์์ค ์ต์ํ ์ ๋ต
1. ์คํ
์ด๋ธ์ฝ์ธ ์ ์ ํ: USDC/USDT ๊ฐ์ ๊ฐ๊ฒฉ ๋ณ๋์ด ์ ์ ์
2. ๋์ ๊ฑฐ๋๋ ํ: ์์๋ฃ ์์ต์ด ์์ค์ ์์ํ ์ ์์ด
3. ๋จ๊ธฐ ๊ณต๊ธ: ๊ฐ๊ฒฉ ๋ณ๋์ด ํฌ๊ธฐ ์ ์ ํ์
4. ์๊ด๊ด๊ณ ๋์ ํ ํฐ: ETH/WBTC์ฒ๋ผ ๋น์ทํ๊ฒ ์์ง์ด๋ ํ ํฐ๋ค
2. ๋์ ๊ฑฐ๋๋ ํ: ์์๋ฃ ์์ต์ด ์์ค์ ์์ํ ์ ์์ด
3. ๋จ๊ธฐ ๊ณต๊ธ: ๊ฐ๊ฒฉ ๋ณ๋์ด ํฌ๊ธฐ ์ ์ ํ์
4. ์๊ด๊ด๊ณ ๋์ ํ ํฐ: ETH/WBTC์ฒ๋ผ ๋น์ทํ๊ฒ ์์ง์ด๋ ํ ํฐ๋ค
๐ ๊ธฐํ ๋ฆฌ์คํฌ๋ค
1. ์ค๋งํธ ์ปจํธ๋ํธ ๋ฆฌ์คํฌ ๐
์ฝ๋์ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฉด ์๊ธ์ ์์ ์ ์์ด. ํญ์ ๊ฐ์ฌ(Audit)๋ฅผ ๋ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์!
2. ๋ฌ๊ทธํ (Rug Pull) ๐โโ๏ธ
์ ์์ ์ธ ํ๋ก์ ํธ๊ฐ ์ ๋์ฑ์ ๋ชจ๋ ๋นผ๊ฐ๋ฒ๋ฆด ์ ์์ด. ๊ฒ์ฆ๋์ง ์์ ์ ํ๋ก์ ํธ๋ ์กฐ์ฌํด์ผ ํด!
3. ์ฌ๋ฆฌํผ์ง ๐
ํฐ ๊ฑฐ๋๋ฅผ ํ ๋ ์์๋ณด๋ค ๋ถ๋ฆฌํ ๊ฐ๊ฒฉ์ ์ฒด๊ฒฐ๋ ์ ์์ด. ํนํ ์ ๋์ฑ์ด ์ ์ ํ์์ ์ฃผ์!
4. ๊ฐ์ค๋น โฝ
์ด๋๋ฆฌ์ ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ฉด ๊ฑฐ๋ ์์๋ฃ๊ฐ ์์ฒญ๋๊ฒ ๋น์ธ์ง ์ ์์ด. ์์ต๋ณด๋ค ๊ฐ์ค๋น๊ฐ ๋ ๋์ฌ ์๋ ์์ง!
์ฝ๋์ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฉด ์๊ธ์ ์์ ์ ์์ด. ํญ์ ๊ฐ์ฌ(Audit)๋ฅผ ๋ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์!
2. ๋ฌ๊ทธํ (Rug Pull) ๐โโ๏ธ
์ ์์ ์ธ ํ๋ก์ ํธ๊ฐ ์ ๋์ฑ์ ๋ชจ๋ ๋นผ๊ฐ๋ฒ๋ฆด ์ ์์ด. ๊ฒ์ฆ๋์ง ์์ ์ ํ๋ก์ ํธ๋ ์กฐ์ฌํด์ผ ํด!
3. ์ฌ๋ฆฌํผ์ง ๐
ํฐ ๊ฑฐ๋๋ฅผ ํ ๋ ์์๋ณด๋ค ๋ถ๋ฆฌํ ๊ฐ๊ฒฉ์ ์ฒด๊ฒฐ๋ ์ ์์ด. ํนํ ์ ๋์ฑ์ด ์ ์ ํ์์ ์ฃผ์!
4. ๊ฐ์ค๋น โฝ
์ด๋๋ฆฌ์ ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ฉด ๊ฑฐ๋ ์์๋ฃ๊ฐ ์์ฒญ๋๊ฒ ๋น์ธ์ง ์ ์์ด. ์์ต๋ณด๋ค ๊ฐ์ค๋น๊ฐ ๋ ๋์ฌ ์๋ ์์ง!
๐ ์ค์ ํ์ฉ: ์ ๋์ฑ ํ ์ฐธ์ฌํ๊ธฐ
์ด๋ก ์ ์ถฉ๋ถํ ๋ฐฐ์ ์ผ๋, ์ด์ ์ค์ ๋ก ์ด๋ป๊ฒ ์ฐธ์ฌํ๋์ง ์์๋ณด์! ๐ฎ
๐ฑ Step 1: ์ง๊ฐ ์ค๋น
1๋ฉํ๋ง์คํฌ ์ค์น
๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ด๋๋ฆฌ์ ์ง๊ฐ์ด์ผ. Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ค์นํ ์ ์์ด. ๋ชจ๋ฐ์ผ ์ฑ๋ ์๊ณ !
โข ์๋ ๊ตฌ๋ฌธ(Seed Phrase)์ ์์ ํ๊ฒ ๋ณด๊ดํด
โข ์ ๋ ๋๊ตฌ์๊ฒ๋ ์๋ ค์ฃผ๋ฉด ์ ๋ผ! ๐
โข ํ๋์จ์ด ์ง๊ฐ(Ledger, Trezor)๊ณผ ์ฐ๋ํ๋ฉด ๋ ์์ ํด
๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ด๋๋ฆฌ์ ์ง๊ฐ์ด์ผ. Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ค์นํ ์ ์์ด. ๋ชจ๋ฐ์ผ ์ฑ๋ ์๊ณ !
โข ์๋ ๊ตฌ๋ฌธ(Seed Phrase)์ ์์ ํ๊ฒ ๋ณด๊ดํด
โข ์ ๋ ๋๊ตฌ์๊ฒ๋ ์๋ ค์ฃผ๋ฉด ์ ๋ผ! ๐
โข ํ๋์จ์ด ์ง๊ฐ(Ledger, Trezor)๊ณผ ์ฐ๋ํ๋ฉด ๋ ์์ ํด
๐ฐ Step 2: ํ ํฐ ์ค๋น
2ํ์ํ ํ ํฐ ๊ตฌ๋งค
์ ๋์ฑ์ ๊ณต๊ธํ๋ ค๋ฉด ๋ ๊ฐ์ง ํ ํฐ์ด ํ์ํด. ์๋ฅผ ๋ค์ด ETH/USDC ํ์ ์ฐธ์ฌํ๋ ค๋ฉด:
โข ๊ฑฐ๋์์์ ETH์ USDC๋ฅผ ๊ตฌ๋งค
โข ๋์ผํ ๊ฐ์น๋งํผ ์ค๋นํด์ผ ํด (์: 1 ETH + 2,000 USDC)
โข ๊ฐ์ค๋น์ฉ ETH๋ ์ถ๊ฐ๋ก ์ค๋น! โฝ
์ ๋์ฑ์ ๊ณต๊ธํ๋ ค๋ฉด ๋ ๊ฐ์ง ํ ํฐ์ด ํ์ํด. ์๋ฅผ ๋ค์ด ETH/USDC ํ์ ์ฐธ์ฌํ๋ ค๋ฉด:
โข ๊ฑฐ๋์์์ ETH์ USDC๋ฅผ ๊ตฌ๋งค
โข ๋์ผํ ๊ฐ์น๋งํผ ์ค๋นํด์ผ ํด (์: 1 ETH + 2,000 USDC)
โข ๊ฐ์ค๋น์ฉ ETH๋ ์ถ๊ฐ๋ก ์ค๋น! โฝ
๐ Step 3: DEX ์ ์
3ํ๋ซํผ ์ ํ
๋ํ์ ์ธ DEX๋ค:
โข Uniswap: ๊ฐ์ฅ ์ ๋ช ํ๊ณ ์ ๋์ฑ์ด ๋ง์
โข SushiSwap: Uniswap ํฌํฌ, ์ถ๊ฐ ๋ณด์ ์์
โข Curve: ์คํ ์ด๋ธ์ฝ์ธ์ ํนํ
โข Balancer: ๋ค์ค ํ ํฐ ํ ์ง์
โข PancakeSwap: BSC ๋คํธ์ํฌ (๊ฐ์ค๋น ์ ๋ ด!)
์น์ฌ์ดํธ์ ์ ์ํด์ ์ง๊ฐ์ ์ฐ๊ฒฐํด์ค!
๋ํ์ ์ธ DEX๋ค:
โข Uniswap: ๊ฐ์ฅ ์ ๋ช ํ๊ณ ์ ๋์ฑ์ด ๋ง์
โข SushiSwap: Uniswap ํฌํฌ, ์ถ๊ฐ ๋ณด์ ์์
โข Curve: ์คํ ์ด๋ธ์ฝ์ธ์ ํนํ
โข Balancer: ๋ค์ค ํ ํฐ ํ ์ง์
โข PancakeSwap: BSC ๋คํธ์ํฌ (๊ฐ์ค๋น ์ ๋ ด!)
์น์ฌ์ดํธ์ ์ ์ํด์ ์ง๊ฐ์ ์ฐ๊ฒฐํด์ค!
โ Step 4: ์ ๋์ฑ ์ถ๊ฐ
4ํ ์ ํ ๋ฐ ์์น
1. "Pool" ๋๋ "Liquidity" ๋ฉ๋ด ํด๋ฆญ
2. "Add Liquidity" ์ ํ
3. ํ ํฐ ์ ์ ํ (์: ETH/USDC)
4. ์์นํ ์๋ ์ ๋ ฅ
5. ์ฌ๋ฆฌํผ์ง ํ์ฉ ๋ฒ์ ์ค์ (๋ณดํต 0.5-1%)
6. "Supply" ๋ฒํผ ํด๋ฆญ
7. ๋ฉํ๋ง์คํฌ์์ ํธ๋์ญ์ ์น์ธ
8. LP ํ ํฐ ์๋ น! ๐
1. "Pool" ๋๋ "Liquidity" ๋ฉ๋ด ํด๋ฆญ
2. "Add Liquidity" ์ ํ
3. ํ ํฐ ์ ์ ํ (์: ETH/USDC)
4. ์์นํ ์๋ ์ ๋ ฅ
5. ์ฌ๋ฆฌํผ์ง ํ์ฉ ๋ฒ์ ์ค์ (๋ณดํต 0.5-1%)
6. "Supply" ๋ฒํผ ํด๋ฆญ
7. ๋ฉํ๋ง์คํฌ์์ ํธ๋์ญ์ ์น์ธ
8. LP ํ ํฐ ์๋ น! ๐
๐ก ํ๋ก ํ: ์ฒ์์๋ ์์ก์ผ๋ก ํ
์คํธํด๋ด! ์ ์ฒด ๊ณผ์ ์ ์ดํดํ๊ณ ๋์ ํฐ ๊ธ์ก์ ํฌ์ํ๋ ๊ฒ ์์ ํด. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ค๋น๊ฐ ์ ๋ ดํ ์๊ฐ๋(์ฃผ๋ง, ์๋ฒฝ)๋ฅผ ๋
ธ๋ ค๋ณด๋ ๊ฒ๋ ์ข์ ์ ๋ต์ด์ผ! โฐ
๐ Step 5: ์์ต ๋ชจ๋ํฐ๋ง
์ ๋์ฑ์ ๊ณต๊ธํ ํ์๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํด์ผ ํด:
โข APY (์ฐ๊ฐ ์์ต๋ฅ ): ํ์ฌ ์์ต๋ฅ ํ์ธ
โข ๋น์๊ตฌ์ ์์ค: ๊ณ์ฐ๊ธฐ ์ฌ์ดํธ ํ์ฉ (impermanent.loss ๊ฐ์ ๊ณณ)
โข ์์๋ฃ ์์ต: ๋์ ๋ ์์๋ฃ ํ์ธ
โข ํ ํฐ ๊ฐ๊ฒฉ: ํฐ ๋ณ๋์ด ์๋์ง ์ฒดํฌ
๋ง์ ํ๋ซํผ๋ค์ด ๋์๋ณด๋๋ฅผ ์ ๊ณตํด์ ํ๋์ ๋ณผ ์ ์์ด! ๐
โข APY (์ฐ๊ฐ ์์ต๋ฅ ): ํ์ฌ ์์ต๋ฅ ํ์ธ
โข ๋น์๊ตฌ์ ์์ค: ๊ณ์ฐ๊ธฐ ์ฌ์ดํธ ํ์ฉ (impermanent.loss ๊ฐ์ ๊ณณ)
โข ์์๋ฃ ์์ต: ๋์ ๋ ์์๋ฃ ํ์ธ
โข ํ ํฐ ๊ฐ๊ฒฉ: ํฐ ๋ณ๋์ด ์๋์ง ์ฒดํฌ
๋ง์ ํ๋ซํผ๋ค์ด ๋์๋ณด๋๋ฅผ ์ ๊ณตํด์ ํ๋์ ๋ณผ ์ ์์ด! ๐
๐ ๊ณ ๊ธ ๊ฐ๋ : Concentrated Liquidity
Uniswap V3์์ ๋์
๋ ํ์ ์ ์ธ ๊ฐ๋
์ธ ์ง์ค ์ ๋์ฑ(Concentrated Liquidity)์ ๋ํด ์์๋ณด์! ์ด๊ฑด ์ ๋ง ๊ฒ์ ์ฒด์ธ์ ์ผ. ๐ฏ
๐จ ๊ธฐ์กด ๋ฐฉ์์ ๋ฌธ์ ์
Uniswap V2 ๊ฐ์ ๊ธฐ์กด AMM์์๋ ์ ๋์ฑ์ด 0๋ถํฐ ๋ฌดํ๋๊น์ง ๋ชจ๋ ๊ฐ๊ฒฉ ๋ฒ์์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋ผ ์์ด.
์๋ฅผ ๋ค์ด ETH/USDC ํ์์:
โข ETH ๊ฐ๊ฒฉ์ด 1๋ฌ๋ฌ์ผ ๋๋ ์ ๋์ฑ์ด ์๊ณ
โข 100๋ง ๋ฌ๋ฌ์ผ ๋๋ ์ ๋์ฑ์ด ์์ด
๊ทผ๋ฐ ์ค์ ๋ก๋ ETH๊ฐ 1,800~2,200 ๋ฌ๋ฌ ์ฌ์ด์์๋ง ๊ฑฐ๋๋์์? ๋๋จธ์ง ๋ฒ์์ ์ ๋์ฑ์ ์ฌ์ค์ ๋ญ๋น๋๋ ๊ฑฐ์ง! ๐
์๋ฅผ ๋ค์ด ETH/USDC ํ์์:
โข ETH ๊ฐ๊ฒฉ์ด 1๋ฌ๋ฌ์ผ ๋๋ ์ ๋์ฑ์ด ์๊ณ
โข 100๋ง ๋ฌ๋ฌ์ผ ๋๋ ์ ๋์ฑ์ด ์์ด
๊ทผ๋ฐ ์ค์ ๋ก๋ ETH๊ฐ 1,800~2,200 ๋ฌ๋ฌ ์ฌ์ด์์๋ง ๊ฑฐ๋๋์์? ๋๋จธ์ง ๋ฒ์์ ์ ๋์ฑ์ ์ฌ์ค์ ๋ญ๋น๋๋ ๊ฑฐ์ง! ๐
๐ฏ Concentrated Liquidity์ ํด๊ฒฐ์ฑ
Uniswap V3์์๋ LP๋ค์ด ํน์ ๊ฐ๊ฒฉ ๋ฒ์๋ฅผ ์ ํํด์ ์ ๋์ฑ์ ์ง์ค์ํฌ ์ ์์ด!
์์:
โข ํ์ฌ ETH = 2,000 USDC
โข LP๊ฐ 1,900~2,100 USDC ๋ฒ์๋ฅผ ์ ํ
โข ์ด ๋ฒ์ ์์์๋ง ์ ๋์ฑ ์ ๊ณต
โข ๊ฐ์ ์๋ณธ์ผ๋ก ํจ์ฌ ๋ ๋์ ์์๋ฃ ์์ต! ๐ฐ
์ด๋ก ์ ์ผ๋ก๋ ์ต๋ 4,000๋ฐฐ์ ์๋ณธ ํจ์จ์ฑ์ ๋ฌ์ฑํ ์ ์์ด! ๋ฌผ๋ก ์ค์ ๋ก๋ ๊ทธ ์ ๋๋ ์๋์ง๋ง, ๊ทธ๋๋ ์์ฒญ๋ ๊ฐ์ ์ด์ผ.
์์:
โข ํ์ฌ ETH = 2,000 USDC
โข LP๊ฐ 1,900~2,100 USDC ๋ฒ์๋ฅผ ์ ํ
โข ์ด ๋ฒ์ ์์์๋ง ์ ๋์ฑ ์ ๊ณต
โข ๊ฐ์ ์๋ณธ์ผ๋ก ํจ์ฌ ๋ ๋์ ์์๋ฃ ์์ต! ๐ฐ
์ด๋ก ์ ์ผ๋ก๋ ์ต๋ 4,000๋ฐฐ์ ์๋ณธ ํจ์จ์ฑ์ ๋ฌ์ฑํ ์ ์์ด! ๋ฌผ๋ก ์ค์ ๋ก๋ ๊ทธ ์ ๋๋ ์๋์ง๋ง, ๊ทธ๋๋ ์์ฒญ๋ ๊ฐ์ ์ด์ผ.
โ๏ธ ํธ๋ ์ด๋์คํ
์ง์ค ์ ๋์ฑ์ ์ฅ์ ๋ง ์๋ ๊ฒ ์๋์ผ:
์ฅ์ :
โข ์๋ณธ ํจ์จ์ฑ ๊ทน๋ํ
โข ๋ ๋์ ์์๋ฃ ์์ต
โข ๋ง์ถคํ ์ ๋ต ๊ฐ๋ฅ
๋จ์ :
โข ๊ฐ๊ฒฉ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์์ต ์ค๋จ
โข ๋ ๋ณต์กํ ๊ด๋ฆฌ ํ์
โข ๋น์๊ตฌ์ ์์ค ์ํ ์ฆ๊ฐ
โข ๋ฅ๋์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ ํ์
์ฅ์ :
โข ์๋ณธ ํจ์จ์ฑ ๊ทน๋ํ
โข ๋ ๋์ ์์๋ฃ ์์ต
โข ๋ง์ถคํ ์ ๋ต ๊ฐ๋ฅ
๋จ์ :
โข ๊ฐ๊ฒฉ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์์ต ์ค๋จ
โข ๋ ๋ณต์กํ ๊ด๋ฆฌ ํ์
โข ๋น์๊ตฌ์ ์์ค ์ํ ์ฆ๊ฐ
โข ๋ฅ๋์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ ํ์
๐ป ๊ธฐ์ ์ ๊ตฌํ
Concentrated Liquidity๋ tick์ด๋ผ๋ ๊ฐ๋
์ ์ฌ์ฉํด. ๊ฐ tick์ ํน์ ๊ฐ๊ฒฉ ํฌ์ธํธ๋ฅผ ๋ํ๋ด๊ณ , LP๋ ๋ ๊ฐ์ tick ์ฌ์ด์ ์ ๋์ฑ์ ๋ฐฐ์นํด.
struct Position {
uint128 liquidity; // ์ ๋์ฑ ์
int24 tickLower; // ํํ ๊ฐ๊ฒฉ tick
int24 tickUpper; // ์ํ ๊ฐ๊ฒฉ tick
uint256 feeGrowthInside0LastX128; // ์์๋ฃ ์ถ์
uint256 feeGrowthInside1LastX128;
}
๊ฐ๊ฒฉ์ด tick์ ๋์ด๊ฐ ๋๋ง๋ค ์ค๋งํธ ์ปจํธ๋ํธ๋ ํ์ฑ ์ ๋์ฑ์ ์
๋ฐ์ดํธํด. ์ด๊ฒ ๊ฐ์ค ํจ์จ์ ์ผ๋ก ๊ตฌํ๋์ด ์์ด์ ๋๋ผ์! ๐คฏ
๐ Layer 2์ ์ ๋์ฑ ํ
์ด๋๋ฆฌ์ ๋ฉ์ธ๋ท์ ๊ฐ์ค๋น๊ฐ ๋๋ฌด ๋น์ธ๋ค๊ณ ? ๊ฑฑ์ ๋ง! Layer 2 ์๋ฃจ์
๋ค์ด ์์ด. ๐
โก ์ฃผ์ Layer 2 ํ๋ซํผ๋ค
1. Arbitrum ๐ต
โข Optimistic Rollup ๊ธฐ์
โข Uniswap, SushiSwap ๋ฑ ์ฃผ์ DEX ์ง์
โข ๊ฐ์ค๋น 90% ์ด์ ์ ๊ฐ
โข ์ด๋๋ฆฌ์๊ณผ ๋์ ํธํ์ฑ
2. Optimism ๐ด
โข ์ญ์ Optimistic Rollup
โข Synthetix, Velodrome ๋ฑ
โข ๋น ๋ฅธ ํธ๋์ญ์ ์๋
โข OP ํ ํฐ ๋ณด์
3. Polygon ๐
โข ์ฌ์ด๋์ฒด์ธ + Rollup ํ์ด๋ธ๋ฆฌ๋
โข QuickSwap, SushiSwap
โข ๋งค์ฐ ์ ๋ ดํ ๊ฐ์ค๋น (์ผํธ ๋จ์!)
โข ํ๋ฐํ ์ํ๊ณ
4. zkSync โช
โข Zero-Knowledge Rollup
โข ๋ ๊ฐ๋ ฅํ ๋ณด์
โข Mute.io, SyncSwap
โข ๋น ๋ฅด๊ฒ ์ฑ์ฅ ์ค
โข Optimistic Rollup ๊ธฐ์
โข Uniswap, SushiSwap ๋ฑ ์ฃผ์ DEX ์ง์
โข ๊ฐ์ค๋น 90% ์ด์ ์ ๊ฐ
โข ์ด๋๋ฆฌ์๊ณผ ๋์ ํธํ์ฑ
2. Optimism ๐ด
โข ์ญ์ Optimistic Rollup
โข Synthetix, Velodrome ๋ฑ
โข ๋น ๋ฅธ ํธ๋์ญ์ ์๋
โข OP ํ ํฐ ๋ณด์
3. Polygon ๐
โข ์ฌ์ด๋์ฒด์ธ + Rollup ํ์ด๋ธ๋ฆฌ๋
โข QuickSwap, SushiSwap
โข ๋งค์ฐ ์ ๋ ดํ ๊ฐ์ค๋น (์ผํธ ๋จ์!)
โข ํ๋ฐํ ์ํ๊ณ
4. zkSync โช
โข Zero-Knowledge Rollup
โข ๋ ๊ฐ๋ ฅํ ๋ณด์
โข Mute.io, SyncSwap
โข ๋น ๋ฅด๊ฒ ์ฑ์ฅ ์ค
๐ ๋ธ๋ฆฟ์ง ์ฌ์ฉ๋ฒ: Layer 2๋ก ์์ฐ์ ์ฎ๊ธฐ๋ ค๋ฉด ๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํด์ผ ํด. ๊ฐ L2๋ง๋ค ๊ณต์ ๋ธ๋ฆฟ์ง๊ฐ ์์ด. ์๋ฅผ ๋ค์ด Arbitrum Bridge, Optimism Gateway ๊ฐ์ ๊ฑฐ์ง. ์ฒ์์๋ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ์ง๋ง(10-20๋ถ), ์ผ๋จ ์ฎ๊ธฐ๊ณ ๋๋ฉด ์์ฒญ ๋น ๋ฅด๊ณ ์ ๋ ดํด! ๐
๐ฎ ์ ๋์ฑ ํ์ ๋ฏธ๋
์ ๋์ฑ ํ ๊ธฐ์ ์ ๊ณ์ ์งํํ๊ณ ์์ด. ์์ผ๋ก ์ด๋ค ๋ฐ์ ์ด ์์์ง ์ดํด๋ณด์! ๐
1๏ธโฃ ๋์ ์์๋ฃ (Dynamic Fees)
ํ์ฌ๋ ๋๋ถ๋ถ ๊ณ ์ ์์๋ฃ(0.3%)๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋ฏธ๋์๋ ์์ฅ ์ํฉ์ ๋ฐ๋ผ ์๋์ผ๋ก ์กฐ์ ๋๋ ๋์ ์์๋ฃ๊ฐ ์ผ๋ฐํ๋ ๊ฑฐ์ผ.
โข ๋ณ๋์ฑ์ด ๋์ ๋: ์์๋ฃ ์ฆ๊ฐ โ LP ๋ณดํธ
โข ์์ ์ ์ผ ๋: ์์๋ฃ ๊ฐ์ โ ๊ฑฐ๋๋ ์ฆ๊ฐ
โข AI/ML ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ต์ ํ ๐ค
โข ๋ณ๋์ฑ์ด ๋์ ๋: ์์๋ฃ ์ฆ๊ฐ โ LP ๋ณดํธ
โข ์์ ์ ์ผ ๋: ์์๋ฃ ๊ฐ์ โ ๊ฑฐ๋๋ ์ฆ๊ฐ
โข AI/ML ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ต์ ํ ๐ค
2๏ธโฃ Just-In-Time (JIT) Liquidity
๋ํ ๊ฑฐ๋๊ฐ ๋ค์ด์ฌ ๋๋ง ์๊ฐ์ ์ผ๋ก ์ ๋์ฑ์ ๊ณต๊ธํ๋ ์ ๋ต์ด์ผ. ๋ด๋ค์ด mempool์ ๋ชจ๋ํฐ๋งํ๋ค๊ฐ ํฐ ๊ฑฐ๋๋ฅผ ๊ฐ์งํ๋ฉด ๋ฐ๋ก ์ ๋์ฑ์ ์ถ๊ฐํ๊ณ , ๊ฑฐ๋ ํ ์ฆ์ ํ์ํด.
์ด๊ฑด ์ผ๋ฐ LP๋ค์๊ฒ๋ ๋ถ๋ฆฌํ ์ ์์ด์ ๋ ผ๋์ด ์์ด. ์์ผ๋ก ํ๋กํ ์ฝ ๋ ๋ฒจ์์ ์ด๋ป๊ฒ ๊ท์ ํ ์ง ์ง์ผ๋ด์ผ ํด! ๐
์ด๊ฑด ์ผ๋ฐ LP๋ค์๊ฒ๋ ๋ถ๋ฆฌํ ์ ์์ด์ ๋ ผ๋์ด ์์ด. ์์ผ๋ก ํ๋กํ ์ฝ ๋ ๋ฒจ์์ ์ด๋ป๊ฒ ๊ท์ ํ ์ง ์ง์ผ๋ด์ผ ํด! ๐
3๏ธโฃ ํฌ๋ก์ค์ฒด์ธ ์ ๋์ฑ
์๋ก ๋ค๋ฅธ ๋ธ๋ก์ฒด์ธ ๊ฐ์ ์ ๋์ฑ์ ๊ณต์ ํ๋ ๊ธฐ์ ์ด ๋ฐ์ ํ๊ณ ์์ด. Thorchain, Synapse, Stargate ๊ฐ์ ํ๋ก์ ํธ๋ค์ด ์ ๋์ฃผ์์ผ.
๋ฏธ๋์๋ ์ด๋๋ฆฌ์์ ETH์ ๋ฐ์ด๋ธ์ค ์ค๋งํธ ์ฒด์ธ์ BNB๋ฅผ ์ง์ ๊ตํํ ์ ์์ ๊ฑฐ์ผ! ๐
๋ฏธ๋์๋ ์ด๋๋ฆฌ์์ ETH์ ๋ฐ์ด๋ธ์ค ์ค๋งํธ ์ฒด์ธ์ BNB๋ฅผ ์ง์ ๊ตํํ ์ ์์ ๊ฑฐ์ผ! ๐
4๏ธโฃ NFT ์ ๋์ฑ ํ
NFT๋ ๋์ฒด ๋ถ๊ฐ๋ฅํ์ง๋ง, ๋น์ทํ NFT๋ค์ ๋ชจ์์ ์ ๋์ฑ ํ์ ๋ง๋๋ ์๋๊ฐ ์์ด. Sudoswap, NFTX ๊ฐ์ ํ๋กํ ์ฝ์ด ์ด๋ฏธ ์๋ ์ค์ด์ผ!
์๋ฅผ ๋ค์ด CryptoPunks ํ์ ๋ง๋ค์ด์, ํน์ Punk๋ฅผ ๋ค๋ฅธ Punk๋ก ๊ตํํ๊ฑฐ๋ ํ ํฐํํ ์ ์์ด. ์ ๋ง ํ์ ์ ์ด์ง? ๐จ
์๋ฅผ ๋ค์ด CryptoPunks ํ์ ๋ง๋ค์ด์, ํน์ Punk๋ฅผ ๋ค๋ฅธ Punk๋ก ๊ตํํ๊ฑฐ๋ ํ ํฐํํ ์ ์์ด. ์ ๋ง ํ์ ์ ์ด์ง? ๐จ
๐ผ ์ค์ ์ฌ๋ก: ์ฑ๊ณต๊ณผ ์คํจ
์ค์ ๋ก ์ ๋์ฑ ํ์์ ์ด๋ค ์ผ๋ค์ด ์ผ์ด๋ฌ๋์ง ์ดํด๋ณด์. ๋ฐฐ์ธ ์ ์ด ๋ง์! ๐
โ ์ฑ๊ณต ์ฌ๋ก: Curve์ 3pool
Curve์ 3pool (USDC/USDT/DAI)์ DeFi ์ญ์ฌ์ ๊ฐ์ฅ ์ฑ๊ณต์ ์ธ ์ ๋์ฑ ํ ์ค ํ๋์ผ.
์ฑ๊ณต ์์ธ:
โข ์คํ ์ด๋ธ์ฝ์ธ ํนํ ์๊ณ ๋ฆฌ์ฆ
โข ๋งค์ฐ ๋ฎ์ ์ฌ๋ฆฌํผ์ง
โข ์์ ์ ์ธ ์์ต๋ฅ (5-10% APY)
โข CRV ํ ํฐ ์ธ์ผํฐ๋ธ
โข ๋ค๋ฅธ ํ๋กํ ์ฝ๋ค์ ๊ธฐ๋ฐ ์ธํ๋ผ๋ก ํ์ฉ
ํ์ฌ ์์ญ์ต ๋ฌ๋ฌ์ TVL(Total Value Locked)์ ์ ์งํ๊ณ ์์ด! ๐ช
์ฑ๊ณต ์์ธ:
โข ์คํ ์ด๋ธ์ฝ์ธ ํนํ ์๊ณ ๋ฆฌ์ฆ
โข ๋งค์ฐ ๋ฎ์ ์ฌ๋ฆฌํผ์ง
โข ์์ ์ ์ธ ์์ต๋ฅ (5-10% APY)
โข CRV ํ ํฐ ์ธ์ผํฐ๋ธ
โข ๋ค๋ฅธ ํ๋กํ ์ฝ๋ค์ ๊ธฐ๋ฐ ์ธํ๋ผ๋ก ํ์ฉ
ํ์ฌ ์์ญ์ต ๋ฌ๋ฌ์ TVL(Total Value Locked)์ ์ ์งํ๊ณ ์์ด! ๐ช
โ ์คํจ ์ฌ๋ก: Iron Finance ๋ถ๊ดด
2021๋
6์, Iron Finance์ ์๊ณ ๋ฆฌ์ฆ ์คํ
์ด๋ธ์ฝ์ธ IRON์ด ๋ํ๊น
๋๋ฉด์ ์ ๋์ฑ ํ์ด ๋ถ๊ดดํ์ด.
๋ฌธ์ ์ :
โข ์๋ชป ์ค๊ณ๋ ์๊ณ ๋ฆฌ์ฆ
โข ๋ฑ ํฌ๋ฐ(Bank Run) ๋ฐ์
โข ์ ๋์ฑ ๊ธ๊ฒฉํ ๊ฐ์
โข ํฌ์์๋ค ํฐ ์์ค
๊ตํ: ๋ณต์กํ ๋ฉ์ปค๋์ฆ์ผ์๋ก ๋ฆฌ์คํฌ๊ฐ ํฌ๋ค! ํญ์ ํ๋กํ ์ฝ์ ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ํฌ์ํด์ผ ํด. ๐
๋ฌธ์ ์ :
โข ์๋ชป ์ค๊ณ๋ ์๊ณ ๋ฆฌ์ฆ
โข ๋ฑ ํฌ๋ฐ(Bank Run) ๋ฐ์
โข ์ ๋์ฑ ๊ธ๊ฒฉํ ๊ฐ์
โข ํฌ์์๋ค ํฐ ์์ค
๊ตํ: ๋ณต์กํ ๋ฉ์ปค๋์ฆ์ผ์๋ก ๋ฆฌ์คํฌ๊ฐ ํฌ๋ค! ํญ์ ํ๋กํ ์ฝ์ ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ํฌ์ํด์ผ ํด. ๐
โ ๏ธ ํดํน ์ฌ๋ก: Poly Network
2021๋
8์, Poly Network์์ 6์ต ๋ฌ๋ฌ ์ด์์ด ํดํน๋นํ์ด. ํฌ๋ก์ค์ฒด์ธ ์ ๋์ฑ ํ์ ์ทจ์ฝ์ ์ด ๋
ธ์ถ๋ ์ฌ๊ฑด์ด์ผ.
๋คํํ ํด์ปค๊ฐ ์์ฌ์ ๊ฐ์ฑ ์ ๋๊ปด(?) ๋๋ถ๋ถ์ ์๊ธ์ ๋ฐํํ์ง๋ง, ์ค๋งํธ ์ปจํธ๋ํธ ๋ณด์์ ์ค์์ฑ์ ์ผ๊นจ์์ค ์ฌ๊ฑด์ด์์ด. ๐
๋คํํ ํด์ปค๊ฐ ์์ฌ์ ๊ฐ์ฑ ์ ๋๊ปด(?) ๋๋ถ๋ถ์ ์๊ธ์ ๋ฐํํ์ง๋ง, ์ค๋งํธ ์ปจํธ๋ํธ ๋ณด์์ ์ค์์ฑ์ ์ผ๊นจ์์ค ์ฌ๊ฑด์ด์์ด. ๐
๐ ๏ธ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ค์ ๊ฐ์ด๋
์ง์ ์ ๋์ฑ ํ์ ๊ฐ๋ฐํ๊ณ ์ถ๋ค๊ณ ? ๋ฉ์ง ๋์ ์ด์ผ! ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ด๋๋ฅผ ์ค๊ฒ. ๐ป
ํน์ ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ ๊ด๋ จํด์ ๋ ๋ฐฐ์ฐ๊ณ ์ถ๊ฑฐ๋, ํ๋ก์ ํธ์ ๋์์ด ํ์ํ๋ค๋ฉด ์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ์ ๋ฌธ๊ฐ๋ค์ ์กฐ์ธ์ ๊ตฌํ ์๋ ์์ด. ๋ค์ํ ๊ฐ๋ฐ์๋ค์ด ์ง์๊ณผ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ์๊ฑฐ๋ ! ๐ค
ํน์ ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ ๊ด๋ จํด์ ๋ ๋ฐฐ์ฐ๊ณ ์ถ๊ฑฐ๋, ํ๋ก์ ํธ์ ๋์์ด ํ์ํ๋ค๋ฉด ์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ์ ๋ฌธ๊ฐ๋ค์ ์กฐ์ธ์ ๊ตฌํ ์๋ ์์ด. ๋ค์ํ ๊ฐ๋ฐ์๋ค์ด ์ง์๊ณผ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ์๊ฑฐ๋ ! ๐ค
๐ฆ ํ์ํ ๋๊ตฌ๋ค
1. ๊ฐ๋ฐ ํ๊ฒฝ
โข Hardhat ๋๋ Foundry: ์ค๋งํธ ์ปจํธ๋ํธ ๊ฐ๋ฐ ํ๋ ์์ํฌ
โข Solidity: ์ค๋งํธ ์ปจํธ๋ํธ ์ธ์ด (0.8.x ๋ฒ์ ๊ถ์ฅ)
โข OpenZeppelin: ๊ฒ์ฆ๋ ์ปจํธ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข Ethers.js ๋๋ Web3.js: ํ๋ก ํธ์๋ ์ฐ๋
2. ํ ์คํธ ํ๊ฒฝ
โข Ganache: ๋ก์ปฌ ๋ธ๋ก์ฒด์ธ
โข Goerli ๋๋ Sepolia: ํ ์คํธ๋ท
โข Tenderly: ํธ๋์ญ์ ๋๋ฒ๊น
3. ๋ณด์ ๋๊ตฌ
โข Slither: ์ ์ ๋ถ์ ๋๊ตฌ
โข Mythril: ์ทจ์ฝ์ ์ค์บ๋
โข Echidna: ํผ์ง ํ ์คํธ
โข Hardhat ๋๋ Foundry: ์ค๋งํธ ์ปจํธ๋ํธ ๊ฐ๋ฐ ํ๋ ์์ํฌ
โข Solidity: ์ค๋งํธ ์ปจํธ๋ํธ ์ธ์ด (0.8.x ๋ฒ์ ๊ถ์ฅ)
โข OpenZeppelin: ๊ฒ์ฆ๋ ์ปจํธ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข Ethers.js ๋๋ Web3.js: ํ๋ก ํธ์๋ ์ฐ๋
2. ํ ์คํธ ํ๊ฒฝ
โข Ganache: ๋ก์ปฌ ๋ธ๋ก์ฒด์ธ
โข Goerli ๋๋ Sepolia: ํ ์คํธ๋ท
โข Tenderly: ํธ๋์ญ์ ๋๋ฒ๊น
3. ๋ณด์ ๋๊ตฌ
โข Slither: ์ ์ ๋ถ์ ๋๊ตฌ
โข Mythril: ์ทจ์ฝ์ ์ค์บ๋
โข Echidna: ํผ์ง ํ ์คํธ
๐๏ธ ๊ธฐ๋ณธ ๊ตฌ์กฐ
๊ฐ๋จํ ์ ๋์ฑ ํ ์ปจํธ๋ํธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract SimpleLiquidityPool is ERC20, ReentrancyGuard {
IERC20 public immutable token0;
IERC20 public immutable token1;
uint256 public reserve0;
uint256 public reserve1;
uint256 private constant MINIMUM_LIQUIDITY = 1000;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(address indexed sender, uint256 amount0, uint256 amount1);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out
);
constructor(
address _token0,
address _token1
) ERC20("LP Token", "LP") {
token0 = IERC20(_token0);
token1 = IERC20(_token1);
}
// ์ ๋์ฑ ์ถ๊ฐ
function addLiquidity(
uint256 amount0,
uint256 amount1
) external nonReentrant returns (uint256 liquidity) {
token0.transferFrom(msg.sender, address(this), amount0);
token1.transferFrom(msg.sender, address(this), amount1);
uint256 _totalSupply = totalSupply();
if (_totalSupply == 0) {
// ์ต์ด ์ ๋์ฑ ๊ณต๊ธ
liquidity = sqrt(amount0 * amount1) - MINIMUM_LIQUIDITY;
_mint(address(1), MINIMUM_LIQUIDITY); // ์๊ตฌ ์ ๊ธ
} else {
// ๊ธฐ์กด ๋น์จ์ ๋ง์ถฐ LP ํ ํฐ ๋ฐํ
liquidity = min(
(amount0 * _totalSupply) / reserve0,
(amount1 * _totalSupply) / reserve1
);
}
require(liquidity > 0, "INSUFFICIENT_LIQUIDITY_MINTED");
_mint(msg.sender, liquidity);
_update(
token0.balanceOf(address(this)),
token1.balanceOf(address(this))
);
emit Mint(msg.sender, amount0, amount1);
}
// ์ ๋์ฑ ์ ๊ฑฐ
function removeLiquidity(
uint256 liquidity
) external nonReentrant returns (uint256 amount0, uint256 amount1) {
uint256 balance0 = token0.balanceOf(address(this));
uint256 balance1 = token1.balanceOf(address(this));
uint256 _totalSupply = totalSupply();
amount0 = (liquidity * balance0) / _totalSupply;
amount1 = (liquidity * balance1) / _totalSupply;
require(amount0 > 0 && amount1 > 0, "INSUFFICIENT_LIQUIDITY_BURNED");
_burn(msg.sender, liquidity);
token0.transfer(msg.sender, amount0);
token1.transfer(msg.sender, amount1);
_update(
token0.balanceOf(address(this)),
token1.balanceOf(address(this))
);
emit Burn(msg.sender, amount0, amount1);
}
// ํ ํฐ ์ค์
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to
) external nonReentrant {
require(amount0Out > 0 || amount1Out > 0, "INSUFFICIENT_OUTPUT_AMOUNT");
require(amount0Out < reserve0 && amount1Out < reserve1, "INSUFFICIENT_LIQUIDITY");
if (amount0Out > 0) token0.transfer(to, amount0Out);
if (amount1Out > 0) token1.transfer(to, amount1Out);
uint256 balance0 = token0.balanceOf(address(this));
uint256 balance1 = token1.balanceOf(address(this));
uint256 amount0In = balance0 > reserve0 - amount0Out
? balance0 - (reserve0 - amount0Out)
: 0;
uint256 amount1In = balance1 > reserve1 - amount1Out
? balance1 - (reserve1 - amount1Out)
: 0;
require(amount0In > 0 || amount1In > 0, "INSUFFICIENT_INPUT_AMOUNT");
// 0.3% ์์๋ฃ ์ ์ฉ (997/1000)
uint256 balance0Adjusted = (balance0 * 1000) - (amount0In * 3);
uint256 balance1Adjusted = (balance1 * 1000) - (amount1In * 3);
require(
balance0Adjusted * balance1Adjusted >= reserve0 * reserve1 * (1000**2),
"K_INVARIANT_VIOLATED"
);
_update(balance0, balance1);
emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out);
}
// ๋ด๋ถ ํจ์๋ค
function _update(uint256 balance0, uint256 balance1) private {
reserve0 = balance0;
reserve1 = balance1;
}
function sqrt(uint256 y) internal pure returns (uint256 z) {
if (y > 3) {
z = y;
uint256 x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
function min(uint256 x, uint256 y) internal pure returns (uint256) {
return x < y ? x : y;
}
}
์ด๊ฑด ์ ๋ง ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ์ด์ผ. ์ค์ ํ๋ก๋์
์์๋ ํจ์ฌ ๋ ๋ง์ ๊ธฐ๋ฅ๊ณผ ๋ณด์ ์ฅ์น๊ฐ ํ์ํด! ๐
๐งช ํ ์คํธ ์์ฑ
์ค๋งํธ ์ปจํธ๋ํธ๋ ๋ฐฐํฌ ํ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋๊น, ์ฒ ์ ํ ํ
์คํธ๊ฐ ํ์์ผ!
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("SimpleLiquidityPool", function () {
let pool, token0, token1;
let owner, user1, user2;
beforeEach(async function () {
[owner, user1, user2] = await ethers.getSigners();
// ํ
์คํธ ํ ํฐ ๋ฐฐํฌ
const Token = await ethers.getContractFactory("ERC20Mock");
token0 = await Token.deploy("Token0", "TK0", ethers.utils.parseEther("1000000"));
token1 = await Token.deploy("Token1", "TK1", ethers.utils.parseEther("1000000"));
// ํ ๋ฐฐํฌ
const Pool = await ethers.getContractFactory("SimpleLiquidityPool");
pool = await Pool.deploy(token0.address, token1.address);
// ํ ํฐ ๋ถ๋ฐฐ
await token0.transfer(user1.address, ethers.utils.parseEther("10000"));
await token1.transfer(user1.address, ethers.utils.parseEther("10000"));
});
it("Should add liquidity correctly", async function () {
const amount0 = ethers.utils.parseEther("100");
const amount1 = ethers.utils.parseEther("100");
await token0.connect(user1).approve(pool.address, amount0);
await token1.connect(user1).approve(pool.address, amount1);
await pool.connect(user1).addLiquidity(amount0, amount1);
const lpBalance = await pool.balanceOf(user1.address);
expect(lpBalance).to.be.gt(0);
});
it("Should swap tokens correctly", async function () {
// ๋จผ์ ์ ๋์ฑ ์ถ๊ฐ
const liquidityAmount = ethers.utils.parseEther("1000");
await token0.connect(user1).approve(pool.address, liquidityAmount);
await token1.connect(user1).approve(pool.address, liquidityAmount);
await pool.connect(user1).addLiquidity(liquidityAmount, liquidityAmount);
// ์ค์ ํ
์คํธ
const swapAmount = ethers.utils.parseEther("10");
await token0.connect(user2).approve(pool.address, swapAmount);
const balanceBefore = await token1.balanceOf(user2.address);
// ์ค์ ์คํ ๋ก์ง...
// (์ค์ ๋ก๋ ๋ ๋ณต์กํ ๊ณ์ฐ ํ์)
const balanceAfter = await token1.balanceOf(user2.address);
expect(balanceAfter).to.be.gt(balanceBefore);
});
it("Should maintain k invariant", async function () {
// k = x * y ๋ถ๋ณ์ฑ ํ
์คํธ
// ...
});
it("Should handle edge cases", async function () {
// 0 ์
๋ ฅ, ์ค๋ฒํ๋ก์ฐ ๋ฑ ์ฃ์ง ์ผ์ด์ค ํ
์คํธ
// ...
});
});
๐ฏ ํ
์คํธ ํ:
โข ๋ชจ๋ ํจ์์ ๋ํด ์ ์ ์ผ์ด์ค์ ์๋ฌ ์ผ์ด์ค๋ฅผ ํ
์คํธํด
โข ์ํ์ ๋ถ๋ณ์ฑ(k = x * y)์ ํญ์ ๊ฒ์ฆํด
โข ์ฌ์ง์ ๊ณต๊ฒฉ, ์ค๋ฒํ๋ก์ฐ ๋ฑ ๋ณด์ ์ทจ์ฝ์ ํ ์คํธ
โข ๊ฐ์ค ์ต์ ํ๋ ๊ณ ๋ คํด (view ํจ์ ํ์ฉ ๋ฑ)
โข ์ปค๋ฒ๋ฆฌ์ง 100%๋ฅผ ๋ชฉํ๋ก!
โข ์ํ์ ๋ถ๋ณ์ฑ(k = x * y)์ ํญ์ ๊ฒ์ฆํด
โข ์ฌ์ง์ ๊ณต๊ฒฉ, ์ค๋ฒํ๋ก์ฐ ๋ฑ ๋ณด์ ์ทจ์ฝ์ ํ ์คํธ
โข ๊ฐ์ค ์ต์ ํ๋ ๊ณ ๋ คํด (view ํจ์ ํ์ฉ ๋ฑ)
โข ์ปค๋ฒ๋ฆฌ์ง 100%๋ฅผ ๋ชฉํ๋ก!
๐จ ํ๋ก ํธ์๋ ํตํฉ
์ค๋งํธ ์ปจํธ๋ํธ๋ง์ผ๋ก๋ ๋ถ์กฑํด! ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค๊ฐ ํ์ํ์ง. React๋ก ๊ฐ๋จํ ์์๋ฅผ ๋ง๋ค์ด๋ณด์! โ๏ธ
import { ethers } from 'ethers';
import { useState, useEffect } from 'react';
function LiquidityPoolUI() {
const [provider, setProvider] = useState(null);
const [signer, setSigner] = useState(null);
const [poolContract, setPoolContract] = useState(null);
const [amount0, setAmount0] = useState('');
const [amount1, setAmount1] = useState('');
// ์ง๊ฐ ์ฐ๊ฒฐ
const connectWallet = async () => {
if (window.ethereum) {
const provider = new ethers.providers.Web3Provider(window.ethereum);
await provider.send("eth_requestAccounts", []);
const signer = provider.getSigner();
setProvider(provider);
setSigner(signer);
// ์ปจํธ๋ํธ ์ธ์คํด์ค ์์ฑ
const poolAddress = "0x..."; // ๋ฐฐํฌ๋ ์ฃผ์
const poolABI = [...]; // ABI
const contract = new ethers.Contract(poolAddress, poolABI, signer);
setPoolContract(contract);
}
};
// ์ ๋์ฑ ์ถ๊ฐ
const addLiquidity = async () => {
try {
const tx = await poolContract.addLiquidity(
ethers.utils.parseEther(amount0),
ethers.utils.parseEther(amount1)
);
await tx.wait();
alert("์ ๋์ฑ ์ถ๊ฐ ์ฑ๊ณต!");
} catch (error) {
console.error(error);
alert("์คํจ: " + error.message);
}
};
return (
<div>
<button onClick={connectWallet}>์ง๊ฐ ์ฐ๊ฒฐ</button>
<div>
<input
type="number"
value={amount0}
onChange={(e) => setAmount0(e.target.value)}
placeholder="Token 0 ์๋"
/>
<input
type="number"
value={amount1}
onChange={(e) => setAmount1(e.target.value)}
placeholder="Token 1 ์๋"
/>
<button onClick={addLiquidity}>์ ๋์ฑ ์ถ๊ฐ</button>
</div>
</div>
);
}
์ค์ ํ๋ก๋์
์์๋ ํจ์ฌ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ํ์ํด:
โข ํ ํฐ ์น์ธ(Approval) ์ฒ๋ฆฌ
โข ๋ก๋ฉ ์ํ ํ์
โข ์๋ฌ ํธ๋ค๋ง
โข ๊ฐ๊ฒฉ ๊ณ์ฐ ๋ฐ ํ์
โข ์ฌ๋ฆฌํผ์ง ์ค์
โข ํธ๋์ญ์ ํ์คํ ๋ฆฌ
โข ๋ฐ์ํ ๋์์ธ ๋ฑ๋ฑ! ๐ฑ
โข ํ ํฐ ์น์ธ(Approval) ์ฒ๋ฆฌ
โข ๋ก๋ฉ ์ํ ํ์
โข ์๋ฌ ํธ๋ค๋ง
โข ๊ฐ๊ฒฉ ๊ณ์ฐ ๋ฐ ํ์
โข ์ฌ๋ฆฌํผ์ง ์ค์
โข ํธ๋์ญ์ ํ์คํ ๋ฆฌ
โข ๋ฐ์ํ ๋์์ธ ๋ฑ๋ฑ! ๐ฑ
๐ ์ ๋์ฑ ํ ๋ถ์ ๋๊ตฌ
์ ๋์ฑ ํ์ ํฌ์ํ๊ฑฐ๋ ๊ฐ๋ฐํ ๋ ์ ์ฉํ ๋๊ตฌ๋ค์ ์๊ฐํ ๊ฒ! ๐ง
๐ ๋ฐ์ดํฐ ๋ถ์ ํ๋ซํผ
1. DeFi Llama ๐ฆ
โข ๋ชจ๋ ์ฒด์ธ์ TVL ๋ฐ์ดํฐ
โข ํ๋กํ ์ฝ๋ณ ๋น๊ต
โข ์์ต๋ฅ ์ถ์
โข ๋ฌด๋ฃ!
2. Dune Analytics ๐
โข SQL ์ฟผ๋ฆฌ๋ก ์จ์ฒด์ธ ๋ฐ์ดํฐ ๋ถ์
โข ์ปค์คํ ๋์๋ณด๋ ์์ฑ
โข ์ปค๋ฎค๋ํฐ ์ฟผ๋ฆฌ ๊ณต์
โข ์๊ฐํ ๋๊ตฌ
3. The Graph ๐
โข ๋ธ๋ก์ฒด์ธ ๋ฐ์ดํฐ ์ธ๋ฑ์ฑ
โข GraphQL API ์ ๊ณต
โข ๊ฐ๋ฐ์ ์นํ์
โข ์ค์๊ฐ ๋ฐ์ดํฐ
4. APY.vision ๐๏ธ
โข LP ํฌ์ง์ ์ถ์
โข ๋น์๊ตฌ์ ์์ค ๊ณ์ฐ
โข ์์ต๋ฅ ๋ถ์
โข ํฌํธํด๋ฆฌ์ค ๊ด๋ฆฌ
โข ๋ชจ๋ ์ฒด์ธ์ TVL ๋ฐ์ดํฐ
โข ํ๋กํ ์ฝ๋ณ ๋น๊ต
โข ์์ต๋ฅ ์ถ์
โข ๋ฌด๋ฃ!
2. Dune Analytics ๐
โข SQL ์ฟผ๋ฆฌ๋ก ์จ์ฒด์ธ ๋ฐ์ดํฐ ๋ถ์
โข ์ปค์คํ ๋์๋ณด๋ ์์ฑ
โข ์ปค๋ฎค๋ํฐ ์ฟผ๋ฆฌ ๊ณต์
โข ์๊ฐํ ๋๊ตฌ
3. The Graph ๐
โข ๋ธ๋ก์ฒด์ธ ๋ฐ์ดํฐ ์ธ๋ฑ์ฑ
โข GraphQL API ์ ๊ณต
โข ๊ฐ๋ฐ์ ์นํ์
โข ์ค์๊ฐ ๋ฐ์ดํฐ
4. APY.vision ๐๏ธ
โข LP ํฌ์ง์ ์ถ์
โข ๋น์๊ตฌ์ ์์ค ๊ณ์ฐ
โข ์์ต๋ฅ ๋ถ์
โข ํฌํธํด๋ฆฌ์ค ๊ด๋ฆฌ
๐งฎ ๊ณ์ฐ๊ธฐ ๋๊ตฌ
๋น์๊ตฌ์ ์์ค ๊ณ์ฐ๊ธฐ:
โข dailydefi.org/tools/impermanent-loss-calculator
โข ๊ฐ๊ฒฉ ๋ณ๋์ ๋ฐ๋ฅธ ์์ค ์๋ฎฌ๋ ์ด์
APY ๊ณ์ฐ๊ธฐ:
โข ์์๋ฃ ์์ต + ํ ํฐ ๋ณด์ ๊ณ์ฐ
โข ๋ณต๋ฆฌ ํจ๊ณผ ๊ณ ๋ ค
๊ฐ์ค๋น ์ถ์ :
โข etherscan.io/gastracker
โข ์ต์ ์ ๊ฑฐ๋ ์๊ฐ ์ฐพ๊ธฐ
โข dailydefi.org/tools/impermanent-loss-calculator
โข ๊ฐ๊ฒฉ ๋ณ๋์ ๋ฐ๋ฅธ ์์ค ์๋ฎฌ๋ ์ด์
APY ๊ณ์ฐ๊ธฐ:
โข ์์๋ฃ ์์ต + ํ ํฐ ๋ณด์ ๊ณ์ฐ
โข ๋ณต๋ฆฌ ํจ๊ณผ ๊ณ ๋ ค
๊ฐ์ค๋น ์ถ์ :
โข etherscan.io/gastracker
โข ์ต์ ์ ๊ฑฐ๋ ์๊ฐ ์ฐพ๊ธฐ
๐ ์ค์ ์ ๋ต๊ณผ ํ
์ด์ ์ค์ ๋ก ์์ต์ ๋ด๊ธฐ ์ํ ์ ๋ต๋ค์ ์์๋ณด์! ๐ฐ
๐ฏ ์ด๋ณด์ ์ ๋ต
1. ์คํ
์ด๋ธ์ฝ์ธ ํ๋ก ์์
โข USDC/USDT, DAI/USDC ๊ฐ์ ์์ ์ ์ธ ์
โข ๋น์๊ตฌ์ ์์ค ์ต์ํ
โข ๋ฎ์ง๋ง ์์ ์ ์ธ ์์ต (5-15% APY)
โข ๋ฆฌ์คํฌ ๊ด๋ฆฌ ์ฐ์ต
2. ๋ฉ์ด์ ํ๋กํ ์ฝ ์ฌ์ฉ
โข Uniswap, Curve, Balancer ๊ฐ์ ๊ฒ์ฆ๋ ํ๋ซํผ
โข ๋ณด์ ๊ฐ์ฌ ์๋ฃ
โข ๋์ ์ ๋์ฑ
โข ์ปค๋ฎค๋ํฐ ์ง์
3. ์์ก์ผ๋ก ์์
โข ์ ์ฒด ์์ฐ์ 5-10%๋ง ํฌ์
โข ์ฌ๋ฌ ํ์ ๋ถ์ฐ
โข ๊ฒฝํ ์๊ธฐ
โข ์ค์ํด๋ ํฐ ์์ค ์์
โข ๋น์๊ตฌ์ ์์ค ์ต์ํ
โข ๋ฎ์ง๋ง ์์ ์ ์ธ ์์ต (5-15% APY)
โข ๋ฆฌ์คํฌ ๊ด๋ฆฌ ์ฐ์ต
2. ๋ฉ์ด์ ํ๋กํ ์ฝ ์ฌ์ฉ
โข Uniswap, Curve, Balancer ๊ฐ์ ๊ฒ์ฆ๋ ํ๋ซํผ
โข ๋ณด์ ๊ฐ์ฌ ์๋ฃ
โข ๋์ ์ ๋์ฑ
โข ์ปค๋ฎค๋ํฐ ์ง์
3. ์์ก์ผ๋ก ์์
โข ์ ์ฒด ์์ฐ์ 5-10%๋ง ํฌ์
โข ์ฌ๋ฌ ํ์ ๋ถ์ฐ
โข ๊ฒฝํ ์๊ธฐ
โข ์ค์ํด๋ ํฐ ์์ค ์์
๐ ์ค๊ธ์ ์ ๋ต
1. ์์ต๋ฅ ํ๋ฐ (Yield Farming) ๐พ
โข ๋์ APY๋ฅผ ์ ๊ณตํ๋ ํ ์ฐพ๊ธฐ
โข ํ ํฐ ๋ณด์ ํ์ฉ
โข ์ ๊ธฐ์ ์ผ๋ก ์ํ(Harvest)ํ๊ณ ์ฌํฌ์
โข ๊ฐ์ค๋น ๊ณ ๋ คํด์ ์ต์ ํ
2. ๋ ์ด์ด 2 ํ์ฉ โก
โข Arbitrum, Optimism์์ ์ด์
โข ๊ฐ์ค๋น 90% ์ ๊ฐ
โข ๋ ์์ฃผ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ฐ๋ฅ
โข ์์ก ํฌ์๋ ์์ต์ฑ ์์
3. ์ง์ค ์ ๋์ฑ ์ ๋ต ๐ฏ
โข Uniswap V3 ํ์ฉ
โข ์ข์ ๊ฐ๊ฒฉ ๋ฒ์ ์ค์
โข ๋์ ์์๋ฃ ์์ต
โข ๋ฅ๋์ ๊ด๋ฆฌ ํ์
โข ๋์ APY๋ฅผ ์ ๊ณตํ๋ ํ ์ฐพ๊ธฐ
โข ํ ํฐ ๋ณด์ ํ์ฉ
โข ์ ๊ธฐ์ ์ผ๋ก ์ํ(Harvest)ํ๊ณ ์ฌํฌ์
โข ๊ฐ์ค๋น ๊ณ ๋ คํด์ ์ต์ ํ
2. ๋ ์ด์ด 2 ํ์ฉ โก
โข Arbitrum, Optimism์์ ์ด์
โข ๊ฐ์ค๋น 90% ์ ๊ฐ
โข ๋ ์์ฃผ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ฐ๋ฅ
โข ์์ก ํฌ์๋ ์์ต์ฑ ์์
3. ์ง์ค ์ ๋์ฑ ์ ๋ต ๐ฏ
โข Uniswap V3 ํ์ฉ
โข ์ข์ ๊ฐ๊ฒฉ ๋ฒ์ ์ค์
โข ๋์ ์์๋ฃ ์์ต
โข ๋ฅ๋์ ๊ด๋ฆฌ ํ์
๐ ๊ณ ๊ธ์ ์ ๋ต
1. ๋ธํ ์ค๋ฆฝ ์ ๋ต โ๏ธ
โข LP ํฌ์ง์ + ํ์์ํ ํค์ง
โข ๊ฐ๊ฒฉ ๋ณ๋ ๋ฆฌ์คํฌ ์ ๊ฑฐ
โข ์์ ์์๋ฃ ์์ต๋ง ์ถ๊ตฌ
โข ๋ณต์กํ์ง๋ง ์์ ์
2. ์ฐจ์ต๊ฑฐ๋ (Arbitrage) ๐น
โข ์ฌ๋ฌ DEX ๊ฐ ๊ฐ๊ฒฉ ์ฐจ์ด ํ์ฉ
โข ํ๋์๋ก (Flash Loan) ์ฌ์ฉ
โข ๋ด ๊ฐ๋ฐ ํ์
โข ๋์ ๊ธฐ์ ๋ ฅ ์๊ตฌ
3. ํ๋กํ ์ฝ ํ ํฐ ์คํ ์ดํน ๐
โข CRV, BAL ๊ฐ์ ๊ฑฐ๋ฒ๋์ค ํ ํฐ ๋ณด์
โข ํฌํ๊ถ์ผ๋ก ์์๋ฃ ๋ถ์คํธ
โข veToken ๋ชจ๋ธ ํ์ฉ
โข ์ฅ๊ธฐ ํฌ์ ๊ด์
โข LP ํฌ์ง์ + ํ์์ํ ํค์ง
โข ๊ฐ๊ฒฉ ๋ณ๋ ๋ฆฌ์คํฌ ์ ๊ฑฐ
โข ์์ ์์๋ฃ ์์ต๋ง ์ถ๊ตฌ
โข ๋ณต์กํ์ง๋ง ์์ ์
2. ์ฐจ์ต๊ฑฐ๋ (Arbitrage) ๐น
โข ์ฌ๋ฌ DEX ๊ฐ ๊ฐ๊ฒฉ ์ฐจ์ด ํ์ฉ
โข ํ๋์๋ก (Flash Loan) ์ฌ์ฉ
โข ๋ด ๊ฐ๋ฐ ํ์
โข ๋์ ๊ธฐ์ ๋ ฅ ์๊ตฌ
3. ํ๋กํ ์ฝ ํ ํฐ ์คํ ์ดํน ๐
โข CRV, BAL ๊ฐ์ ๊ฑฐ๋ฒ๋์ค ํ ํฐ ๋ณด์
โข ํฌํ๊ถ์ผ๋ก ์์๋ฃ ๋ถ์คํธ
โข veToken ๋ชจ๋ธ ํ์ฉ
โข ์ฅ๊ธฐ ํฌ์ ๊ด์
โฐ ํ์ด๋ฐ ์ ๋ต:
โข ๋ณ๋์ฑ ๋์ ๋: ์์๋ฃ ์์ต ์ฆ๊ฐ, ํ์ง๋ง IL ๋ฆฌ์คํฌ๋ ์ฆ๊ฐ
โข ๋ณ๋์ฑ ๋ฎ์ ๋: ์์ ์ ์ด์ง๋ง ์์ต๋ฅ ๋ฎ์
โข ์์ฅ ์ฌ์ดํด ๊ณ ๋ ค: ๊ฐ์ธ์ฅ์์๋ ๋จ์ ๋ณด์ ๊ฐ ๋์ ์๋
โข ์ ๊ธฐ์ ์ผ๋ก ๋ฆฌ๋ฐธ๋ฐ์ฑ: ์ 1ํ ์ ๋ ํฌ์ง์ ์ ๊ฒ
โข ๋ณ๋์ฑ ๋ฎ์ ๋: ์์ ์ ์ด์ง๋ง ์์ต๋ฅ ๋ฎ์
โข ์์ฅ ์ฌ์ดํด ๊ณ ๋ ค: ๊ฐ์ธ์ฅ์์๋ ๋จ์ ๋ณด์ ๊ฐ ๋์ ์๋
โข ์ ๊ธฐ์ ์ผ๋ก ๋ฆฌ๋ฐธ๋ฐ์ฑ: ์ 1ํ ์ ๋ ํฌ์ง์ ์ ๊ฒ
๐ ๋ณด์ ์ฒดํฌ๋ฆฌ์คํธ
์ ๋์ฑ ํ์ ์ฐธ์ฌํ๊ธฐ ์ ์ ๊ผญ ํ์ธํด์ผ ํ ์ฌํญ๋ค! โ
โํ๋กํ ์ฝ ๊ฒ์ฆ
โก ๋ณด์ ๊ฐ์ฌ(Audit) ์๋ฃ ์ฌ๋ถ
โก ๊ฐ์ฌ ๊ธฐ๊ด ์ ๋ขฐ๋ (CertiK, Trail of Bits ๋ฑ)
โก ๋ฒ๊ทธ ๋ฐ์ดํฐ ํ๋ก๊ทธ๋จ ์ด์
โก ์คํ์์ค ์ฝ๋ ๊ณต๊ฐ
โก ์ด์ ๊ธฐ๊ฐ (์ต์ 6๊ฐ์ ์ด์)
โก ๋ณด์ ๊ฐ์ฌ(Audit) ์๋ฃ ์ฌ๋ถ
โก ๊ฐ์ฌ ๊ธฐ๊ด ์ ๋ขฐ๋ (CertiK, Trail of Bits ๋ฑ)
โก ๋ฒ๊ทธ ๋ฐ์ดํฐ ํ๋ก๊ทธ๋จ ์ด์
โก ์คํ์์ค ์ฝ๋ ๊ณต๊ฐ
โก ์ด์ ๊ธฐ๊ฐ (์ต์ 6๊ฐ์ ์ด์)
โํ ๋ฐ ์ปค๋ฎค๋ํฐ
โก ํ ์ ์ ๊ณต๊ฐ (์ต๋ช ํ์ ์ฃผ์)
โก ํ๋ฐํ ์ปค๋ฎค๋ํฐ
โก ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ
โก ํฌ๋ช ํ ์ปค๋ฎค๋์ผ์ด์
โก ๋์ค์ฝ๋/ํ ๋ ๊ทธ๋จ ํ์ฑ๋
โก ํ ์ ์ ๊ณต๊ฐ (์ต๋ช ํ์ ์ฃผ์)
โก ํ๋ฐํ ์ปค๋ฎค๋ํฐ
โก ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ
โก ํฌ๋ช ํ ์ปค๋ฎค๋์ผ์ด์
โก ๋์ค์ฝ๋/ํ ๋ ๊ทธ๋จ ํ์ฑ๋
โ๊ฒฝ์ ๋ชจ๋ธ
โก ํ ํฐ ๋ถ๋ฐฐ ๊ตฌ์กฐ ํ์ธ
โก ์ธํ๋ ์ด์ ์จ ์ฒดํฌ
โก ์ง์ ๊ฐ๋ฅํ ์์ต ๋ชจ๋ธ
โก ๊ณผ๋ํ APY๋ ์์ฌ (1000%+ ๊ฐ์ ๊ฑฐ)
โก ์ ๋์ฑ ๋ฝ์ ๊ธฐ๊ฐ
โก ํ ํฐ ๋ถ๋ฐฐ ๊ตฌ์กฐ ํ์ธ
โก ์ธํ๋ ์ด์ ์จ ์ฒดํฌ
โก ์ง์ ๊ฐ๋ฅํ ์์ต ๋ชจ๋ธ
โก ๊ณผ๋ํ APY๋ ์์ฌ (1000%+ ๊ฐ์ ๊ฑฐ)
โก ์ ๋์ฑ ๋ฝ์ ๊ธฐ๊ฐ
โ๊ธฐ์ ์ ์์ ์ฅ์น
โก ํ์๋ฝ(Timelock) ์ค์
โก ๋ฉํฐ์๊ทธ(Multisig) ์ง๊ฐ ์ฌ์ฉ
โก ์ ๊ทธ๋ ์ด๋ ๊ฐ๋ฅ ์ฌ๋ถ (Proxy ํจํด)
โก ๊ธด๊ธ ์ ์ง(Emergency Pause) ๊ธฐ๋ฅ
โก ์ค๋ผํด ์ฌ์ฉ ์ ์ ๋ขฐ๋
โก ํ์๋ฝ(Timelock) ์ค์
โก ๋ฉํฐ์๊ทธ(Multisig) ์ง๊ฐ ์ฌ์ฉ
โก ์ ๊ทธ๋ ์ด๋ ๊ฐ๋ฅ ์ฌ๋ถ (Proxy ํจํด)
โก ๊ธด๊ธ ์ ์ง(Emergency Pause) ๊ธฐ๋ฅ
โก ์ค๋ผํด ์ฌ์ฉ ์ ์ ๋ขฐ๋
๐ ํ์ต ๋ฆฌ์์ค
๋ ๊น์ด ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด ์ด ๋ฆฌ์์ค๋ค์ ์ถ์ฒํด! ๐
๋ง์ฝ ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ๊ณ ์ถ๋ค๋ฉด, ์ฌ๋ฅ๋ท์์ ๋ฉํ ๋ฅผ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ ๊ฐ๋ฐ์๋ค์ด 1:1๋ก ๊ฐ๋ฅด์ณ์ค ์ ์๊ฑฐ๋ ! ๐ฏ
๋ง์ฝ ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ๊ณ ์ถ๋ค๋ฉด, ์ฌ๋ฅ๋ท์์ ๋ฉํ ๋ฅผ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ ๊ฐ๋ฐ์๋ค์ด 1:1๋ก ๊ฐ๋ฅด์ณ์ค ์ ์๊ฑฐ๋ ! ๐ฏ
๐ ๋ฌธ์ ๋ฐ ๊ฐ์ด๋
๊ณต์ ๋ฌธ์:
โข Uniswap Docs: docs.uniswap.org
โข Curve Docs: curve.readthedocs.io
โข Balancer Docs: docs.balancer.fi
๊ต์ก ํ๋ซํผ:
โข CryptoZombies: ๊ฒ์์ผ๋ก ๋ฐฐ์ฐ๋ Solidity
โข Buildspace: ํ๋ก์ ํธ ๊ธฐ๋ฐ ํ์ต
โข Alchemy University: ๋ฌด๋ฃ Web3 ๊ฐ์
โข Chainlink Academy: ์ค๋งํธ ์ปจํธ๋ํธ ๊ต์ก
โข Uniswap Docs: docs.uniswap.org
โข Curve Docs: curve.readthedocs.io
โข Balancer Docs: docs.balancer.fi
๊ต์ก ํ๋ซํผ:
โข CryptoZombies: ๊ฒ์์ผ๋ก ๋ฐฐ์ฐ๋ Solidity
โข Buildspace: ํ๋ก์ ํธ ๊ธฐ๋ฐ ํ์ต
โข Alchemy University: ๋ฌด๋ฃ Web3 ๊ฐ์
โข Chainlink Academy: ์ค๋งํธ ์ปจํธ๋ํธ ๊ต์ก
๐ฅ ์ ํ๋ธ ์ฑ๋
โข Finematics: DeFi ๊ฐ๋
์ค๋ช
โข Whiteboard Crypto: ์ด๋ณด์ ์นํ์
โข Smart Contract Programmer: ์ฝ๋ฉ ํํ ๋ฆฌ์ผ
โข Patrick Collins: ์ฌํ ๊ฐ๋ฐ ๊ฐ์
โข Whiteboard Crypto: ์ด๋ณด์ ์นํ์
โข Smart Contract Programmer: ์ฝ๋ฉ ํํ ๋ฆฌ์ผ
โข Patrick Collins: ์ฌํ ๊ฐ๋ฐ ๊ฐ์
๐ฑ ์ปค๋ฎค๋ํฐ
โข Reddit: r/defi, r/ethdev
โข Discord: ๊ฐ ํ๋กํ ์ฝ ๊ณต์ ์๋ฒ
โข Twitter: DeFi ๊ฐ๋ฐ์๋ค ํ๋ก์ฐ
โข GitHub: ์คํ์์ค ์ฝ๋ ๋ถ์
โข Discord: ๊ฐ ํ๋กํ ์ฝ ๊ณต์ ์๋ฒ
โข Twitter: DeFi ๊ฐ๋ฐ์๋ค ํ๋ก์ฐ
โข GitHub: ์คํ์์ค ์ฝ๋ ๋ถ์
๐ฌ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์! ์ฌ๊ธฐ๊น์ง ์ฝ์๋ค๋ฉด ์ ๋ง ๋๋จํด! ๐
์ ๋์ฑ ํ์ DeFi ์ํ๊ณ์ ํต์ฌ ์ธํ๋ผ์ผ. ๋จ์ํด ๋ณด์ด์ง๋ง ๊ทธ ์์๋ ์ ๊ตํ ์ํ, ๊ฒฝ์ ํ, ๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฒฐํฉ๋์ด ์์ด.
ํต์ฌ ์์ฝ:
๐น ์๋ ์๋ฆฌ: AMM ์๊ณ ๋ฆฌ์ฆ(x ร y = k)์ผ๋ก ์๋ํ๋ ํ ํฐ ๊ตํ
๐น ์์ต ๊ตฌ์กฐ: ๊ฑฐ๋ ์์๋ฃ๋ฅผ LP๋ค์ด ์ง๋ถ ๋น์จ๋๋ก ๋ถ๋ฐฐ
๐น ์ฃผ์ ๋ฆฌ์คํฌ: ๋น์๊ตฌ์ ์์ค, ์ค๋งํธ ์ปจํธ๋ํธ ๋ฒ๊ทธ, ๋ฌ๊ทธํ
๐น ๋ฐ์ ๋ฐฉํฅ: Concentrated Liquidity, ํฌ๋ก์ค์ฒด์ธ, ๋์ ์์๋ฃ
๐น ๊ฐ๋ฐ ๋๊ตฌ: Hardhat, Solidity, Ethers.js, OpenZeppelin
๊ธฐ์ตํด์ผ ํ ๊ฒ๋ค: ๐ฏ
1. ํญ์ DYOR (Do Your Own Research)
๋จ์ ๋ง๋ง ๋ฏฟ์ง ๋ง๊ณ ์ง์ ์กฐ์ฌํ๊ณ ์ดํดํด!
2. ๋ฆฌ์คํฌ ๊ด๋ฆฌ๊ฐ ์ต์ฐ์
๋์ ์์ต๋ฅ ์ ํํน๋์ง ๋ง๊ณ , ์์ด๋ ๊ด์ฐฎ์ ๊ธ์ก๋ง ํฌ์ํด.
3. ์ง์์ ์ธ ํ์ต
DeFi๋ ๋น ๋ฅด๊ฒ ์งํํด. ๊ณ์ ๊ณต๋ถํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ํด!
4. ์ปค๋ฎค๋ํฐ ์ฐธ์ฌ
ํผ์๋ณด๋ค ํจ๊ป ๋ฐฐ์ฐ๋ ๊ฒ ํจ์ฌ ๋นจ๋ผ. ๋์ค์ฝ๋, ํ ๋ ๊ทธ๋จ์ ์ฐธ์ฌํด๋ด!
5. ์ค์ ๊ฒฝํ
์ด๋ก ๋ง์ผ๋ก๋ ๋ถ์กฑํด. ์์ก์ผ๋ก๋ผ๋ ์ง์ ํด๋ณด๋ ๊ฒ ์ค์ํด!
์ ๋์ฑ ํ์ ๋จ์ํ ํฌ์ ์๋จ์ ๋์ด์, ๊ธ์ต์ ๋ฏธ๋๋ฅผ ๋ง๋ค์ด๊ฐ๋ ํ์ ์ด์ผ. ์ค์ํ๋ ๊ธฐ๊ด ์์ด๋ ๋๊ตฌ๋ ์์ฅ ์กฐ์ฑ์๊ฐ ๋ ์ ์๊ณ , ์ ์ธ๊ณ ๋๊ตฌ์๋ ๊ฑฐ๋ํ ์ ์์ด. ์ ๋ง ๋ฉ์ง์ง ์์? ๐
๊ฐ๋ฐ์๋ผ๋ฉด ์ด ๊ธฐ์ ์ ํ์ฉํด์ ์๋ก์ด ํ๋กํ ์ฝ์ ๋ง๋ค ์ ์๊ณ , ํฌ์์๋ผ๋ฉด ์ ํต ๊ธ์ต์์๋ ๋ถ๊ฐ๋ฅํ๋ ์์ต ๊ธฐํ๋ฅผ ์ก์ ์ ์์ด. ๋ฌผ๋ก ๋ฆฌ์คํฌ๋ ์์ง๋ง, ์ ๋๋ก ์ดํดํ๊ณ ์ ๊ทผํ๋ค๋ฉด ์ถฉ๋ถํ ๊ด๋ฆฌ ๊ฐ๋ฅํด! ๐ช
์์ผ๋ก DeFi๋ ๋์ฑ ๋ฐ์ ํ ๊ฑฐ์ผ. Layer 2์ ํ์ฐ, ํฌ๋ก์ค์ฒด์ธ ๊ธฐ์ ์ ์ฑ์, ๊ท์ ์ ๋ช ํํ ๋ฑ์ด ์ด๋ฃจ์ด์ง๋ฉด ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฐธ์ฌํ๊ฒ ๋ ๊ฑฐ๊ณ , ๊ทธ๋งํผ ๊ธฐํ๋ ๋ง์์ง ๊ฑฐ์ผ. ๐
์ด ๊ธ์ด ์ ๋์ฑ ํ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋์๊ธธ ๋ฐ๋ผ! ๊ถ๊ธํ ์ ์ด ์๊ฑฐ๋ ๋ ๊น์ด ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด, ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ๊ฑฐ๋ ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ํจ๊ป ๋ฐฐ์ฐ๊ณ ์ฑ์ฅํ์! ๐ฑ
Happy DeFi-ing! ๐
์ ๋์ฑ ํ์ DeFi ์ํ๊ณ์ ํต์ฌ ์ธํ๋ผ์ผ. ๋จ์ํด ๋ณด์ด์ง๋ง ๊ทธ ์์๋ ์ ๊ตํ ์ํ, ๊ฒฝ์ ํ, ๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฒฐํฉ๋์ด ์์ด.
ํต์ฌ ์์ฝ:
๐น ์๋ ์๋ฆฌ: AMM ์๊ณ ๋ฆฌ์ฆ(x ร y = k)์ผ๋ก ์๋ํ๋ ํ ํฐ ๊ตํ
๐น ์์ต ๊ตฌ์กฐ: ๊ฑฐ๋ ์์๋ฃ๋ฅผ LP๋ค์ด ์ง๋ถ ๋น์จ๋๋ก ๋ถ๋ฐฐ
๐น ์ฃผ์ ๋ฆฌ์คํฌ: ๋น์๊ตฌ์ ์์ค, ์ค๋งํธ ์ปจํธ๋ํธ ๋ฒ๊ทธ, ๋ฌ๊ทธํ
๐น ๋ฐ์ ๋ฐฉํฅ: Concentrated Liquidity, ํฌ๋ก์ค์ฒด์ธ, ๋์ ์์๋ฃ
๐น ๊ฐ๋ฐ ๋๊ตฌ: Hardhat, Solidity, Ethers.js, OpenZeppelin
๊ธฐ์ตํด์ผ ํ ๊ฒ๋ค: ๐ฏ
1. ํญ์ DYOR (Do Your Own Research)
๋จ์ ๋ง๋ง ๋ฏฟ์ง ๋ง๊ณ ์ง์ ์กฐ์ฌํ๊ณ ์ดํดํด!
2. ๋ฆฌ์คํฌ ๊ด๋ฆฌ๊ฐ ์ต์ฐ์
๋์ ์์ต๋ฅ ์ ํํน๋์ง ๋ง๊ณ , ์์ด๋ ๊ด์ฐฎ์ ๊ธ์ก๋ง ํฌ์ํด.
3. ์ง์์ ์ธ ํ์ต
DeFi๋ ๋น ๋ฅด๊ฒ ์งํํด. ๊ณ์ ๊ณต๋ถํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ํด!
4. ์ปค๋ฎค๋ํฐ ์ฐธ์ฌ
ํผ์๋ณด๋ค ํจ๊ป ๋ฐฐ์ฐ๋ ๊ฒ ํจ์ฌ ๋นจ๋ผ. ๋์ค์ฝ๋, ํ ๋ ๊ทธ๋จ์ ์ฐธ์ฌํด๋ด!
5. ์ค์ ๊ฒฝํ
์ด๋ก ๋ง์ผ๋ก๋ ๋ถ์กฑํด. ์์ก์ผ๋ก๋ผ๋ ์ง์ ํด๋ณด๋ ๊ฒ ์ค์ํด!
์ ๋์ฑ ํ์ ๋จ์ํ ํฌ์ ์๋จ์ ๋์ด์, ๊ธ์ต์ ๋ฏธ๋๋ฅผ ๋ง๋ค์ด๊ฐ๋ ํ์ ์ด์ผ. ์ค์ํ๋ ๊ธฐ๊ด ์์ด๋ ๋๊ตฌ๋ ์์ฅ ์กฐ์ฑ์๊ฐ ๋ ์ ์๊ณ , ์ ์ธ๊ณ ๋๊ตฌ์๋ ๊ฑฐ๋ํ ์ ์์ด. ์ ๋ง ๋ฉ์ง์ง ์์? ๐
๊ฐ๋ฐ์๋ผ๋ฉด ์ด ๊ธฐ์ ์ ํ์ฉํด์ ์๋ก์ด ํ๋กํ ์ฝ์ ๋ง๋ค ์ ์๊ณ , ํฌ์์๋ผ๋ฉด ์ ํต ๊ธ์ต์์๋ ๋ถ๊ฐ๋ฅํ๋ ์์ต ๊ธฐํ๋ฅผ ์ก์ ์ ์์ด. ๋ฌผ๋ก ๋ฆฌ์คํฌ๋ ์์ง๋ง, ์ ๋๋ก ์ดํดํ๊ณ ์ ๊ทผํ๋ค๋ฉด ์ถฉ๋ถํ ๊ด๋ฆฌ ๊ฐ๋ฅํด! ๐ช
์์ผ๋ก DeFi๋ ๋์ฑ ๋ฐ์ ํ ๊ฑฐ์ผ. Layer 2์ ํ์ฐ, ํฌ๋ก์ค์ฒด์ธ ๊ธฐ์ ์ ์ฑ์, ๊ท์ ์ ๋ช ํํ ๋ฑ์ด ์ด๋ฃจ์ด์ง๋ฉด ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฐธ์ฌํ๊ฒ ๋ ๊ฑฐ๊ณ , ๊ทธ๋งํผ ๊ธฐํ๋ ๋ง์์ง ๊ฑฐ์ผ. ๐
์ด ๊ธ์ด ์ ๋์ฑ ํ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋์๊ธธ ๋ฐ๋ผ! ๊ถ๊ธํ ์ ์ด ์๊ฑฐ๋ ๋ ๊น์ด ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด, ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ๊ฑฐ๋ ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ํจ๊ป ๋ฐฐ์ฐ๊ณ ์ฑ์ฅํ์! ๐ฑ
Happy DeFi-ing! ๐
๐ Keep Building, Keep Learning! ๐
๋ธ๋ก์ฒด์ธ์ ์ธ๊ณ๋ ๋ฌดํํด. ์ค๋ ๋ฐฐ์ด ์ง์์ ๋ฐํ์ผ๋ก
๋ด์ผ์ ํ์ ์ ๋ง๋ค์ด๊ฐ์! ๐
๋ด์ผ์ ํ์ ์ ๋ง๋ค์ด๊ฐ์! ๐
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
๋๊ธ์ ๋ถ๋ฌ์ค๋ ์ค์
๋๋ค.
๋๊ธ์ ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค. ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํ๊ณ ๋ค์ ์๋ํด ์ฃผ์ธ์.
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.