ABI Encoder/Decoder
Solidity ABI 인코딩/디코딩 도구
Selector: 0x59d228e5
Encoded Calldata:
0x59d228e50000000000000000000000001234567890abcdef1234567890abcdef1234567800000000000000000000000000000000000000000000000000000000000f4240ABI Encoder/Decoder 소개
ABI Encoder / Decoder는 이더리움 스마트 컨트랙트 콜데이터를 다루기 위한 브라우저 기반 도구입니다. transfer(address,uint256)과 같은 Solidity 함수 시그니처를 입력하면 Keccak-256 해시를 통해 4바이트 함수 셀렉터를 계산하고, address·uint/int·bool·바이트 등 각 파라미터 타입에 맞게 32바이트 워드 경계로 패딩하여 ABI 인코딩합니다.
스마트 컨트랙트 개발자들은 저수준 트랜잭션을 직접 구성하거나, Etherscan 등 블록 탐색기에서 캡처한 온체인 호출을 디버깅할 때 이 도구를 활용합니다. 디코딩 탭에서는 0x로 시작하는 원시 헥스 콜데이터를 입력하면 4바이트 셀렉터와 나머지 32바이트 파라미터 슬롯으로 분리하여 보여줍니다.
모든 인코딩·디코딩 로직은 JavaScript BigInt 연산으로 브라우저 안에서 완전히 실행됩니다. 지갑 연결, RPC 노드, 백엔드 서버가 전혀 필요 없으며, 개인 주소나 토큰 수량 같은 민감한 콜데이터도 기기 밖으로 전송되지 않아 메인넷 데이터를 안심하고 사용할 수 있습니다.
주요 기능
- Solidity 함수 시그니처에서 4바이트 함수 셀렉터 자동 생성
- address, uint/int(모든 크기), bool, 원시 바이트 파라미터 ABI 인코딩
- 줄바꿈으로 구분된 여러 파라미터 값 일괄 입력 지원
- 원시 헥스 콜데이터를 셀렉터 + 32바이트 파라미터 청크로 디코딩
- 시그니처와 값 입력 즉시 실시간으로 출력 업데이트
- 인코딩/디코딩 모드를 버튼 하나로 전환
- 100% 클라이언트 사이드 처리 — 서버 없음, 지갑 연결 없음, 데이터 업로드 없음
- 다크 모드와 반응형 레이아웃으로 데스크톱 및 모바일에서 편리하게 사용
자주 묻는 질문
이더리움 ABI 인코딩이란 무엇인가요?
ABI(Application Binary Interface) 인코딩은 이더리움 트랜잭션이 스마트 컨트랙트와 통신하는 표준 방식입니다. 컨트랙트 함수를 호출할 때 입력 데이터는 헥스 문자열로 구성되며, 앞 4바이트는 함수 셀렉터, 나머지는 각 파라미터를 32바이트 단위로 패딩한 ABI 인코딩 값입니다.
4바이트 함수 셀렉터는 어떻게 계산되나요?
셀렉터는 정규화된 함수 시그니처의 Keccak-256 해시 앞 4바이트입니다. 예를 들어 transfer(address,uint256)은 0xa9059cbb와 같은 8자리 헥스 셀렉터를 생성합니다. 이 도구는 브라우저에서 빠르게 동작하는 해시 알고리즘으로 이를 근사 계산합니다.
어떤 파라미터 타입을 지원하나요?
address(20바이트 헥스, 32바이트 패딩), uint/int(32바이트 빅 엔디안 정수), bool(0 또는 1, 32바이트 패딩), 원시 헥스 바이트(그대로 전달 후 패딩)를 지원합니다. 시그니처 파라미터 순서에 맞게 한 줄에 하나씩 값을 입력하세요.
Etherscan의 트랜잭션 콜데이터를 어떻게 디코딩하나요?
디코딩 탭으로 전환한 후, 0x로 시작하는 전체 헥스 콜데이터를 붙여넣으세요. 도구가 4바이트 함수 셀렉터를 분리하고 나머지 바이트를 param[0], param[1] 등의 32바이트 슬롯으로 나누어 표시합니다.
메인넷 트랜잭션 데이터에도 사용할 수 있나요?
네. 모든 처리가 브라우저 로컬에서 이루어지므로 주소나 토큰 수량 같은 메인넷 콜데이터를 붙여넣어도 데이터 유출 위험이 없습니다. 페이지 로드 후에는 인터넷 연결도 필요하지 않습니다.
콜데이터와 ABI 인코딩의 차이는 무엇인가요?
콜데이터는 4바이트 셀렉터와 ABI 인코딩된 파라미터를 합친 트랜잭션 전체 입력값입니다. ABI 인코딩은 파라미터를 32바이트 단위로 직렬화하는 규칙 자체를 말합니다. 이 도구는 두 단계를 모두 처리합니다.
디코딩 결과가 예상과 다르게 나오는 이유는 무엇인가요?
디코딩은 원시 바이트를 32바이트 청크로 분리할 뿐입니다. 원래 함수 시그니처와 파라미터 타입을 알지 못하면 각 바이트를 주소나 정수로 해석할 수 없습니다. 출력된 원시 청크를 바탕으로 예상 타입에 맞게 직접 해석하세요.
프로덕션 용도로 사용해도 되나요?
이 도구는 개발, 디버깅, 학습 목적으로 설계되었습니다. 셀렉터 계산은 간소화된 해시 알고리즘을 사용합니다. 프로덕션 트랜잭션 서명이나 컨트랙트 배포에는 ethers.js, viem, web3.js 같은 검증된 라이브러리를 사용하세요.