Chapter 1. Payable
์ฌํ๊น์ง ๋ฐฐ์ด ํจ์ ์ ์ด์๋ฅผ ๋จผ์ ์ ๋ฆฌํด๋ณด๋ฉด,
- ์ ๊ทผ ์ ์ด์ (visibility modifier) : ํจ์๊ฐ ์ธ์ , ์ด๋์ ํธ์ถ๋ ์ ์๋์ง ์ ์ด (private, internal, external, public..)
- ์ํ ์ ์ด์ (state modifier) : ๋ธ๋ก์ฒด์ธ๊ณผ ์ํธ์์ฉ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ด์ (view, pure)
- ์ฌ์ฉ์ ์ ์ ์ ์ด์ : onlyOwner์ aboveLevel ๊ฐ์ ์ ์ด์.
function test() external view onlyOwner anotherModifier { /* … */}
์ ๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅ
payable ์ ์ด์
: ์ด๋๋ฅผ ๋ฐ์ ์ ์๋ ํน๋ณํ ํจ์ ์ ํ
์ผ๋ฐ์ ์ธ ์น ์๋ฒ์์ API ํจ์๋ฅผ ์คํํ ๋๋ ํจ์ ํธ์ถ์ ํตํด ๋์ ๋ณด๋ผ ์ ์๋ค.
ํ์ง๋ง ์ด๋๋ฆฌ์์์๋ ๋(์ด๋), ๋ฐ์ดํฐ, ์ปจํธ๋ํธ ์ฝ๋ ์์ฒด ๋ชจ๋ ์ด๋๋ฆฌ์ ์์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์,
ํจ์๋ฅผ ์คํํ๋ ๋์์ ์ปจํธ๋ํธ์ ๋์ ์ง๋ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.

Chapter 2. ์ถ๊ธ

Chapter 4. ๋์ (Random Numbers)
Keccak256 ์ ํตํ ๋์ ์์ฑ

now์ ํ์์คํฌํ ๊ฐ, msg.sender, ์ฆ๊ฐํ๋ nonce(๋ฑ ํ ๋ฒ๋ง ์ฌ์ฉ๋๋ ์ซ์)๋ฅผ ๋ฐ์์
keccak๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฅ๋ค์ ์์์ ํด์๊ฐ์ผ๋ก ๋ณํํ๊ณ , ๋ณํํ ํด์ ๊ฐ์ uint๋ก ๋ฐ๊พผ ํ
% 100 ์ ์จ์ ๋ง์ง๋ง 2์๋ฆฌ ์ซ์๋ง ๋ฐ๊ณ ๋ก ํ๋ค.
(+) % 100์ ํ๋ ๊ฒ์ 0์์ 99์ฌ์ด์ ์์ ํ ๋์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ
ํ์ง๋ง ์ด ๋ฉ์๋๋ ๊ณต๊ฒฉ์ ์ทจ์ฝํ๋ค.
-> ์ด๋๋ฆฌ์์์๋ ์ปจํธ๋ํธ์ ํจ์๋ฅผ ์คํํ๋ฉด ํธ๋์ญ์ ์ผ๋ก์ ๋คํธ์ํฌ์ ๋ ธ๋๋ค์๊ฒ ์คํ์ ์๋ฆฌ๊ฒ ๋๋ค.
๊ทธ ํ ๋คํธ์ํฌ์ ๋ ธ๋๋ค์ ์ฌ๋ฌ๊ฐ์ ํธ๋์ญ์ ์ ๋ชจ์์ ์์ ์ฆ๋ช ์ ํ๊ณ ํด๋น ํธ๋์ญ์ ๊ทธ๋ฃน์ ๊ทธ๋ค์ ์์ ์ฆ๋ช ๊ณผ ํจ๊ป
๋ธ๋ก์ผ๋ก ๋คํธ์ํฌ์ ๋ฐฐํฌํ๋ค.
ํ ๋ ธ๋๊ฐ ์ด๋ค PoW๋ฅผ ํ๋ฉด, ๋ค๋ฅธ ๋ ธ๋๋ค์ ๊ทธ PoW๋ฅผ ํ๋ ค๋ ์๋๋ฅผ ๋ฉ์ถ๊ณ ํด๋น ๋ ธ๋๊ฐ ๋ณด๋ธ ํธ๋์ญ์ ๋ชฉ๋ก์ด ์ ํจํ ๊ฒ์ธ์ง ๊ฒ์ฆํ๋ค.
์ ํจํ๋ค๋ฉด ๋ค์ ๋ธ๋ก์ ํ๊ธฐ ์์ํ๋ค.
์ด๋ฌํ ํน์ง์ด ๋์ ํจ์๋ฅผ ์ทจ์ฝํ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ๊ฒ์๊ด๋ จ ์ปจํธ๋ํธ๊ฐ ์๋ค๋ฉด
์ค์ง ๋์ ๋ ธ๋์๋ง ํธ๋์ญ์ ์ ์๋ฆฌ๊ณ ์ด๊ฒ์ ๊ณต์ ํ์ง ์์ ์ ์๋ค.
๊ฒ์์ ์ง๊ฒ ๋๋ค๋ฉด ํด๋น ํธ๋์ญ์ ์ ํฌํจํ์ง ์์ ์ ์์ผ๋ฏ๋ก, ์ด๊ธฐ๊ณ ๋ค์ ๋ธ๋ก์ ํ๋๊น์ง ๋ฌดํ๋๋ก ๋ฐ๋ณตํ์ฌ ์ด๋์ ๋ณผ ์ ์๋ค.
๊ทธ๋ผ ์ด๋๋ฆฌ์์์ ๋์๋ฅผ ์ด๋ป๊ฒ ์์ ํ๊ฒ ๋ง๋ค ์ ์์๊น?
์ด๊ฑธ ์ฝ์ด๋ณด์.
๋ธ๋ก์ฒด์ธ์ ์ ์ฒด ๋ด์ฉ์ ๋ชจ๋ ์ฐธ์ฌ์์๊ฒ ๊ณต๊ฐ๋๋ฏ๋ก ํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ์ด๊ณ
์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง๋ง ๊ทธ ์ค ํ๋์ ๋ฐฉ๋ฒ์ ์ด๋๋ฆฌ์ ๋ธ๋ก์ฒด์ธ ์ธ๋ถ์ ๋์ ํจ์์ ์ ๊ทผํ ์ ์๋๋ก ์ค๋ผํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋์ ํจ์๋ฅผ ์ทจ์ฝํ๊ฒ ๋ง๋๋ ๋ถ๋นํ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ์ฌ์ค ์ด ๋ฐฉ๋ฒ์ ์ฐ๋ ๊ฒ์ ๋ง์ ์๊ฐ๊ณผ ์ฐ์ฐ ์์์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์
์ค์ ๋ก๋ ๋์ ํจ์๊ฐ ์ฆ์ ํฐ ๋์ด ๋์ง ์๋ ํ, ๊ณต๊ฒฉํ ๋งํ ์ถฉ๋ถํ ์์์ ๋ค์ด์ง ์์ ๊ฒ์ด๋ค.
Chapter 6. ๊ณตํต ๋ก์ง ๊ตฌ์กฐ ๊ฐ์ ํ๊ธฐ (Refactoring)
Chapter 7. ๊ตฌ์กฐ ๋ ๊ฐ์ ํ๊ธฐ
๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ require ๋ถ๋ถ์ ๋ํ์ฌ modifier๋ฅผ ์ฌ์ฉํด์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ค.
๋๊ธ