• Block 구조
    • 4가지 필드
      • 사이즈 - field - 설명
      • 4bytes - Block Size - Block의 크기
      • 80bytes - Block Header - Block Header 정보
      • 1-9bytes - Transaction Counter - 현재 블록 내 Transaction 개수(보통 2000~3000개정도)
      • Variable - Transaction - 블록내 Transaction 리스트
  • Block Header 구조
    • 6가지 필드
      • 사이즈 - field - 설명
      • 4bytes - Version - 버전정보
        • 소프트포크(소프트 버전의 업데이트)할 때, 95%이상이 업데이트가 이뤄져야 이후에 생성되는 블록들도 업데이트된 버전이 적용됨.
      • 32bytes - Previous Block Hash - 이전 Block의 Header Hash
        • 이전 블록의 Block Header의 모든 값을 해시한 값.
      • 32bytes - Merkle Root - Transaction들의 Hash Root
        • 블록안의 transaction이 위조된 것인지 아닌지 확인할 때 사용
      • 4bytes - Timestamp - 블록 생성 시간 (UNIX Epoch)
        • 현재 시간보다 2시간이내임을 확인할 때 사용. UNIX Epoch는 1970년 1월 1일 00시 00분 00초를 0으로 두고 매 1초마다 증가.
      • 4bytes - Difficulty Target - PoW의 어려움 정도
        • bit 값, 블록체인에 블록이 생성되는 시간에 영향.
      • 4bytes - Nonce - PoW의 결과(채굴 정답)
  • Genesis Block
    • Genesis Block이 다르면 완전히 다른 네트워크가 되어버림.
    • Genesis Block은 최초 검증 데이터로 Genesis Block이 다르게 되면 그 뒤에 연결되는 모든 Blockchian 데이터 검증이 불가능 하다.
  • Block 생성
  • Block 연결 방법
    • transaction이 모여있는 Merkle tree → 해싱한 Merkel Root → Merkle Root와 여러 정보를 포함한 Block Header → 해싱한 Block Hash → 다음 Block의 Previous Block Hash (체인의 형태)
    • Nonce 값을 이용해 정상적으로 블록이 생성될 정도의 시간을 만들어줌.
  • Block Size
    • 현재 기준 Bitcoin 전체 Blockchain Size는 약 400GB
    • 1개의 Block의 최대 크기는 1MB (1MB 초과는 Witness Data)
    • 최근에는 소프트포크로 서명된 데이터는 Witness Data로 1MB제한에 포함시키지 않아 1MB가 넘은 블록도 발생.
  • Bitcoin에서 Block 크기를 제한과 채굴
    • Bitcoin에서 Block 크기의 제한을 둔 이유
      • → Transaction을 처리하기 위한 Database Lock의 성능 때무
        → 이로 인해 1Block 내에 약 2000개의 Tx만 들어가게 됨(3-7tps)
        → 채굴자들은 이런 Block 크기의 제한으로 인해 거래 수수료를 최대한을 많이 얻는 방법을 구현
        → 수수료가 비싸거나 거래 데이터 용량이 작은 거래만 선택
        → Bitcoin 사용자가 늘어나며, 수수료 가격 증가 (Bitcoin 가격 증가로 인해 더 폭등)
        → 2017년 Hard Fork(Segwit)
profile
"프로그래밍은 저의 상상을 실현 시킬 수 있는 유일한 도구입니다."

0개의 댓글