이전글
[이더리움과 월드 컴퓨터] 1-4. 스마트 컨트랙트와 댑(DApp)
이전글 [이더리움과 월드 컴퓨터] 1-3. 가스와 이더 이전글 [이더리움과 월드 컴퓨터] 1-2. 튜링 완전과 튜링 불완전 이전글 [이더리움과 월드 컴퓨터] 1-1. 블록체인: 단일 장부와 단일 메모리 이전
kwjdnjs.tistory.com
주소
이번글에서는 이더리움에서 사용하는 주소를 생성해 보겠습니다.
I. 공개키와 개인키
비트코인과 마찬가지로 이더리움 주소를 생성하기 위해서는 공개키와 개인키가 필요합니다. 공개키와 개인키 생성에는 비트코인과 동일하게 secp256k1에 정의된 수들과 타원 곡선을 사용합니다.
공개키와 개인키 생성에 관한 보다 자세한 내용은 아래글들을 참고해 주세요.
'비트코인/암호학' 카테고리의 글 목록
평범한 대학생의 블록체인 기술 중심 블로그 입니다.
kwjdnjs.tistory.com
[비트코인 구조] 개인키(Private key), 공개키(Public key), 주소(Address) 생성
미리 알아야 할 내용들 '비트코인/암호학' 카테고리의 글 목록 평범한 대학생의 블록체인 기술 관련 블로그 입니다. kwjdnjs.tistory.com [비트코인 암호학] 3.1 공개키 암호화 타원곡선을 이용해 디지
kwjdnjs.tistory.com
II. 주소
공개키와 개인키를 이용하면 주소를 생성할 수 있습니다. 아래 개인키와 공개키를 이용하여 실제 이더리움 주소를 생성해보겠습니다.
개인키: 42d219444915828585a35b44849417b6eeb604bd0c7afda058c78319481d0055
공개키 Px: eb6033f9e7446731e50e75b099ed5439698f3d5a59e89b1f64c2445c2a245bf0
공개키 Py: b1eee1bef6c81f6118de9fda1da4d85a728579563556b402aa75728d97da2598
이더리움에서는 Px와 Py를 합친 64바이트(128자리)의 공개키를 사용합니다. 해당 공개키는 다음과 같습니다.
공개키: eb6033f9e7446731e50e75b099ed5439698f3d5a59e89b1f64c2445c2a245bf0b1eee1bef6c81f6118de9fda1da4d85a728579563556b402aa75728d97da2598
이제 위 공개키 값을 16진수로 Keccak-256 해시함수에 대입하여 해시값을 구합니다. 해당 값은 다음과 같습니다.
Keccak-256 해시값: eec38f302f8bae68a51c969ca1ab62dc13c049f19379e7ee7fe42c03a5f2344d
이제 위 값의 마지막 20바이트(40자리)를 구합니다. 이 값이 바로 이더리움 주소입니다.
주소: a1ab62dc13c049f19379e7ee7fe42c03a5f2344d
비트코인에 비해 주소생성이 상대적으로 간단함을 알 수 있습니다.
III. 체크섬
마지막으로 주소에 체크섬을 추가해 보겠습니다. 먼저 소문자로만 이뤄진 주소를 16진수가 아닌 문자열(text)로 취급하여 Keccak-256 해시 함수에 대입합니다. 이를 통해 구한 값이 바로 체크섬입니다.
체크섬: dd437c3f2be8daee6e39cef67f6868ef6652fb46f232649e42bddca4b6ba707a
이더리움은 이더리움 주소에 체크섬을 적용하여 사용합니다. 체크섬을 적용하는 방법은 다음과 같습니다.
먼저 주소와 같은 자리의 체크섬 값을 확인합니다. 예를 들어 구한 주소의 첫자리는 a이며, 체크섬의 첫자리는 d입니다. 이 상황에서 체크섬의 값이 0~7이라면 주소를 소문자로, 8~f이라면 주소를 대문자로 변경합니다.
이 과정을 모두 거치면 다음과 같은 주소를 얻을 수 있습니다. 0x는 16진수임을 나타내기 위해 사용합니다.
주소(체크섬 포함): 0xA1ab62dC13C049F19379E7Ee7Fe42C03a5f2344d
[주의! 위 주소로 이더를 전송하지 마세요. 개인키가 공개된 주소이기 때문에 이더를 잃어버릴 수 있습니다.]
참고. 니모닉과 HD 지갑
이더리움은 비트코인과 같이 니모닉과 HD 지갑을 지원합니다. 기본적인 규칙은 비트코인과 동일하며, 파생 경로만 다음 경로를 사용하면 됩니다.
이더리움 HD 지갑 파생 경로: m/44’/60’/0’/0
니모닉과 HD 지갑에 대한 보다 자세한 내용은 아래 글을 참고해 주세요.
- BIP39: 니모닉(Mnemonic)과 시드(Seed)
- BIP32: HD지갑(Hierarchical Deterministic Wallet)
- HD 지갑 파생 경로(Derivation Paths)
지금까지 이더리움 주소를 생성하는 방법에 대해 알아봤습니다. 다음 글에서는 개인키와 주소를 이용하는 이더리움의 개인 계정인 EOA에 대해 알아보겠습니다.
감사합니다.
다음글
[이더리움과 월드 컴퓨터] 2-2. EOA
이전글 [이더리움과 월드 컴퓨터] 2-1. 주소 이전글 [이더리움과 월드 컴퓨터] 1-4. 스마트 컨트랙트와 댑(DApp) 이전글 [이더리움과 월드 컴퓨터] 1-3. 가스와 이더 이전글 [이더리움과 월드 컴퓨터] 1
kwjdnjs.tistory.com
'이더리움 > 이더리움과 월드 컴퓨터' 카테고리의 다른 글
[이더리움과 월드 컴퓨터] 2-3. EVM (0) | 2023.02.10 |
---|---|
[이더리움과 월드 컴퓨터] 2-2. EOA (0) | 2023.02.07 |
[이더리움과 월드 컴퓨터] 1-4. 스마트 컨트랙트와 댑(DApp) (0) | 2023.02.05 |
[이더리움과 월드 컴퓨터] 1-3. 가스와 이더 (0) | 2023.02.02 |
[이더리움과 월드 컴퓨터] 1-2. 튜링 완전과 튜링 불완전 (0) | 2023.01.29 |