๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ก work work work/blockchain

[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson 4. ์ข€๋น„ ์ „ํˆฌ ์‹œ์Šคํ…œ : Chapter 1~7 payable, ์ถœ๊ธˆ, ๋‚œ์ˆ˜, ๋ฆฌํŒฉํ† ๋ง

by hanwitjus 2022. 7. 4.

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

'๐Ÿ’ก work work work > blockchain' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter12~13 : For ๋ฐ˜๋ณต๋ฌธ, ๊ฐ€์Šค ์‚ฌ์šฉ๋Ÿ‰ ์ค„์ด๊ธฐ, ๋ ˆ์Šจ3 ๋งˆ๋ฌด๋ฆฌ  (0) 2022.07.04
[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter4~11 : ๊ฐ€์Šค, ์‹œ๊ฐ„ ๋‹จ์œ„, Public ํ•จ์ˆ˜, ํ•จ์ˆ˜ ์ œ์–ด์ž์˜ ๋‹ค๋ฅธ ํŠน์ง•, ๊ฐ€์Šค ์ ˆ์•ฝํ•˜๊ธฐ  (0) 2022.07.04
[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter1~3 : ์ปจํŠธ๋ž™ํŠธ ๋ถˆ๋ณ€์„ฑ, ์†Œ์œ  ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋ž™ํŠธ, onlyOwner ํ•จ์ˆ˜ ์ œ์–ด์ž  (0) 2022.07.01
[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ๊ธฐ๋ณธ ๊ฐœ๋… ์ •๋ฆฌ(2) - Constructor ์ƒ์„ฑ์ž, ์ƒ์†, ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ๋‘๊ฐœ ์ด์ƒ ์ƒ์†  (0) 2022.06.15
[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์‹ค์Šต : ๋ฆฌ๋ฏน์Šค ์‚ฌ์šฉ๋ฒ•  (0) 2022.06.14

๋Œ“๊ธ€