๋ชฉ๋ก2022/09 (6)
KoreanFoodie's Study

ํฌ๋ฆฝํ ์ข๋น์์ ์ ๊ณตํ๋ ํํ ๋ฆฌ์ผ์ ํตํด ๋ฐฐ์ฐ๋ Solidity ๋ฌธ๋ฒ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค! Lesseon 6 ์์๋ Web3.js ๋ฅผ ์ด์ฉํด ์ด๋๋ฆฌ์๊ณผ front-end ์ฌ์ด์ ๋์์ ๋ํด ๋ฐฐ์ธ ์ ์์๋ค. index.html ์ด๋ผ๋ ์ฝ๋์ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ๋ฆฌํด ๋์๋ค. ์ด๋ฒ ์ฅ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. Web3.js smart contract ์์์ ํจ์๋ฅผ ํธ์ถํ๊ณ ์ถ์ผ๋ฉด, ๋ ธ๋์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฌํด์ผ ํ๋ค. smart contract ์ ์ฃผ์ ํธ์ถํ ํจ์์ ์ ๋ฌํ ๋งค๊ฐ๋ณ์ ์ด๋, ์ด๋๋ฆฌ์ ๋ ธ๋๋ JSON-RPC ๋ผ๋ ์ธ์ด๋ก ์ํตํ๋ค. JSON-RPC ์ฟผ๋ฆฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. // Yeah... Good luck writing all your fun..

