[번역] 시밤, 대체 블록체인이 뭐지?(WTF is The Blockchain?)

in #kr7 years ago (edited)

sweden-bitcoin.jpg

쉽게 풀어쓴 3500자(영문 기준)짜리 궁극의 블록체인 가이드.

본 글은 WTF is The Blockchain? by Mohit Mamoria의 번역글 입니다.

여러분이 히키코모리가 아니라면, 저는 여러분이 분명 비트코인과 블록체인에 대해 들어보셨을 거라고 생각해요. 어찌 되었건, 요즘 언론에서 가장 많이 들먹이는 주제이기도 하고 트렌드를 타고 있는 올해의 유행어니까요. 심지어 암호화폐를 채굴해본 적도 없고 어떤 원리로 작동하는지 이해하지 못하는 사람들도 이야기를 꺼내고 있습니다. 저는 이과 친구들보다 문과 친구들이 많습니다. 문과 친구들이 맨날 이 새로운 유행어에 관해 설명해 달라고 저를 귀찮게 하네요. 아마도 저뿐만아니라 저와 같은 심정인 분들이 계실 겁니다. 이러한 상황을 대비해, 갈 곳 잃은 영혼들을 이해시켜줄 수 있는 쉽게 풀어쓴 글을 쓰는 것이 지금 이 포스트의 목적입니다.

그나저나, 저는 미래의 아이디어를 여러분의 메일함에 배달하는 주간 뉴스레터 Unmade의 큐레이터입니다.

블록체인: 왜 우리한테 이렇게 복잡한 게 필요하지?

"모든 복잡한 문제에는 명료하고, 간단하고, 틀린 답이 존재한다" - H.L.Mencken

온라인의 다른 글들과 달리, 블록체인의 정의를 살펴보기 전에, 블록체인이 어떤 문제를 해결하는지 먼저 알아봅시다.

만약에, 여러분에게 조(Joe)라는 친구가 있다고 합시다. 조는 지금 해외 여행 중인데, 여행 5일째 되는 날 갑자기 여러분에게 전화하더니 "얀마, 나 돈 좀 필요하다. 다 써버렸어."라고 하네요.

여러분은 "ㅇㅋ 지금 바로 보낼께"라고 말한 뒤 전화를 끊습니다.

1_BV9t2KZxRV6_ADIsV9OybQ.png

그다음, 여러분은 은행직원에게 전화를 걸어서 "안녕하세요? 제 계좌에서 조의 계좌로 1000달러를 송금해주세요"라고 말합니다.

은행 직원은 "네, 알겠습니다"라고 답합니다.

그 은행 직원은 여러분이 조에게 1000달러를 송금할 수 있는지 계좌 잔액을 확인합니다. 여러분은 부자라서 충분한 금액이 있었고, 은행 직원은 다음과 같은 내용으로 장부에 기록을 남깁니다.

거래 장부

참고: 간단하게 설명하기 위해 컴퓨터와 관련된 것을 설명하지 않습니다.

여러분은 다시 조에게 전화를 걸어서, "나 지금 돈 보냈어. 은행에 가면 내가 방금 보낸 1000달러를 찾을 수 있을 거야"라고 전합니다.

1_nS_5WE-WmhuNioLX8ki4lA.png

방금까지 어떤 일이 일어난 걸까요? 여러분과 조 모두, 여러분의 돈을 관리하는 은행을 신뢰한 것입니다. 돈을 송금하기 위해 실제로 물리적인 지폐가 움직인 것이 아니었습니다. 오직 필요한 것은 계좌 장부의 기록이었죠. 조금 더 정확히 말하자면, 여러분이나 조가 관리하거나 소유하지 않은 계좌 장부의 기록입니다.

바로 이것이 현재 시스템의 문제점입니다.

상호 간의 신뢰를 성립하기 위해, 우리는 제3자에게 의존한다

오랜 세월 동안, 저희는 서로를 신뢰하기 위해 중개인에 의존해 왔습니다. 여러분은 "중개인한테 의존하는 게 뭐가 문제야?"라고 물을 수도 있죠.

