본문 바로가기
경제공부 시작/코인 공부

블록체인 작업증명 원리 (proof of work)

by 블랙스완 미니 2021. 11. 3.

블록체인-작업증명-proof-of-work-원리
블록체인 작업증명 원리

블록체인 작업 증명 (proof-of-work) 원리

- 작업 증명을 통해서 계산이 어려운 문제, 메모리-하드 문제, 사용자의 개입이 필요한 문제 등을 해결할 수 있다. 이때 해결은 적당히 어려운 반면에, 확인하기는 쉬운(빨리 계산할 수 있는) 문제를 선택해야 한다. 서비스 공급업자는 서비스를 요구하는 모든 사람에게 문제를 내고, 올바른 답을 낸 사용자에게 접근권한을 부여한다. 

 

- 작업 증명이 훌륭하게 설계되어 있으면, 합법적인 사용자는 약간의 불편함(ex. 속도 지연)을 감수하는 대가를 치러야 한다. 하지만 작업 증명은 서비스의 공격자를 억제할 수 있는 경제적인 방법이다. 

작업 증명 시스템 (프로토콜 2가지)

1. 시도-응답 (Challenge-Response

- 클라이언트와 서버 사이에 커뮤니케이션이 진행되는 중이라고 가정할 때, 첫째 클라이언트가 서비스를 요청하면, 서버가 클라이언트에게 시도할 작업 증명을 선택한다. 그러면 클라이언트가 작업 증명을 해결하고, 서버에 응답을 보낸다. 마지막으로 서버는, 작업 증명이 정확하게 이뤄졌는지, 확인 후 클라이언트에게 서비스에 대한 접근권한을 부여한다. 

 

- 예를들어, 캡차(CAPTCHA) 같은 기술에서 이 모형을 이용한다. 이 프로토콜은 서버가 서버 부하 조건에 따라 작업 증명의 난이도를 조절할 수 있다는 장점이 있다. 

 

2. 해답-검증 (Solution-Veritification)

- 비동기식으로, 해답과 검증이 이뤄지는 시기가 다를 수 있다. 서버와 클라이언트의 커뮤니케이션이 현재 진행 중이 아니어도 된다. 우선 클라이언트가 작업 증명 문제를 만들어서 해결한다. 알고리즘에서 매번 다른 문제를 선택해야 한다.

 

- 이를테면, 클라이언트가 해시함수의 결과를 이용해, 문제를 만들 수 있다. 그 후 서버에 해답을 보내면, 서버에서 확인하고 그 결과에 따라 과정을 진행한다. 

코인에서 사용중인 해답-검증 프로토콜 방식 

- 코인은 블록체인(분산 트랜잭션 데이터베이스)을 안전하게 보관하기 위해, 해답-검증 프로토콜에 따라 트랜잭션 블록에서 작업 증명을 수행한다. 부분 해시 반전(partial hash inversion: 각 비트 위치 값을 역으로 하는 연산)을 작업 증명 함수로 이용한다. 부분 해시 반전을 수행하려면, 한 트랜잭션 블록의 해시가 특정한 패턴과 일치해야 한다. 

 

- 즉, 해시가 적어도 일정한 수의 0비트로 시작하는 패턴과 일치해야 한다. 작업증명이 일부 해시에서 특정한 패턴을 반전시켜야(일치시켜야) 한다고 해서, 이를 해시 반전이라고 부른다. 이때 해시함수는 역상 저항성이 있어야 한다. 그렇지 않으면, 계산상 부분 해시 반전을 찾기가 어려워, 작업 증명의 목적을 달성하지 못한다. 

부분 해시 반전 문제 해결책 (이론)

- 논스를(nones) 찾아서, 메시지와 논스의 해시가 부분 해시와 일치하는지(해시가 적어도 0세 개로 시작하는지), 확인해야 한다. 부분 해시 반전은, 계산해야 할 논스가 많기 때문에, 계산상 큰 비용이 든다. 하지만 작업을 수행할 때는 해시 평가만 필요하므로, 계산상 비용이 적게 든다.

 

- 부분 해시 반전은, 해답 해시를 시작하는 0비트의 수를 바꾸면, 작업 증명의 난이도를 조정할 수 있다는 장점이 있다. 코인은 해시캐시(Hashcash)의 작업 증명 함수를 부분 해시 반전으로 사용하는 아이디어를 사용한다.

 

해시캐시 (Hashcash) 란? 

- 1997년 애덤 백(Adam Back)이 스팸메일을 억제하기 위한 메커니즘으로 해시 캐시를 소개했다. 이메일은 저렴한 비용으로 발송할 수 있다 보니, 해시 캐시 때문에 스패머들이 급격히 증가했다. 스패머는 광고(혹은 악성 소프트웨어)를 담아서 요청하지도 않은 이메일을 수백 통씩 발송한다. 

 

- 물론 이메일 한 통이 의도한 효과(수신자가 클릭하는 것)를 불러올 확률은 낮지만, 이메일 한 통을 보내는 비용이 저렴해서, 스패머의 입장에서는 경제적으로 장점이다. 해시캐시는 이메일의 헤더(header: 각 데이터의 머리 표제 정보)에 토큰을 첨부하라고 제안한다. 이 토큰에는 시간을 투자해서 계산한 작업 증명이 포함되어 있다. 

 

- 해시캐시에서 사용하는 작업 증명 함수는 SHA-1을 해싱 함수로 이용하는 부분 해시 반전이다.

부분해시 반전 문제 해결책 (실전)

- 부분 해시 반전 능력을 해결하는 데, 계산능력을 제공하는 개인이나, 기관을 채굴 자라고 말한다. 블록체인을 안전하게 보호하려면, 반드시 채굴자들의 도움이 필요하고, 이에 대한 보상으로 새로 발행된 코인을 지급한다. 블록 보상은, 채굴자가 해시 반전 문제를 풀 때마다 채굴자에게 지급하는 보상금이다. 

 

- 블록체인을 안전하게 보호하는 데 계산능력을 제공한 채굴자들에게 새로 발행된 암호화폐가 할당된다. 채굴자들은 자신이 채굴한 블록에 어떤 트랜잭션을 포함할지 선택할 수 있는데, 이때 대개 트랜잭션에서 지불하는 수수료를 바탕으로 선택한다.

 

- 해싱 문제를 푼 채굴자는 코인베이스를 이용해, 자신에게 블록 보상을 지급한다. 이런 이유로, 부분 해시 반전 문제를 푸는 것을 '채굴'이라고 말한다. 네트워크의 모든 채굴자가 블록을 채굴하기 위해 경쟁한다. 한 채굴자의 해시 레이트는 초당 해시로 측정하는 계산능력을 뜻한다.   

 

 


관련 글: 51 % 공격이란? (+ 영지식 인증/멀티 시그 월렛 개념)

관련 글:  블록 체인 합의 알고리즘(Consensus Algorithm) (7가지 총정리)

관련 글: 토큰 이코노미 설계와 가치 제안 (One Page Whitepaper)

 

 

댓글


top
bottom