비트코인, 이더리움, 에이다 등등이 돌아갈 수 있는 기반은 바로 블록체인이라는 개념 때문이다.
블록체인이란 무엇일까?
Block + Chain의 합성어로 블록들이 모여 있는 체인이다.
블록체인은 위의 그림과 같이 구성되어 있다.
그렇다면 블록은 무엇일까?
블록은 추가만 되는 데이터베이스이다. 즉 편집이 불가능한 데이터베이스 인 것이다.
이 데이터베이스의 데이터는 결혼증명서, 운전면허증, 대학교 학위와 같은 것들이 저장될 수 있다.
비트코인같은 경우에는 이 데이터가 거래내역들(누가 얼마 갖고 있고, 누가 누구에게 얼마나 보냈고..)이 저장되는 것이다.
위에서 설명했듯 이 블록은 그 누구도 삭제할 수 없다는 특성 때문에 중요한 정보들을 그대로 잘 보관할 수 있다!
또한 블록체인은 '탈중앙화' 구조인데, 이는 특정 개인이 DB를 관리할 수 없다는 뜻이다.
탈중앙화 구조에서는 예를 들어 내가 2천만원의 비트코인을 가지고 있다고 거짓말하면 다들 DB의 복제본을 가지고 있기
때문에 거짓말이 통하지 않는 것이다. 따라서, 이 이유 때문에 가상화폐를 감시하거나 통제하기가 어렵다.
너무 많은 사람들이 비트코인 노드를 돌리고 있고, 우리 모두가 동일한 DB복제본을 가지고 있어서
모두가 컴퓨터를 꺼야 비트코인이 죽을 수 있다. -> 따라서 이 일은 일어날 수가 없고, 가상화폐들이 정부의 감시나 통제에 대응할 수 있다.
이러한 블록체인은 블록들이 앞뒤로 연결되어 있는데 블록은 해쉬, 데이터로 구성되어 있다. 데이터는 위에서 이야기한
그 어떤 데이터가 될 수 있음을 알 수 있었다(결혼증명서, 거래내역, 운전면허증, 대학교 학위 등등)
그렇다면 해쉬란 무엇일까?
해쉬란 수학 함수인데, 한 개의 인풋을 받으면, 아웃풋을 준다.
해쉬의 중요한 개념은 일방향 함수이고, 결정론적이라는 특성이다.
일방향 함수라는 것은, 만약 인풋 '사랑해'로 아웃풋을 얻었지만, 아웃풋을 가지고 인풋인 '사랑해'를 얻을 수 없다는 것이다.
결정론적이라는 것은, 인풋 '사랑해'의 아웃풋은 항상 같은 것으로 정해져 있다는 뜻이다.
만약 '사랑해!'라고 인풋을 바꾸면 아웃풋은 이전 '사랑해'와 아예 다르게 된다.
만약.. 블록을 체인에 추가하고 싶으면 어떻게 할까? 비트코인이라고 가정했을 때 데이터인 거래내역을 모으고,
이전 블록의 해시를 가져오고, 거래내역과 이전 블록의 해시를 합쳐서 다시 해시한다. 이렇게 해시하면 나만의 해시가 생기는 것이다. -> 이렇게 하면 블록체인에 블록을 추가할 수 있다.
이런 방법으로 체인이 형성되는 것이다. 체인이 연결되어 있기 때문에 만약 천 만개의 블록이 연결되어 있다고 가정하면
천 만개의 블록중 첫 번째 블록의 해시값을 조금만 바꿔도 천 만개의 모든 해시들이 변경된다. -> 따라서, 누구도 블록체인 변경을 할 수가 없게 되고 이는 보안성이 높음을 의미한다.
어떤 데이터가 블록체인에 추가될 수 있는지 거짓이 있어서는 안된다. 돈이 더 많다던가 등의.. 따라서
작업증명을 통해 비트코인, 이더리움 등 다양한 크립토들이 악용사례 등으로부터 블록체인을 보호하고 있다.
채굴자들에게는 일이 있다. 블록체인에 들어오는 데이터들을 확인하는 일이다. 채굴자가 데이터를 블록안에 넣어서 블록체인에 보내는 역할을 하기 때문이다.
채굴자들 덕분에 블록체인에 올라가야하는 데이터들을 모두 체크할 수 있다. 채굴자들이 이 일을 하는 건 착해서가 아니라 돈을 벌기 때문이다. 채굴자들이 트랜잭션 컨펌을 하면 돈을 받게 되고, 이 덕에 검증 작업이 활발하게 이루어지면서 악용사례들로부터 보호할 수 있다.
작업증명은 채굴자에게 질문(전체 네트워크가 다 아는 질문)을 하고 채굴자는 이 질문에 대해 답을 해야한다. 채굴자가 답을 찾으면 그때서야 블록을 올릴 수 있다. 따라서, 채굴자는 2번 보상을 받을 수 있다.
첫번째로는 거래내역을 컨펌하면서, 두번째는 질문의 답을 찾아, 블록을 체인에 올리면서다.
사람들이 블록을 블록체인에 올리는 순간 가상화폐가 생성된다.
비트코인을 예로들면 처음 채굴자가 블록을 올릴 때마다 50개가 생성되었지만, 지금은 6.25개가 생성된다.
하지만 4년마다 반감기가 와서 절반씩 줄어든다. 50 -> 25 ->12.5 이런식으로 줄어든다. 비트코인은 무한정이 아니기 때문에!
그렇다면,, 이 작업증명 과정에서 질문이라는 건 무엇일까?
채굴자가 바꿀 수 있는 유일한 값은 nonce이다.
NONCE = 한번만 쓰인 숫자
ex)질문은 3개의 0으로 시작되는 해쉬의 논스는 무엇일까?라는 식으로 채굴자에게 질문을 던지고, 채굴자는 이걸 찾기 위해 논스를 바꾸면서 해쉬를 바꾸고 해쉬가 3개의 0으로 시작되는지 체크한다. -> 찾을 때 까지 노가다로 찾아야한다.
질문은 아주 복잡하지만 그 답은 검증하기가 아주 쉬운 방식이다.
예를 들어 비트코인 같은 경우는 10분에 한 번씩 블록을 생성한다. 블록이 너무 빨리 생성이 되면 난이도를 올리기도 한다.
즉, 네트워크가 원하는 질문의 답을 찾아, nonce를 바꾸는 것이다!
해당 포스팅은 노마드 코더님의 유튜브를 참고했습니다!