- 네트워크: BSC Testnet
- 체인 ID: 97
---
1. 지갑 주소 생성 (Private Key, Public Key)
1.1 Private Key로 Public Key 추출
1.2 생성된 주소 메타마스크에 등록해보기
1.3 Private Key로 서명 생성
2. 단위 변환 (wei, gwei, eth)
2.1 wei → eth
2.2 eth → wei
이더리움 단위 변환 (wei, gwei, ether)
이더리움(Ethereum)에서 모든 금액은 가장 작은 단위인 wei로 처리된다.
그 이유는 컴퓨터가 소수점 계산에서 발생할 수 있는 오차를 피하기 위해서이다.
모든 계산을 정수 단위로만 수행하면 금융 연산에서의 정확성을 보장할 수 있다.
web3j에서는 Convert 유틸 클래스를 이용해 wei, gwei, ether 간의 단위 변환을 할 수 있다.
1. 이더리움 단위 체계
단위 설명 비율
wei | 가장 작은 단위 | 1 wei |
gwei | 가스비 계산에 주로 사용 | 1 gwei = 10⁹ wei |
ether | 기본 단위 | 1 ether = 10¹⁸ wei |
즉, 1 ether = 1,000,000,000 gwei = 1,000,000,000,000,000,000 wei 이다.
2. 예제 코드
package conversion;
import java.math.BigDecimal;
import org.web3j.utils.Convert;
import org.web3j.utils.Convert.Unit;
public class EtherUnitConversion {
public static void main(String[] args) {
// 단위 정리
// wei : 가장 작은 단위
// gwei : 가스비 계산에 사용 (10^9 wei)
// ether : 기본 단위 (10^18 wei)
// 1. wei -> gwei, wei -> eth
BigDecimal wei1 = new BigDecimal("18000000000000000000"); // 18 ETH에 해당하는 wei
BigDecimal gwei1 = Convert.fromWei(wei1, Unit.GWEI);
BigDecimal eth1 = Convert.fromWei(wei1, Unit.ETHER);
System.out.println("=== wei -> gwei, wei -> eth ===");
System.out.println("wei1 = " + wei1);
System.out.println("gwei1 = " + gwei1);
System.out.println("eth1 = " + eth1);
// 2. eth -> wei, gwei -> wei
BigDecimal eth2 = new BigDecimal("0.39");
BigDecimal wei2 = Convert.toWei(eth2, Unit.ETHER);
BigDecimal gwei2 = Convert.toWei(eth2, Unit.GWEI);
System.out.println("=== eth -> wei, gwei -> wei ===");
System.out.println("eth2 = " + eth2);
System.out.println("wei2 = " + wei2);
System.out.println("gwei2 = " + gwei2);
}
}
3. 실행 결과
=== wei -> gwei, wei -> eth ===
wei1 = 18000000000000000000
gwei1 = 18000000000
eth1 = 18
=== eth -> wei, gwei -> wei ===
eth2 = 0.39
wei2 = 390000000000000000
gwei2 = 390000000
4. wei를 사용하는 이유
이더리움은 모든 계산을 wei 단위의 정수(integer)로 처리한다.
즉, 내부적으로는 소수점이 존재하지 않는다.
이 방식은 부동소수점 연산에서 생길 수 있는 오차를 제거하기 위함이다.
예를 들어 사용자가 1.5 ETH를 전송한다고 입력하면,
내부에서는 1,500,000,000,000,000,000 wei로 변환되어 기록된다.
이렇게 하면 정밀도 손실 없이 정확한 계산이 가능하다.
5. 비트코인과의 비교
비트코인도 동일한 원리로 동작한다.
1 BTC = 10⁸ 사토시(Satoshi)이며, 이더리움의 wei와 유사한 개념이다.
즉, 비트코인은 1 BTC를 100,000,000개의 사토시로 쪼개고,
이더리움은 1 ETH를 1,000,000,000,000,000,000개의 wei로 쪼갠다.
6. 정리
이더리움 단위 변환은 가스비 계산, 트랜잭션 생성, 스마트 컨트랙트 호출 등
거의 모든 영역에서 필수적으로 사용된다.
web3j의 Convert 클래스를 사용하면 단위 변환을 간단히 수행할 수 있다.
변환 방향 메서드
wei → 다른 단위 | Convert.fromWei() |
다른 단위 → wei | Convert.toWei() |
'Blockchain' 카테고리의 다른 글
BSC Testnet Web3j 스터디 (4) Private Key로 서명 생성 (0) | 2025.10.11 |
---|---|
BSC Testnet Web3j 스터디 (3) 생성된 주소 메타마스크에 등록해보기 (1) | 2025.10.09 |
BSC Testnet Web3j 스터디 (2) Private Key로 Public Key 추출 (0) | 2025.09.13 |
BSC Testnet Web3j 스터디 (1) 지갑 주소 생성 (Private Key, Public Key) (0) | 2025.08.31 |
블록체인의 이해 (1) | 2025.08.24 |