여기서 문제는 바로, 중개인이 수적으로 단수(singular)라는 겻 입니다. 만약, 사회를 혼란에 빠트리고자 한다면, 한 명의 개인이나 하나의 기관만 부패하면 됩니다. 의도적이든, 의도적이지 않든 말이죠.

  • 만약, 거래를 기록한 장부가 불에 타게 된다면?
  • 만약, 은행 직원이 실수로 1000달러가 아닌 1500달러를 장부에 작성했다면?
  • 만약, 그 은행 직원이 일부러 그랬다면?

지금까지, 우리는 모든 달걀을 한 바구니에 담아왔고 그걸 또 타인에게 맡겨왔다.

은행 없이도 돈을 송금할 수 있는 시스템이 있을까요?

이 질문에 답하기 위해서는, 조금 더 깊게 생각해보고 더 나은 질문을 던져야 합니다.(결국, 좋은 질문이 좋은 답을 내놓으니까요).

여기서 잠시만 생각해 봅시다. 돈을 송금한다는 것은 어떤 의미일까요? 단순히, 장부에 기록하는 것뿐입니다. 그럼 여기서 조금 더 나은 질문을 해보죠.

다른 사람 대신에 우리가 직접 장부를 관리할 수는 없을까?

자, 이 정도는 되어야 탐구할 만한 가치가 있는 질문이죠. 그리고 그 답은 여러분이 이미 짐작하고 계실 겁니다. 바로 블록체인이 이 중요한 질문의 답입니다.

블록체인이란, 누군가 다른 사람에게 의존하고 관리받는 대신에 사람들이 직접 장부를 관리하는 방법을 말합니다.

여기까지 잘 따라오고 계신가요? 좋습니다. 왜냐하면, 이제, 여러분의 머릿속에 여러 질문이 생겨나고 있는 지금, 이 분산된 장부가 어떻게 동작하는지 알아보도록 하겠습니다.

알았어. 근데 어떤 원리인데?

이 방법의 필수 요건은 제3자에 의존하지 않으려는 충분한 사람들이 있어야 한다는 것입니다. 충분한 사람들이 있어야만 스스로 장부를 관리할 수 있습니다.

"비트코인이 인기를 얻는 경우를 대비해 비트코인을 조금 가지고 있는 게 합당하다. 만약 충분한 사람들이 같은 생각을 한다면, 자기실현적 예언(self-fulfilling prophecy)이 될 것이다." - Satoshi Nakamoto, 2009

그러면 얼마나 많은 사람이 필요할까요? 최소 3명은 필요합니다. 위의 예를 들어, 은행이나 제3자의 서비스를 이용하지 않으려는 사람 10명이 있다고 가정해 봅시다. 서로 간에 합의를 통해, 각자의 신원은 모른 채 항상 서로의 장부에 대한 세부 내용을 가지고 있기로 합니다.

1_0uFEch5XGG_Gqex1wXTFWg.png

1. 빈 폴더

모든 사람은 기록을 시작할 빈 폴더를 가지고 있습니다. 거래가 진행되면서, 이 10명의 사람은 지금 빈 폴더에 페이지를 추가해나가기 시작할 겁니다. 바로 이 폴더에 추가된 페이지들의 묶음이 거래를 추적할 수 있는 장부가 됩니다.

2. 거래가 일어날 때

그다음, 이 시스템의 모든 사람이 손에 펜을 쥐고 빈 페이지를 펼쳐 앉아있다고 생각해봅시다. 사람들은 시스템에서 발생하는 모든 거래를 작성할 준비가 되어있습니다.

자 이제, #2번이 #9번에게 10달러를 송금하고자 합니다.

거래가 이루어지기 위해선, #2번은 모두에게 이렇게 소리칩니다. "나는 #9번에게 10달러를 송금하고 싶어. 그러니까 여러분 모두 각자의 페이지에 그 내용을 적어주세요."

