본문으로 건너뛰기

블록체인 101: 시각적 데모

해싱, 블록, 체인, 분산 원장 및 토큰을 다루며 블록체인 개념을 구체적이고 직관적으로 이해할 수 있도록 블록체인 기술의 작동 방식을 보여주는 데모입니다.

Date published: 2016년 11월 13일

앤더스 브라운워스(Anders Brownworth)가 SHA-256 해싱, 블록, 채굴, 블록체인, 분산 원장, 토큰 등을 다루는 연습 과정을 포함하여 블록체인 기술이 어떻게 작동하는지 보여주는 시각적 데모입니다.

이 스크립트는 앤더스 브라운워스가 게시한 원본 비디오 스크립트 (opens in a new tab)의 접근성 향상 버전입니다. 가독성을 위해 약간 편집되었습니다.

SHA-256 해시 (0:01)

이것은 블록체인 데모입니다. 우리는 이것을 매우 시각적인 방식으로 진행할 것입니다. 블록체인이 무엇인지 핵심 요소들을 단계별로 살펴보며 아주 쉽게 이해할 수 있도록 만들 것입니다.

시작하기 전에, SHA-256 해시라는 것을 살펴봐야 합니다. 해시는 무작위 숫자들의 나열처럼 보이며, 본질적으로 어떤 디지털 데이터의 지문과 같습니다. 마침 제가 이 상자에 입력하는 모든 것의 지문이 됩니다. 이 상자에 제 이름인 "Anders"를 입력하면 해시가 변경되는 것을 볼 수 있습니다. 사실, 글자를 입력할 때마다 해시가 변경되었습니다.

이것이 모두 소문자로 된 "Anders"라는 이름의 해시이며, 19ea로 시작합니다. 이것을 지우고 다시 "Anders"를 입력하면, 19ea로 시작하는 것을 볼 수 있습니다. 즉, 완전히 동일한 해시입니다. 그런 의미에서 이것은 이 데이터의 디지털 지문입니다. 여기에 어떤 데이터가 있든, 정확히 같은 데이터를 입력할 때마다 정확히 같은 해시를 얻게 됩니다.

저는 원하는 것은 무엇이든 입력할 수 있습니다. 아무것도 입력하지 않을 수도 있는데, e3b0는 아무것도 없는 상태의 해시입니다. 또는 엄청나게 많은 내용을 입력할 수도 있습니다. 사실, 미 의회 도서관(Library of Congress)의 모든 자료를 여기에 넣어도 해시를 얻을 수 있습니다. 흥미로운 점은 정보의 양이 아주 적든, 아예 없든, 아니면 미 의회 도서관 전체 분량이든 상관없이 항상 이 길이의 해시를 얻게 된다는 것입니다. 이 해시가 무엇이 될지 미리 추측할 수는 없습니다. 해시가 무엇인지 알아내려면 데이터를 직접 넣어봐야 하지만, 정확히 같은 정보를 몇 번을 넣든 항상 정확히 같은 해시를 얻게 됩니다.

블록 (2:10)

이제 이 해시의 개념을 확장하여 블록이라고 부르는 것을 만들어 보겠습니다. 블록은 해시와 정확히 같지만, 데이터 섹션이 세 부분으로 나뉘어 있습니다. 하나는 "블록"이라고 부르는 단순한 숫자(이것은 1번 블록입니다)이고, 다른 하나는 또 다른 숫자인 "논스"이며, 마지막은 우리가 이전에 보았던 것과 같은 데이터입니다.

이 모든 정보의 해시는 아래에 있으며, 4개의 0으로 시작합니다. 이것은 비교적 특이한 해시입니다. 대부분의 해시는 저렇게 4개의 0으로 시작하지 않기 때문입니다. 하지만 이 해시는 4개의 0으로 시작하며, 그렇기 때문에 저는 완전히 임의로 이 블록이 "서명되었다(signed)"고 말하겠습니다.

만약 제가 이 정보 중 하나라도 변경한다면 어떻게 될까요? 여기에 무언가를 입력한다고 가정해 봅시다. 해시가 변경될 텐데, 그것이 4개의 0으로 시작할 확률은 얼마나 될까요? 꽤 낮습니다. 그냥 "hi"라고 입력해 보겠습니다. 보세요, 이 해시는 4개의 0으로 시작하지 않고 배경이 빨간색으로 변했습니다. 이제 여러분은 이 정보가 들어 있는 이 블록이 유효하지 않거나 서명되지 않은 블록이라는 것을 알 수 있습니다.

