개요
이더리움 단위 체계는 10의 지수 기반으로 딱 떨어지게 설계됨 EVM은 부동소수점을 지원하지 않으므로 모든 값은 정수로 표현, 단위 나눔과 스케일링이 필수
단위 환산
1 ETH = 10^9 Gwei = 10^18 Wei
풀어서 보면 다음과 같음
- 1 ETH
- = 1,000,000,000 Gwei (10억 그웨이)
- = 1,000,000,000,000,000,000 Wei (100경 웨이)
용도별 구분
- Wei: 최소 단위, 스마트 컨트랙트 내부 연산에 사용. Solidity에 소수점 개념 없음
- Gwei: 10^9 Wei. 가스 가격 표시 단위로 사용, 사람이 읽고 비교하기 쉬움
- Ether: 10^18 Wei. 지갑 잔고, 일상적 송금 금액 표시에 사용
개발자 상식: ERC-20 decimals = 18
ERC-20 토큰에서 decimals를 18로 두는 관례는 이더리움 기본 최소 단위(Wei) 스케일을 그대로 따름 의미: 토큰 1개가 10^18의 최소 단위로 분할 가능 예외: 스테이블 코인처럼 법정화폐 소수 자리를 맞추는 토큰은 decimals 6 등으로 설정하는 경우 있음
구현 팁
- 온체인 연산은 항상 정수로 처리. 금액 연산 시 기준 단위를 Wei로 고정
- 스케일 변환 관례: ETH ↔ Wei 변환 시 1e18 계수 사용. 예)
amountInWei = amountInEth * 1e18 - 프런트엔드 표현 단계에서만 단위 변환 및 포맷팅. 사용자 입력은 문자열 → 정수 스케일 업 후 처리 권장
- 가스비 표시는 Gwei로 노출, 내부 연산은 Wei로 계산. base fee와 tip 합산 시 단위 혼용 주의
정리
핵심은 정수 기반 단위 스케일 고정과 문맥별 표현 단위 분리 컨트랙트 내부 연산은 Wei, 가스 가격 표시는 Gwei, 사용자 노출은 Ether라는 역할 구분 유지