본문 바로가기
Blockchain/Theory

친절한 블록체인 설명

by soccerman 2022. 2. 10.
반응형
쉬운 말로 설명하기 위해 기술적으로 모호한 설명이 있을 수 있는 점 양해부탁드립니다.

블록체인이란 누구나 접근할 수 있는 분산된 컴퓨터에 정보를 저장하여 위조가 불가능하게 하는 시스템입니다.

 

다른 말로는 트랜잭션을 기록하는 분산데이터원장이라고도 합니다.

  • 트랜잭션 : 시스템의 상태를 변화시키는 작업의 단위
    • ex) 블록체인 장부 상에 거래내역를 기록하는 작업
  • 원장 : 거래 내역을 기록한 장부

신뢰(Trust)

이처럼 블록체인은 누구나 접근하여 정보를 확인할 수 있는 투명성위조불가능이라는 특징을 기반으로 신뢰라는 가치를 대체하는 수단으로 활용될 수 있습니다.

 

신뢰라는 가치를 기술로 대체할 수 있게 되면 불필요한 비용들을 제거할 수 있습니다.

비트코인 : 거래 내역 정보를 블록체인 상에 기록, 화폐로서의 기능 구현
 인터넷 상에서 은행이라는 중개자 없이 서비스나 재화에 대한 지불이 가능해집니다. (이중지불 문제 해결)

이더리움 : 거래 내역 정보와 프로그래밍 코드를 블록체인 상에 저장, 계약 기능 구현 (스마트 컨트랙트) 
현실세계에서의 계약을 컴퓨터 프로그래밍 코드로 구현한 스마트 컨트랙트를 블록체인 상에 저장합니다.
중개자에게 을 주고 계약을 진행하는 것을 스마트 컨트랙트(소스코드)에 이더를 보내서 계약을 진행하는 것으로 대체합니다. (중개비용 문제 해결)

신뢰라는 가치를 기술로 대체하여 지불 기능계약 기능을 구현한 블록체인 기술은 금융산업에 큰 영향을 미치고 있습니다. 디파이(Decentralized Finance)

그렇다면 블록체인은 과연 신뢰라는 가치를 어떻게 기술적으로 구현했을까요?

나의 거래내역이 블록체인에 등록되는 과정 (비트코인)

  1. 사용자 A가 본인의 거래내역을 만들고, 디지털 서명을 생성한 이후 등록요청 (트랜잭션). 블록체인 분산컴퓨터(노드)는 거래내역 등록요청을 받고, 디지털 서명의 유효성 검사.
  2. 유효성을 검증을 통과하면 해당 거래내역을 주변 분산컴퓨터(노드)들에게 전파. 각 노드들은 해당 거래내역을 분산컴퓨터 임시공간에 저장.
  3. 채굴자는 노드의 임시공간에 있는 거래내역들을 모아 예비 블록을 생성하고, 앞자리가 X개의 0으로 시작하는 해쉬함수 아웃풋값을 생성하는 인풋을 찾음. 컴퓨터로 계속 인풋값을 바꿔가며 아웃풋을 찾아봐야함. (비트코인 작업증명).
  4. 운이 좋게 조건에 맞는 아웃풋 값을 찾은 채굴자는 블록 거래내역에 자신의 계좌에 비트코인 X개를 추가한다는 거래내역을 추가하고 (채굴보상) 분산컴퓨터(노드)들에게 새 블록을 체인에 등록 요청.
  5. 분산컴퓨터(노드)들은 블록을 받고 채굴자가 찾은 값과 블록에 속한 모든 트랜잭션이 올바른지 검증하고 맞다면 자신의 블록체인에 추가. 그리고 주변 분산컴퓨터(노드)들에게 새 블록을 전파
  6. 새로 등록된 블록의 해쉬를 노드의 이전 해쉬(Previous Hash)로 등록. 채굴자들은 이를 활용해 다음 블록을 채굴.
  7. 일정 수 이상의 분산컴퓨터(노드)가 A의 거래내역이 담긴 블록체인을 추가하면 거래내역 등록 완료.

정보 위조가 불가능 하는 세가지 기술적인 기반

