์ด๋”๋ฆฌ์›€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ถ„์„ ๋ฐ ๋Œ€์‘๋ฐฉ์•ˆ์— ๋Œ€ํ•œ ์—ฐ๊ตฌ

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๋ž€? (velog.io)

 

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 ์ฝ”๋“œ ๋ ˆ๋ฒจ ์ทจ์•ฝ์  ๋ถ„์„ ํ•„์š”์„ฑ

 

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋‹ค์ˆ˜์ž„.
์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์–ด๋А์ •๋„ ๊ฒ€์ฆ๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ์—๋„ ํŽธํ•˜๋‹ค๋Š” ์žฅ์ ์ด์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ์›๋ณธ์ฝ”๋“œ์— ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ๋ชจ๋“ ํ”„๋กœ์ ํŠธ์— ๊ฐ™์€ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ.
์Šค๋งˆํŠธ์ปจํŠธ๋ž™ํŠธ์— ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ํ•œ๋ฒˆ ๋ฐฐํฌ๊ฐ€ ๋˜๋ฉด ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ ์œผ๋กœ์ธํ•ด ํ•ด๋‹น ์ปจํŠธ๋ž™ํŠธ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ• ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ.
2018๋…„ ์‹ฑ๊ฐ€ํฌ๋ฅด ๊ตญ๋ฆฝ๋Œ€ํ•™๊ต์™€ ๋Ÿฐ๋˜๋Œ€ํ•™๊ต์˜ ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ์—์„œ ์•ฝ 34,000๊ฐœ ์ด์ƒ์˜ ์ทจ์•ฝํ•œ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Œ.
ZEUS๋ผ๋Š” ๋…ผ๋ฌธ์— ๋”ฐ๋ฅด๋ฉด, ์•ฝ 2๋งŒ2400๊ฐœ์˜ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ฝ”๋“œ ์ค‘ ์•ฝ95%์— ๋‹ฌํ•˜๋Š” ์Šค๋งˆํŠธ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ทจ์•ฝ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.
 
๋ณธ ์ ˆ์—์„œ๋Š” DASP TOP10์— ๋ช…์‹œ๋œ ๋Œ€ํ‘œ์ ์ธ ์Šค๋งˆํŠธ์ปจํŠธ๋ž™ํŠธ ์ทจ์•ฝ์ ์„ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ๋ถ„์„ํ•˜์˜€์Œ.
 
 
 
 
3-2 Re-entrancy
 
 
์žฌ์ง„์ž… ์ทจ์•ฝ์ ์€ ์ปจํŠธ๋ž™ํŠธ์˜ ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „ ๋™์ผํ•œ ํ•จ์ˆ˜๊ฐ€ ๋‹ค์‹œ ํ˜ธ์ถœ๋˜๋Š” ์ทจ์•ฝ์ ์œผ๋กœ ์žฌ๊ท€ ํ˜ธ
์ถœ๊ณผ ๋™์ผํ•จ.
 
์žฌ๊ท€ํ˜ธ์ถœ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๊ทธ ์ž์ฒด๋กœ๋Š” ์ทจ์•ฝ์ ์ด ๋  ์ˆ˜ ์—†์Œ.
 
ํ•˜์ง€๋งŒ ์žฌ์ง„์ž… ์ทจ์•ฝ์ ์€ ์˜๋„ํ•˜์ง€ ์•Š์€ ์žฌ๊ท€ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๊ฐ€ ๋จ.
์‹ค์ œ๋กœ DAO Attack์— ์‚ฌ์šฉ๋œ ์ทจ์•ฝ์ ์œผ๋กœ ๊ณต๊ฒฉ์ž๋Š” ์ด ์ทจ์•ฝ์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋ž™ํŠธ์—์„œ 6์ฒœ๋งŒ ๋‹ฌ๋Ÿฌ ์ƒ๋‹น์˜ ์ด๋” ํ† ํฐ์„ ํƒˆ์ทจํ•˜์˜€์Œ.
 
 
 
*์žฌ์ง„์ž… ์ทจ์•ฝ์ 
 

Reentrancy๋ž€?

A ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ B ์ปจํŠธ๋ž™ํŠธ๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ B์—์„œ ๋‹ค์‹œ A๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ด๋”๋ฆฌ์›€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ๊ทธ๋“ค์ด ๋‹ค๋ฅธ ์™ธ๋ถ€ ์ปจํŠธ๋ž™ํŠธ์˜ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์Šค๋งˆํŠธ์ปจํŠธ๋ž™ํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋”๋ฆฌ์›€(eth)์„ ๋‹ค๋ฃจ๋ฉฐ ์™ธ๋ถ€ ์œ ์ €์˜ ์ง€๊ฐ‘์œผ๋กœ ์ด๋”๋ฆฌ์›€์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋™์ž‘์€ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ์™ธ๋ถ€ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ์™ธ๋ถ€ ํ˜ธ์ถœ์€ ๊ณต๊ฒฉ์ž์—๊ฒŒ hijack ๋‹นํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

