# 지갑 가져오기 형식 (Wallet Import Format, WIF)

지갑 가져오기 형식(Wallet Import Format, WIF)은 비트코인 등에서 쓰는 ECDSA 개인 키를 지갑 간에 옮기거나 가져오기 쉽게 인코딩한 문자열 형식입니다. '지갑 임포트 포맷'이라고 옮기기도 하며, Wallet Export Format이라고도 합니다. 32바이트 개인 키에 버전 바이트와 체크섬을 붙여 Base58Check로 인코딩한 문자열입니다.

## 구조

비트코인 개인 키는 본래 256비트 숫자입니다. 이를 16진수 64자로 쓰면 오타를 알아채기 어렵기 때문에 WIF는 다음 과정을 거칩니다.

1. **버전 바이트:** 32바이트(256비트) 개인 키 앞에 네트워크를 나타내는 바이트를 붙입니다. 비트코인 메인넷은 0x80, 테스트넷은 0xEF입니다.
2. **압축 플래그(선택):** 이 키에 대응하는 공개 키를 압축 형식(33바이트)으로 쓴다는 표시로 끝에 0x01을 붙입니다.
3. **체크섬:** 위 데이터에 SHA-256을 두 번 적용한 결과의 앞 4바이트를 덧붙입니다.
4. **Base58 인코딩:** 전체 바이트열을 Base58로 인코딩합니다. Base58은 0, O, I, l처럼 헷갈리기 쉬운 문자를 쓰지 않습니다.

## 형태로 알아보기

- 메인넷의 비압축 키용 WIF는 **5**로 시작하는 51자 문자열입니다.
- 메인넷의 압축 키용 WIF는 **K** 또는 **L**로 시작하는 52자 문자열입니다.
- 테스트넷 WIF는 보통 9(비압축) 또는 c(압축)로 시작합니다.

압축 플래그가 다르면 같은 개인 키라도 서로 다른 주소가 만들어지므로, 지갑은 WIF의 형태를 보고 어떤 주소를 찾아야 할지 판단합니다.

## 쓰임새

- **가져오기와 내보내기:** 지갑 간에 개별 개인 키를 옮기거나(import), 종이 지갑처럼 키를 따로 보관할 때 씁니다. 오래된 지갑의 키 내보내기, Bitcoin Core의 importprivkey 같은 기능에서 주로 쓰였습니다.
- **오류 감지:** 체크섬 덕분에 한두 글자를 잘못 옮겨 적으면 지갑이 잘못된 키로 인식하고 거부합니다. 다만 오류를 고쳐 주지는 않습니다.

## 주의할 점

- **비밀 유지:** WIF는 개인 키 그 자체이므로 이를 아는 사람은 해당 주소의 자산을 옮길 수 있습니다. 다른 사람에게 알려서는 안 되며, 화면 캡처·메신저·클라우드 메모에도 남기면 안 됩니다.
- **암호화 없음:** WIF 자체는 개인 키를 암호화하지 않습니다. 비밀번호로 보호하려면 BIP38 같은 별도 방식이 필요하며, BIP38로 암호화한 문자열은 6P로 시작합니다.
- **가져오기보다 스윕:** 다른 사람에게 받은 WIF를 쓸 때는 지갑에 가져오기(import)보다 즉시 새 주소로 자금을 옮기는 스윕(sweep)이 안전합니다.
- **철회 불가:** 한 번 노출된 키는 되돌릴 수 없으므로, 새 키를 만들고 자산을 옮겨야 합니다.
- **신뢰할 수 있는 지갑:** WIF를 입력할 때는 신뢰할 수 있는 지갑 소프트웨어인지 반드시 확인해야 합니다.

## 다른 체인과의 차이

이더리움 계열에서는 WIF를 쓰지 않고 개인 키를 16진수 64자 그대로 쓰거나, 비밀번호로 암호화한 JSON 키스토어 파일을 씁니다. 지갑 앱이 '개인 키 가져오기'를 지원한다고 해도 체인마다 형식이 다르므로, 비트코인용 WIF를 이더리움 지갑에 그대로 넣을 수는 없습니다.

오늘날 대부분의 지갑은 시드 문구(BIP39)와 계층적 결정 지갑(BIP32)으로 여러 키를 한꺼번에 백업하므로, WIF는 주로 개별 키를 다룰 때 쓰입니다.

---
출처: https://achivx.kr/glossary/wallet-import-format-%EC%A7%80%EA%B0%91-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-%ED%98%95%EC%8B%9D/ · ACHIVX 용어 사전 · 수정일 2026-10-20