1. 디지털 서명(공개키 암호화)

 공개키 암호화를 활용하여 거래내역에 디지털 서명을 할 수 있게 되었습니다. 공개키 암호화란 말그대로 한 쌍의 누구에게나 오픈하는 공개키(Public Key)와 자신만 가지고 있는 비밀키(Private Key)를 발행하고 이를 활용하여 암호화하는 기법입니다.
 블록체인에 기록하고자 하는 거래내역비밀키를 활용해 암호화 프로그램을 돌리면, 정체를 알 수 없는 디지털 서명 값이 나오게 됩니다. 디지털 서명이 동반된 거래내역은 신뢰할 수 있습니다. 왜냐하면 가상자산을 송금하는 본인만 본인의 거래내역에 본인의 비밀키를 사용해 디지털 서명 값을 만들어낼 수 있기 때문입니다.
 모두에게 공개된 공개키거래내역, 그리고 디지털 서명값을 프로그램에 넣고 돌리면 해당 디지털 서명의 유효성을 검증할 수 있습니다. 또한 디지털 서명은 특정 거래내역과 송금자의 비밀키의 조합으로 생성되는 것이기 때문에, 사기꾼이 나타나서 하나의 디지털 서명을 복제하여 여러 거래내역에 사용하는 것이 불가능합니다.

따라서 디지털 서명은 거래내역의 신빙성 증명하는 수단으로 활용될 수 있습니다.

2. 해싱(Hashing)

 해싱이란 인풋 값을 프로그램(함수)에 넣고 돌려서 나온 아웃풋 값을 활용하는 방식입니다. 블록체인에서는 암호화 해시 함수를 사용합니다. 이는 아웃풋을 토대로 인풋을 유추할 수 없는 해시 함수들을 의미합니다. 인풋에 대한 아웃풋 값들이 매우 랜덤이기 때문입니다. 비트코인에서는 SHA-256를 사용하고 이더리움에서는 keccak-256를 사용합니다.
 해싱을 활용하면 채굴자들에게 새로운 블록을 체인에 붙일 때 충분한 컴퓨터 연산을 하게끔 만들 수 있습니다. 또한 블록체인의 단 하나의 블록의 내용이 조작되더라도 이후에 연결된 모든 블록들이 무효화되게끔 만들 수 있습니다.

3. 합의 규칙(Consensus Algorithm)

 합의 규칙이란 블록체인에 새로운 블록을 붙이는 조건을 의미합니다. 비트코인은 작업증명(Proof of work)을 채택하고 있습니다. 이는 채굴자들이 해시함수를 활용해서 특정한 아웃풋값을 가지는 인풋값을 찾았을 때만 블록을 붙일 수 있게 하는 것입니다. 예를 들어, 최소한 앞자리 수 20개가 0으로 시작하는 아웃풋값을 만들어내는 인풋값을 찾는 것입니다. 일반 컴퓨터로는 엄청난 시간이 걸립니다. 
 채굴자들로 하여금 블록을 추가하기 위해 일정한 일을 하게 함으로써 사기꾼 채굴자들이 블록체인에 블록을 추가하거나 분산 컴퓨터상의 블록체인 정보를 조작하는 일을 예방할 수 있습니다. 이는 뒷부분의 정보 조작 예상 시나리오에서 추가 설명하겠습니다.

여기서 Genesis Block은 블록체인의 첫 블록이고 Hash 값은 채굴자가 찾은 해쉬함수의 인풋값입니다.
정보가 기록된 블록들은 이전 블록의 해시값을 가지는 방식으로 서로 묶여있습니다.
그래서 이를 블록체인이라고 합니다.

블록체인 개념을 처음 주장한 사토시 나가모토가 대단한 이유는, 작업증명이라는 합의 규칙암호화 그리고 해싱 등의  기술을 이용해 위조 불가능한 정보를 저장하는 분산 컴퓨터 시스템을 만들고, 이 시스템을 기반으로 인터넷 상의 지불가능한 수단(비트코인)을 제시했기 때문입니다. 우리는 이를 가상화폐라고 합니다.

이전에는 인터넷 상에서 은행이 도와주지 않으면 개인이 돈을 복사 붙여넣기하는 것을 막지 못했음(이중지불문제)

그렇다면 이 블록체인에 기록되는 정보는 정말 조작될 수 없을까?

블록체인 정보조작 예상 시나리오

사용자가 분산컴퓨터(노드)에 위조된(올바르지 않은) 거래내역(트랜잭션) 등록 시도

분산컴퓨터(노드)는 거래내역의 디지털서명의 유효성을 검증을 통해 올바른 거래내역만 임시저장공간에 저장합니다. 검증을 통과하지 못한 거래내역은 폐기처분되며 다른 분산컴퓨터(노드)들로도 전파되지 않습니다. 따라서 사용자 입장에서의 위조된 거래내역 등록시도는 불가능합니다.

