컴퓨터공학
Application Binary InterfaceABI
ABI(Application Binary Interface)는 스마트 컨트랙트와 외부 세계(프론트엔드, 다른 컨트랙트) 사이의 인터페이스 규약이다. 함수 이름, 파라미터 타입, 반환 타입을 JSON 형태로 정의해, 컨트랙트 함수를 올바르게 호출하고 결과를 해석하는 방법을 알려준다.
ABI의 역할
ABI 구조 (예시)
ABI 인코딩
함수 호출 시 데이터는 함수 선택자(4바이트) + 인코딩된 파라미터로 구성된다.
스마트 컨트랙트 개발에서 ABI
- •Solidity 컴파일 시 소스코드와 함께 ABI JSON이 생성됨
- •Hardhat, Foundry 등 개발 도구가 자동 생성
- •JavaScript/TypeScript 프론트엔드에서 ethers.js와 함께 사용
관련 개념
- •스마트 컨트랙트 — ABI로 상호작용하는 대상
- •컴파일 — ABI가 생성되는 과정
- •EVM — ABI 인코딩된 데이터를 실행
- •Solidity — ABI 생성 언어
참고문헌
stateMutability 값
| 값 | 의미 |
|---|---|
view | 상태 읽기만 (가스 없이 호출 가능) |
pure | 상태 접근 없음 (순수 계산) |
nonpayable | ETH 수신 불가 (일반 상태 변경) |
payable | ETH 수신 가능 |
함수 선택자 (Function Selector)
함수 호출 시 calldata의 첫 4바이트는 Keccak-256 해시의 앞 4바이트다.
이 4바이트 뒤에 인코딩된 파라미터가 이어진다.