앞 편에서 「모두가 장부를 갖는다」까지 왔습니다. 그런데 누가 거짓 장부를 퍼뜨리면 어떻게 하나라는 문제가 남았습니다. 블록체인은 그 답입니다. 이 편의 목표는 하나입니다 — 「왜 한 번 적힌 것을 고칠 수 없는가」를 말이 아니라 직접 깨뜨려보면서 이해하는 것.
블록체인의 모든 것이 이 하나의 도구 위에 서 있습니다.
아주 이상한 믹서기가 하나 있다고 생각해봐. 무엇을 넣든 — 글자 한 개든 책 한 권이든 — 항상 똑같은 길이의 이상한 글자 뭉치가 나와.
이 믹서기에는 특별한 성질이 세 개 있어.
① 같은 걸 넣으면 항상 같은 게 나와. ② 아주 조금만 바꿔도 — 점 하나만 찍어도 — 결과가 완전히 딴판이 돼. ③ 나온 결과를 보고 원래 뭘 넣었는지는 알 수 없어. 되돌리기가 안 되는 믹서기야.
아래에 직접 넣어봐. 글자 하나만 바꿔보면 ②번 성질이 뭔지 바로 알 수 있어.
아래 칸에 아무거나 입력해보세요. 글자 하나만 바꿔도 아래 결과가 어떻게 변하는지 보세요.
한 글자를 써도, 소설 한 권을 넣어도 결과는 항상 64자리입니다. 그리고 글자 하나만 바꿔도 결과 전체가 완전히 달라집니다. 직접 마침표 하나만 찍어보세요.
이 편에서 가장 중요한 실습입니다. 직접 고쳐보세요.
공책에 장부를 적는데, 특별한 규칙을 하나 넣었어. 새 페이지를 시작할 때 맨 위에 「앞 페이지의 지문」을 먼저 적는 거야.
그러면 어떻게 될까? 누가 3번 페이지의 내용을 몰래 고치면, 3번 페이지의 지문이 바뀌어. 그런데 4번 페이지 맨 위에는 「고치기 전의 지문」이 적혀 있잖아. 안 맞아! 그래서 들통이 나.
들키지 않으려면 4번도 고쳐야 하고, 그러면 5번도, 6번도… 뒤에 있는 걸 전부 다시 써야 해. 이게 블록체인이 「고칠 수 없다」고 말하는 이유야.
아래 블록의 글자를 아무거나 바꿔봐. 무슨 일이 벌어지는지 직접 보자.
각 블록은 앞 블록의 해시를 품고 있습니다. 아무 블록의 내용이나 바꿔보세요 — 그 뒤가 전부 빨갛게 변합니다.
블록 안의 글자를 하나만 바꿔보세요. 그 블록부터 끝까지 어떻게 되는지 보시면 됩니다.
지금 실습은 「고치면 표가 난다」는 것까지만 보여줍니다. 그런데 공격자가 뒤의 블록을 전부 다시 계산해버리면 어떻게 될까요? 계산기만 있으면 위 실습에서는 순식간에 됩니다.
그래서 한 가지 장치가 더 필요합니다 — 블록을 하나 만드는 데 아주 큰 비용이 들게 만드는 것입니다. 그게 작업증명이고, 다음 편(03 · 채굴)의 주제입니다.
즉 블록체인의 안전은 「해시 체인」 하나가 아니라 「해시 체인 + 비싼 계산 + 다수결」 셋의 조합에서 나옵니다. 하나만 떼어놓고 「블록체인이라 안전하다」고 말하는 것은 정확하지 않습니다.
생각보다 단순합니다. 네 가지뿐입니다.
비트코인 블록의 구성을 단순화한 것입니다.
비트코인의 블록은 대략 10분에 한 개씩 만들어지고, 담을 수 있는 거래 수에 한계가 있습니다. 그래서 거래가 몰리면 대기줄이 생기고 수수료가 올라갑니다 — 수수료를 더 낸 거래가 먼저 블록에 들어가기 때문입니다.
왜 10분일까요? 더 짧게 하면 전 세계 참여자에게 블록이 퍼지기 전에 다음 블록이 나와 충돌이 잦아지고, 더 길게 하면 확정이 너무 느려집니다. 절대적으로 옳은 값이 아니라 설계상의 타협입니다.
아이디도 비밀번호도 없는데, 어떻게 내 코인인 줄 알까요?
열쇠가 한 쌍으로 만들어져. 개인키는 나만 갖는 진짜 열쇠고, 공개키(주소)는 모두에게 알려주는 우편함 주소야.
신기한 건 개인키로 「서명」을 하면, 모두가 그게 진짜인지 확인할 수 있는데도 개인키가 뭔지는 아무도 모른다는 거야. 도장은 보여주지 않으면서 도장이 찍혔다는 건 증명하는 셈이지.
그래서 코인에는 「비밀번호 찾기」가 없어. 개인키를 잃어버리면 그 돈은 영원히 그 자리에 남아 있지만 아무도 꺼낼 수 없어. 실제로 그렇게 잠긴 비트코인이 아주 많아.
개인키에서 주소는 만들 수 있지만, 반대는 불가능합니다. 화살표가 한쪽으로만 있는 이유입니다.
여기서 실전 교훈이 하나 나옵니다. 코인에서 「비밀번호」에 해당하는 것은 개인키(또는 그것을 사람이 외울 수 있게 만든 시드 문구 12~24단어)입니다. 이걸 잃으면 복구가 구조적으로 불가능하고, 남에게 알려주면 그 순간 돈이 넘어갑니다.
그래서 「고객센터입니다, 시드 문구를 알려주세요」는 100% 사기입니다. 어떤 정상적인 서비스도 시드 문구를 물어볼 이유가 없습니다. 이 이야기는 08편(투자 실전)에서 더 다룹니다.
「해킹당했다」는 뉴스의 대부분은 사실 블록체인이 뚫린 게 아닙니다.
장부를 고치려면 뒤에 있는 페이지를 전부 다시 써야 한다고 했지? 그런데 그동안 다른 사람들은 계속 새 페이지를 앞으로 붙이고 있어.
그러니까 혼자서 따라잡으려면 나머지 사람들 전부를 합친 것보다 빨라야 해. 반 전체가 30명인데 나 혼자 16명 몫의 속도를 내야 하는 거야. 그게 51% 공격이야.
가능은 해. 다만 엄청나게 비싸. 그리고 재밌는 게 있어 — 그만한 돈이 있으면 공격하는 것보다 그냥 정직하게 참여해서 보상받는 게 더 이득이야. 사토시는 그걸 노렸어.
공격자가 전체 계산력의 몇 %를 가졌을 때, 이미 확정된 블록을 몇 개나 되돌릴 수 있는지 봅니다.
대형 사고 뉴스의 대부분은 블록체인 자체가 아니라 그 주변이 뚫린 것입니다. 거래소 서버, 개인 지갑, 스마트 컨트랙트의 버그, 혹은 사람이 속아 넘어간 것입니다.
비유하자면 금고는 멀쩡한데 열쇠를 도둑맞은 것에 가깝습니다. 이 구분이 중요한 이유는 — 「블록체인은 안전하다」는 말이 「내 코인은 안전하다」는 뜻이 전혀 아니기 때문입니다.
51% 공격이 비싼 이유는 참여자가 많기 때문입니다. 반대로 참여자가 적은 작은 코인은 공격 비용도 작습니다. 실제로 규모가 작은 몇몇 체인에서 51% 공격이 성공한 사례들이 있었습니다.
즉 「블록체인이니까 안전하다」는 코인마다 다릅니다. 네트워크가 클수록 안전하고, 작을수록 취약합니다. 이건 「기술이 좋다/나쁘다」의 문제가 아니라 규모의 문제입니다.
기술이 덜 발전해서가 아닙니다. 구조적으로 셋을 동시에 가질 수 없습니다.
블록체인이 원하는 게 세 가지야. ① 안전할 것, ② 빠를 것, ③ 아무나 참여할 수 있을 것.
그런데 셋을 동시에 갖기가 아주 어려워. 아무나 참여하게 하면서 안전하려면 모두가 다 확인해야 하니까 느려져. 빠르게 하려면 확인하는 사람을 줄여야 하는데, 그러면 아무나 참여하는 게 아니게 되지.
은행 시스템은 이 중에서 ②번과 ①번을 골랐어. 빠르고 안전한 대신 아무나 은행이 될 수는 없어. 비트코인은 ①번과 ③번을 골랐고, 그래서 느려.
꼭짓점을 눌러보세요. 무엇을 포기했는지가 나옵니다.
레이어2가 대표적입니다. 「모든 거래를 메인 장부에 적지 말고, 자기들끼리 여러 번 주고받은 뒤 결과만 적자」는 발상입니다. 비트코인의 라이트닝 네트워크, 이더리움의 롤업이 이 방식입니다.
다른 방향은 애초에 참여자를 제한하는 것입니다. 소수의 검증자만 두면 빨라집니다 — 다만 그만큼 「아무나 참여」를 포기한 것이고, 그 지점에서 「그럴 거면 그냥 데이터베이스를 쓰지 왜?」라는 질문이 따라옵니다.
트릴레마는 「아직 못 푼 문제」가 아니라 「구조적 맞교환」에 가깝습니다. 어떤 코인이 「셋 다 해결했다」고 주장한다면, 무엇을 어떻게 포기했는지를 찾아보는 게 좋습니다. 대개 어딘가에 대가가 있습니다.
한때 많이 나왔던 말입니다. 반은 맞고 반은 틀립니다.
공개 블록체인에서 코인은 장식이 아니라 부품입니다. 아무나 참여하는 네트워크에서 정직하게 일한 사람에게 보상을 주려면 그 보상이 필요하고, 공격을 비싸게 만들려면 값이 있는 무언가가 걸려 있어야 합니다.
즉 「누구나 참여하는 공개 네트워크」를 원한다면 코인을 떼어내기 어렵습니다. 반대로 참여자를 정해두는 폐쇄형이라면 코인 없이도 되지만, 그 경우는 앞서 말한 대로 기존 데이터베이스와의 차별점이 크지 않은 경우가 많습니다.
그래서 정확한 표현은 이렇습니다 — 「블록체인이 만능이 아니다」는 맞고, 「코인만 빼고 쓰면 된다」는 상황에 따라 다릅니다.
이 편의 요약. 블록체인이 「고칠 수 없는 장부」인 이유는 해시 체인 + 비싼 계산 + 다수결의 조합입니다. 셋 중 하나만 떼면 성립하지 않습니다.
그리고 반드시 구분해야 할 것 — 「블록체인이 안전하다」는 「내 코인이 안전하다」가 아닙니다. 사고의 대부분은 거래소·지갑·사람에게서 일어납니다. 다음 편에서는 「비싼 계산」이 정확히 무엇인지, 그리고 코인이 세상에 나오는 방식을 봅니다.