BlockChain이란?

augusstt·2023년 6월 10일
0

BlockChain

목록 보기
1/5
post-thumbnail

📌 BlockChain?

블록체인이란 P2P 네트워크를 통하여 관리되는 분산 데이터베이스의 형태로, 분산원장 기술이라고도 불린다.
즉, 거래 정보를 기록한 데이터를 중앙에서 관리하는 것이 아니라, 참가자들이 공동으로 관리한다.

블록과 블록을 체인처럼 연속적으로 연결하는 체인 구조로 되어있으며, 이전에 생성된 블록과 새로 생성된 블록을 계속해서 연결한다.

기본 원리

메커니즘

블록체인을 활용한 거래과정은 다음과 같다.

  • A => B 거래 요청

  • 1.의 거래 정보가 담긴 블록생성

  • 블록이 네트워크상의 모든 참여자에게 전송

  • 참여자들은 거래 정보 유효성 상호검증

  • 검증이 완료된 블록은 이전 블록에 연결

  • 해당 블록의 사본이 생성되고, 각 사용자의 컴퓨터에 분산 저장

  • 거래 완료

위의 과정처럼 데이터에 대한 분산처리와 거래자들의 유효성 상호검증을 적용하여 높은 보안성을 확보함과 동시에 기존에 중앙집중 서버에서 문제로 꼽히는 디도스 공격을 방어 할수 있다.

그렇다면 과연 블록이 무엇인지 알아보자

📌 Block?

블록

블록체인에서 데이터를 저장하는 단위로써, 다수의 거래정보의 묶음이다. 크게 블록 해시와 헤더, 그리고 바디로 나뉜다.

최초에 생성된 블록을 제네시스 블록이라고 한다.

블록 해시(Hash)

해시는 블록의 이름으로써, 블록을 식별하는 역할을 한다.
블록헤더에 있는 6가지의 정보를 합쳐서 SHA256 알고리즘으로 변환한 값을 바로 해시라고 한다.

SHA256이란 256비트로 구성되어 64자리 문자열을 반환하는 대표적인 해시 알고리즘 중 하나이다.

이 해시는 변환전의 문자열의 길이와 상관없이 일정한 길이의 값으로 변환이 가능하다.
만약 원본 문자열이 한 글자라도 바뀐다면 변환 후의 해시값은 아예 다른 결과가 출력된다.

블록 헤더

헤더는 크게 6개의 정보로 구성되어 있다.

  • Version

    • 소프트웨어 버전
      블록 헤더를 만든 비트코인 프로그램의 버전 정보
  • Previous block hash

    • 이전 블록 해시
      이전 블록의 주솟값을 가리키는 요소.
  • Merkle tree root

    • 머클 루트
  • Timestamp

    • 시간
      블록의 생성시간.
  • Difficulty (Bits)

    • 작업 난이도
      Nonce값 계산이 어려운 정도를 나타내며, bits라는 값으로 조절된다.
      생성된 블록의 높이에 따라 자동으로 조절되어 채굴되는 속도를 유지한다.
  • Nonce

    • 난수
      암호화 난수

헤더에 구성된 상위 5가지의 데이터와 마지막 Nonce (난수)를 조합하여 목표값보다 작은 해시값을 찾는 행위를 채굴이라 한다.
Nonce를 제외한 나머지 요소는 고정값이기 때문에 Nonce를 조절해 가며 해시값을 찾아야 한다.

다른 요소는 이름으로 쉽게 추측이 가능하지만 Merkle tree root 는 단어 자체만으로 뭔지 잘 모르겠으니 자세히 살펴보자

Merkle tree root

머클루트

머클트리루트란 위의 사진처럼 블록이 보유하고 있는 거래 내역들의 해시값을 2개씩 쌍을 지어 해시하는 과정을 반복하였을때 최종적으로 얻게 되는 값을 말한다.

이진트리의 형식을 띄고 있기 때문에 거래량이 기하급수적으로 늘어나도 특정한 거래의 경로를 찾는 시간이 log(2n) 으로 매우 짧다.

또한, 모든 거래기록을 해싱하여 트리형태로 구성하여 머클루트를 생성하기 때문에 거래 중 1개를 위/변조하더라도 변경된 머클루트의 값을 통하여 데이터가 위/변조 되었다는 사실을 알 수 있다.

블록 바디

해당 블록의 거래 정보를 담은 트랙잭션 리스트로 구성되어 있다.

트랜잭션이란 블록체인이라는 데이터베이스의 상태를 변환시키는 기능을 수행하기 위한 작업의 단위이다.
블록체인에서 일어나는 모든 활동은 트랙잭션을 통하여 이루어지며. 체인마다 다른 특성을 지닌다.

profile
https://augusstt-note.gitbook.io/aug-note 로 블로그 이전했습니다!

0개의 댓글