1_IJPEjo45XSbkB7nGA854FQ.png

모든 사람은 #2번이 #9번에게 10달러를 송금할 충분한 잔액이 있는지 확인합니다. 만약 #2번의 잔액이 충분하다면, 모두는 각자의 빈 페이지에 송금 내용을 기록합니다.

1_m0lFIWh2bmurf_6rPXoozw.png

이렇게 기록함으로써, 거래가 완료된 것으로 간주합니다.

3. 거래의 지속적인 발생

시간이 흐르면서, 시스템 내의 더 많은 사람이 다른 사람에게 돈을 송금할 필요가 생겼습니다. 돈을 송금하기 위해선, 언제나 모든 사람에게 알려야 하죠. 누군가가 그 알림을 듣게 되면, 그것을 들은 사람은 자신의 페이지에 거래를 적습니다.

이런 행위는 지금 적고 있는 페이지에 더는 공간이 남지 않을 때까지 이어집니다. 한 페이지에 10개의 거래를 기록할 수밖에 없다고 가정했을 때, 10번째 거래가 발생하는 순간 모든 사람은 더는 거래를 기록할 공간이 없게 됩니다.

1_mauQPdASOcD_xIZCN_cXDA.png

이제 페이지를 폴더에 정리하고 새로운 페이지를 가져온 후, 2단계부터의 과정을 반복할 때입니다.

4. 다 쓴 페이지 정리하기

다 쓴 페이지를 폴더에 정리하기 이전에, 시스템의 모두가 동의하는 고유 번호(unique key)를 활용하여 그 페이지를 봉인(seal)해야 합니다. 페이지를 봉인함으로써, 그 페이지의 복사본이 모든 사람의 폴더에 정리될 때 그 누구도 페이지의 내용을 변경할 수 없게 됩니다. 오늘도, 내일도 그리고 일 년이 지난 후에도 말이죠. 여기서 말하는 페이지의 봉인이 바로 블록체인의 가장 중요한 핵심입니다.

[용어 상자] 다 쓴 페이지를 안전하게 만드는 것을 '채굴(mining)'이라고 하지만, 이 글에서는 쉽게 설명하기 위해 계속 '봉인(sealing)'이라는 표현을 사용하겠습니다.

과거에는 제3자 또는 중개인의 존재가, 그들이 장부에 작성한 내용이 변경되지 않을 것이라는 신뢰를 제공했다. 하지만 분산화되고 탈중앙화된 시스템에서는, 여기에서 말하는 봉인(seal)이 신뢰를 제공하게 된다.

오, 글쿤! 그럼 봉인은 어떻게 하는데?

페이지를 봉인하는 법을 살펴보기 전에 앞서, 일반적으로 봉인이란 것이 어떻게 작동하는지 알아야 합니다. 그러기 위해서 제가 마법의 기계(The Magic Machine)라고 부르는 것에 대해 먼저 알아봐야 합니다.

마법의 기계(The Magic Machine)

두꺼운 벽으로 둘러싸여 있는 기계를 상상해보세요. 만약 여러분이 그 기계의 왼쪽에 어떤 상자를 넣으면 무언가 다른 것을 담은 상자를 뱉어낼 것입니다.

[용어 상자] 여기서 말하는 기계란 바로 '해시 함수(Hash Function)'를 의미하지만, 저희는 너무 기술적으로 접근하지 않겠습니다. 그러니까 오늘은 해시 함수를 그냥 '마법의 기계'라고 부를게요.

1_ox9O7DmN1I1AiyNygulCrw.png

여러분이 이 마법의 기계의 왼쪽에 숫자 4를 넣었더니, 오른쪽에서 'dcbea'라는 문자를 뱉어냈다고 가정해봅시다.

어떻게 이 마법의 기계가 숫자 4를 이 문자로 바꾼 걸까요? 아무도 모릅니다. 게다가, 다시 되돌릴 수도 없는 과정이죠. 'dcbea'라는 문자만 놓고 봤을 때, 이 기계에 어떤 것을 집어넣어서 이 글자가 나왔는지 절대 알아낼 수 없습니다. 하지만, 기계에 숫자 4를 넣을 때 마다 언제나 문자 'dcbea'를 뱉어냅니다.