여기서 논스가 등장합니다. 논스는 해시가 다시 4개의 0으로 시작하도록 만드는 값을 찾기 위해 설정할 수 있는 숫자일 뿐입니다. 하루 종일 앉아서 숫자를 입력할 수도 있겠지만, 여기 작은 "채굴(Mine)" 버튼이 있습니다. 이 버튼을 누르면 해시가 4개의 0으로 시작하는 숫자를 찾기 위해 1부터 위로 모든 숫자를 차례대로 실행하게 됩니다. 이 과정을 채굴이라고 합니다.

59,396에서 멈췄습니다. 그리고 이 숫자는 마침 4개의 0으로 시작하는 해시를 만들어냅니다. 서명된 블록에 대한 제 정의를 충족하는 것입니다.

블록체인 (5:16)

그렇다면 블록체인이 무엇인지 말씀해 주실 수 있나요? 아마도 이런 블록들의 체인일 것입니다. 여기 제 블록체인이 있습니다. 1번 블록에는 이전과 마찬가지로 논스와 데이터 영역이 있지만, 0으로 가득 찬 "이전(previous)" 필드도 있습니다. 앞으로 넘어가면, 이것은 2번 블록, 3번 블록, 4번 블록입니다. 이 블록체인에는 5개의 블록이 있습니다.

각 블록의 "이전" 필드는 그 이전 블록의 해시입니다. 각 블록이 이전 블록을 역으로 가리키고 있는 것을 볼 수 있습니다. 첫 번째 블록은 이전 블록이 없으므로 그냥 0으로 채워져 있습니다.

여기서 정보를 일부 변경하면 어떻게 될까요? 이 블록의 해시가 변경되어 무효화될 것입니다. 하지만 이전 블록에서 무언가를 변경하면 어떻게 될까요? 해당 해시가 변경되지만, 그 해시는 다음 블록의 "이전" 필드에 복사되므로 두 블록 모두 깨지게 됩니다. 우리는 과거의 어느 시점이든 원하는 만큼 돌아가서 그 블록을 깰 수 있으며, 그러면 그 이후의 모든 블록이 깨지게 됩니다. 그 이전의 모든 것은 여전히 녹색이지만, 그 이후의 모든 것은 빨간색으로 변합니다.

마지막 블록을 변경한다면, 그 블록 하나만 다시 채굴하면 됩니다. 하지만 과거로 멀리 돌아가서 변경을 한다면, 이 블록, 이 블록, 이 블록, 그리고 이 블록까지 모두 채굴해야 합니다. 지나간 블록이 많을수록 변경하기가 점점 더 어려워집니다. 이것이 바로 블록체인이 변형에 저항하는, 즉 변화에 저항하는 방식입니다.

분산 블록체인 (9:18)

그렇다면 내 블록체인이 다시 채굴되었는지 어떻게 알 수 있을까요? 이제 분산 블록체인이 있습니다. 이전 블록체인과 똑같이 생겼지만, 이것은 피어 A입니다. 아래로 내려가면 피어 B를 볼 수 있는데, 블록체인의 정확한 복사본을 가지고 있습니다. 피어 C도 있습니다. 이런 식으로 끝없이 이어질 수 있습니다. 인터넷에는 많은 피어가 있으며, 이들은 모두 블록체인의 완전한 복사본을 가지고 있습니다.

이 해시를 보면 e4b입니다. 다음 피어로 내려가면 역시 e4b를 가지고 있습니다. 이들은 동일해야 합니다. 이제 제가 여기에 무언가를 입력하고, 이 블록을 다시 채굴한 다음, 다음 블록들을 채굴하면 모든 체인이 녹색이 됩니다. 하지만 이 체인은 마지막 해시가 e4b라고 하고, 맨 아래 체인도 e4b라고 하지만, 중간 체인은 4cae라고 합니다.

따라서 저는 이 작은 해시 하나만 훑어봐도 이 블록체인에 무언가 잘못되었다는 것을 알 수 있습니다. 모든 해시가 4개의 0으로 시작하더라도 이것은 다릅니다. 본질적으로 2대 1의 상황입니다. 우리는 여기서 작은 민주주의를 따릅니다. 따라서 e4b가 이깁니다. 이것이 바로 여러 다른 컴퓨터에 완전히 분산된 복사본을 가짐으로써 모든 블록이 동일한지 빠르게 확인할 수 있는 방법입니다.

블록체인은 아주 쉽게 40만 개나 50만 개의 블록을 가질 수 있습니다. 그 모든 것을 일일이 확인하는 대신, 가장 최근 블록의 해시만 보면 과거의 어떤 것이 변경되었는지 알 수 있습니다.

토큰 (12:17)

