안녕하세요 여러분. 참새입니다.
비트코인부터 시작해서 이더리움, 라이트코인, 등등 수 많은 가상화폐들이 블록체인 기술을 사용하여 탄생하였습니다. 블록체인 기술 자체가 혁신적이기도 하며, 저희가 알고 있는 대부분의 가상화폐들이 블록체인 기술을 사용하여 만들어졌기 때문에 모든 가상화폐들에는 블록체인 기술이 내재되어있을 거라는 착.각.을 많이 하기도 하는데요, 블록체인 기술이 아닌 가상화폐인 아이오타(IOTA)에 대해서 간단하게 알아보도록 하겠습니다!
블록체인과 블록체인이 아닌 것을 구분하려면 우선 블록체인이 무엇인지 알아야겠죠?
우선, 원장 (ledger)란 은행이나 사업체 등에서 거래 내역을 적은 한 종류의 ‘서류’라고 생각하시면 좋겠습니다. 유저들이 코인을 보내고 받고 하는 모든 거래 기록들을 정리한 원장, 즉 네트워크에서 기록되어있는 분산 원장 (distributed ledger)의 한 종류를 블록체인이라고 부릅니다.
비트코인을 예로 들자면, 비트코인 네트워크에서 처리되었던 모든 거래들 (transactions)을 모아둔 것이 비트코인의 ‘블록체인’입니다. 참새가 비트코인 10개를 비둘기에게 보냈던 기록, 비둘기가 비트코인 5개를 까마귀에게 보냈던 기록, 이런 모든 거래 기록들이 담겨져있는 네트워크 전체에 ‘분산되어 있는’ 원장을 블록체인이라고 부릅니다.
왜 원장들이 분산되어 있을까요?
만약 참새가 비트코인 10개를 비둘기에게 보낸 기록을 참새만 가지고 있고 비둘기가 가지고 있지 않다면, 비둘기는 참새에게 비트코인 10개를 받은 ‘기록’이 없기 때문에 실질적으로 비트코인 10개는 네트워크 상에서 사라지게 됩니다. 반대 경우에, 만약 참새가 같은 10개의 비트코인을 까마귀에게도 비둘기에게도 보낼 수 있다면, 이중 사용 (double-spending) 문제가 생기죠. 내가 가진 비트코인 10개를 단순하게 복사+붙이기 해서 원하는 만큼 다른 사람들에게 보낼 수 있다면 그건 당연히 사기가 되겠죠?
이런 문제들이 있기 때문에 비트코인 네트워크에 있는 사람들, 즉 네트워크에 연결되어 있는 노드(node)들이 비트코인 네트워크에 저장되어있는 모든 거래 기록들을 함께 ‘공유’하고 있어야 합니다. 참새가 까마귀의 거래 기록을 알고 있고, 까마귀가 참새의 거래 기록을 알고 있고, 모두가 서로의 거래 기록을 알 수 있다면 이중 사용 문제와 같은 문제를 방지하고 안전하게 비트코인을 주고 받고 할 수 있습니다. 이렇게 거래 내역들을 인증하고 처리하면서 서로가 ‘합의’한 거래 기록들을 모든 사람들 (노드들) 전체에게 공유하는 과정을 ‘합의(consensus = 컨센서스)를 이루다’라고 표현합니다.
제 포스팅을 자주 보시는 분들은 제가 포스팅에 ‘합의 알고리즘’이라는 단어를 자주 사용하는 것을 보셨을텐데요, 합의 알고리즘이란 단순하게 말해서 가상화폐가 어떠한 컴퓨터 알고리즘을 사용하여서 모두에게 합의가 되고 공유가 된 거래 기록들을 전달하는가 입니다. 거래 기록들은 모두 데이터화되어서 처리되는데, 데이터 양이 방대해지면 방대해질 수록 손쉽게 모든 거래 기록들을 확실하게 모두에게 전달하는게 굉장히 어려운 일이므로, 가상화폐들마다 다른 기술과 방법으로 ‘합의’를 이루려고 합니다.
비트코인의 경우 ‘채굴자’가 존재하기 때문에 비트코인 사용자가 비트코인을 주고 받고 할 때의 거래 기록들을 채굴자가 선별하여서 인증해주고, 인증된 거래 기록들은 쌓이고 쌓여서 하나의 블록 (block)이 되고, 블록의 데이터 허용치 용량이 꽉 차면 블록체인에 그 블록을 추가하고 그 이후에 쌓이는 기록들은 새로운 블록에 추가를 합니다. 간단히 말해서,
“거래 기록들 블록 블록체인”
이 되는 것이죠 ㅎㅎ 그렇기 때문에, 비트코인 블록체인은 비트코인 네트워크에서 채굴자들에 의해서 처리되고 인증되었던 모든 거래 기록들을 명시합니다.
블록체인이 새로 떠오르는 기술이라서 엄청나게 어려운 컨셉이라고 오해하시는 분들이 많은데, 사실 “블록체인 = 거래 기록 장부” 라고 생각하셔도 될 정도로 간단한 컨셉 이기도 합니다! (앞으로는 너무 어려워하지 말고 차근 차근 알아가봐주세요... 질문이 있으시면 댓글로 남겨주시기 바랍니다.)
자 이제, 아이오타가 합의에 이루는 과정에 쓰는 탱글 (Tangle)은 뭔지 알아보도록 하겠습니다.
탱글 또한 블록체인처럼 인증된 거래 기록들을 보관하고 저장하는 ‘저장소’입니다. 아이오타가 합의를 이루기 위해서 사용하는 알고리즘은 DAG (Direct Acyclic Graph) 알고리즘인데요, DAG 알고리즘이라는 방식으로 거래 기록들을 인증하고 모든 사람들이 합의되고 인증된 거래 기록들을 가질 수 있도록 합니다.
기존의 블록체인과 다르게 DAG 알고리즘이 사용될 때는 블록이나 블록체인이 필요없어지게 됩니다. 왜냐하면… 거래 기록들을 블록에 저장해두지 않기 때문이죠! (너무 간단해서 죄송합니다…)
비트코인의 경우 거래 기록들을 인증하고, 처리하고, 블록과 블록체인으로 옮기는 ‘채굴자’가 있었지만, 아이오타의 탱글에서는 탱글 네트워크에서 거래를 하는 사람들이 직.접. 거래들을 처리하고 탱글에 업데이트합니다.
여기서 문제점!!!
비둘기가 저에게 코인 100개를 보내달라고 했는데, 제가 사기를 치려고 비둘기에게 10개의 코인을 보내고, “나 비둘기에게 코인 100개 보냈는데?”라고 사기 기록을 저 본인이 인증하고 업데이트하면 네트워크가 엉망 진창이 되겠죠? 이런 점을 방지하기 위해서 탱글 네트워크에서는 거래를 하고 거래를 인증 받기 전에, ‘두 개의 인증되지 않은, 다른 사람들의 이전의 (previous) 거래 기록들’을 인증한 후에 거래를 인증받을 수 있습니다. (무슨 말인가요…?)
예를 들어보겠습니다.
(1). 참새가 코인 10개를 비둘기에게 보냅니다.
(2). 참새는 아직 탱글 네트워크에 올라가있지 않은, 인증되지 않은, 다른 사람들의 거래 기록들 2개를 인증해주고 탱글 네트워크에 업데이트 합니다.
(3). “참새가 코인 10개를 비둘기에게 보냄.” 이라는 거래를 다른 유저가 인증해주고 탱글 네트워크에 인증된 거래 기록을 추가합니다.
(4). 거래 끝!
굳이 비유를 하자면… 학생들이 쪽지 시험을 본 후에, 선생님께서 “나 일일이 너네 쪽지 시험들 채점할 시간 없으니까 옆에 학생들이랑 시험지 바꿔서 채점하고 나한테 줘.” 라고 할 수 있을까요? 원래 블록체인에서는 채굴자 = 채점자 역할을 담당했었지만, 아이오타의 탱글에서는 모든 유저 = 학생 & 채점자 역할을 담당하게 됩니다.
기발한 아이디어이지만, 아직 대량의 데이터를 처리하는 것 (합의하는 것)이 이뤄진 적은 없기 때문에 이론상의 그림의 떡이 될 지, 아니면 정말로 맛있는 호떡이 될 지는 두고봐야지 알 수 있을 것 같습니다 ㅎㅎ 아이오타만 블록체인을 쓰지 않는 것도 아니니까 앞으로 다양한 블록체인이 아닌 기술로 합의를 이루는 가상화폐들도 등장할 거라고 믿고 있고 기대하고 있습니다.!!