1_G9UsASIX8eX_3xU1_3pg-w.png

'dcbea'라는 문자만 놓고 봤을 때, 이 기계에 어떤 것을 집어넣어서 이 문자가 나왔는지 절대 알아낼 수 없습니다. 하지만, 기계에 숫자 4를 넣을 때 마다 언제나 문자 'dcbea'를 뱉어냅니다.

그러면 이번에는 다른 숫자를 넣어볼까요? 26은 어떨까요?

1_HR3OyX1P-eeiwaOalY-W5A.png

이번에는 '94c8e'가 나왔네요. 신기하당! 흠, 그럼 이 결과 문자에는 숫자가 포함될 수도 있군요.

자, 그럼 제가 여러분에게 이런 질문을 해볼게요.

"숫자 0 세 개가 연속적으로 시작하는 문자를 기계가 출력하기 위해서는, 기계의 왼쪽에 어떤 값을 넣어야 할까요? 예를 들어, 000ab, 00098, 000fa 또는 이런 유형의 값 말이죠."

1_1p-LJxci-vdJ7JObPDcaUg.png

제가 드린 질문에 대해 잠깐만 생각해봅시다.

기계가 출력한 문자만이 주어졌을 때, 기계에 집어넣은 값을 절대 알아낼 수 없다는 특징이 있다고 아까 말씀드렸습니다. 이 기계가 여러분에게 주어진다면, 위의 질문에 대한 답을 어떻게 알아낼 수 있을까요?

저는 한 가지 방법이 떠올랐습니다. 그냥, 숫자 0 세 개가 연속적인 문자를 뱉어낼 때까지 세상에 존재하는 모든 숫자를 하나하나 기계에 넣어보면 어떨까요?

1_NanhTPqi85WkwQoEpGQGHw.png

긍정적인 자세를 가지고, 수 천 번 시도하면 결국 조건에 알맞은 결과를 출력하는 숫자를 찾아내게 됩니다.

1__BOLJbfmKu8U1LNTtS_UMw.png

결과값만을 가지고 입력값을 찾아내기가 극도로 어려웠습니다. 반면에, 이미 알고 있는 입력값을 기계에 넣었을 때 어떤 결과값을 출력하는지 알아내기는 굉장히 쉽습니다. 이 기계가 같은 숫자를 넣으면 언제나 같은 값을 뱉어낸다는 것을 기억하시면 됩니다.

만약 72533이라는 숫자가 있고, 제가 여러분에게 "이 숫자를 기계에 넣으면 연속되는 0으로 시작하는 글자가 나오나요?"라고 묻는다면, 이 질문에 답하기 어려울까요?

여러분은 그냥 72533이라는 숫자를 기계에 집어 넣어보고 어떤 글자가 나오는지 관찰하기만 하면 됩니다. 참 쉽죠?

이 기계의 가장 중요한 특징은 바로 "결과값만이 주어졌을 때 입력값을 알아내기는 극도로 어려우나, 어떤 입력값이 어떤 결과값으로 이어지는지 알아내기는 쉽다."라는 것입니다.

이 글을 다 읽을 때까지, 마법의 기계(또는 해시 함수)의 이러한 특징 한 가지를 기억하시면 됩니다.

결과값만이 주어졌을 때 입력값을 알아내기는 극도로 어려우나, 어떤 입력값이 어떤 결과값으로 이어지는지 알아내기는 쉽다.

그럼 페이지를 봉인할 때 이 기계를 어떻게 쓰는데?

저희는 페이지를 봉인할 때 이 기계를 사용할 겁니다. 다시 한번, 어떤 상황을 상상해봅시다.

