Courtesy "Crossroad: by bepple 이 10초짜리 영상은 이더리움 블록체인에서 약 74억원에 판매되었다. 미쳤다고 혹은 멍청하다고 생각할 수 있다. 그러나 이 현상을 이해해야 한다. 어떻게 블록체인에서 비디오 영상을 판매할 수 있는지, 크립토를 이용한 예술 아트 마켓이 무엇인지, 팬케이크 스왑과 스시 스왑의 차이가 무엇인지, 왜 이더리움에서 바이낸스 체인으로 옮기는 거래소가 있는지?
블록체인은 비트코인, 이더리움, 에이다 등을 돌아가게 하는 기반이다. 블록체인 = 블록들이 모여있는 체인이다. Blockchain = chain + block. 블록이라는 단어를 데이터베이스로 바꿔보자. 블록체인은 즉 데이터베이스이다. Append(더하기)만 가능하다. 이 데이터베이스는 추가만 가능하고 삭제가 안된다. 편집도 안되고 오로지 추가만 가능하다. 불가능한 DB인 것이다.
예를 들어 대학교 학위의 블록체인이라고 생각해보자. 대학교 학위는 블록체인에 추가되고, 절대 편집/삭제되지 않는다. 정부는 운전면허증이라든지 지원금 사용내역 등을 기록할 수 있다. 전세계약서 같은 것들을 보관하면, 그 누구도 삭제할 수 없고, 그대로 잘 보관할 수 있다.
또한 블록체인은 '탈중앙화'가 가능하다. 탈중앙화라는 건 특정 개인이 DB를 관리할 수 없다는 뜻이다. 모두가 DB의 복제본을 다들 가지고 있다. 그래서 만약 내가 2천만 비트코인을 가지고 있다고 거짓말을 하면 다들 DB복제본을 가지고 있기 때문에 이 거짓말은 통할 수 가 없다. 즉 분산된 DB이기도 하다. 바로 이 때문에 크립토를 감시하거나 통제하기가 힘들다. 너무 많은 사람들이 비트코인 노드를 돌리고 있고, 모두가 정확하게 동일한 DB복제본을 갖고 있어서 컴퓨터가 전부 꺼진다면 비트코인이 사라질 수 있다. 그러나 그건 불가능하다. 왜냐하면 모두가 동시에 그렇게 행동할 수 없다. 덕분에 암호화폐들이 정부의 감시나 통제에 대응할 수 있다. 바로 그 이유 덕분에 이는 매력적인 데이터베이스 인 것이다.
이번에 '블록'에 대해서 이야기해보자. 블록이 정보를 DB에 추가하는 방법이다. 데이터를 그냥 적어서 추가하는 것이 아니라, '블록'이라는 것으로 추가한다. 비트코인의 경우 10분마다 '블록'이 생성되고 있다. '블록'에는 중요한 정보들이 많은데, 예를 들면 '블록의 해시' '이전 불록의 해시' 그리고 '데이터'이다.
쉬운 것부터 살펴보면, 블록체인은 DB이다. 결혼증명서, 운전면허증, 혹은 대학교 학위 등등. '데이터'라고 말한 부분에 이것을 넣는 것이다. 비트코인의 경우 그 데이터는 '트랜잭션 (거래내역)' 들이다. 누가 얼마 갖고 있고, 누가 누구에게 얼마 보냈고 등등. 그 내용이 비트코인 '데이터' 부분에 저장되어 있다.
'해시(hash)에 대해서 이야기해보자. 이건 수학 함수인데, 한 개의 인풋을 받으면 아웃풋을 준다. 포인트는 이건 '일방향 함수' 이고 '결정론적'이다. '결정론적'이란 인풋 '사랑해'의 아웃풋은 항상 같은 것으로 정해져 있다. '사랑해' -> 항상 정해져있는 아웃풋. 만약 내가 인풋 '사랑해'를 살짝 바꿔서 '사랑해!'로 하면 그 경우 아웃풋은 엄청나게 바뀐다. 바로 이게 '결정론적'이라는 것이다.
스탭2는 '일방향 함수'이다. 아까 인풋 '사랑해'를 통해 아웃풋이 나왔다. 하지만 아웃풋을 가지고 인풋인 '사랑해'를 얻을 수는 없다. 왜냐하면 일방향 함수이기 때문이다. 망고로 망고쥬스를 만들수는 있지만, 망고쥬스로 망고를 만들 수 없다. 망고쥬스 만드는 과정이 해시하는 것과 비슷하다. 둘다 일방향인 함수이다.
왜 중요하냐면, 이 것이 블록들이 서로 연결된 방법이고, 이것이 블록의 '체인'을 만든다. 내가 블록이고, 비트코인 블록체인에 추가되고 싶다 하면 해야 할 것은 첫째로, 비트코인의 결제 내역들 '데이터' 부분을 모으면 된다. 데이터를 모아서 주머니에 넣는다. 이제 이전 블록의 '해시'가 필요하다. 그것도 모아다 주머니에 넣는다. 이제 데이터 + 이전 블록의 해시를 합쳐서 다시 해시해야 한다. 이것을 해시하면 나만의 해시가 생긴다. 이렇게 하면 블록체인에 블록을 추가할 수 있다.
나에겐 데이터가 있고(블록체인에 올리고 싶은 무엇이든), 이전의 블록 해시가 있다. 이 두개를 다 가져와서 해시를 하면 나만의 해시가 생긴다. 모두 다 이전 해시와 같이 결햅해야 한다. 이와 같은 방법으로 체인이 결성된다. 만약 블록체인이 천만개의 블록을 갖고 있다면, 누군가 1번 블록에서 1과 0을 바꾸면 또는 0에서 1을 바꾸면 우리의 모든 해시들도 몽땅 바뀐다. 아주 조그만 변경해도 아웃풋이 몽땅 다르다. 바로 이 방법으로 체인이 연결되고, 덕분에 누구도 블록체인 변경을 할 수 없다.
댓글 영역