brunch

You can make anything
by writing

C.S.Lewis

by Daniel Shin Feb 16. 2023

블록체인, 블록(Block)과 체인(Chain)

Web 3.0 시대를 살아가기 위한 가이드- Chapter 4

https://brunch.co.kr/@simulacre19/75


지난 시간에는 프로토콜 경제라 불리는 Web 3.0에 대해 살펴봤습니다. 프로토콜 경제는 지금의 플랫폼 경제의 대안으로 주목받고 있으며, 프로토콜 경제가 활성화되면 인터넷에서 발생된 가치를 더욱 투명하고 공평하게 분배할 수 있을 것이라 이야기했죠. 


오늘은 이러한 프로토콜 경제를 만들어갈 핵심 기술 중 하나인 블록체인에 대해 이야기해 볼까 합니다. 오늘 내용이 다수 난해하게 느껴질 수 있겠지만, 막상 잘 이해가 되지 않더라도 Web 3.0이라는 큰 숲을 보는데 큰 문제는 없으니 부담을 내려두셔도 됩니다.



사이퍼펑크(Cypherpunk)


블록체인은 '사이퍼펑크(cypherpunk)' 운동에 뿌리를 두고 있습니다. 사이퍼펑크란 암호화 기술과 탈중앙화 시스템을 활용해 중앙집권화된 국가 또는 거대 기업으로부터 개인의 프라이버시를 보호하려는 일종의 사회 운동입니다.


1990년 데이비드 차움은 디지캐시(digicash)라는 회사를 설립하여 최초의 상업적 암호화폐 이캐시(ecash)를 창시하고 이를 통한 익명의 거래 시스템을 제안했습니다. 3년 후, 1993년 에릭 휴즈는 <사이퍼펑크 선언>을 통해 프라이버시가 보호된 익명의 거래 시스템을 개발할 것을 제안했습니다. 이후 해시캐시(Hashcash, 1997년 애덤 백), 비머니(B-Money, 1998년 웨이 다이), 비트골드(Bit gold, 1998년 닉 재보) 등 다수의 개념이 등장했지만, 당시의 기술적인 한계로 인해 널리 사용되지 못했습니다.



블록체인(Blockchain)


블록체인은 다수의 거래내역을 하나의 블록에 묶어서 저장하고 이를 '해시(hash)'를 이용해 여러 블록을 시간에 따라 체인처럼 연결해 다수의 사람들이 분산해서 저장하는 디지털 '분산원장(distributed ledger)' 기술입니다.


블록체인을 처음 만든 것은 '사토시 나카모토(Satoshi Nakamoto)'라고 알려진 익명의 개발자입니다. 사토시는 2008년 10월 31일 '<비트코인 : 개인 대 개인의 전자화폐 시스템>'이라는 논문을 암호학계 관계자들이 함께 사용하는 메일링 리스트를 통해 공개했고, 이듬해인 2009년 1월 3일 자신이 고안한 블록체인 기술을 적용한 최초의 암호화폐 '비트코인(Bit coin)'을 공개했습니다.


I've been working on a new electronic cash system that's fully peer-to-peer, with no trusted third party. 

나는 새로운 전자화폐 시스템을 개발하고 있는데, 완전한 피투피 방식이고, 신뢰할 수 있는 제3자가 필요 없다. 

- 사토시 나카모토(Satoshi Nakamoto), 2008.10.31



블록(Block)

'블록체인'은 이름에서 알 수 있듯 데이터(거래 내역)를 저장한 일련의 블록이 체인 형태로 연결되어 있는 형태로 구성되어 있습니다. 


'블록(Block)'은 다수의 거래 내역이 묶여 있는 하나의 덩어리입니다. 거래의 최소 단위는 '트랜잭션(transaction, 약칭 'Tx')'이라 불리며 이는 더 이상 쪼갤 수 없는 최소 단위를 뜻합니다. 트랜잭션은 '해시(Hash)' 함수를 통해 암호화됩니다. 해시 함수란 다양한 길이를 가진 데이터를 고정한 길이를 가진 데이터로 매핑하는 알고리즘입니다. 


네트워크에서 발생한 각각의 거래는 텍스트로 표시할 경우 그 길이가 각각 다르 수 있지만, 해시 함수로 변환하면 항상 일정한 길이의 해시값이 나오게 됩니다. 비트코인은 SHA-256 해시 함수를 사용하는데 거래 내역이 아무리 길거나 짧아도 해시값은 항상 2진수 256자리의 고정된 길이를 가진 값으로 표시됩니다. 


예) 
철수가 영희한테 10만 원을 주었다. -> 
c51df95c6ecb0ece8d7001583d07a74cc29acdd819i1a2c97fc2529f581d83c

