블록체인이란?

최현석·2021년 12월 29일
0

블록체인

목록 보기
1/5

블록체인

  • P2P(Peer to Peer) 네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태
  • 기존 : 거래 정보를 담은 장부를 중앙 서버 한 곳에 저장하는 방식
  • 블록체인 네트워크에 연결 된 여러 컴퓨터(노드)에 저장 및 보관하는 기술
  • 분산원장 기술
    • 분산원장 (공유원장, 또는 분산원장기술) 은 복제, 공유 또는 동기화된 디지털 데이터에 대한 합의 기술이다.
      이때 데이타들은 지리적으로 여러 사이트나, 여러 국가 또는 여러 기관에 분산되어 있게 된다.
      즉 중앙집중적인 관리자나 중앙집중의 데이터 저장소가 존재하지 않고 기능이 동작하게 된다.
      결국 사용자 개인간 직접 접속(peer-to-peer) 네트워크가 필요하며 당연히 노드 간 복제 데이터에 대한 합의 알고리즘이 수행되어야 한다.
  • 분산처리와 암호화

블록체인이란?

  • 블록들을 체인 형태로 묶은 형태
  • 블록들이 형성된 후 시간의 흐름에 따라 순차적으로 연결 된 ‘사슬(체인)’의 구조를 가지게 된다. Untitled

특장점

  • 분산저장
  • 기존 거래방식의 단점 : 데이터를 위, 변조 하기 위해선 중앙 서버를 공격
  • 블록체인의 장점
    • 여러 명이 동일한 데이터를 저장
    • 블록체인 네트워크를 위, 변조하기 위해서는 참여자(노드)의 거래 데이터를 모두 공격해야 하기 때문에 사실상 해킹이 불가능
  • 중앙 관리자 불필요
    • 중앙기관이나 관리자 없이도 다수가 데이터를 저장, 증명할 수 있기 때문에 탈중앙화 가능

블록체인의 기술 활용

  • 금융거래
  • 개인 의료 정보
  • 영상 또는 이미지, 음원과 같은 콘텐츠
  • 전자 계약 시스템
  • 부동산 시장
  • 의료 부문
  • 인적 자원 관리

블록체인 동작 원리

  • 하나의 새로운 블록을 구성한 경우, 이전부터 이어져 내려오던 블록체인의 맨 끝에 이 새로운 블록을 연결
  • 새로 구성한 블록의 이름에 해당하는 해시를 찾아내는일
    • 목표 값보다 작아야 한다는 조건을 충족해야함
      • ex) 목표 해시 값 : 00ff32 새로 만든 블록의 해시 값 : 12fa3b (생성 실패) 새로 찾아낸 해시 값 : 00c3b1 (생성 성공)

블록체인 합의 알고리즘

PoW(Proof of Work) - 작업 증명

  • 문제(특정 조건을 만족하는 해시 값 찾기 등)를 주고 조건을 만족하는 답을 찾아낸 노드에게 보상하는 합의 알고리즘
  • 조건을 만족하는 답을 찾아낸 노드에게 보상하는 합의 알고리즘
  • 사토시 나카모토 가 제안한 최초의 블록체인인 비트코인을 통해 제안된 합의 알고리즘
    • 해시 값에 대한 조건이 주어지고 노드들은 해시 값을 구하기 위해 컴퓨팅 파워를 동원해 값을 찾는다.
    • 값을 찾으면 새로운 블록을 추가하여 branch 형성
    • branch가 생겼을 때 가장 긴 블록체인이 남은 브랜치가 최종 branch로 결정
    • 나머지 브랜치는 버려지게 되며 과반수 이상의 노드가 합의한 거래가 원본으로 채택

장단점

  • 장점
    • 답을 찾아낸 노드가 이익을 가져가는 구조
    • 모든 노드들이 서로 부정행위가 방지되도록 경계하는 구조로 탈 중앙화 가능
    • 최초로 제안된 비트코인의 합의 알고리즘으로 해시함수를 통해서 블록체인을 형성하고 임의로 조작하기 힘든 강력한 보안성 확보
  • 단점
    • 조건을 만족하는 답(해시 값)을 찾기 위해 막대한 컴퓨팅파워가 필요해 많은 전력, 에너지 낭비
    • 트랜잭션이 완료되기까지 많은 시간이 걸리고 느리다

관련 블록체인

  • 비트코인, 이더리움, IOTA, 라이트코인, 비트코인캐시, 비트코인골드, 모네로

PoS(Proof of Stake) - 지분증명

  • 해당 블록체인에 대해 가지고 있는 지분율로 보상 받게 되는 합의 방식
  • 블록을 생성할 수 있는 권한 부여
  • 많은 지분을 가지고 있을수록 보상을 받게 되고 해당 노드는 그 가치를 유지하기 위해 전체 네트워크를 배반하지 않고 유지할 것이라는 개념
    • 이자와 같은 방식으로 보상이 지급되고 코인을 보관하고 있는 지갑을 네트워크에 연결시키면 보상을 받을 수 있다.
    • PoS는 여러 시나리오(독점, 과점, 비이성, 공격 등)에서 안정적인 블록체인으로 수렴한다는 것이 게임이론으로 증명됨
    • 이더리움 2.0부터는 PoW에서 PoS로 합의 알고리즘을 변경하려고 하고 있다.

