2024. 5. 10. 18:49ใetc_study/๋ ผ๋ฌธ ๋ถ์
๐๋ ผ๋ฌธ ์ ์ ์ด์
ํ์ ๊ธ์ต๊ถ์ ๊ด์ฌ์ด ๋ง์์ ๋ธ๋ก์ฒด์ธ๊ณผ ์น3.0๊ด๋ จํ ๋ด์ฉ๋ค์ ์์ฃผ ๋ณด๋๋ฐ ์ด๋๋ฆฌ์๊ณผ ์ค๋งํธ ์ปจํธ๋ํธ๊ฐ ํด๋น ๋ด์ฉ๋ค๊ณผ ๋ฐ์ ํ ๊ด๋ จ์ด ์๊ณ , ๊ทธ์ ๋ํ ๋ณด์ ์ทจ์ฝ์ ๋ถ์ ๋ฐ ๋์ ๋ฐฉ์์ ๋ํ ์ฐ๊ตฌ์ ๊ด์ฌ์ด ์๊ธฐ๋๋ฌธ์ ํด๋น ๋ ผ๋ฌธ์ ํตํด์
๋ชฐ๋๋ ๋ด์ฉ์ ๋ฐฐ์๋ณผ ๊ธฐํ๋ผ๊ณ ์ฌ๊ฒจ์ ์ ์ ํ๊ฒ๋์๋ค.
๐์๋ก
๋ธ๋ก์ฒด์ธ์ด๋?
๋ธ๋ก์ฒด์ธ์ ํ์ฌ ๋ง์ ๋ถ์ผ์์ ๊ด์ฌ์ ๋ถ๋ฌ์ผ์ผํค๋ฉฐ ์ฐจ์ธ๋ ์ธํฐ๋ท์ ์ด๋ ํ์ ์ ์ธ ๊ธฐ์ ์ค ํ๋๋ก๊ผฝํ๊ณ ์์.
๋ธ๋ก์ฒด์ธ์ ๋ค์์ ์จ๋ผ์ธ ๊ฑฐ๋๊ธฐ๋ก์ ํ๊ณณ์ ๋ฌถ์ด ํ๋์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ตฌ์ฑํ๊ณ ํด์๊ฐ์ ์ด์ฉํด ๋ธ๋ก๋ค์ ์ฒด์ธ ์ฒ๋ผ์ฐ๊ฒฐํ๋ค P2P ๋ฐฉ์์ผ๋ก์ฌ๋ฌ ์ปดํจํฐ์ ๋ถ์ฐ์ ์ฅ·๊ด๋ฆฌํ๋ ๊ธฐ์ ๋ก, ์ค์ ์ง์ค์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ๊ณผ๋ ๋ฐ๋๋๋ ๊ฐ๋ ์ด๋ค.
์ค๋งํธ ์ปจํธ๋ํธ๋?
์ค๋งํธ ์ปจํธ๋ํธ๋ ๋ธ๋ก์ฒด์ธ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ ๋น์ฌ์ ๊ฐ์ ๊ณ์ฝ ์กฐ๊ฑด์ ์ฝ๋๋ก ์์ฑํ์ฌ ํด๋น ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ๊ณ์ฝ์ ์๋์ผ๋ก ์ดํํ๋ ๋์งํธ ๊ณ์ฝ์
์ค๋งํธ ์ปจํธ๋ํธ์๋ ํธ๋์ญ์ ์ ๋ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ ๊ธฐ์กด ๊ณ์ฝ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ 3์๊ฐ ๊ด์ฌํ์ง ์๊ณ ์ํธํ๋ ๊ฑฐ๋๋ฅผ ์ฐธ์ฌ์ ๊ฐ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ ๋ขฐ์ฑ๊ณผ ํฌ๋ช ์ฑ์ด ๋ณด์ฅ๋๋ค๋ ์ฅ์ ์ด ์์.
์ค๋งํธ ์ปจํธ๋ํธ์ ์ทจ์ฝ์
์ค๋งํธ ์ปจํธ๋ํธ๋ ํ ๋ฒ ๋ธ๋ก์ฒด์ธ์ ๋ฐฐํฌ๋๋ฉด ์์ ํ ์ ์์ด ์ด๋ฅผ ์ ์ฉํ ์ ์์ ์ธ ๊ณต๊ฒฉ์ด ๋ฐ์ํ๊ณ ์๋๋ฐ ๋ํ์ ์ผ๋ก2016๋ ๋ฐ์ํ ๋๋ค์ค(TheDAO) ์ฌ๊ฑด์.
์ด๋์ค๋งํธ ์ปจํธ๋ํธ ์ฝ๋์์ ๋ณด์ ์ทจ์ฝ์ ์ด ์๊น. ํด๋น ์ฌ๊ฑด์ ์ด๋ฅผ ์ด์ฉํด์ ์ด๋ฃจ์ด์ง.
๐๋ณธ๋ก
II. ์ค๋งํธ ์ปจํธ๋ํธ ๊ฐ์
2-1 ์ค๋งํธ ์ปจํธ๋ํธ
์ค๋งํธ ์ปจํธ๋ํธ๋ ์์ฒด ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ ์ฝ๋๋ก์ ๋ธ๋ก์ฒด์ธ์ ๋ฐฐํฌ๋์ด ์ ๋ขฐํ ์ ์๋ ๋๋น์ฌ์๊ฐ ๊ณ์ฝ์ ์๋์ผ๋ก ์ดํํ๋๋ฐ ์ฌ์ฉํจ.
์ด๋๋ฆฌ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ๋ง ์์ (Turing Complete) ๋ธ๋ก์ฒด์ธ ํ๋ซํผ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์์ ๊ถ, ํธ๋์ญ์ ํ์ ๋ฐ ์ํ ์ ํ๊ธฐ๋ฅ์ ๋ํ ์์ฒด ์์ ๊ท์น์ ์ฌ์ฉํ์ฌ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉํจ.
2-2 ์ค๋งํธ ์ปจํธ๋ํธ ๋์๋ฐฉ์
์ค๋งํธ ์ปจํธ๋ํธ๋ก ๊ตฌํํ๊ณ ์ ํ๋ ๋ด์ฉ์ ์๋ฆฌ๋ํฐ ๋ฑ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํํจ.
ํด๋น ์ฝ๋๋ฅผ ์ปดํ์ผํ์ฌ ๋คํธ์ํฌ์ ๋ฐฐํฌํ ์ ์๋๋ก ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ํธ๋์ญ์ ์๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ด์ ์ฑ๊ตด์๊ฐ ํด๋น ํธ๋์ญ์ ์ด ๋ด๊ธด ๋ธ๋ก์ ์ฑ๊ตดํจ์ผ๋ก์จ ํธ๋์ญ์ ์ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ๊ธฐ๋ก๋จ.
์ฐธ์ฌ์๋ABI(Application Binary Interface)๋ฅผ ํตํด ๋ฐฐํฌ๋ ์ค๋งํธ์ปจํธ๋ํธ ์ฝ๋์ ์ ์๋ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ์์ฑํ๊ณ , ํธ๋์ญ์ ์ ๋ด์ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ์ ๋ฌํจ.
์ฑ๊ตด์๋ ์ฐธ์ฌ์์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ฐฐํฌ๋ ์ค๋งํธ ์ปจํธ๋ํธ ์ฝ๋์ ๋ฐ๋ผ EVM(EthereumVirtual Machine) ์์์ ์คํํ๋ฉฐ, ์ด๋ ์์๋ฃ์ธ ๊ฐ์ค(gas)๊ฐ ๊ณ์ฐ๋๋ฉด์ ๋ธ๋ก์ ์ถ๊ฐ๋๊ณ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ ํจํ ๊ฒฝ์ฐ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์๋จ.
* Solidity ๋?
Solidity๋ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์ปจํธ๋ํธ ๊ธฐ๋ฐ์ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ปํ๋ค.
*ABI๋?
ABI๋ ๋๊ฐ์ ๋ฐ์ด๋๋ฆฌ ํ๋ก๊ทธ๋จ ๋ชจ๋ ์ฌ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๋งํ๋๋ฐ, ๊ธฐ๊ณ ์์ค, ์ด์ง๊ฐ ์์ค์์ ์ธํฐํ์ด์ค๋ฅผ ๋ปํ๋ค.
์ด์ง์ Binary๋ก 0๊ณผ 1์ ๋ปํ๋๋ฐ ์ปดํจํฐ์์ ๊ฐ์ฅ low-level์ ๋ํ๋ธ๋ค. ABI๋ ์ด๋ ๊ฒ ๋ฐ์ด๋๋ฆฌ ์์ค์์์ ์ธํฐํ์ด์ค๋ฅด ๋ปํ๋ค.
์ ์ ์์์ ๋งํ๋ ๋ชจ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ Operating System๊ณผ ์ฌ์ฉ์์ ์ํด์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํ๋ค.
์๋์ฐ ํ๊ฒฝ์์ ๋ด ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณผ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ABI๊ฐ ํธํ๋์ด์ผ ํ๋ก๊ทธ๋จ์ ๋๋ฆด ์ ์๋ค. ๋งฅ ํ๊ฒฝ์์ Window ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋ฆด ์ ์๋ ๊ฒ์ด ABI๊ฐ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
[ ์ฐธ๊ณ ์๋ฃ ]
ABI๋?
ABI์ ์์ ์ฑ์ ๊ณ์ํด์ ์ผ๋ํด ๋์ด์ผ ํ๋ค. ABI์ ์์ ์ฑ์ ์ ์งํ๋ค๋ ๊ฒ์ ํจ์์ ์ธํฐํ์ด์ค(return type, number, types, order of arguements), ๋ฐ์ดํฐ ํ์ ์ ์, ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฑ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธ
velog.io
์๋ฆฌ๋ํฐ - ํด์๋ท (hash.kr)
์๋ฆฌ๋ํฐ - ํด์๋ท
์๋ฆฌ๋ํฐ(Solidity) ๋ก๊ณ ์๋ฆฌ๋ํฐ(Solidity) ๋ก๊ณ ์ ๊ธ์ ์๋ฆฌ๋ํฐ(Solidity)๋ ์ด๋๋ฆฌ์ ๋ฑ ๋ธ๋ก์ฒด์ธ ํ๋ซํผ์์ ์ค๋งํธ ๊ณ์ฝ ์์ฑ๊ณผ ๊ตฌํ์ ์ฌ์ฉ๋๋ ๊ณ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ์๋ฆฌ๋ํฐ๋ ์ด
wiki.hash.kr
II. ์ค๋งํธ ์ปจํธ๋ํธ ์ทจ์ฝ์ ๋ฐ ๋์๋ฐฉ์ ๋ถ์3-1 ์ฝ๋ ๋ ๋ฒจ ์ทจ์ฝ์ ๋ถ์ ํ์์ฑ
3-1 ์ฝ๋ ๋ ๋ฒจ ์ทจ์ฝ์ ๋ถ์ ํ์์ฑ
Reentrancy๋?
A ์ปจํธ๋ํธ๊ฐ ์คํ๋๋ฉฐ B ์ปจํธ๋ํธ๋ฅผ ํธ์ถํ์ ๋ B์์ ๋ค์ A๋ฅผ ํธ์ถํ๋ ๊ฒ์ผ๋ก, ์ด๋๋ฆฌ์ ์ค๋งํธ ์ปจํธ๋ํธ์ ํน์ง ์ค ํ๋๋ ๊ทธ๋ค์ด ๋ค๋ฅธ ์ธ๋ถ ์ปจํธ๋ํธ์ ์ฝ๋๋ฅผ ํธ์ถํ๊ณ ํ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ค๋งํธ์ปจํธ๋ํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋๋ฆฌ์(eth)์ ๋ค๋ฃจ๋ฉฐ ์ธ๋ถ ์ ์ ์ ์ง๊ฐ์ผ๋ก ์ด๋๋ฆฌ์์ ๋ณด๋ผ ์ ์๋ค.
์ด๋ฌํ ๋์์ ์ปจํธ๋ํธ๊ฐ ์ธ๋ถ ํธ์ถ์ ํ ์ ์์ด์ผ๋ง ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ ์ธ๋ถ ํธ์ถ์ ๊ณต๊ฒฉ์์๊ฒ hijack ๋นํ ๊ฐ๋ฅ์ฑ์ ๋ง๋ค์ด์ค๋ค.
๊ณต๊ฒฉ์๋ ์ด๋ฐ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ํผ๊ณต๊ฒฉ ์ปจํธ๋ํธ๋ก ํ์ฌ๊ธ ์ธ๋ถ ์ฝ๋๋ฅผ ์คํํ๋๋ก ๊ฐ์ ํ๊ณ (fallback ํจ์๋ฅผ ์ด์ฉํจ์ผ๋ก์จ), ์ด๋ฐ ์ธ๋ถ ์ฝ๋์์๋ ํผ๊ณต๊ฒฉ ์ปจํธ๋ํธ๋ฅผ ๋ค์ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๊ฒ๋ ํ๋๋ฐ ์ด๋ฅผ Reentrancy Attack, ์ฌ์ง์ ๊ณต๊ฒฉ์ด๋ผ ํ๋ค.
The DAO ํดํน ์ฌ๊ฑด(2016) ๋ถ์. ๋ฐฐ๊ฒฝ | by Seungmin Jeon | Medium

