[Mastering Bitcoin] 간단 정리 1

ShinboTinBBO·2025년 1월 15일

블록체인

목록 보기
1/4

Address

private key --> public key 생성
public key --> Bitcoin Address 생성

역연산은 불가능

개인 키(private key)

난수 생성을 통해서 원하는 크기의 개인 키 생성
복원 불가하므로 백업이 중요!

공개 키(public key)

타원곡선 함수를 통해서 개인 키를 기반으로 생성
개인 키 값에 G(generator point 상수)를 곱하여 공개 키 생성.
--> 역 연산은 불가능능

공개 키가 주소를 생성하는 방법:

주소의 유형과 네트워크를 식별하는데 필요한 접두어로 1바이트에 해당하는 version 값을 마련함

SHA256, RIPEMD160 해시 함수를 거쳐서 공개 키를 origin으로 하는 160bits(20bytes)의 결과 값을 만든다. 이를 payload라고 한다.

마지막으로 payload에 SHA256을 두번을 적용한 결과값의 앞 4bytes를 checksum으로 사용하여 내용의 변조를 확인함

이렇게 총 25bytes로 구성된 주소를 Base58Check Encoding을 적용함.

20bytes의 중간 값을 Base58CheckEncoding을 진행한다.

Wallet

가장 기본적인 역할:

사용자의 키를 저장하고 관리하는 데이터 구조

추가적인 고급 역할:

사용자의 자금에 접근
키와 주소 관리
잔액 추적
거래 생성 및 서명

등을 수행하는 인터페이스 응용 프로그램

비트코인 지갑에는 키만 들어있다.
코인은 블록체인에만 기록된다.

따라서 지갑은 (개인 키, 공개 키)를 포함하는 키 체인이라고도 볼 수 있음.
지갑의 키로 트랜잭션에 서명하여 코인에 대한 소유권을 증명

Nondeterministic Wallet

무작위로 생성된 개인 키의 모음
초기에 100개를 생성해놓고, 필요에 따라 더 많은 키 생성

모든 키의 복사본을 보관해야해서 지갑을 자주 백업해야 함

-> 왜 그런지는모르겠지만 주소를 재사용하게 되고 보안 측면에서 취약함

Deterministic Wallet

공통 시드(Common Seed)에다가 n번의 단방향 해시 함수에 적용하여 n번째 개인 키를 생성함

순서대로 계산만 하면 모든 파생 키를 계산할 수 있음.
따라서 백업 또한 초기 시드만 한버 백업하면 됨.

HD(Hierarchical Deterministic) wallet --> 계층 결정적 지갑

하나의 시드에서 많은 키를 쉽게 파생할 수 있음.
부모키가 자식키를 만들고 자식키가 손자키를 만든느 구조

지정된 크기(128, 256, 512)의 Root Seed를 기반으로 한다.
해시 알고리즘을 통해 마스터 키와 마스터 체인코드를 생성.

매 거래마다 새로운 주솔르 생성하여 보안강도를 높일 수 있음.

HD wallet은 키 파생 방법이 복잡하다...

Authorization & Authentication

비트코인의 '스크립트' 언어에 대해서
output script(잠금 스크립트), input(잠금 해제 스크립트)를 통해 사용하고자 하는 input이 유효한 것인지를 검증한다.

스크립트의 구성은 아래와 같다.
전형적인 Pay to Public Keey Hash(P2PKH) 스크립트에 대한 내용임.
input script + output script
<sig> <PubK> + DUP HASH160 <PubKHash> EQUALVERIFY CEHCKSIG

Bob에 개인 키에 대한 유효한 서명 값을 가지고 있다면 TRUE를 반환함.

profile
지상 최강의 해적

0개의 댓글