블록 체인이란 무엇일까 ?
블록들의 연결로 무엇을 할 수 있을까?
정보를 담고 이를 검증할 수 있다.
" 거래내용이 담긴 블록이 생성되면 무결한지 검증한 후 앞의 블록과 연결하고 다음 블록이 생성되면
마찬가지로 검증한 후 앞의 주소를 담아 연결한다 "
이것이 암호 화폐 ( 비트코인, 이더리움, 리플.. etc ) 기술의 원리이다.
즉, 블록체인은 암호화폐를 구현하는데 사용되는 기술이다.
그렇다면 이 블록에 담긴 거래 기록을 삭제하거나 수정해서 데이터를 조작해서 이득을 취할 수 있지 않나? 하는 의문이 들 수 있다.
대답은 '불가능' 이다.
각 블록들은 난수로 저장되며, 블록 내에 있는 트랜잭션이 조금이라도 변경되면 블록의 난수 역시 변경되기 때문이다.
이론적으로는 '51% 공격' 방법으로 가능하지만 경제적인 비용이 천문학적이기에 사실상 실현 불가능하다.
여기서 알 수 있듯
블록 생성
그렇다면 블록은 어떻게 생성되는 것일까?
비트코인 시스템은 전체 거래내용을 10분 단위로 모아 블록에 담는데
거래내용은 암호화 되어있기 때문에 누군가 암호를 풀어야만 블록이 생성되고 트랜잭션이 담기게 된다.
해쉬값 해독은 수많은 계산이 필요한 번거로운 일이기 때문에
암호를 풀어 블록을 생성한 유저에게 보상으로 '코인'을 지급하는데
이 과정을 채굴( mining ) 이라고 한다.
즉, 채굴은 해쉬값을 풀고 블록을 생성하여 코인을 취득하는 행위를 뜻한다.
기술적으로 보자면, 채굴행위는 한 묶음의 이체기록 & 논스를 포함한 해시를 계산하는 행위이다.
목표값 ( 해시 난이도와 반비례 관계 ) 보다 적은 해시값이 발견된다면 새로운 블록이 생성되고, 채굴자는 신규생성코인( 현재 블록 당 12.5BTC ) 을 발급받는다.
반면에 해시 목표 값보다 낮지 않다면, 다시 새로운 논스(nonce)가 시도되고 새로운 해시가 계산된다.
이런 동일한 작업이 각 채굴기들에 의해 매 초 수백만 번씩 반복 작업되고 있다.
만일 동시에 두 개의 블록이 생성되는 경우에는 두 개의 블록에서 순차적으로 길이가 더 길어지는 블록을 인정하도록 설계되어 있다.
블록의 길이가 더 길다는 채굴자들의 컴퓨팅 파워가( 다른 말로 해시 ) 더 많은 쪽에서 생성했다는 것을 의미하며 해시가 더 높은 쪽의 데이터를 인정하도록 설계되어있다.
https://toktok.io/bitcoin-mining/
이렇게 블록을 생성하게 되면 해당 노드 ( 컴퓨터 ) 는 블록체인 네트워크에 연결되며 이제 새로운 트랜잭션이 발생할 때마다 해당 거래를 검증하게 된다.
즉, 블록체인 네트워크의 모든 노드들은 새로운 트랜잭션이 발생하면 블록에 대한 유효성을 검증한 후에 체인에 추가한다.
분산 원장과 블록 체인
우리는 블록이 생성되고 연결되는 과정을 알게 됬다. 그렇다면 이 블록들은 어떻게 저장될까?
블록 체인 기술의 핵심은 탈중앙화라는 사실을 인지하고 있다면 답은 쉽게 나온다.
본인들이 생성한 블록들은 본인들이 가지고 있는 것이다.
사실 위의 방식은 극단적인 탈중앙화 형태이고 데이터를 지정된 여러 곳에 분산하여 저장할수도 있다.
( 여기서 원장은 거래 내역의 집합이며, 앞서 살펴본 블록체인은 원장을 저장하는 DB 유형 중 하나다. )
분산 원장 시스템은 데이터를 사용자들이 나눠서 저장한다고 설명했고 블록을 지속
적으로 연결시키기 위해서는 이 블록들이 공유가 되어야 할 것이다.
이를 위해서는 데이터를 공유하고 있는 당사자간의 합의가 필요하다.
이 합의 알고리즘의 대표적인 종류는 다음과 같다.
작업증명 (Proof of Work, POW) ...
지분증명(Proof of Stake, PoS) ...
위임된 지분증명 (Delegated Proof of Stake, DPoS)