ํด๋น ์ง์ ํ๋ ํจ์๋ฅผ ์ฌ์ฉ์๊ฐ ์ธ๋ถ์ ์ผ๋ก ํธ์ถํ ์ ์๋์ง, ๋ค๋ฅธ ์ปจํธ๋ํธ์ ์ํด ๋ด๋ถ์ ์ผ๋ก๋ง ๋๋ ์ธ๋ถ์ ์ผ๋ก๋ง ํธ์ถํ ์ ์๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํจ.
ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ธ๋ถ์์ ํธ์ถํ ์ ์๋ public์ผ๋ก ์ง์ ๋์ด ์์.

์ด๋๋ฆฌ์์ ๋ธ๋ก์ ๋ด์ ์ ์๋ Gas ์์ ์ ํ์ด ์์.
Gas Limit์ ๋๋ฌํ๊ฑฐ๋ ์์์น ๋ชปํ throw๋ฅผ ์คํ์์ผฐ์ ๋ ์ฌ์ฉํ ์ ์๋ ๊ณ์ฝ์ด ๋์ด๋ฒ๋ฆฌ๋ ์ทจ์ฝ์ ์.
Gas Limit๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ํ์ด ํ ์ํฉ์ผ๋ก ์ปจํธ๋ํธ๊ฐ ์ด๊ธฐํ๊ฐ ๋๊ณ , ์ปจํธ๋ํธ๋ฅผ ์์ํ ์ฌ์ฉํ ์ ์์ ๊ฐ๋ฅ์ฑ์ด ์์.
๊ทธ๋ฆผ 3์ ์ฝ๋๋ ๊ณต๊ฒฉ์๊ฐ ์๋์ ์ผ๋ก ๋ฐฐ์ด์ ์ธ์๋ฅผ ๋ฌด์ํ ๋๋ฆด ์ ์์ด ๋ธ๋ก์ Gas Limit์ ์ด๊ณผ์ํฌ ์ ์๋ ์ทจ์ฝ์ ์ด ์กด์ฌํจ.

๐๊ฒฐ๋ก
๋ณธ ๋ ผ๋ฌธ์์๋ ์ด๋๋ฆฌ์ ์ค๋งํธ ์ปจํธ๋ํธ ๋ณด์ ์ทจ์ฝ์ ๊ณผ ์ทจ์ฝ์ ๋ณ ๋์ ๋ฐฉ์์ ๋ถ์ํ์์.
์ค๋งํธ ์ปจํธ๋ํธ ์ทจ์ฝ์ ์ ๋ํ ๋ถ์๊ณผ ๋์ ๋ฐฉ์์ ๋ง์ถฐ ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ณด์์ ๊ถ์ฅ๋จ.
์ต๊ทผ์ ๋ธ๋ก์ฒด์ธ ๊ธฐ๋ฐ์ DID, NFT ๋ฑ ๊ธฐ์ ๋ค์ด ๊ฐ๋ฐ๋์ด ์๋น์คํ ๋์ด๊ฐ๊ณ ์๊ณ , ํนํ NFT์ ๊ฒฝ์ฐ ์ด๋๋ฆฌ์ ํ์ค์ ๋ฐ๋ผ ์ค๋งํธ ์ปจํธ๋ํธ ์ฝ๋๊ฐ ์์ฑ๋๊ณ ์์.
์ด์, ์ค๋งํธ ์ปจํธ๋ํธ ๋ณด์ ์ทจ์ฝ์ ๋์ ๋ฐฉ์์ ๋ํ ์ต์ ํ๋ ์ง๋จ๋๊ตฌ์ ๊ฐ์ด๋๋ผ์ธ์ ์ง์์ ์ผ๋ก ์ฐ๊ตฌํ ํ์๊ฐ ์์.
๐๋๋์
์ด๋๋ฆฌ์์ด๋ ๋ธ๋ก์ฒด์ธ๊ณผ ๊ด๋ จํ์ฌ ์์ง๋ง ๊ฐ์ง๊ณ ์๋ ์ง์๋ค์ ๋์ํ์ฌ ํด๋น ๋ ผ๋ฌธ์ ์ฝ๊ณ ์ดํดํ๋ฉฐ ์ฐพ์๋ณด๊ณ ๋ถ์ํด๋ดค๋ค.
์ฌ์ง์ ์ทจ์ฝ์ , ์๋ฆฌํฐ๋ ์ธ์ด๋ฑ ์๋ก์ด ๋ด์ฉ๋ค์ ํ์ตํ๊ณ ํด๋น ์ทจ์ฝ์ ์ฌ๋ก์ ๋น๊ตํ๋ฉด์ ๋ด์ฉ์ ์ดํดํ๋ ๋ค์ ์์ํ๊ฒ ์ดํดํ ์ ์์๋ค. ํด๋น ์ฝ๋๋ฅผ ์๋ฒฝํ ์ดํดํ ์๋ ์์ง๋ง, ์ด๋ฌํ ๋ถ๋ถ์ด ์ค๋งํธ์ปจํธ๋ํธ์์ ์ฝ๊ฒ ๋ฐ์ํ ์ ์๋ ์ทจ์ฝ์ ์ด๋ฉฐ ์์ผ๋ก ๋ธ๋ก์ฒด์ธ์ด ๋ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋ ๊ฒ์ด๋ ๋งํผ ํด๋น ๋ฌธ์ ๋ฅผ ์ด๋ค ์์ผ๋ก ํด๊ฒฐํด๋๊ฐ์ผํ ์ง ํ์๊ฐ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ํฌํจํ์ฌ ์ฐ๊ตฌ๋ ํ์๊ฐ ์๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๐์ฐธ๊ณ ๋ ผ๋ฌธ