장단점

  • 장점
    • 경제적이고 친황경적
    • 일반인과 전문 miner(채굴자)의 효율이 같음
  • 단점
    • 검증이 되지 않아 보안성에 대한 리스크와 우려가 존재
    • 지분을 많이 가진 노드들이 독점할 수 있는 가능성 존재

관련 블록체인

  • NEO, ADA, 스트라티스

DPos(Delegated Proof of Stake) - 위임지분증명

  • 말그대로 위임된 POS
  • PoS 자산을 가진 사람들이 전부 참여하는 방식
  • DPoS는 특정 인원에게만 POS를 할 수 있도록 권한을 위임하는 방식
  • 블록생성을 위해 24시간 네트워크를 유지하며 하드포크마다 알고리즘 업데이트를 할 필요가 없다
  • 소규모 참여자는 권한을 위임하고 위임한 상위노드로부터 이자를 받거나 송금 수수료를 감면 받는다
  • 상위 노드로서 뽑힌 사용자는 PoS에서와 같이 블록생성을 진행할 수 있다
  • 상위 노드로 뽑히는 기준은 본인을 투표한 구성원의 코인 총 합 순위로 매기는 것이 보통의 방법

장단점

  • 장점
    • 합의에 참여하는 노드가 한정되기 때문에 매우 빠른 속도(건당 0.5초)와 확장성
    • PoS와 마찬가지로 블록생성 비용이 아주 낮다
  • 단점
    • 권한을 위임받은 노드들이 담합을 할 위험성
    • 공개된 소수의 노드들에 대한 보안공격(DDoS등) 위험도 존재
    • 블록생성에 대한 권한을 위임하기 때문에 탈중앙화 되지 않았다는 비판이 있을 수 있다

관련 블록체인

  • 스팀, 이오스, 아크, 라이즈

블록의 구성 요소

Untitled

Hash of the block

Magic Number - 0xD9B4BEF9 값으로 고정

Block Size - 블록헤더 + 블록 body의 크기

  • Version - 소프트웨어 버전과 동일
  • PreviousBlockHash - 이전 블록 헤더의 SHA256 해쉬, 블록 생성 시 기록
  • Merkle Root - 거래가 발생할 때마다 값이 업데이트 됨. SHA256 해쉬
  • Time - 타임스탬프, 몇 초마다 업데이트 됨
  • bits, target - 난이도, 작업 증명 난이도, 특별한 공식을 사용해서 변환함
  • Nonce - 4바이트 크기의 nonce 값

Body

  • Transaction counter - 기록된 거래의 개수
  • Coinbase transaction - 블록 생성시 만들어지는 최초 거래, 채굴 성공 시 비트코인 지급이 되는 거래가 됨
  • Transaction #1 - 실제 비트코인의 거래 기록
  • Transaction #2
  • ......

블록 해시 (Hash of the block)

  • 블록의 이름 정보
  • 블록의 헤더 정보인 버전, 이전 블록 해시, 머클 루트, 타임, bits, 논스 정보를 모두 더하여 합을 구한 후 SHA256으로 변환한 결과 값
  • 단순히 SHA256으로 변환해서는 정확한 블록 해시 값을 구할 수 없다. Untitled

이전 블록 해시 (PreviousBlockHash)

  • 이전 블록 해시 정보는 이전 블록의 주소 값을 가리키는 요소 Untitled

머클 루트 (Merkle Root)

  • 블록의 바디 부분에 저장된 트랜잭션(거래 정보) 들의 해시 트리
  • 머클 루트의 역할
    • 머클루트값을 통해 단일 블록 내에 존재하는 트랜잭션의 무결성을 검증
    • 머클루트 값을 이용하여 블록의 해시 값을 생성하였기 때문에 블록의 해시 무결성도 함께 검증
  • 해당 블록이 유효한지에 대한 무결성 검증 Untitled

머클 루트에 대해 좀 더 자세한 내용은 해당 블로그 참조!
비트코인 코어 소스코드로 살펴보는 머클 트리

타임(Time)

  • 해당 블록의 대략적인 생성 시간을 의미
  • 유닉스 기준일 자로 표시되며 1970년 1월 1일 자정부터 경과한 시간을 초 단위로 계산한 값이다.

비트s(bits)

  • 난이도 해시 목표 값을 의미하는 지표
    • 난이도 설정 값인 4바이트 Bits를 target으로 변환하는 공식
    • Bits = 0x1b0404cb의 경우
    • Bits의 앞 2자리와 뒤 6자리를 아래와 같이 분리
      • 1b 0404cb
    • 작업 증명 대상 target의 값은 다음과 같이 구함
    • target = 0x0404cb * 2(8*(0x1b-3))**

논스 ( Nonce )

  • 블록을 만드는 과정에서 해시 값을 구할 때 필요한 재료 역할을 수행
  • 비트코인에서 작업 증명은 이 target보다 작게 나오는 블록 헤더의 해쉬 값이 되도록 Nonce를 구하는 것
  • SHA256 해쉬는 32바이트, 16진수로 64자리로 표현됩니다.
  • 위 예의 target을 64자리 16진수로 표현하면 다음과 같다.
    • target = 0x00000000000404cb000000000000000000000000000000000000000000000..... (총 64자리)
    • 0x (16자리)(48자리)
  • 비트코인의 블록 헤더의 SHA256 해쉬 값이 이 값보다 작거나 같은 해쉬 값이 나오는 Nonce를 구하게 되면 채굴 성공
profile
개발자 꿈나무 https://github.com/Tozinoo

0개의 댓글