Bitcoin Whitepaper 정리

2023. 6. 13. 17:43Blockchain/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
반응형