채굴자가 위조된 거래내역을 블록에 넣어 블록 등록 시도

 사기꾼 채굴자가 위조된 거래내역을 포함한 블록 채굴 작업증명에 운좋게 성공한다 하더라도 이는 블록체인에서 최종적으로 인정될 수 없습니다. 일단 분산컴퓨터는 등록요청된 새 블록을 바로 블록체인에 추가하지 않습니다. 해당 블록에 일정 수준의 개수의 블록이 추가적으로 연결된 후 이를 인정합니다.

 사기꾼 채굴자가 초기 몇번 작업증명에 먼저 성공한다 하더라도, 전세계에 있는 평범한 채굴자들은 올바른 블록에 대해 채굴을 시도할 것입니다. 평범한 채굴자가 채굴에 성공하고 사기꾼 채굴자가 블록을 붙힌 이전 블록에 이어서 자신의 블록을 붙이려고 할 것입니다. 분산 컴퓨터(노드)는 하나의 블록에 두개의 블록(사기, 평범)이 동시에 연결되는 상황을 보고 당황하지만 이를 지켜봅니다. 사기꾼이 붙인 블록 뒤로는 사기꾼만 계속 블록을 추가하게 되고, 평범한 채굴자가 붙인 블록 뒤로는 평범한 채굴자들만 추가 블록을 붙이게 됩니다.

 작업증명의 특성상 채굴자 모두가 같은 채굴확률을 갖게 됩니다. 일반적으로 사기꾼 채굴자가 평범한 채굴자보다 수가 적기 때문에 평범한 채굴자들이 채굴 성공을 더 자주 하게 될 것이고 결과적으로 평범한 채굴자들이 붙인 블록의 길이가 사기꾼 채굴자가 붙인 블록의 길이보다 길어지게 됩니다. 분산컴퓨터(노드)는 최종적으로 길이가 긴 블록 연결 집합을 자신의 블록체인으로 인정하고 짧은 쪽은 폐기처분합니다. 이렇게 블록체인에는 올바른 정보만 남게 됩니다.

 사기꾼 채굴자의 수가 평범한 채굴자의 수보다 수가 더 적다는 가정과 작업증명이라는 비트코인의 합의 규칙 덕분에 분산컴퓨터의 정보는 위조될 수 없습니다.

분산 컴퓨터(노드)의 블록체인 내 정보 조작 시도

 블록 내의 거래내역이 변경되면, 해당 블록의 해쉬함수의 인풋값이 변경됩니다. (인풋값 = 블록정보 + 논스(임의의 숫자)) 따라서 해쉬 함수의 아웃풋값이 합의규칙을 충족하지 못하게 됩니다. 따라서 해당 분산컴퓨터(노드)의 블록체인은

작업증명 규칙을 충족하지 않는 블록이 포함된 블록체인이 되므로 올바른 블록체인으로 인정되지 않습니다.

 만약 정보 조작 후 작업증명 규칙을 충족하는 블록체인으로 만들고 싶으면 방법은 하나입니다. 조작 블록에서부터 뒤로 연결된 모든 블록의 해시를 다시 구하는 것입니다. (채굴을 다시 하는 것) 허나 이는 작업증명의 특성상 엄청난 시간이 소요되기 때문에 현실성이 없습니다. 또한 연결된 모든 블록의 해시를 다시 구하는 것을 완료한다고 하더라도 전세계 분산컴퓨터(노드)들에 저장되어있는 블록체인과 일치하지 않는 블록체인을 가지게 되므로 해당 조작 분산컴퓨터 블록체인은 인정될 수 없습니다.

 블록체인을 조작하는 유일한 방법은 전 세계에 퍼져있는 분산된 노드들을 과반수이상 한꺼번에 조작하는 방법밖에 없음. 이는 현실적으로 불가능합니다.


 2021년 블록체인 기반 가상화폐 시장의 시가총액은 2000조원으로 엄청난 규모를 기록하고 있습니다. 블록체인기반 탈중앙금융서비스 디파이의 가상화폐 담보대출 서비스의 규모는 30조에 가깝습니다. 또한 디지털 아트의 소유권을 증명할 수 있게 해주는 NFT 기술이 등장하기도 했습니다. NFT의 시가총액은 14조입니다. 현실세계 그림시장의 10분의 1이긴 하지만 최근들어 급격하게 규모가 커지고 있습니다. 2022년 1월에 런칭한 한국작가 NFT 집시 슈퍼노멀 프로젝트는 8888개의 NFT를 공개하였고 최고가에 거래된 작품은 75이더(2억5천만원)에 거래되기도 했습니다.

 신뢰라는 가치를 대체하는 블록체인 기술은 현재 비트코인을 필두으로 이더리움 등 기능을 확장하고 있고 사회의 다양한 문제를 해결하려고 하고 있습니다. 급격한 성장을 보이는 산업 중 하나라고 말할 수 있습니다.


잘못된 정보나 보충해주실 부분이 있으면 피드백 부탁드리겠습니다. 궁금한 부분 질문도 환영입니다. 소중한 시간 할애하여 읽어주셔서 감사합니다 ㅎㅎ.

 

Reference

반응형

댓글