제가 여러분에게 두 개의 상자를 드렸다고 해봅시다. 첫 번째 상자는 20893이라는 숫자가 들어있습니다. 그리고 제가 여러분에게 "여기 있는 첫번째 상자에 들어있는 숫자에 어떤 값을 더한 다음, 그 더한 값을 기계에 넣었을 때 000으로 시작하는 문자를 뱉어낸다고 한다면, 이 어떤 값이 무엇인지 알아낼 수 있나요?"라는 질문을 합니다.

1_0ChKQgKuRoOoFtj_jTMx2g.png

이건 이전 예시와 비슷한 상황이군요. 이러한 숫자를 알아내는 유일한 방법은 세상에 있는 모든 숫자를 시도해야 한다는 것도 저희는 이미 깨달았죠.

수 천번 시도하던 와중에, 예를 들어 21191이라는 숫자가 20893이라는 숫자에 더해진 후(21191 + 20893 = 42084) 기계에 입력되면, 요구 조건을 만족하는 문자를 출력한다고 합시다.

1_ewcdx7L6_D1RIvbPFrMYiw.png

이런 경우에, 21191이라는 값은 숫자 20893의 봉인 값이 됩니다. 만약 어떤 페이지가 20893이라는 숫자를 포함하고 있다고 합시다. 이 페이지를 봉인(아무도 내용을 변경하지 못하게)하기 위해서는, 21191이라고 쓰여 있는 도장(seal)을 찍습니다. 이 봉인 값(21191)이 찍히는 순간, 이 페이지는 봉인되는 것이죠.

1_W5XSeKP6xoAQbxmmW4-dog.png

[용어 상자] 여기서 말하는 봉인 값을 '작업 증명(Proof Of Work)'이라고 하는데, 이 숫자는 계산을 위해 어떠한 노력이 투입되었다는 것을 증명하는 의미를 지닙니다. 일단 쉽게 설명하기 위해 '봉인 값'이라고 부르겠습니다.

어떤 사람이 페이지가 변경되었는지 확인하고자 한다면, 페이지의 내용에 봉인 숫자를 더한 다음, 마법의 기계에 투입하기만 하면 됩니다. 만약 이 기계가 000으로 시작하는 문자를 출력한다면 이 페이지의 내용은 변경되지 않은 것이죠. 그런데, 출력된 문자가 요구조건을 충족하지 못한다면, 페이지의 내용이 조작(compromised)된 것이므로 쓸모가 없어졌기 때문에 그냥 버리면 됩니다.

저희는 이제 비슷한 봉인 방법을 사용하여 페이지를 봉인하고 각각의 폴더에 페이지를 담을 것입니다.

이제 우리의 페이지를 봉인하자...

이제 네트워크상에서 발생한 거래 명세를 담고 있는 저희의 페이지를 봉인하기 위해서는, 거래 명세에 어떤 값을 추가한 후 기계에 넣었을 때 000으로 시작하는 문자를 출력하는지 알아내야 합니다.

1_ijsTUoELxn6zFkBa7r23VA.png

제가 자꾸 '000으로 시작하는 문자'라는 표현을 사용하는 이유는 단지 예시를 들기 위함입니다. 해시 함수가 어떻게 작동하는지 알려주는 표현이기 때문이죠. 실제 해시 함수의 출력값의 요구조건은 이것보다 훨씬 더 복잡합니다.

시간과 전기를 들여 이 숫자를 알아내게 되었다면, 그 페이지는 이 숫자로 봉인됩니다. 만약, 누군가가 이 페이지의 내용을 변경하려 한다고 해도, 봉인에 활용한 숫자를 이용하여 이 페이지의 무결성(integrity) 여부를 누구나 알아낼 수 있습니다.

이제, 페이지를 봉인하는 방법을 알았으니, 페이지에 10번째 거래를 작성한 후 더는 거래 명세를 작성할 공간이 없던 시점으로 돌아가 봅시다.

모두의 페이지에 더는 거래 명세를 작성할 공간이 없는 상황이 닥치자마자, 사람들은 페이지를 폴더에 집어넣기 위해 페이지의 봉인 값을 계산하기 시작합니다. 네트워크에 참여하는 모든 사람이 계산을 하게 되죠. 이때, 네트워크 내에서 가장 먼저 봉인 값을 계산해내는 사람이 그 값을 모두에게 공지합니다.

