[ν¬λ¦½ν μ’λΉ] Lesson 4. μ’λΉ μ ν¬ μμ€ν : Chapter 1~7 payable, μΆκΈ, λμ, 리ν©ν λ§
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λ₯Ό μ¬μ©ν΄μ ꡬ쑰λ₯Ό κ°μ νλ€.