Solidity modifier
Solidity modifier
Solidity์๋ modifier๋ผ๋ ๊ฒ์ด ์๋ค.
modifier๋ ์ฐ๋ฆฌ๊ฐ ์ปจํธ๋ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ํจ์์ ๋์์ ์ ์ดํ ์ ์๋๋ก ํด์ค๋ค.
๊ฐ๋จํ modifier์ ์์๋ฅผ ๋ณด์.
modifier modifierName {
// ...modifier code...
_; // this represents the function body that the modifier is applied to
}
_;ํค์๋๋ ํจ์์ ๋๋จธ์ง body ๋ถ๋ถ์ ์คํํ๋ผ๋ ๋ช ๋ น์ ๋ํ๋ธ๋ค.
๋ค์๊ณผ ๊ฐ์ด ํจ์์ ์ ์ฉํ ์ ์๋ค.
function functionName() modifierName public {
// ...function code...
}๋ณดํต modifier๋ฅผ ํตํด์ ๋ฌ์ฑํ๊ณ ์ ํ๋ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
Access control :
onlyOwner์ ๊ฐ์ด Role์ ๋ฐ๋ผ ํจ์ Access๋ฅผ ์ ํํ๊ธฐ ์ํจPrecondition : ํจ์์ ๋์์ ์ํ ์ ์ ์กฐ๊ฑด, (e.g.
decorator๋ฅผ ์ด์ฉํ ์ ์ด์ ๋น์ทํ๋ค)
๋ณดํต modifier ๋ฅผ ์์ฑํ ๋ error ๋ฐ assestion์ ์ฒ๋ฆฌํ๊ธฐ ์ํด revert(), require() ๋ฐ assert()์ ๊ฐ์ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
revert
revert() ํจ์๋ ๋ธ๋ก์ฒด์ธ์ ์ํ๋ฅผ ํ์ฌ ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ์ํ๋ก ๋๋๋ฆฐ๋ค.
์ด๋ ํ์ฌ ๊ธฐ๋ฅ์์ ๋ธ๋ก์ฒด์ธ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ทจ์๋์์์ ์๋ฏธํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฑฐ๋ ์ฒ๋ฆฌํ์ง ์์ผ๋ ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ์ฌ์ฉ๋๋ค.
revert()๋ ์ค๋ฅ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์๋ ์ ํ์ ๋ฌธ์์ด ๋ฉ์์ง๋ ํ์ฉํ๋ค.
required
require() ํจ์๋ ํญ์ ์ฐธ์ด์ด์ผ ํ๋ ํญ๋ชฉ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ๋ ฅ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ธฐ ์ํด ํจ์๋ฅผ ์์ํ ๋ ๋๋ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฌํ๊ธฐ ์ํด ํจ์๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋๋ค.
require() ๋ด๋ถ ์กฐ๊ฑด์ด false์ด๋ฉด revert()์ ์ ์ฌํ๊ฒ ํธ๋์ญ์
์ ๋ฐํํ๋ค.
require()๋ ๋ํ ์๊ตฌ ์ฌํญ์ด ์ถฉ์กฑ๋์ง ์์ ์ด์ ๋ฅผ ์ค๋ช
ํ๋ ์ ํ์ ๋ฌธ์์ด ๋ฉ์์ง๋ฅผ ํ์ฉํ๋ค.
assert
assert() ํจ์๋ require()์ ๋น์ทํ์ง๋ง ๋ด๋ถ ์ค๋ฅ ๋๋ ์ ๋ ๋ฐ์ํด์๋ ์ ๋๋ ์กฐ๊ฑด์ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
assert() ๋ด๋ถ์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ฉด ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ํธ๋์ญ์
์ด ๋ฐํ๋ฉ๋๋ค.
assert()๋ ๊ณ ์ฅ์ด ๋ฌ์ ๋ ๋จ์ ๊ฐ์ค๋ฅผ ๋ชจ๋ ์๋นํ๋ฏ๋ก, revert()๋ณด๋ค ์ฌ์ฉ ๋น์ฉ์ด ๋ ๋ง์ด ํ์ํ๋ค.
๋๋ผ๋ฉด ์ค์ ํ๋ก๋์ ์์๋ require์ revert๋ฅผ ์ฌ์ฉํ๊ณ , assert๋ ํ ์คํธ๋ท ํน์ ๋๋ฒ๊น ์ ์ํด ์ฌ์ฉํ ๊ฒ ๊ฐ๋ค.
Last updated