1_oMwunuVKyqWectTecENigQ.png

그 봉인 값을 듣자마자, 모든 사람은 그 값을 사용했을 때 의도한 결과값이 산출되는지 확인해봅니다. 만약 의도한 결과값이 나왔다면, 모든 사람은 이 값으로 각자의 페이지를 봉인하고 폴더에 넣어 정리합니다.

그런데 만약 누군가가, 예를 들어 7번 사람이, 그 공지된 값이 의도한 값을 산출하지 않는다고 주장한다면 어떤 일이 발생할까요? 그런 경우가 드물지는 않습니다. 이런 경우는 아마 다음과 같은 경우일 겁니다.

  • 그 사람이 네트워크에 공지된 거래를 잘못 이해했을 때
  • 그 사람이 네트워크에 공지된 거래를 잘못 작성했을 때
  • 그 사람이 자기 자신 또는 네트워크의 누군가를 위해 거래를 작성할 때 부정을 저지르거나 정직하지 못했을 때

어떤 이유가 되었건, 7번 사람은 오직 한가지 선택을 할 수밖에 없습니다. 그 사람의 페이지를 버리고, 다른 사람의 페이지를 복사하여 폴더에 넣는 것입니다. 그의 페이지를 폴더에 넣지 않는다면, 그 사람은 이후의 거래를 작성할 수 없고, 따라서 네트워크에서 제외될 것입니다.

다수(majority)가 동의하는 봉인 값이 가장 정직한 봉인 값이다.

그렇다면 사람들은 누군가가 봉인 값을 계산해서 알려주리라는 것을 알고 있음에도 불구하고, 왜 자신의 자원을 소모하여 봉인 값을 계산할까요? 왜 그냥 가만히 앉아서 공지를 기다리기만 하지 않을까요?

정말 좋은 질문입니다. 여기서 바로 보상과 관련한 이야기가 나옵니다. 블록체인에 관계된 모든 사람은 보상을 받을 수 있습니다. 그 봉인 값을 처음으로 계산한 사람은 그 사람이 투입한 노력(예를들어, 확장한 CPU 자원과 전기 요금)에 대한 보상으로 공짜 돈(free money)을 받습니다.

간단히 상상해보면, 만약 #5번이 페이지의 봉인 값을 계산하고, 어디에선가 뚝딱 1달러 가치의 어떤 공짜 돈을 보상받는다고 합시다. 다르게 말하자면, 누군가의 계좌에서 돈이 사라지지 않은 채 #5번의 계좌에 1달러가 증가한 것입니다.

이런 식으로 비트코인이 존재하게 됩니다. 비트코인은 블록체인(예를 들어, 분산 장부) 위에서 거래된 최초의 화폐입니다. 네트워크를 유지하는 노력에 대해서 사람들은 비트코인으로 보상을 받게 된 것이죠.

충분한 수의 사람들이 비트코인을 소유하면 비트코인은 가치 있게 성장할 테고, 다른 사람들이 비트코인을 가지고 싶어 하게 됩니다. 그러면 비트코인의 가치는 더욱 성장하게 되고, 더 많은 사람이 가지고 싶어 할 테고, 그러면 그 가치는 더더욱 성장하는 식으로 이어지게 됩니다.

보상이 모두를 네트워크 내에서 일하도록 만든다.

이렇게 모든 사람이 그 페이지를 폴더에 집어넣게 되면, 사람들은 새로운 페이지를 꺼내와서 모든 과정을 다시 반복하게 됩니다. 영원히 말이죠.

[용어 상자] 하나의 페이지를 거래의 블록(Block)이라고 생각하고 폴더를 페이지들의 연결(Chain)이라고 생각하세요. 그러면 블록 연결, 즉, 블록체인(Blockchain)이 되는 것입니다.

