블록체인이란

YeongUk·2022년 8월 13일
9

Block Chain

목록 보기
3/3
post-thumbnail

블록체인이란?

정보를 블록이라고 하는 단위로 저장하여 저장된 블록들을 체인 형태로 묶은 저장 기술이며,
비즈니스 네트워크에서 트랜젝션을 기록하고 자산추적하는 프로세스를 용이하게하는 변경 불가능공유 원장이다.

좀 더 쉽게 정리하면,

  • 데이터를 저장하는 기술
  • 한 곳에 저장하는 것이 아니라, 여러곳에 중복적으로
  • 보안이 우수하게 -> 데이터의 신뢰, 투명성을 높이도록
  • 특정 서버의 공격이나 일탈로 서비스가 왜곡되지 않도록

블록체인 데이터 기반 서비스

  • 데이터를 트렌젝션이라는 단위로 규격화 후 서명
  • 블록에 담아 누구나 바꾸지 못하도록 해시값으로 지문 생성
  • 일관성있게 순서대로 나열하여 모두가 나눠지게 되는 기술
  • 데이터를 처리하는 기술
    • 중앙 서버에서 처리하던 명령들을 ← 공격받고 왜곡하던
    • 데이터를 나눠가지는 노드들이나 선출된 노드들에 의해 검증하고 합의하여 처리한다.
  • 어떤 데이터가 블록에 저장되는가?
    • 이력 검증이 필요한 데이터
    • 비즈니스 프로세스에 상호작용의 토대로 사용할 데이터

블록체인 특성과 분류

  • 프라이빗 블록체인(사전에 인증서 발급)
    • 하이퍼레저 프로젝트
    • R3 Corda
    • 리플
  • 퍼블릭 블록체인(누구나 네트워크의 구성원)
    • 비트코인
    • 이더리움
    • 알트코인
  • 하이브리드 블록체인
    -인터블록체인

추가 블록체인 기술

  • 거래소 기술
    • 중앙화된 거래소: 위임 → pub/priv키 관리
  • Defi (암호 자산의 거래)

해시함수(Hash function)

임의의 길이의 데이터를 고정된 길이의 데이터로 메핑하는 함수

Rules

  • 하나의 데이터에서 오직 하나의 해시가 도출되어야 한다.
  • 임의의 데이터 X, Y가 있을 때
    • if X == Y then H(X) == H(Y)
    • if X != Y then H(X) != H(Y)
    • if H(X) == H(Y) then X == Y

블록 높이, 블록 생성 주기

블록들을 이전 블록이 아래, 최근 블록이 위로 오도록 정렬하면 블록이 생성됨에 따라 체인의 높이가 늘어난다.
따라서 블록의 순서를 그 블록의 높이라고 부른다.
다음 블록을 생성하기까지 걸리는 시간을 블록 생성 시간이라고 하고 블록 생성 시간이 비교적 일정한 경우 블록 생성 주기라 한다.

※ 비트코인의 블록 생성 주기: 10분 정도, 이더리움의 블록 생성 주기: 15초 정도, 클레이튼: 1초 정도

블록 생성 주기가 길면 블록 체결 시간도 길어진다.

합의

  • 자격이 있는 참가자는 항목을 제안 할 수 있다.
  • 블록 제안 자격은 네트워크마다 상의 (비트코인은 PoW를 사용한다.)
  • 노드들은 제안자가 자격을 취득했는지, 제안된 블록이 올바른지 검증 후 자신의 체인에 추가
  • 정해진 기준을 만족하는 수의 노드가 블록을 자신에 체인에 추가했다면 합의가 이루어졌다고 판단함.

블록체인의 성질

  • 블록체인은 한 명 이상의 참가자가 있는 네트워크에서 관리
  • 네트워크 참여자 전원은 모든 블록을 동일한 순서로 저장하여 모두 같은 블록체인을 유지
  • 자격이 있는 참여자는 블록을 제안할 수 있음(자격은 네트워크마다 상의)
  • 블록이 체인에 추가됨 => 참여자들이 새 블록을 자신의 체인에 추가
  • 따라서 새로운 블록이 체인에 추가되려면 네트워크 합의가 필요(합의 방법은 네트워크마다 상의)
    • 어떤 주체가 단독으로 결정하는 것이 아니라, 여러 참여자가 합의를 통해 결정하기 때문에 탈중앙화 되었다고 표현함.
  • 참여자 전원은 이전 블록들을 저장하고 있으므로 새로운 블록의 무결성을 확인가능
  • 새롭게 제안되는 블록은 참여자들이 검증 및 합의할 수 있는 형태여야 함.(투명성)
  • 한번 쓰여진 블록은 이전의 합의를 번복할 수 있지 않는 한 변경되기 어렵다.(불변성)

합의 알고리즘

PoWPoSBFT-variantsDPoS
제안 자격 취득 방법계산이 어려운 문제를 풀 것플랫폼 토큰을 보유한 양과 기간에 따라 결정적으로 또는 확률적으로 뽑힐 것정해진 순번 또는 정해진 확률에 의해 뽑힐 것특정 인원에게만 PoS를 할 수 있도록 권한을 위임
네트워크 참여 제한없음없거나 낮음높음높음
합의에 필요한 연상량높음낮음낮음낮음
위협전체 연산량의 51%를 한 참여자가 소유할 경우 중앙화 됨전체 토큰의 51%를 한 참여자가 소유할 경우 중앙화 됨전체 참여노드의 1/3이상이 담합할 경우 합의 불가, 전체 참여노드의 2/3이상이 담합할 경우 중앙화 됨전체 참여노드의 1/3이상이 담합할 경우 합의 불가, 전체 참여노드의 2/3이상이 담합할 경우 중앙화 됨
대표적인 블록체인Bitcoin, Litecoin, Ethereum, Monero, QTUMEthereum FFG & CFG, EOS(dPoS)Klaytn, Tendermint, Hyperledger Fabric, OntologyEOS
장단점누구나 참여가능, 네트워크를 비동기화 상태에 두어도 합의를 일으킬 수 있다. 연산에 쓰는 비용이 비쌈네트워크가 동기화 되어있음, 통신량이 많음라운드로빈 방식으로 반응성이 높음, 단점은 예상이 가능하다. 그리고 투표 불이행, 남용의 문제

Public vs Private

  • 누구든지 기록된 정보를 자유롭게 읽을 수 있는지?
  • 명시적인 등록 또는 자격취득 없이 정보를 블록체인 네트워크에 기록할 수 있는지?

Permissionless vs Permissioned

  • (넓은 의미)P2P네트워크 참여
  • (좁은 의미)합의과정 참여

암호화

대칭키/비대칭키 암호

평문은 암호화 되어 있지 않은 문자열

  • 암호화는 평문 -> 암호
  • 복호화는 암호 -> 평문

암호화에 사용한 키와 복호화에 사용한 키가 같으면 대칭키 암호
암호화에 사용한 키와 복호화에 사용한 키가 다르면 비대칭키 암호

비대칭 키

두개의 키를 사용하여 암호화와 복호화를 실행

  • 암호화에 사용되는 키 => 공개키 (Public Key, PK)
  • 복호화에 사용되는 키 => 비밀키 (Pribate Key/Secret Key, SK)

목적
누구든지 암호화 할 수 있으나 비밀키를 아는 사람만 복호화할 수 있어야한다.

  • 비밀키를 통해 공개키를 찾는 것은 쉬우나 그 반대는 암호학적으로 힘들다.

블록체인과 공개키암호

UTXO(Unspent Transaction Output)기반 블록체인

  • 블록체인에 사용 가능한 토큰
  • UTXO의 정보와 일치하는 공개키로 검증가능한 전자서명을 제출
  • 돈에 주소를 줌으로서 보안과 병렬화가 가능
  • 비트코인이 대표적인 UTXO기반

어카운트 기반 블록체인(Account-based Blockchain)

  • 어카운트는 블록체인을 구성하는 주체를 표현하며 상태를 기록
  • 어카운트를 사용할 때마다 어카운트 공개키로 검증가능한 전자서명을 생성
  • 순서가 중요하지만 상태값이 있음 -> 스마트 컨트랙트를 구현하기에 용이
  • 이더리움, 클레이튼이 대표적

Confirmation vs Finality

  • Confirmation숫자는 트렌젝션이 블록에 포함된 이후 생성된 블록의 숫자
  • PoW를 사용하는 블록체인들은 Finality가 없기 떄문에 confirmation 숫자가 중요
  • Finality란 블록의 완결성을 의미
    • 합의를 통해 생성된 블록이 번복되지 않을 경우 완결성이 존재
  • PoW 기반 합의는 확률에 기반하기 때문에 경우에 따라 블록이 사라질 수 있으므로 완결성이 부재함
    • PoW블록체인은 수학적으로 복잡한 퍼즐을 풀어 블록을 제안할 자격을 얻는 구조
    • 만약 두 명의 서로 다른 참여자가 동시에 퍼즐을 풀어 두 개의 올바른 블록을 생성한다면 두 블록 중 하나는 사라지게 된다.
    • 이 때문에 블록이 확률적 완결성을 갖기까지 일정 갯수 이상의 블록이 생성되기를 기다려야 함.

BFT기반 블록체인

  • 완결성이 보장

    • 네트워크가 동기화되어 있다.
    • 블록 생성이 PoW에 비해 빠르고 경제적
  • 네트워크 동기화의 필요로 인해 참여자의 숫자가 제한됨

    • 네트워크 참여자 구성이 고정되어 있어야 합의 가능
    • 구성이 변경될 경우 모든 네트워크 참여자가 새로운 구성을 인지하기까지 합의 불가능
    • 합의 알고리즘이 네트워크 동기화를 가정하고 짜여졌기 때문에 네트워크 사용량이 높음
    • 참여자가 많아질 경우 네트워크 오버헤드로 인해 합의가 느림
profile
소통과 배움을 통해 개인이 가진 맹점을 극복하려 노력하고 있습니다.

0개의 댓글