web3 ๊ณต๋ถ (24.7. 15 ~ )/3์ฃผ์ฐจ
3์ฃผ์ฐจ - ์๋ฆฌ๋ํฐ Event, modifier, receive,fallback,call,delegate call (๋ฏธ์)
s_pu
2024. 8. 3. 21:57
๐ก์๋ฆฌ๋ํฐ์์ Event
์ด๋ฒคํธ๋ ๋ธ๋ก์ฒด์ธ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ธ๋ก์ฒด์ธ์ ๋ก๊ทธ๋ก ์ ์ฅ๋๋ฉฐ, ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด ๋ก๊ทธ๋ฅผ ๊ฐ์งํ์ฌ ํน์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ ํฐ ์ ์ก์ด ๋ฐ์ํ ๋๋ง๋ค ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฅผ ๊ฐ์งํ๊ณ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ต๋๋ค.

๐กreceive์ fallback
์ด๋๋ฅผ ์์ ํ ๋ ํธ์ถ๋๋ ํน๋ณํ ํจ์๋ค์ ๋๋ค.
- receive: ๊ธฐ๋ณธ ์ด๋ ์์ ํจ์, ๋จ์ํ ์ด๋ ์์ ์ ์ฒ๋ฆฌํจ.
- fallback: ํธ์ถ๋ ํจ์๊ฐ ์์ ๋ ์คํ, ์ด๋ ์์ ๋ฐ ํจ์ ํธ์ถ ์คํจ ์ ์๋ํ๋ค.

๐กcall์ delegate call
- call: ๋ค๋ฅธ ์ปจํธ๋ํธ์ ํจ์ ํธ์ถ
(bool success, ) = otherContract.call{value: msg.value}("");
require(success, "Call failed");
- delegatecall: ํธ์ถ๋ ์ปจํธ๋ํธ์ ์ปจํ ์คํธ๋ฅผ ํธ์ถ์ ์ปจํธ๋ํธ์ ์ ์ฉ
(bool success, ) = otherContract.delegatecall(abi.encodeWithSignature("someFunction()"));
require(success, "Delegatecall failed");