여러분, 바로 이것이 블록체인이 동작하는 원리입니다.

하지만 제가 아직 말씀드리지 않은 한 가지 작은 사실이 있습니다.

만약 폴더에 이미 5개의 페이지가 있다고 생각해봅시다. 모든 페이지는 봉인 값으로 봉인되어 있죠. 제가 만약 두 번째 페이지를 꺼내서, 제 이득을 위해 거래를 조작하면 어떻게 될까요? 그럼 아시다시피, 그 페이지의 봉인 값을 통해, 내용이 실제 거래와 맞지 않는다는 것을 알 수 있겠죠? 그럼 제가 문서를 조작한 채로 새로운 봉인 값을 계산해낸 다음, 그 수정된 페이지를 새 값으로 봉인해버리면 어떻게 될까요?

누군가가 어떤 페이지(블록)의 내용을 수정하고 그 봉인 값까지도 조작하는 문제를 막기 위해서, 이 봉인 값이 계산될 때 한가지 꼼수가 있습니다.

봉인 값의 변경으로부터 보호하기

제가 위에서 두 가지 상자를 드렸다고 했던 것을 기억하시나요? 상자 하나에는 20893이라는 값이 미리 들어있고 또 다른 상자의 값은 여러분이 계산해야 했습니다. 그런데 실제로는, 블록체인에서 봉인 값을 계산하기 위해서 상자 두 개가 아닌 세 개가 필요합니다. 상자 세 개 중 두 개는 값이 들어있고 한 개의 값을 계산해야 하죠.

상자 세 개가 가진 값이 전부 더해지고 기계에 입력되었을 때, 출력되는 결과값이 요구 조건에 충족되어야 했습니다.

저희는 상자 중 한 개는 거래 목록을 포함하고 있고 또 다른 상자 한 개가 봉인 값을 가지고 있다는 것을 이미 알고 있습니다. 이 세 번째 상자는 이전 페이지를 봉인할 때 마법의 기계가 출력한 결과값을 포함하고 있습니다.

1_Vz0UOPPuWYz8YNRhy0NCNQ.png

이 작은 꼼수 하나로, 모든 페이지가 무조건 이전 페이지에 의존하도록 만들었습니다. 따라서, 누군가가 페이지를 수정해야 한다면 그 수정한 페이지 뒤에 연결된 모든 페이지의 내용과 그 봉인 값들을 변경해야 합니다. 페이지 간의 연결성을 유지하기 위해서 말이죠.

만약 10명의 사람 중 한 사람이 블록체인의 내용을 수정하고 부정행위를 하려면, 그 사람은 여러 개의 페이지를 수정해야 하고, 동시에 그 모든 페이지의 봉인 값을 새로 계산해내야 합니다. 여러분은 이 봉인 값을 계산하는 게 얼마나 어려운지 잘 알고 있으시잖아요. 그러므로, 네트워크에서 정직하지 못한 한 사람은 나머지 9명의 사람을 이길 수가 없습니다.

이렇게 되면 어떤 일이 발생하냐면, 네트워크 내에서 그 부정한 사람이 수정한 페이지부터 새로운 연결이 생성될 겁니다. 그 연결은 기존의 정직한 연결을 따라가지는 못합니다. 왜냐면 한 사람의 노력과 속도는 9명의 사람들의 시간과 노력을 따라가지 못하기 때문이죠. 그러므로, 네트워크 내에서 가장 긴 연결이 가장 정직한 연결입니다.

가장 긴 연결이 가장 정직한 연결이다.

1_CRmIEzvK0k1fM--onASiHQ.png

혹시 제가 부정한 한 사람이, 9명의 정직한 사람들을 이길 수 없다고 했을 때, 머릿속에 떠오른 생각이 없으셨나요?

만약 한 사람이 아닌, 6명이 부정하다면?

이런 상황이 발생한다면, 블록체인의 규약(protocol)은 완전히 실패하게 됩니다. 흔히, '51%의 공격'이라고 알려져 있죠. 만약 네트워크에서 대다수의 개인이 부정하기로 마음먹고 네트워크를 속이고자 한다면, 네트워크의 규칙은 그 의도를 상실하게 됩니다.