김민준이는 박진희에게 5,000만 원을 보내주었다. -> 
va11df09u6eclalce8d6598583d07a74cc29acdd81olja2c97fc2529f581d83c


이러한 다수의 거래 내역이 하나로 묶여 있는 것이 바로 블록입니다. 또한, 거래 내역이 많든 적든 상관없이 항상 일정한 시간에 맞춰 새로운 블록이 생성되게 됩니다.  


또한, 하나의 블록에는 하나의 '루트해시'가 존재합니다. 루트해시란 모든 하위 해시들을 다시 해시 함수로 변환한 최종의 해시값입니다. 


루트해시는 각 거래내역에 1:1로 대응하는 해시값을 생성하고, 두 개의 해시를 합쳐 하나의 상위 해시를 생성해 나아가는 방식으로 만들어집니다. 만약 핵시의 개수가 홀수이면 맨 마지막 하나의 해시는 자기 자신과 핵시 연산을 수행하게 됩니다. 이러한 반복적인 해시 생성을 통해 최종적으로 최상위 지점에 하나의 루트가 생성되게 되며, 이러한 구조를 '해시트리' 또는 '머클트리'라 합니다. 




하나의 블록에는 반드시 하나의 루트해시가 존재합니다. 만약 거래내역 중 하나라도 위변조 될 경우 해당 해시 값과 상위의 모든 해시값이 변경되어 결과적으로 루트해시 또한 바뀌게 됩니다. 이러한 방식을 통해 일일이 하위 해시값을 비교 검사하지 않고도 데이터의 위변조를 즉시 확인할 수 있게 됩니다.


이런 식으로 구성된 블록은 '타임스탬프(timestamp)'에 의해 생성 시간이 기록되며, 전체 네트워크에 전파됩니다. 타임스탬프는 데이터가 특정 시점에 존재했다는 증명과 그 이후 데이터가 변경되지 않았다는 내용을 증명하는 일종의 전자 도장입니다. 


 

체인(Chain)

새로운 블록은 생성 시간에 따라 직전 블록과 체인처럼 연결되어져야 합니다. 직전 블록과 연결되려면 해당 블록에 이름에 해당하는 해시값을 찾아야 하며, 새로운 해시값이 성공적으로 찾아질 경우에만 블록이 생성되어 체인에 연결됩니다.


새롭게 생성된 블록 이름에 해당하는 해시를 찾아내는 작업은 수많은 시도를 반복해야 하는 매우 힘든 과정입니다. 새롭게 생성된 블록의 해시는 반드시 프로그램에 의해 미리 정해진 목푯값보다 작아야 한다는 전제 조건을 충족해야 하기 때문입니다.


일반적으로 블록의 해시값은 해당 블록의 생성일시, 버전, 비츠, 루트해시, 이전 블록의 해시, 그리고 '논스(Nonce)'라 불리는 임시값 등을 조합한 후 해시로 변환하여 생성됩니다. 해당 블록의 생성일시, 난이도, 버전, 루트해시와 이전 블록의 해시값은 이미 확정된 정해진 값을 가지고 있지만, 논스라는 임시값이 달라짐에 따라 해시 연산의 결과로 생성되는 블록의 해시값도 다양하게 나오게 됩니다. 이렇게 논스 값을 수없이 바꿔가면서 하나씩 대입을 하는 과정에서 생성된 해시값이 일정한 목푯값보다 더 작을 경우 새로운 블록이 성공적으로 체인에 연결되는 것입니다. 


이렇게 해시값을 찾는 과정을 통해 블록을 생성하는 행위를 '작업증명(PoW)'라 합니다. 이러한 작업의 대가로 일정한 개수의 코인을 지급받게 되며 이것을 '채굴' 또는 '마이닝'이라 합니다.



오늘은 블록체인 기술, 그중에서도 블록과 체인에 대해 알아보는 시간을 가졌습니다. 다소 생소하고 어려울 수 있지만, 오늘 글을 통해 블록체인이라는 이름이 왜 지어졌는지만 알게 되어도 좋을 듯합니다. 다음 글에서는 블록체인과 떼어 놓을 수 없는 P2P 그리고 탈중앙화에 대해 이야기할 예정입니다.




블록체인이란?

블록체인은 디지털 분산원장이다.

블록은 거래내역(트랜잭션)을 묶어둔 형태이다

체인은 블록을 시간 순서대로 연결한 것이다.



구독을 눌러 주시면, Web 3.0과 블록체인 그리고 크립토 마켓의 다양한 이야기를 꾸준히 보실 수 있습니다. 
매거진의 이전글 Web 3.0, 프로토콜 경제로의 전환
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari