πŸ’‘ work work work/blockchain

[크립토 μ’€λΉ„] Lesson 4. μ’€λΉ„ μ „νˆ¬ μ‹œμŠ€ν…œ : Chapter 1~7 payable, 좜금, λ‚œμˆ˜, λ¦¬νŒ©ν† λ§

hanwitjus 2022. 7. 4. 15:12

Chapter 1. Payable 

 μ—¬νƒœκΉŒμ§€ 배운 ν•¨μˆ˜ μ œμ–΄μžλ₯Ό λ¨Όμ € 정리해보면,

 

  1. μ ‘κ·Ό μ œμ–΄μž (visibility modifier) : ν•¨μˆ˜κ°€ μ–Έμ œ, μ–΄λ””μ„œ 호좜될 수 μžˆλŠ”μ§€ μ œμ–΄ (private, internal, external, public..)
  2. μƒνƒœ μ œμ–΄μž (state modifier) : 블둝체인과 μƒν˜Έμž‘μš© ν•˜λŠ” 방법에 λŒ€ν•œ μ œμ–΄μž (view, pure)
  3. μ‚¬μš©μž μ •μ˜ μ œμ–΄μž : 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λ₯Ό ν’€λ €λŠ” μ‹œλ„λ₯Ό λ©ˆμΆ”κ³  ν•΄λ‹Ή λ…Έλ“œκ°€ 보낸 νŠΈλžœμž­μ…˜ λͺ©λ‘μ΄ μœ νš¨ν•œ 것인지 κ²€μ¦ν•œλ‹€.

μœ νš¨ν•˜λ‹€λ©΄ λ‹€μŒ 블둝을 ν’€κΈ° μ‹œμž‘ν•œλ‹€.

 

μ΄λŸ¬ν•œ νŠΉμ§•μ΄ λ‚œμˆ˜ ν•¨μˆ˜λ₯Ό μ·¨μ•½ν•˜κ²Œ λ§Œλ“œλŠ” 것이닀.

 

예λ₯Ό λ“€μ–΄ κ²Œμž„κ΄€λ ¨ μ»¨νŠΈλž™νŠΈκ°€ μžˆλ‹€λ©΄

였직 λ‚˜μ˜ λ…Έλ“œμ—λ§Œ νŠΈλžœμž­μ…˜μ„ μ•Œλ¦¬κ³  이것을 κ³΅μœ ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.

κ²Œμž„μ— μ§€κ²Œ λœλ‹€λ©΄ ν•΄λ‹Ή νŠΈλžœμž­μ…˜μ„ ν¬ν•¨ν•˜μ§€ μ•Šμ„ 수 μžˆμœΌλ―€λ‘œ, 이기고 λ‹€μŒ 블둝을 ν’€λ•ŒκΉŒμ§€ λ¬΄ν•œλŒ€λ‘œ λ°˜λ³΅ν•˜μ—¬ 이득을 λ³Ό 수 μžˆλ‹€.

 

그럼 μ΄λ”λ¦¬μ›€μ—μ„œ λ‚œμˆ˜λ₯Ό μ–΄λ–»κ²Œ μ•ˆμ „ν•˜κ²Œ λ§Œλ“€ 수 μžˆμ„κΉŒ?

https://ethereum.stackexchange.com/questions/191/how-can-i-securely-generate-a-random-number-in-my-smart-contract

 

이걸 μ½μ–΄λ³΄μž.

 

λΈ”λ‘μ²΄μΈμ˜ 전체 λ‚΄μš©μ€ λͺ¨λ“  μ°Έμ—¬μžμ—κ²Œ κ³΅κ°œλ˜λ―€λ‘œ ν’€κΈ° μ–΄λ €μš΄ 문제이고

μ—¬λŸ¬κ°€μ§€ 방법이 μžˆμ§€λ§Œ κ·Έ 쀑 ν•˜λ‚˜μ˜ 방법은 이더리움 블둝체인 μ™ΈλΆ€μ˜ λ‚œμˆ˜ ν•¨μˆ˜μ— μ ‘κ·Όν•  수 μžˆλ„λ‘ μ˜€λΌν΄μ„ μ‚¬μš©ν•˜λŠ” 것이닀.

 

μ΄λ ‡κ²Œ λ‚œμˆ˜ ν•¨μˆ˜λ₯Ό μ·¨μ•½ν•˜κ²Œ λ§Œλ“œλŠ” λΆ€λ‹Ήν•œ 방법이 μžˆμ§€λ§Œ, 사싀 이 방법을 μ“°λŠ” 것은 λ§Žμ€ μ‹œκ°„κ³Ό μ—°μ‚° μžμ›μ„ ν•„μš”λ‘œ ν•˜κΈ° λ•Œλ¬Έμ— 

μ‹€μ œλ‘œλŠ” λ‚œμˆ˜ ν•¨μˆ˜κ°€ μ¦‰μ‹œ 큰 돈이 λ˜μ§€ μ•ŠλŠ” ν•œ, 곡격할 λ§Œν•œ μΆ©λΆ„ν•œ μžμ›μ„ 듀이지 μ•Šμ„ 것이닀.

 

 

Chapter 6. 곡톡 둜직 ꡬ쑰 κ°œμ„ ν•˜κΈ° (Refactoring)

Chapter 7. ꡬ쑰 더 κ°œμ„ ν•˜κΈ°

κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” require 뢀뢄에 λŒ€ν•˜μ—¬ modifierλ₯Ό μ‚¬μš©ν•΄μ„œ ꡬ쑰λ₯Ό κ°œμ„ ν–ˆλ‹€.

 

 

 

LIST