๊ณต๊ฒฉ์ž๋Š” ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ํ”ผ๊ณต๊ฒฉ ์ปจํŠธ๋ž™ํŠธ๋กœ ํ•˜์—ฌ๊ธˆ ์™ธ๋ถ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๊ฐ•์ œํ•˜๊ณ (fallback ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•จ์œผ๋กœ์จ), ์ด๋Ÿฐ ์™ธ๋ถ€ ์ฝ”๋“œ์—์„œ๋Š” ํ”ผ๊ณต๊ฒฉ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ๋” ํ•˜๋Š”๋ฐ ์ด๋ฅผ Reentrancy Attack, ์žฌ์ง„์ž… ๊ณต๊ฒฉ์ด๋ผ ํ•œ๋‹ค. 

 
 
 
 
 
[ ์ฐธ๊ณ  ์ž๋ฃŒ ]
 
 
 
 

The DAO ํ•ดํ‚น ์‚ฌ๊ฑด(2016) ๋ถ„์„. ๋ฐฐ๊ฒฝ | by Seungmin Jeon | Medium

 
 
 
๊ทธ๋ฆผ 1์€ ์žฌ์ง„์ž… ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋‘๋ฒˆ์งธ require๋ฌธ ์ดํ•˜ ์ฝ”๋“œ์—์„œ ์ด๋”๊ฐ€ ์ปจํŠธ๋ž™ํŠธ ์™ธ๋ถ€๋กœ ์ „์†ก๋œ ํ›„ ์ƒํƒœ๋ณ€์ˆ˜๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ์ทจ์•ฝ์ ์ด ์กด์žฌํ•จ.
 
๋Œ€์‘ ๋ฐฉ์•ˆ์œผ๋กœ๋Š” ์†”๋ฆฌ๋””ํ‹ฐ ๊ณต์‹ ๋ฌธ์„œ์— ์ž‘์„ฑ๋œ ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์ธ Checks-Effects-Interaction Pattern์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ ๋‚ด์šฉ์€๋‹ค์Œ๊ณผ๊ฐ™์Œ.
 
์ปจํŠธ๋ž™ํŠธ์— ์ž‘์„ฑ๋œ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์‚ฌ๋žŒ, ๋ฒ”์œ„๋‚ด์ธ์ˆ˜์ธ์ง€, ์ถฉ๋ถ„ํ•œ ์ด๋”๋ฅผ ์ „์†กํ•˜์˜€๋Š”์ง€๋“ฑ์—๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•จ.
๋‹ค์Œ์œผ๋กœ ๋ชจ๋“  ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ํ˜„์žฌ ์ปจํŠธ๋ž™ํŠธ์˜ ์ƒํƒœ ๋ณ€์ˆ˜์— ์˜ํ–ฅ์„ ์ฃผ๊ณ ,๋‹ค๋ฅธ ์ปจํŠธ๋ž™ํŠธ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผํ•จ.
 
 
 
[ ์ฐธ๊ณ  ์ž๋ฃŒ ]
 
 
 
 
 
 
3-3 Access Control
 
Solidity์—์„œ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋Š” ์ ‘๊ทผ์ž(public, private, internal, external)๊ฐ€์žˆ์Œ. 
ํ•ด๋‹น ์ง€์ •ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์™ธ๋ถ€์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๋‹ค๋ฅธ ์ปจํŠธ๋ž™ํŠธ์— ์˜ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ๋งŒ ๋˜๋Š” ์™ธ๋ถ€์ ์œผ๋กœ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•จ.

ํ•จ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” public์œผ๋กœ ์ง€์ •๋˜์–ด ์žˆ์Œ. 
 
์ ‘๊ทผ์ œ์–ด ์ทจ์•ฝ์ ์€, ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ํ•จ์ˆ˜์™€ ์ฝ”๋“œ์— ํ•จ์ˆ˜์˜ ์ ‘๊ทผ์ž๋ฅผ ๋ฌด์‹œํ•จ์œผ๋กœ์จ, ํ—ˆ์šฉ๋˜์ง€์•Š์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•จ์œผ๋กœ์จ ๋ฐœ์ƒํ•จ.
 

 


 
 
๊ทธ๋ฆผ2 ์—์„œ ํ•จ์ˆ˜A, B์™€ ๊ฐ™์ด ์ ‘๊ทผ์ž๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ public์œผ๋กœ ์„ค์ •๋จ. 
 
public์œผ๋กœ ์„ค์ •๋œ ํ•จ์ˆ˜๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ๋ฐฐํฌ๋œ ์ปจํŠธ๋ž™ํŠธ์—์„œ ํ•ด๋‹นํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์†Œ์œ ์ž๋ฅผ ๊ณต๊ฒฉ์ž์˜ ์ฃผ์†Œ๋กœ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ.
 
๋Œ€์‘๋ฐฉ์•ˆ์œผ๋กœ๋Š” ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ๋ชจ๋“ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ ‘๊ทผ์ž๋ฅผ ํ•ญ์ƒ ๋ช…์‹œํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์˜ˆ๋ฐฉ์ด ๊ฐ€๋Šฅํ•จ. 
 
