loom network์์ ์ ๊ณตํ๋ ํฌ๋ฆฝํ ์ข๋น. ์ด๋๋ฆฌ์ Dapp์ ๋ง๋๋๋ฐ ๊ธฐ๋ณธ์ด ๋๋ ์ธ์ด์ธ Solidity๋ฅผ ๊ฐ๋ฅด์ณ์ฃผ๋ ์ฝํ ์ธ ์ด๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ฒ์์ด๋ผ๋ ์น๊ตฌ๋ค์๊ฒ๋ ๊ถํ ์๊ฐ ์๋ค. (Solidity๋ฅผ ์ํด ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถ๋ฅผ ์์ํ๋ค๋ฉด javascirpt๋ฅผ ๋จผ์ ๊ณต๋ถํด๋ณด๊ธธ ์ถ์ฒํ๊ณ ์ถ๋ค.) ํ์ฌ lesson6 ๊น์ง ๋์์ผ๋ฉฐ, ์ถํ ๋ ์ถ๊ฐ๋ ์์ ์ด๋ผ๊ณ ํ๋ค. ํ๊ตญ์ด ๋ฒ์ญ๋ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ณต๋ถํ๊ธฐ์ ์ข์ ์ฝํ ์ธ ์ธ๋ฏ.
ํ์ง๋ง, ์ด๋๋ฆฌ์ ๊ธฐ๋ฐ ๊ฒ์์ ๋ง๋ ๋ค๊ณ ๋ ํ๋, ์ด๋ค ๋ฐฉ์์ ๊ฒ์์ด๊ณ , ์ด๋ค ์์คํ ์ ๊ฐ์ถฐ์ผํ๋์ง ๋๋ต์ ์ธ ์ค๋ช ์์ด ๋ฌด์์ ๋ฐ๋ผํ๋ฉด์ ๋ง๋๋ ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ์ฑํฐ๋ณ ์ง์์ฌํญ๋ง ๋ฐ๋ผ๊ฐ๋ค ๋ณด๋ฉด ์ด๊ฑธ ๋ด๊ฐ ์ํ๊ณ ์๋์ง, ์ด๊ฑธ ์ ๊ตฌํํด์ผํ๋์ง ๋์น๊ธฐ ์ฌ์ด ๊ฒ ๊ฐ๋ค. ์ฌ์ค ๋๋ ์ ์ฒด์ ์ผ๋ก ์ ๋ถ ์ดํดํ๊ฑด ์๋์ง๋งโฆ ์ด์ฐจํผ ์๋ํด๋ณด๋ฉฐ ๋ฐฐ์ฐ๋ ์ธ์ ์๋๊ฒ ๋๊ฐ.
ํ๋ฒ ๋ค์ cryptoZombie๋ฅผ ์ ์ฃผํํ๋ฉด์ ํฌ์คํ ๋ ํ๊ณ , ๋ด ๊ณต๋ถ๋ ์ข ๋ ์ฌํ ์ํค๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก ๋ค๋ฒผ๋ ๋ค. (์๋ชจ๋ฅด๋ ๋ฉ์ฒญํ ์๋ฆฌ๋ฅผ ํด๋ ๋๊ทธ๋ฝ๊ฒ ์ง์ ํด์ฃผ๊ธธ ๋ฐ๋๋ค.)
๋๋ง์ ์์์ด๋ค. ์ ๋ด๋ผ. ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ ์๋ค๋ ์ ์ ํ์ ์งํํ๋ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋๊น ์ํด๋ดค์ผ๋ฉด ๊ณต๋ถํ๊ณ ์ค๋ฉด ์ข๋ค. ์ด์จ๋ ์คํํธ.
๋จผ์ ์ข๋น์ ๋ํ ์ค๋ช ์ด๋ค. ์ข๋น๋ 16์๋ฆฌ ์ ์๋ก ๋ DNA๋ฅผ ๊ฐ์ง๋ค. ์ด DNA๋ฅผ ๋ฐํ์ผ๋ก ์ข๋น์ ๋ชจ์์ด ๋ฐ๋๋ค. ์์ ์ฌ๋ผ์ด๋๋ฅผ ์์ง์ด๋ฉด ์ข๋น์ ๋ชจ์ต์ ๋ฐ๊ฟ๋ณผ ์ ์๋ค. ํฌ์ธํธ๋ ๋๊ฐ์ง ์ธ๊ฒ ๊ฐ๋ค. ์ข๋น์ DNA๋ ๋๋ค์ด๋ค, DNA๋ก ์ธ๋ชจ๊ฐ ๊ฒฐ์ ๋๋ค. ๊ทธ๋์ ์ด์ ์ด๋ฐ ์ข๋น๋ฅผ ๋ง๋ค ๊ณต์ฅ์ ๋ง๋๋ ๊ฑฐ๋ค!
Solidity๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ด๋ ๋ฒ์ ์ solidity๋ฅผ ํ์ฉํด ํ๋ก๊ทธ๋๋ฐ์ ํ ์ง ๋จผ์ ์ ์ธํด์ผ ํ๋ค. ํฌ๋ฆฝํ ์ข๋น์์๋ pragma solidity ^0.4.19; ๋ผ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค. ์ง๊ธ์ 0.4.26 ์ ๋๊ฐ ์ต์ ๋ฒ์ ์ธ๋ฏ..?
๊ทธ๋ฆฌ๊ณ contract๋ฅผ ๋ง๋ ๋ค. ์ฌ๊ธฐ์ contract๋ ์ด๋๋ฆฌ์ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ์์์ด๋ค. ๋ณ์์ ํจ์, ์ ๋ถ ์ปจํธ๋ํธ ์์์ ๊ตฌํ๋์ผ ํ๋ค. (์๋ฐ๋ก ์น๋ฉด class์ ์ ์ฌํ ๊ฐ๋
)
์ด์จ๋ ์น์ ํ๊ฒ ์ง์์ฌํญ์ ๋ฐ๋ผ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๊ฐ ์์ฑ๋๋ค.
pragma solidity ^0.4.19; //์ฌ๊ธฐ๊ฐ ์๋ฆฌ๋ํฐ ๋ฒ์
contract ZombieFactory {
} //์ฌ๊ธฐ๊ฐ ์ปจํธ๋ํธ
(๋ด์ฉ์๋ ์ธ๊ธ๋์ง ์์์ง๋ง contract ๋ช ๋ช ๊ท์น์ java์ ํด๋์ค ๋ช ๋ช ๊ท์น์ ๋ฐ๋ฅด๋ ๋ฏ ํ๋ค. ๋ช ์ฌ์ด๊ณ ๋๋ฌธ์๋ก ์์ํ๋ค. ์ฌ์ํ ๋ถ๋ถ์ด์ง๋ง ์ด๋ฐ ๊ท์น์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด ๋ณด๊ธฐ๋ ์ข๊ณ ์ดํดํ๊ธฐ๋ ์ฝ๋ค.)
์ํ ๋ณ์๋ผ๋ ๋ง์ด ๋์จ๋ค. ์ ์๋ ์๊ฒ ๋๋ฐ ์ํ๋ณ์๋ ๋ญ์ผ?
์ด๋ด๋๋ ์์ด๋จ์ด๋ฅผ ํ๋ฒ ๋ด๋ณธ๋ค. State Variablesโฆ ๋ ๋ชจ๋ฅด๊ฒ ๋ค. ๋์์ค์ ๊ตฌ๊ธ.
์์๋ณธ ๋ฐ๋ก๋ solidity๋ ๋ฐ์ดํฐ๋ฅผ ์คํ ๋ฆฌ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด์ฉํด ์ ์ฅํ๋๋ฐ ์คํ ๋ฆฌ์ง๋ ๋ธ๋ก์ฒด์ธ์ ์ธ๊ฒจ์ง๋ ์์น, ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊น ์ฐ๊ณ ๋ ๋ผ๊ฐ๋ ํ๋ฐ์ฑ์ด ์๋ ๋ถ๋ถ์ด๋ผ๊ณ ํ๋ค.
์ํ๋ณ์๋ contract ์ต์๋จ์ ์ ์๋๋ ๋ณ์๋ก ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋๋ ๋ถ๋ถ์ด๋ค. ์ฆ, ๋ธ๋ก์ฒด์ธ์ ์ธ๊ฒจ์ง๋ ์ค์ํ ๋ฐ์ดํฐ๋ผ๋ ์๋ฏธ.
์ด๋ฒ ์ฑํฐ์์๋ ์ํ๋ณ์๋ก uint๋ผ๋ ๋ฐ์ดํฐํ์
์ ์ ์ธํ๋๋ฐ, uint๋ ๋ง์ด๋์ค ๊ฐ์ด ์๋ ์ ์์ ๋ฐ์ดํฐ ํ์
์ด๋ค. ์ฆ, 0๊ณผ ์์ ์ ์๋ก๋ง ๋ฃ์ ์ ์๋ ๋ฐ์ดํฐ ํ์
.
์ข๋น DNA์ ์๋ฆฌ์๊ฐ 16์๋ฆฌ์ด๊ณ , ์ด ๋ถ๋ถ ๊ตฌํ์ ์ํด ์ฐ๋ฆฌ๋ ์คํ ๋ฆฌ์ง์ ๋ณ์๋ฅผ ์ธ๊ฒจ๋ฃ๋๋ค.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16; // ๋ฐ์ดํฐํ์
: uint, ๋ณ์๋ช
: dnaDigits, ๋ณ์๊ฐ : 16
}
๋ณ์ ์ ์ธ์ ์์ ๊ฐ์ด ํ๋ค. ๋ฐ์ดํฐ ํ์
์ ์ ํด์ฃผ๊ณ , ๋ณ์๋ช
์ ์ฐ๊ณ ์์ ๊ฐ์ ๋ฃ์ด ์ค.
Solidity์ ๋ฐ์ดํฐ ํ์
์ ๋ํด ์ ๋ฆฌํ ์ผ์ ์๊ฒ ์ง๋ง ์ผ๋จ ์ง๊ธ์ uint๋ง ์์๋์. ๋ง์ด๋์ค ์๋ ์ ์ํ ์ซ์๋ฅผ ์ํ ๋ฐ์ดํฐํ์
์ด ์๋ ๊ฑด ๋ค ์ด์ ๊ฐ ์๋ค.