ํฌ๋ฆฝํ ์ข๋น์์ ์ ๊ณตํ๋ ํํ ๋ฆฌ์ผ์ ํตํด ๋ฐฐ์ฐ๋ Solidity ๋ฌธ๋ฒ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค! Lesseon 5 ์์๋ ERC721 ์ ์ ์ฉ๊ณผ SafeMath ์ ๋ํ ๊ฐ๋จํ ์์ ๋ฅผ ๋ค๋ฃจ๊ณ ์๋ค. ๊ธฐ์กด ์ฝ๋์ zombieownership.sol ์ ์ถ๊ฐํ๋ค. 1. ERC721 ์ฐ๋ฆฌ๊ฐ ํํ NFT ๋ผ๊ณ ๋ถ๋ฅด๋ ํ ํฐ์, ๊ฐ ํ ํฐ์ด 'unique' ํ๋ค๋ ํน์ง์ ๊ฐ์ง๋ค. ์๋ฅผ ๋ค์ด, "Steve" ๋ผ๋ ์ด๋ฆ์ ์ข๋น๊ฐ ์๊ณ , ์ด๊ฒ์ ํ ํฐ์ผ๋ก ๋ง๋ค๋ฉด, ๋ค๋ฅธ ์ด๋ฆ์ ๊ฐ์ง ํ ํฐ๋ค๊ณผ๋ ๊ตฌ๋ณ๋์ด์ผ(distinguishable) ํ๋ค. ๋ํ ERC721 ํ ํฐ์ ์ชผ๊ฐค ์ ์๋ค. "Steve" ๋ผ๋ ์ข๋น๊ฐ ์๋ค๊ณ ํ์ ๋, 0.237 ๋งํผ์ "Steve" ๋ก ์ชผ๊ฐ์ด ๋ณด๋ผ ์ ์๋ค๋ ๋ป์ด๋ค(๋ฌผ๋ก ์ต๊ทผ์๋ NFT ๋ ์ชผ๊ฐ๋ ๋ ผ์๊ฐ ..

ํฌ๋ฆฝํ ์ข๋น์์ ์ ๊ณตํ๋ ํํ ๋ฆฌ์ผ์ ํตํด ๋ฐฐ์ฐ๋ Solidity ๋ฌธ๋ฒ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค! Lesseon 4 ์์๋ payable ๊ฐ๋ ์ ๋ํด์ ์กฐ๊ธ ๋ ๋ค๋ฃฌ๋ค. ์ด์ ๊ฒ์๊ธ์์ zombieattack.sol ์ ์ถ๊ฐํด, ์ข๋น๊ฐ ๊ณต๊ฒฉํ ์ ์๋๋ก ๋ง๋ค์๋ค! ์ด๋ฒ ์ฅ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. payable Modifier ์ด๋๋ฆฌ์์๋ Ether ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋, payable ํจ์๋ผ๋ ๋ ์์ด ์กด์ฌํ๋ค. contract OnlineStore { function buySomething() external payable { // Check to make sure 0.001 ether was sent to the function call: require(msg.value == 0.001 ethe..

ํฌ๋ฆฝํ ์ข๋น์์ ์ ๊ณตํ๋ ํํ ๋ฆฌ์ผ์ ํตํด ๋ฐฐ์ฐ๋ Solidity ๋ฌธ๋ฒ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค! Lesseon 3 ์์๋ ๊ฐ์ค ์๋ชจ์ ์ฝ๋ ํจ์จ์ฑ ๋ฑ์ ๋ํด ๊ณต๋ถํ ์ ์์๋ค. ๊ธฐ์กด์ zombiefactory.sol ๊ณผ zombiefeeding.sol ๋ก ๋๋์ด์ง ์ฝ๋์ zombiehelper.sol ๊ณผ ownable.sol ์ ์ถ๊ฐํ๋ค. ์ด๋ฒ ์ฅ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. Immutability of Contracts ์ด๋๋ฆฌ์์ ์ปจํธ๋ํธ๋ฅผ ๋ฐฐํฌํ๋ฉด, ํด๋น ์ปจํธ๋ํธ๋ ๋ถ๋ณ(immutable) ์ด ๋๋ค. ๋ฐ๋ผ์, contract ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ด๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ smart contract ์ ์ฃผ์๋ฅผ ์ ์ ์๊ฒ ์ ๊ณตํ๋ ์์ผ๋ก ํจ์น๋ฅผ ํด์ผ ํ๋ค. 2. Ownable Contracts ๋ง์ฝ ..

ํฌ๋ฆฝํ ์ข๋น์์ ์ ๊ณตํ๋ ํํ ๋ฆฌ์ผ์ ํตํด ๋ฐฐ์ฐ๋ Solidity ๋ฌธ๋ฒ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค! ์ด์ ๊ฒ์๊ธ์์ ์์ฑํ๋ ์ฝ๋๋ฅผ ์กฐ๊ธ ํ์ฅํด์, ์ข๋น๋ฅผ ์์ฑํ๋ ๊ฒ ๋ง๊ณ ๋ ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ถ๊ฐ์ ์ผ๋ก ๊ตฌํํ๋ค. ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋จน๊ณ ๋ค๋ฅธ ๊ฐ์ฒด์ dna ์ ์์ธ ์๋ก์ด ์ข๋น๋ฅผ ์์ฑํ๊ฑฐ๋, cryptokitty ์ dna ๋ฅผ ๋ถ๋ฌ์์ ์ข๋น๋ฅผ ๋ง๋ค์ด๋ณด๋ ๋ฑ์ ํจ์๊ฐ ๊ตฌํ๋์ด ์๋ค. ํธ์๋ฅผ ์ํด, ์ฝ๋๋ฅผ zombiefactory.sol ๊ณผ zombiefeeding.sol ๋ก ๋๋์๋ค. ์ด๋ฒ ์ฅ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. Ethereum blockchaing ์ accounts ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ฐ accounts ์๋ address ๊ฐ ์๋ค. 2. mapping ์ ํตํด C++ ์์์ map ๊ฐ์ ๊ธฐ๋ฅ์..

๋จผ์ , Solidity ๋ ์ฝ๋๊ฐ contract ๋จ ์๋์์ ์์ฑ๋์ด์ผ ํ๋ค. ์ด๊ฒ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ํญ๋ชฉ์ผ๋ก, ์๋ ์์ ์ฝ๋์์๋ ZombieFactory ๋ผ๋ contract ๋ด๋ถ์์ ์ฝ๋๋ฅผ ์์ฑํ๋ค. // ์ด๋ค ๋ฒ์ ์ ์ธ ๊ฒ์ธ์ง ๋ช ์. 0.5.0 ์ด์, 0.6.0 ๋ฏธ๋ง pragma solidity >=0.5.0