블록체인이란 P2P 네트워크를 통하여 관리되는 분산 데이터베이스의 형태로, 분산원장 기술이라고도 불린다.
즉, 거래 정보를 기록한 데이터를 중앙에서 관리하는 것이 아니라, 참가자들이 공동으로 관리한다.
블록과 블록을 체인처럼 연속적으로 연결하는 체인 구조로 되어있으며, 이전에 생성된 블록과 새로 생성된 블록을 계속해서 연결한다.
블록체인을 활용한 거래과정은 다음과 같다.
A => B 거래 요청
1.의 거래 정보가 담긴 블록생성
블록이 네트워크상의 모든 참여자에게 전송
참여자들은 거래 정보 유효성 상호검증
검증이 완료된 블록은 이전 블록에 연결
해당 블록의 사본이 생성되고, 각 사용자의 컴퓨터에 분산 저장
거래 완료
위의 과정처럼 데이터에 대한 분산처리와 거래자들의 유효성 상호검증을 적용하여 높은 보안성을 확보함과 동시에 기존에 중앙집중 서버에서 문제로 꼽히는 디도스 공격을 방어 할수 있다.
그렇다면 과연 블록이 무엇인지 알아보자
블록체인에서 데이터를 저장하는 단위로써, 다수의 거래정보의 묶음이다. 크게 블록 해시와 헤더, 그리고 바디로 나뉜다.
최초에 생성된 블록을 제네시스 블록이라고 한다.
해시는 블록의 이름으로써, 블록을 식별하는 역할을 한다.
블록헤더에 있는 6가지의 정보를 합쳐서 SHA256
알고리즘으로 변환한 값을 바로 해시라고 한다.
SHA256이란 256비트로 구성되어 64자리 문자열을 반환하는 대표적인 해시 알고리즘 중 하나이다.
이 해시는 변환전의 문자열의 길이와 상관없이 일정한 길이의 값으로 변환이 가능하다.
만약 원본 문자열이 한 글자라도 바뀐다면 변환 후의 해시값은 아예 다른 결과가 출력된다.
헤더는 크게 6개의 정보로 구성되어 있다.
Version
Previous block hash
Merkle tree root
Timestamp
Difficulty (Bits)
bits
라는 값으로 조절된다.Nonce
헤더에 구성된 상위 5가지의 데이터와 마지막 Nonce (난수)를 조합하여 목표값보다 작은 해시값을 찾는 행위를 채굴이라 한다.
Nonce를 제외한 나머지 요소는 고정값이기 때문에 Nonce를 조절해 가며 해시값을 찾아야 한다.
다른 요소는 이름으로 쉽게 추측이 가능하지만 Merkle tree root
는 단어 자체만으로 뭔지 잘 모르겠으니 자세히 살펴보자
머클트리루트란 위의 사진처럼 블록이 보유하고 있는 거래 내역들의 해시값을 2개씩 쌍을 지어 해시하는 과정을 반복하였을때 최종적으로 얻게 되는 값을 말한다.
이진트리의 형식을 띄고 있기 때문에 거래량이 기하급수적으로 늘어나도 특정한 거래의 경로를 찾는 시간이 log(2n)
으로 매우 짧다.
또한, 모든 거래기록을 해싱하여 트리형태로 구성하여 머클루트를 생성하기 때문에 거래 중 1개를 위/변조하더라도 변경된 머클루트의 값을 통하여 데이터가 위/변조 되었다는 사실을 알 수 있다.
해당 블록의 거래 정보를 담은 트랙잭션 리스트로 구성되어 있다.
트랜잭션이란 블록체인이라는 데이터베이스의 상태를 변환시키는 기능을 수행하기 위한 작업의 단위이다.
블록체인에서 일어나는 모든 활동은 트랙잭션을 통하여 이루어지며. 체인마다 다른 특성을 지닌다.