ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐ŸงŸ Level 2: The DNA Blueprints & The Zombie Army (Solidity Quest)
Dev.toDev.to
Backend

Struct์™€ Array๋ฅผ ํ™œ์šฉํ•œ Solidity ๊ธฐ๋ฐ˜ Zombie ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์„ค๊ณ„

๐ŸงŸ Level 2: The DNA Blueprints & The Zombie Army (Solidity Quest)

Sudip2026๋…„ 5์›” 10์ผ3๋ถ„beginner

Context

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋‚ด ๊ฐœ๋ณ„ ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ €์žฅ ๊ตฌ์กฐ ํ•„์š”. ๋‹จ์ˆœ ๋ณ€์ˆ˜ ๋‚˜์—ด ๋ฐฉ์‹์œผ๋กœ๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง๊ณผ ๋Œ€๊ทœ๋ชจ ๊ฐœ์ฒด ๊ด€๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ•œ๊ณ„ ์กด์žฌ.

Technical Solution

  • Struct ๋„์ž…์„ ํ†ตํ•œ Zombie ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ(name, dna) ๊ทธ๋ฃนํ™” ๋ฐ ๋ฐ์ดํ„ฐ ์‘์ง‘๋„ ํ–ฅ์ƒ
  • Dynamic Array(Zombie[]) ์„ค๊ณ„๋ฅผ ํ†ตํ•œ ๊ฐ€๋ณ€์ ์ธ ๊ฐœ์ฒด ์ˆ˜ ์ˆ˜์šฉ ๋ฐ ID ๊ธฐ๋ฐ˜์˜ ์ธ๋ฑ์‹ฑ ๊ตฌ์กฐ ํ™•๋ณด
  • State Variable๋ฅผ ํ™œ์šฉํ•œ dnaDigits(16์ž๋ฆฌ) ์ƒ์ˆ˜ ์ •์˜๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฃฐ ๊ฐ•์ œ
  • Public ๊ฐ€์‹œ์„ฑ ์„ค์ •์„ ํ†ตํ•œ ๋ธ”๋ก์ฒด์ธ ์ƒ์˜ ๋ฐ์ดํ„ฐ ํˆฌ๋ช…์„ฑ ๋ฐ ์™ธ๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
  • dnaModulus ๊ณ„์‚ฐ์‹์„ ํ†ตํ•œ DNA ๊ฐ’์˜ ๋ฒ”์œ„ ์ œํ•œ ๋ฐ ์ˆ˜ํ•™์  ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ •

- Solidity Struct๋ฅผ ํ™œ์šฉํ•ด ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ ํ•„๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ๋ฌถ์–ด ๊ฐ€๋…์„ฑ๊ณผ ๊ด€๋ฆฌ ํšจ์œจ์„ ๋†’์˜€๋Š”์ง€ ํ™•์ธ - Dynamic Array ์‚ฌ์šฉ ์‹œ ๊ฐ€์Šค ๋น„์šฉ(Gas Cost) ์ฆ๊ฐ€ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํŒจํ„ด ์ตœ์ ํ™” ๊ฒ€ํ†  - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ํ•ต์‹ฌ ์ œ์•ฝ ์กฐ๊ฑด์€ State Variable๋กœ ๋ช…์‹œํ•˜์—ฌ ์ปจํŠธ๋ž™ํŠธ ์ „์ฒด์˜ ์ผ๊ด€์„ฑ ์œ ์ง€

์›๋ฌธ ์ฝ๊ธฐ