블록체인이란 다수의 거래내역을 묶어 블록을 구성하고, 해시를 이용하여 여러 블록들을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 알고리즘이다.
데이터의 위변조가 불가능하여 권위있는 중개기관이 없더라도 신뢰할 수 있는 안전한 거래와 데이터처리를 할 수 있다.
모든 사람이 관여할 수 있다. 권위 있는 조직의 승인이 없이 누구든지 인터넷에 연결된 PC, 노트북, 스마트폰, 서버컴퓨터, 채굴기 등 다양한 컴퓨터 장비를 이용하여 블록체인 네트워크에 참여할 수 있다.
이러한 블록체인 네트워크에 참여하는 개별 컴퓨터를 노드(node)라고 부르는데, 각 노드들은 블록체인에 저장된 데이터를 복사하여 저장하고, 해시 연산을 통해 새로운 블록의 생성에 참여할 수 있다. 또한 각 노드들은 언제든지 자신의 컴퓨터를 블록체인 네트워크에 연결하지 않고 접속을 차단함으로써 자유롭게 탈퇴할 수 있다. 블록체인 네트워크에 참여 또는 탈퇴하는 것은 권위 있는 조직의 승인이 필요 없이, 전적으로 해당 노드 참여자의 자유로운 의사에 따라 결정할 수 있다.
비트코인, 이더리움, 비트코인캐시, 이오스, 스텔라루멘, 스팀, 모네로 등 대부분의 암호화폐는 퍼블릭 블록체인 방식으로 운영된다
프라이빗 블록체인(private blockchain)이란 미리 정해진 조직이나 개인들만 참여할 수 있는 폐쇄형 블록체인 네트워크를 말한다. 사적 블록체인, 폐쇄형 블록체인, 허가형 블록체인, 기업형 블록체인 또는 엔터프라이즈 블록체인(enterprise blockchain)이라고 한다. 프라이빗 블록체인에 참여하려면 반드시 권위 있는 조직의 승인을 받아야 한다. 프라이빗 블록체인 운영자의 승인을 받지 못한 조직이나 개인은 해당 블록체인 네트워크의 운영에 참여할 수 없다.
하이브리드 블록체인(hybrid blockchain)이란 퍼블릭 블록체인과 프라이빗 블록체인을 서로 연결하거나 섞은 혼합형 블록체인을 말한다. 더블체인(double chain)은 퍼블릭 블록체인과 프라이빗 블록체인을 연결한 체인이다.
컨소시엄 블록체인(consortium blockchain)이란 동일한 목적이나 가치를 가지고 있는 다수의 기업과 단체들이 하나의 컨소시엄을 구성하고 그 안에서 작동하도록 만든 블록체인이다. 예를 들어 리눅스재단이 주도하고 IBM 등이 참여하여 만든 하이퍼레저 패브릭(hyperledger fabric) 프로젝트가 있다.
트랜잭션이란 여러개의 작업을 하나로 묶은 일련의 실행유닛이다.
더 이상 쪼갤 수 없는 업무 처리의 최소 단위!
각 트랜잭션들은 특정 작업으로 시작해서 연결된 모든 작업을 완료해야 정상적으로 종료되게 된다. 만약 트랜젝션에 속한 여러 작업 중 하나의 작업이라도 실패하는 경우 모든 트랜젝션이 실패한 것으로 간주한다.
블록안에 있는 트랜잭션은 Merkel Tree 안에 저장된다.
Merkel Tree는 이진트리라는 이름으로도 알려져 있다. 이 때 이진트리는 쉽게 말해 거래를 두 개씩 묶는다는 뜻이다.
이렇게 두 개씩 트랜잭션을 묶어서 올라가게 되면 거래량이 기하급수적으로 늘어나도 특정 거래를 찾는 경로는 단순하다는 이점이 있다.
거래의 건수의 N이 증가할 때마다 특정 거래의 경로를 찾는 수는 으로 늘어나기 때문이다.
거래 내역을 위조하려는 시도가 있어도 머클 트리의 경로를 따라가면 해시값이 다른 것이 나오게 되어 거래의 위변조도 쉽고 바르게 알 수 있게 되고 이를 방지 할 수 있다.
블록체인의 데이터는 중앙화된 서버 대신 전세계에 흩어져 있는 수많은 노드에 보관되기 때문에 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다.
만약 블록을 생성하는 특정 노드가 악의를 품고 조작된 데이터를 저장하거나 네트워크에 전파한다면 시스템 전체의 신뢰도가 떨어지게 된다.
이런 악의적인 상황이 발생하더라도 네트워크를 올바른 방향으로 이끌고자하는 다수의 노드들이 상호 검증을 거쳐 올바른 블록 생성을 이끌어내는 프로세스와 알고리즘을 바로 Consensus라고 한다.
PoW (Proof-of-Work) : 작업증명
블록 생성 시간동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계한다.
컴퓨팅 파워를 통해 블록체인 네트워크에 전송된 암호화된 거래정보를 푼 뒤, 새로운 블록을 체인에 연결하는 작업을 하는 것을 의미한다.
현재 높은 시장 가치를 형성하고 있는 주류 코인들이 채택하고 있지만 높은 전력소모를 통해 자원을 낭비한다.
그러나 보안성은 매우 강력하다.
PoS (Proof-of-Stake) : 지분증명
코인을 보유한 지분율에 따라 새롭게 생성하는 코인을 분배받는 방식의 컨센서스 알고리즘이다.
PoW와는 다르게 일정 수 이상의 코인을 보관하고 있는 지갑을 블록체인 네트워크에 연결시켜 놓기만 하면 보상을 받을 수 있다.
해시파워가 많이 필요하지 않으므로 경제적이고 친환경적이며 블록 생산자의 탈중앙화로 안정성을 확보할 수 있다.
그러나 보안성이 강한지에 대한 여부가 아직까지 정확하게 검증되지 않았고 지분이 많은 이른바 고래들이 권역을 독점할 가능성이 존재한다.
DPoS (Delegated Proof-of-Stake) : 위임된 지분증명
DPoS는 PoS 컨센서스 알고리즘을 변형한 형태로 위임된 지분증명 방식을 말한다. 모든 노드의 자격을 가진 주주들이 블록생성에 참여하는 방식(PoS방식) 대신에 네트워크의 모든 노드의 투표 결과로 선출한 상위 노드(이를 증인* 또는 Witness라고 함.)에게 권한을 위임하여 합의하도록 하는 방식이다.
PoS에 비해 많은 트랜잭션을 빠르게 처리할 수 있다. PoW에 비해 비용이 낮다.
그러나 증인끼리 담합할 위험이 존재하고 공개된 소수의 증인에 대한 디도스 공격 위험이 있다.
블록체인에 저장된 데이터들이 블록들에 합류하기 위해선 기존 블록들로부터 과반수 이상의 승인이 필요하다 -> 여기서 51% risk 발생가능!
현실화될 위험은 극히 낮지만 만약에 이런 문제가 일어나 자신이 보유한 블록체인의 가치가 껌값이 되면 경제적인 손실이 너무 크다.
Fork는 서로 추구하는 것이 다를 때 일어난다.
즉, 블록체인 환경이 업데이트다 될 때에도 포크가 일어나는데, 새로운 환경을 만들기 위해 업데이트를 하게 되는 경우 기존의 규칙을 따르려는 블록과 새로운 규칙에 따라 기록되는 블록으로 포킹된다.
Soft fork는 기존의 규칙에서 큰 틀은 바꾸지 않고 부분적인 업데이트만 일어나기 때문에 forking 된 블록끼리 호환 가능하다.
기존 규칙을 따르던 블록체인에서도 노드들이 새로운 규칙을 따르기로 합의를 한다면 두 체인은 결국 합쳐진다.
예. MS office 2010 쓰다가 업데이트 한 MS office 2013 나오면 2010으로 저장된 파일이 2013에서도 사용이 가능한 것과 같다. 그러나 기능적인 면에서 몇 가지 제한이 있다.
Hard fork는 블록의 규칙을 근본적으로 바꾸는 업데이트이다. 그렇기 때문에 이전 노드들과 호환이 되지 않는다.
하드포크는 전혀 다른 블록체인이 되어 합의에 도달하지 않고 서로 분리된 채 블록이 계속 쌓여나간다.
예. 아이폰의 iOS와 갤럭시의 안드로이드 운영체제가 서로 호환되지 않는것과 같다.