"블록체인은 어디에 쓰는 것일까?
이것은 오래된 질문에 대한 새로운 대답이다.
우리가 가치 있는 물건을 평화롭게 교환하기에 충분한 신뢰를 어떻게 만들어야 할까?"
- 트랜잭션이 만들어지다
비트코인은 트랜잭션이란 한 사람(앨리스)에게서 다른 한 사람(밥)에게 암호화폐가 전송된 거래내역을 의미한다. 이더리움은 트랜잭션을 자동화시킬 수 있는 내부 프로그래밍 언어를 가지고 있으며 여러 종류의 트랜잭션이 있다. 앨리스는 밥에게 암호화폐를 보낼 수 있다.
또 누군가가 스마트계약이라 부르는 일련의 코드로 된 트랜잭션을 블록체인에 만들 수 있다.
앨리스와 밥은 이 코드가 통제하는 계좌로 돈을 보냄으로써 그 계약 내에 기록된 특정 조건이
만족됐을 때 이를 작동하게 만들 수 있다. 스마트계약은 또한 자신이 포함된 블록체인에 트랜잭션을
보낼 수도 있다.
- 트랜잭션이 P2P 네트워크로 전송된다
앨리스가 밥에게 얼마의 돈을 보내고 싶다고 해보자. 이를 위해 앨리스는 자신이 충분한 돈을 받았음을 보여주는 블록체인의 과거 트랜잭션과 그 돈에 접속할 수 있는 자신의 프라이빗 키, 그리고 밥의 주소를 바탕으로 새로운 트랜잭션을 만든다.
이 트랜잭션은 다른 컴퓨터 또는 ‘노드’들에게 전송된다. 노드들은 이 트랜잭션이 적절한 규칙을 따르고 있는지를 확인한다.
다음 스텝3에서 설명할 채굴 노드들이 이 트랜잭션을 받아들이고, 이 트랜잭션은 새로운 블록의 일부가 된다.
- 새로운 블록을 만드는 경쟁
채굴자라 부르는 노드 중 일부는 유효한 트랜잭션들을 가지고 블록을 구성한다.
생성 중인 블록에는 최근의 유효한 거래와 선행 블록의 암호학적 참조값을 포함하고 있다.
비트코인과 이더리움 같은 블록체인 시스템에서 채굴자들은 새로운 블록을 먼저 만들려고 경쟁한다.
이는 지루한 수학적 퍼즐을 푸는 것으로 이 문제는 매 새로운 블록마다 달라진다.
처음으로 퍼즐을 푼 채굴자는 약간의 암호화폐를 보상으로 얻는다. 수학 퍼즐은 논스라 부르는 값을
임의로 추측하는 과정을 포함한다.
논스 값은 블록의 다른 데이터와 함께 암호화된 디지털 지문인 해시라는 값을 만든다.
- 새로운 블록의 완성
해시 값은 특정한 조건을 만족해야 하며, 이 조건이 만족되지 않을 때는 채굴자들이 논스 값을
새로운 임의의 숫자로 바꿔 해시 값을 다시 계산한다.
유효한 해시 값을 찾기 위해서는 어마어마한 수의 시도가 필요하다. 이 과정은 해커들이 장부를
수정하려는 시도를 막는다. 다른 방식으로 블록체인을 보호하는 시스템도 존재하지만, 이 작업 증명이라 부르는 방식이 가장 많이 검증된 방식이다.
- 새로운 블록을 체인에 연결한다.
이는 장부를 보호하는 마지막 과정이다. 새로운 블록의 암호 퍼즐을 처음으로 푼 채굴 노드는 그 블록을 네트워크의 다른 노드로 보내 승인을 받고 디지털 토큰을 보상으로 받는다.
채굴 난이도는 블록체인 프로토콜 내에 정의돼 있다.
비트코인과 이더리움은 시간에 따라 점점 더 채굴이 어려워지도록 만들어져 있다.
각 블록은 선행 블록의 참조값을 포함하고 있기 때문에 이 블록들은 수학적으로 연결돼 있다.
선행 블록의 내용을 바꿀 경우 그 뒤에 연결된 모든 블록을 다시 만들어야 한다.
따라서 앞의 작업 증명 과정을 되풀이 해야 한다.
<본 기사는 테크M 제63호(2018년 7월) 기사입니다>