블록체인이란?
정보를 블록이라고 하는 단위로 저장하여 저장된 블록들을 체인 형태로 묶은 저장 기술이며,
비즈니스 네트워크에서 트랜젝션을 기록하고 자산을 추적하는 프로세스를 용이하게하는 변경 불가능한 공유 원장이다.
좀 더 쉽게 정리하면,
- 데이터를 저장하는 기술
- 한 곳에 저장하는 것이 아니라, 여러곳에 중복적으로
- 보안이 우수하게 -> 데이터의 신뢰, 투명성을 높이도록
- 특정 서버의 공격이나 일탈로 서비스가 왜곡되지 않도록
블록체인 데이터 기반 서비스
- 데이터를 트렌젝션이라는 단위로 규격화 후 서명
- 블록에 담아 누구나 바꾸지 못하도록 해시값으로 지문 생성
- 일관성있게 순서대로 나열하여 모두가 나눠지게 되는 기술
- 데이터를 처리하는 기술
- 중앙 서버에서 처리하던 명령들을 ← 공격받고 왜곡하던
- 데이터를 나눠가지는 노드들이나 선출된 노드들에 의해 검증하고 합의하여 처리한다.
- 어떤 데이터가 블록에 저장되는가?
- 이력 검증이 필요한 데이터
- 비즈니스 프로세스에 상호작용의 토대로 사용할 데이터
블록체인 특성과 분류
- 프라이빗 블록체인(사전에 인증서 발급)
- 퍼블릭 블록체인(누구나 네트워크의 구성원)
- 하이브리드 블록체인
-인터블록체인
추가 블록체인 기술
- 거래소 기술
- 중앙화된 거래소: 위임 → 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를 사용한다.)
- 노드들은 제안자가 자격을 취득했는지, 제안된 블록이 올바른지 검증 후 자신의 체인에 추가
- 정해진 기준을 만족하는 수의 노드가 블록을 자신에 체인에 추가했다면 합의가 이루어졌다고 판단함.
블록체인의 성질
- 블록체인은 한 명 이상의 참가자가 있는 네트워크에서 관리
- 네트워크 참여자 전원은 모든 블록을 동일한 순서로 저장하여 모두 같은 블록체인을 유지
- 자격이 있는 참여자는 블록을 제안할 수 있음(자격은 네트워크마다 상의)
- 블록이 체인에 추가됨 => 참여자들이 새 블록을 자신의 체인에 추가
- 따라서 새로운 블록이 체인에 추가되려면 네트워크 합의가 필요(합의 방법은 네트워크마다 상의)
- 어떤 주체가 단독으로 결정하는 것이 아니라, 여러 참여자가 합의를 통해 결정하기 때문에 탈중앙화 되었다고 표현함.
- 참여자 전원은 이전 블록들을 저장하고 있으므로 새로운 블록의 무결성을 확인가능
- 새롭게 제안되는 블록은 참여자들이 검증 및 합의할 수 있는 형태여야 함.(투명성)
- 한번 쓰여진 블록은 이전의 합의를 번복할 수 있지 않는 한 변경되기 어렵다.(불변성)
합의 알고리즘
| PoW | PoS | BFT-variants | DPoS |
---|
제안 자격 취득 방법 | 계산이 어려운 문제를 풀 것 | 플랫폼 토큰을 보유한 양과 기간에 따라 결정적으로 또는 확률적으로 뽑힐 것 | 정해진 순번 또는 정해진 확률에 의해 뽑힐 것 | 특정 인원에게만 PoS를 할 수 있도록 권한을 위임 |
네트워크 참여 제한 | 없음 | 없거나 낮음 | 높음 | 높음 |
합의에 필요한 연상량 | 높음 | 낮음 | 낮음 | 낮음 |
위협 | 전체 연산량의 51%를 한 참여자가 소유할 경우 중앙화 됨 | 전체 토큰의 51%를 한 참여자가 소유할 경우 중앙화 됨 | 전체 참여노드의 1/3이상이 담합할 경우 합의 불가, 전체 참여노드의 2/3이상이 담합할 경우 중앙화 됨 | 전체 참여노드의 1/3이상이 담합할 경우 합의 불가, 전체 참여노드의 2/3이상이 담합할 경우 중앙화 됨 |
대표적인 블록체인 | Bitcoin, Litecoin, Ethereum, Monero, QTUM | Ethereum FFG & CFG, EOS(dPoS) | Klaytn, Tendermint, Hyperledger Fabric, Ontology | EOS |
장단점 | 누구나 참여가능, 네트워크를 비동기화 상태에 두어도 합의를 일으킬 수 있다. 연산에 쓰는 비용이 비쌈 | | 네트워크가 동기화 되어있음, 통신량이 많음 | 라운드로빈 방식으로 반응성이 높음, 단점은 예상이 가능하다. 그리고 투표 불이행, 남용의 문제 |
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기반 블록체인