Solidity ์ตœ์‹ ๋ฒ„์ „์—์„œ๋Š” ์ง€์ •์ž๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ์ค‘๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•จ.
 
 
 
 
 
3-4 Denial of Service
 
 

์ด๋”๋ฆฌ์›€์˜ ๋ธ”๋ก์€ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” Gas ์–‘์˜ ์ œํ•œ์ด ์žˆ์Œ.

Gas Limit์— ๋„๋‹ฌํ–ˆ๊ฑฐ๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ throw๋ฅผ ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ณ„์•ฝ์ด ๋˜์–ด๋ฒ„๋ฆฌ๋Š” ์ทจ์•ฝ์ ์ž„.

Gas Limit๋ฅผ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰์ด ํ•œ ์ƒํ™ฉ์œผ๋กœ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜๊ณ , ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์˜์›ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.

๊ทธ๋ฆผ 3์˜ ์ฝ”๋“œ๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ๋ฐฐ์—ด์— ์ธ์ž๋ฅผ ๋ฌด์ˆ˜ํžˆ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์–ด ๋ธ”๋ก์˜ Gas Limit์„ ์ดˆ๊ณผ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์กด์žฌํ•จ.

 
 
 
 
๊ทธ๋ฆผ 3์˜ ์ฝ”๋“œ๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ๋ฐฐ์—ด์— ์ธ์ž๋ฅผ ๋ฌด์ˆ˜ํžˆ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์–ด ๋ธ”๋ก์˜ Gas Limit์„ ์ดˆ๊ณผ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์กด์žฌํ•จ.
 
๋Œ€์‘ ๋ฐฉ์•ˆ์œผ๋กœ๋Š” ์ปจํŠธ๋ž™ํŠธ์— ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ฌดํ•œํžˆ ์ปค์งˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฐฐ์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ „์ฒด ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์— ๊ฑธ์ณ ๋ฐ˜๋ณตํ•˜๋Š” ํ˜•ํƒœ์˜ ์ž‘์—…์„ ์ง€์–‘ํ•ด์•ผ ํ•จ.
 
์•Œ ์ˆ˜ ์—†๋Š” ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์—์„œ ์ด๋”๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ๊ฐ ํŠธ๋žœ์žญ์…˜์— ํ•„์š”ํ•œ ๊ฐ€์Šค๋ฅผ ์ค„์—ฌ์„œ ๋ธ”๋ก ๊ฐ€์Šค ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•  ์œ„ํ—˜์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.
 
 
 

๐Ÿ“Œ๊ฒฐ๋ก 

 
 

๋ณธ ๋…ผ๋ฌธ์—์„œ๋Š” ์ด๋”๋ฆฌ์›€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋ณด์•ˆ ์ทจ์•ฝ์ ๊ณผ ์ทจ์•ฝ์ ๋ณ„ ๋Œ€์‘ ๋ฐฉ์•ˆ์„ ๋ถ„์„ํ•˜์˜€์Œ.

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๋ถ„์„๊ณผ ๋Œ€์‘ ๋ฐฉ์•ˆ์— ๋งž์ถฐ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์ƒ ๊ถŒ์žฅ๋จ.

์ตœ๊ทผ์— ๋ธ”๋ก์ฒด์ธ ๊ธฐ๋ฐ˜์˜ DID, NFT ๋“ฑ ๊ธฐ์ˆ ๋“ค์ด ๊ฐœ๋ฐœ๋˜์–ด ์„œ๋น„์Šคํ™” ๋˜์–ด๊ฐ€๊ณ  ์žˆ๊ณ , ํŠนํžˆ NFT์˜ ๊ฒฝ์šฐ ์ด๋”๋ฆฌ์›€ ํ‘œ์ค€์— ๋”ฐ๋ผ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๊ณ  ์žˆ์Œ.

์ด์—, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋Œ€์‘ ๋ฐฉ์•ˆ์— ๋Œ€ํ•œ ์ตœ์‹ ํ™”๋œ ์ง„๋‹จ๋„๊ตฌ์™€ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ง€์†์ ์œผ๋กœ ์—ฐ๊ตฌํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.

 

๐Ÿ“Œ๋А๋‚€์ 

 

์ด๋”๋ฆฌ์›€์ด๋‚˜ ๋ธ”๋ก์ฒด์ธ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์–•์ง€๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ง€์‹๋“ค์„ ๋™์›ํ•˜์—ฌ ํ•ด๋‹น ๋…ผ๋ฌธ์„ ์ฝ๊ณ  ์ดํ•ดํ•˜๋ฉฐ ์ฐพ์•„๋ณด๊ณ  ๋ถ„์„ํ•ด๋ดค๋‹ค.

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

 

 

๐Ÿ“Œ์ฐธ๊ณ  ๋…ผ๋ฌธ

์ด๋”๋ฆฌ์›€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ถ„์„ ๋ฐ ๋Œ€์‘๋ฐฉ์•ˆ์— ๋Œ€ํ•œ ์—ฐ๊ตฌ.pdf
0.29MB