많은 사람이 마음만 먹으면 네트워크가 무너질 수 있다는 것이 블록체인의 유일한 취약점입니다. 이런 일이 일어날 가능성은 거의 없지만, 우리는 모두 이 시스템의 취약점을 알고 있어야 합니다. 대중은 언제나 옳다라는 가정을 전제로 만들어진 시스템이기 때문이죠.

자, 여러분, 이것이 바로 블록체인입니다. 누군가가 "시밤, 대체 블록체인이 뭔데?"라는 의문을 가지며 방황하고 있는 것을 발견했다면, 여러분은 그 사람에게 무슨 링크를 던져줘야 하는지 이제 아셨습니다. 링크를 북마크하세요.

누가 이 글을 읽어야 할지 생각나셨나요? 그렇다면 '공유하기' 버튼을 클릭해서 공유해주세요!

Sort:  

좋은글이네요 팔로우하고갑니다

감사합니다~!

@khwalex님 안녕하세요. 아리 입니다. @joeuhw님이 이 글을 너무 좋아하셔서, 저에게 홍보를 부탁 하셨습니다. 이 글은 @krguidedog에 의하여 리스팀 되었으며, 가이드독 서포터들로부터 보팅을 받으셨습니다. 축하드립니다!

좋은 글 고맙습니다.
보팅, 리스팀, 팔로합니다.^^

좋은 공부가 되겠습니다.

저도 번역하며 좋은 공부가 되었습니다 ㅎㅎ

여러가지 설명글들을 접해왔지만
이렇게 비유가 적절했던 포스팅은 처음인것 같습니다.ㅎ

잘 보고갑니다 :)

네 ㅋㅋ 저도 처음에 이 글 보고 너무 좋아서 번역을 결심했습니다. 도움되었다니 기쁘네요! 감사합니다

글 감사합니다 :)

암호화폐 및 블록체인 주제 관련 게시글 태그에는 한국어 태그로 #kr과 블록체인 및 암호화폐 관련 게시글 태그인 #coinkorea 태그를 붙여 주시면 더 많은 사람들이 보실 수 있을 것 같습니다. 또한 암호화폐 관련 게시글의 세분화된 태그로 만약 관련된 코인에 대한 글을 작성하신다면 #kr-btc #kr-eth과 같은 kr-코인 기호명과 같은 태그를 붙여 주시면 더 많은 분들이 읽으시고 도움받으실 수 있을것 같습니다.
그와 관련된 게시글을 한번 읽어주시고 동참해주시면 정말 감사하겠습니다.
Steemit KR 커뮤니티 CoinKorea 프로젝트
가입인사 태그 및 CoinKorea 태그 세분화 제안

와우! 암호화폐의 개념이 확실해졌네요.
사실 저는 '보상의 개념으로 주어지는 암호화폐' 즉, 문제를 풀면 암화폐를 준다는 말을 이해 못해서 그 다음으로의 진도가 어려웠는데 여기서 해답을 발견하네요. 아르키메데스처럼 '유레카'를 외치고 싶네요. 좋은글 감사합니다.

팔로우.보팅.리스팀하고 가요.

'존버(존나 버티는 정신)가 아닌 존열(존나 열심히 하는 정신)하는 스티미언이 되자'

와우! 멋진 원글/훌륭한 번역입니다. 감사합니다!

쉽게 설명된 글이네요ㅎ @홍보해

좋은 글 감사합니다 ^-^

감사합니다.

재미있게 잘 읽었습니다.
리스팀 팔로우 보팅 합니다.

마지막 51%의 공격이 왜 현실에서 일어나기 어려운지는 게임이론으로 설명되는데 그 부분도 나중에 포스팅 해 주세요. 저도 알 것 같기는한데 남한테 쉽게 설명할만큼 이해를 못했습니다.

Congratulations @khwalex! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @khwalex! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!