Bitcoin Whitepaper 정리
2023. 6. 13. 17:43ㆍBlockchain/Bitcoin
728x90
반응형
※ 원글 작성 : 22년 4월 26일
오래된 정보들은 맨날 까먹어서 블로그에 정리.
기억 유지용이라 틀린 정보도 있을 수 있으니 참고바라며...
앞으로 더 추가할게 있다면 다음 게시물들도 주기적인 수정을 할 계획.
Blockchain
- P2P network를 통해 공유되어 암호화 된 분산형 데이터베이스
- Genesis block을 기준으로 각 block이 이전 block의 정보를 가지며, 체인을 생성
- CPU power(hash power)를 통한 경쟁에서 생성된 block은 main chain으로 구성
Timestamp server
- 전송 시점을 포함한 block의 hash를 산출 후 전체에 전송
- 시점 기록(timestamp)를 통해 해당 데이터의 특정 시점에서의 존재 유무 확인
- 시점 기록 hash에는 이전 시점 기록 포함, 추가 시점 기록이 선행 시점 기록에 연결되며 chain 생성
Proof-of-Work
- Hash 값 0bit 확인 scan 작업
- Block에 nonce를 대입해 해당 block의 hash에 필요한 0bit 숫자가 출력될 때 까지 반복
- 차후 block이 main chain에 추가되며, 특정 block 변경 시 선행 block 모두 재처리 필요
- Majority decision
- 최대의 PoW 선택 결론은 main chain에서 확인 가능
- 임의의 attacker가 blockchain 공격을 위해 다수의 honest가 설치한 main chain을 선행 block까지 재처리하여 성공할 가능성은 block이 추가될수록 감소
Network
- 전체 node에 new transaction 전송
- New transaction 수집 후 block에 추가
- 각자 노드에서 PoW를 실행
- PoW 성공 노드는 생성한 block을 전체 노드로 전송
- Transaction이 유효하고, 중복 확인 후 해당 block을 accept
- 해당 blockhash를 사용해 추가 block을 생성
Incentive
- Network 유지 보상
- Block 첫 전송 : coin 유동 개시
- 전송 수수료 : 출금값이 입금값보다 적을 경우 차액은 마지막 transaction을 포함한 block의 보상액수에 전송 수수료로 추가
Declaiming disk space
- 소비된 transaction 기록 삭제
- Transaction 정보 hash는 merkle tree에 입력
Merkle tree
- 다량의 leaf node, 자신 하위는 두 자식 node hash로 구성된 중간 node, 최상위의 root node로 구성
- 특정 block의 data가 분리되어 전달 가능
- 관련 transaction의 branch만 다운 가능
- 강한 안정성 보장 및 임의의 transaction 상태와 잔고 확인 가능
- Attacker가 block 정보를 임의로 변경 시 상위 node에 영향을 미쳐 root node hash 변경 → 해당 block은 다른 block으로 인식되어 무효한 PoW를 가짐
Simplified payment verification (SPV)
- 확인할 transaction 및 transaction을 연결하는 merkle branch 획득으로 verification 가능
- Transaction 사실 확인은 불가 → 해당 transaction이 존재하는 chain 위치로 network에서 transaction을 인정함을 확인 가능
Combining and splitting value
- Transaciton은 입금/출금으로 구성
- 금액의 결합 및 분리 가능
Mining
- Block의 구성
- Timestamp, nonce, 이전 block hash, 이전 block 이후 발생한 transaction 목록
- Block 유효성 검증 알고리즘
- 해당 block 이전 block 존재 유무 확인
- Timestamp값이 이전 block보다 크며 2시간 이내인지 확인
- PoW의 유효 판단
- Transaction 목록들의 참거짓을 확인
- False(error) return 종료, true return시 해당 block을 chain의 마지막 block으로 등록
- PoW 조건을 만족
- 256bits의 각 block 해시값(SHA-256)이 동적 조정 목표값(2^192)보다 작아야 하는 조건
- Block생성을 어렵게 만들어 attacker의 임의 조작 방지
- 동적 조정 목표값 하에서, 하나의 유효 block을 발견하기 위해 2^64번 시도 → 해당 목표값은 2016개 마다 network에서 재조정 → node의 block 생성 평균 10분
- 해당 연산작업 보상으로 각 block의 miner 들은 25BTC 획득
- 출력금액보다 입력금액이 큰 transaction은 해당 차액을 transaction 수수료로 획득
PoW & Hash algo
- Network PoW 처리 참여 node는 전달받은 거래내역들을 transaction pool에 보관
- 해시 알고리즘(bitcoin : SHA-256)을 통해 특정 난이도 해시값을 생성
- Target hash value를 찾아낸 사용자는 block 생성 권한 획득
- 시스템 설정 목표값을 경쟁 후 먼저 찾은 node는 생성 block을 전체 node에 공표, main chain에 추가
- Block의 속도 증가는 다량의 node 자원 필요
Blockchain을 이용한 bitcoin의 특징
- 익명성(Anonymity) : Blockchain 생성 시 개인정보 미입력
- 무국격성(Borderlessness) : 국경에 무관, 범국가적 사용 가능
- 탈중앙성(Decentralization) : 중앙관리 서버 부재로 시스템 변조 불가
- 분산네트워크(Distributed network) : 근처 node에 web으로 연결
- DDoS 차단(DDoS attack-proof) : 수수료 시스템 존재로, DDoS 공격 통한 시스템 마비 불가
- 분할성(Divisibility into pieces) : 화폐 단위 분할 가능 (e.g. 1, 0.1, 0.000001원)
- 투명성 (Transparency) : 각 block내의 거래내역 모두 조회 가능 및 SW 소스 모두 공개
728x90
반응형
'Blockchain > Bitcoin' 카테고리의 다른 글
Blockchain & Bitcoin concept [3] (Algorithm, Protocol, Scalability) (0) | 2023.06.13 |
---|---|
Blockchain & Bitcoin concept [2] (Transaction, Block) (0) | 2023.06.13 |
Blockchain & Bitcoin concept [1] (Base, Attack) (0) | 2023.06.13 |