이것이 전부입니다. 그 이상은 없습니다. 하지만 데이터 영역에 의미 있는 내용이 없기 때문에 그다지 유용하지는 않습니다. 우리가 정말로 원하는 것은 토큰입니다.

이제 저에게 이 토큰들이 있습니다. 완전히 임의로 이것들을 달러라고 부르겠습니다. Darcy가 Bingley에게 25달러를, Elizabeth가 Jane에게 4달러 27센트를 보냅니다. 대충 감이 오실 겁니다. 이런 모든 트랜잭션이 발생하고 있으며, 저는 방금 데이터를 이 트랜잭션들로 대체했습니다. 이전과 마찬가지로 아래로 내려가면 동일한 블록체인의 다른 복사본들이 모두 있다는 것을 알 수 있습니다.

여기서 불변성이 중요해집니다. 제가 과거로 돌아가 무언가를 변경하면, 해시는 다른 복사본에 있는 것과 달라질 것입니다. 과거로 돌아가서 어떤 값을 변경했을 때 우리가 그것을 알아채는 것은 매우 중요합니다. 돈과 관련해서는 흐름을 놓치지 않는 것이 매우 중요하며, 과거에 일어난 일에 대한 어떠한 수정 시도에도 저항하는 것, 이것이 바로 블록체인을 사용하는 핵심 이유입니다.

한 가지 덧붙이자면, 우리는 "Darcy가 100달러를 가지고 있고 Bingley에게 25달러를 준다"고 기록하지 않습니다. 우리는 은행 계좌 잔액이 아니라 돈의 이동만 기억합니다. 여기서 한 가지 의문이 생깁니다. Darcy에게 25달러가 있기는 한 걸까요?

코인베이스 트랜잭션 (14:34)

이 버전의 블록체인에는 문제가 하나 있습니다. Darcy에게 실제로 25달러가 있는지 알 수 없다는 것입니다. 그러니 코인베이스 트랜잭션을 살펴봅시다. 우리는 블록에 코인베이스 트랜잭션을 추가합니다. 이것은 허공에서 100달러를 만들어내어 Anders에게 주겠다는 것을 의미합니다. 이 이전에는 아무도 돈을 가지고 있지 않았기 때문에 이 블록에는 다른 트랜잭션이 없습니다.

다음 블록에서는 또 다른 100달러가 어디선가 나타나 Anders에게 갑니다. 이제 몇 가지 트랜잭션이 생겼습니다. 현시점에서는 저만 돈을 가지고 있기 때문에 모두 Anders로부터 시작됩니다. 저는 제 돈 10달러를 Sophie에게 보냅니다. 저에게 10달러가 있을까요? 네, 과거 기록을 보면 코인베이스 트랜잭션이 저에게 100달러를 주었으므로, 저에게는 최소한 10달러가 있습니다.

이것들을 모두 더해도 100달러를 넘지 않습니다. 이것은 통화의 기본 규칙을 따릅니다. 허공에서 돈을 만들어낼 수 없으며, 그 분산은 통제됩니다.

시간을 앞으로 돌려보면, Jackson이 Alexa에게 2달러를 주는 것을 볼 수 있습니다. Jackson에게 실제로 2달러가 있을까요? 한 블록 뒤로 돌아가 보면 Emily가 Anders로부터 10달러를 받아 Jackson에게 10달러를 준 것을 알 수 있습니다. 따라서 Jackson은 돈을 가지고 있습니다. 우리는 과거로 돌아가서 그것을 알아낼 수 있습니다. 이것이 "이전" 필드를 가질 때 얻을 수 있는 이점 중 하나입니다.

마무리 (16:30)

이것이 그 위에서 통화가 실행되는 기본적인 블록체인입니다. 아시다시피 블록체인에는 많은 복사본이 있습니다. 모든 사람이 복사본을 가지고 있습니다. 만약 우리가 무언가를 변형하여 6달러로 만든다면, 블록들은 무효화되고 다른 복사본들과 일치하지 않게 됩니다. 이것은 조작에 저항하며, 이는 통화에 있어 필수적인 요소입니다. 작고 트랜잭션 중심적인 작업에 매우 잘 작동합니다.

블록체인은 과거에 일어난 일, 즉 시간이 지남에 따라 기록되는 이 불변의 역사에 대한 합의를 처리하는 매우 효율적인 방법입니다. 몇 가지 주요 요점들을 대략적으로만 다루었지만, 데모를 자세히 살펴보고 이것저것 클릭하며 직접 다루어 본다면 이것이 어떻게 작동하는지 점점 더 잘 이해하게 될 것입니다.

이 페이지가 도움이 되었나요?