본문 바로가기

BlockChain Developer/Public Blockchain

[Solidity] Function Selector

Function Selector란 '함수서명'이라고도하며 '함수의 식별자'다. 통상 ABI안에 포함되어있음. 이는 이더스캔에서 "Method ID"로.

Function Selector는 함수 Byte Data 첫 4Byte에 저장.

 

- 아래 두가지 방식으로 취득 가능.

 

- 아래 방식으로 주로 사용.(여기서 첫번째 있는 부분이 Selector <4byte>)

(bool check, bytes memory data) = address.call(
    abi.encodeWithSignature("함수명(변수타입)",매개변수값)
);
(bool check, bytes memory data) = address.delegatecall(
    abi.encodeWithSignature("함수명(변수타입)",매개변수값)
);

 

- msg.value로 함수 내 데이터를 뽑아내면 아래와 같이 볼 수 있다. 첫 4Byte는 Selector가 출력되며 그 뒤로 32Byte단위로 Input값을 보여준다.

//"0x90b98a11     -> MethodID
//000000000000000000000000f178589cf1ef5af554863d8cef601c9fc02ca2ed   -> receiver address 
//0000000000000000000000000000000000000000000000000000000000000002"  -> the amount