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

[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter1~3 : ์ปจํŠธ๋ž™ํŠธ ๋ถˆ๋ณ€์„ฑ, ์†Œ์œ  ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋ž™ํŠธ, onlyOwner ํ•จ์ˆ˜ ์ œ์–ด์ž

by hanwitjus 2022. 7. 1.

Chapter1. ์ปจํŠธ๋ž™ํŠธ์˜ ๋ถˆ๋ณ€์„ฑ

 ์ด๋”๋ฆฌ์›€์— ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๋‚˜๋ฉด, ์ปจํŠธ๋ž™ํŠธ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. (์ˆ˜์ •์ด๋‚˜ ์—…๋ฐ์ดํŠธ ๋ถˆ๊ฐ€)

๋งŒ์•ฝ ์ปจํŠธ๋ž™ํŠธ์— ๊ฒฐ์ ์ด ์žˆ์–ด๋„ ์ดํ›„์— ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ „ํ˜€ ์—†๋‹ค.

๊ทธ ๋ˆ„๊ตฌ๋„ ๋ฐฐํฌ ์ดํ›„์— ํ•จ์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค.

 

์™ธ๋ถ€ ์˜์กด์„ฑ

์™ธ๋ถ€ ์ปจํŠธ๋ž™ํŠธ์˜ ์ฃผ์†Œ๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉ ํ•ด๋ฒ„๋ฆฌ๋ฉด

๋‚˜์ค‘์— ์™ธ๋ถ€ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ํŒŒ๊ดด๋˜์—ˆ์„ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ DApp์€ ์“ธ๋ชจ ์—†์–ด์ง„๋‹ค.

(์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ)

๋”ฐ๋ผ์„œ ํ•˜๋“œ์ฝ”๋”ฉ ๋Œ€์‹  ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํšจ์œจ์ 

 

 

Chapter2. ์†Œ์œ  ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋ž™ํŠธ

 ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ,

์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด external๋กœ ์„ ์–ธ์„ ํ• ํ…๋ฐ

๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ฃผ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์†Œ์œ  ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

 

  • OpenZepplin : DApp์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”, ์•ˆ์ „ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฒ€์ฆ๋ฐ›์€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

 

๊ฐ ์š”์†Œ ์„ค๋ช… )

(1) ์ƒ์„ฑ์ž Constructor: function Ownable()๋Š” ์ƒ์„ฑ์ž. 

์ปจํŠธ๋ž™ํŠธ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„, ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜. ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰.

 

(2) ํ•จ์ˆ˜ ์ œ์–ด์ž Function Modifier: modifier onlyOwner() ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๋˜๋Š” ์ผ์ข…์˜ ์œ ์‚ฌ ํ•จ์ˆ˜. ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ.

ํ•จ์ˆ˜ ์‹คํ–‰ ์ „์˜ ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ.

onlyOwner์˜ ๊ฒฝ์šฐ ์ ‘๊ทผ์„ ์ œํ•œํ•ด์„œ ์˜ค์ง ์ปจํŠธ๋ž™ํŠธ์˜ ์†Œ์œ ์ž๋งŒ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์ฆ‰, Ownable ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ํ•˜๋Š” ์ผ์€

  1. ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ปจํŠธ๋ž™ํŠธ์˜ ์ƒ์„ฑ์ž๊ฐ€ owner์— msg.sender(์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋ฐฐํฌํ•œ ์‚ฌ๋žŒ)์„ ๋Œ€์ž….
  2. ํŠน์ •ํ•œ ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•ด์„œ ์˜ค์ง ์†Œ์œ ์ž๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์ž‡๋„๋ก ์ œํ•œ ๊ฐ€๋Šฅํ•œ onlyOwner ์ œ์–ด์ž๋ฅผ ์ถ”๊ฐ€. 
  3. ์ƒˆ๋กœ์šด ์†Œ์œ ์ž์—๊ฒŒ ํ•ด๋‹น ์ปจํŠธ๋ž™ํŠธ์˜ ์†Œ์œ ๊ถŒ์„ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

Chapter3. onlyOwner ํ•จ์ˆ˜์ œ์–ด์ž

ํ•จ์ˆ˜ ์ œ์–ด์ž๋Š” ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, function ํ‚ค์›Œ๋“œ ๋Œ€์‹  modifier ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ•˜๋“ฏ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค. ๋Œ€์‹  ํ•จ์ˆ˜ ์ •ใ…‚์˜๋ถ€ ๋์— ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ž‘๋™๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ๋„๋ก ์ œ์–ด์ž์˜ ์ด๋ฆ„์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๊ฒŒ ์ดํ•ด๊ฐ€ ์ž˜๋˜๋Š” ๋“ฏ ํ•˜๋‹ค.

 

ํ•จ์ˆ˜์— onlyOwner ์ œ์–ด์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์˜ค์ง ์ปจํŠธ๋ž™ํŠธ์˜ ์†Œ์œ ์ž๋งŒ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

์•…์šฉ๋œ๋‹ค๋ฉด: ์†Œ์œ ์ž๊ฐ€ ๋ฐฑ๋„์–ด ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

LIST

๋Œ“๊ธ€