(4) 블록체인 심화 – 기술 용어(노드, 트랜잭션)

지난 포스팅에 이어서 이번에도 블록체인을 이루는 기술 용어들에 대해서 다뤄볼게요. 블록체인을 이루는 기술 용어들에 대해서 의미를 알아가고, 이해한다는 것은 블록체인이라는 미지의 영역을 조금씩 개척해나가는 것과 같아요.

기본적인 기술 용어들을 이해하고, 이를 기반으로 블록체인 전체의 동작 흐름에 대해서 이해하면 결국 블록체인 전반을 이해하게 되는 것이에요. 그렇기 때문에 지금은 조금 지루하고 익숙하지 않더라도 참고 이 순간을 넘기면 이후에는 흐름만 봐도 모든 것이 편하게 이해될 것이라고 확신해요.

노드(Node), 블록체인의 참여자들 👥

노드(Node)란?

노드는 블록체인 네트워크를 구성하는 참여자들을 일컫는 말이에요. 하나의 국가는 국민들이 모여서 구성 되듯이 블록체인 네트워크는 노드들이 모여서 구성되어요.

학급의 예시에서 노드는 곧 학급을 이루는 학생들과 같아요. 철수와 영희의 송금 예시에서 철수가 영희에서 송금한 사실을 모든 학급 아이들이 알게 되었죠? 마찬가지로 블록체인의 노드들 역시 각각의 노드들이 동일한 사실을 알고 공유하고 있어요.

노드(Node)의 종류

노드는 두 가지의 종류가 있어요.

1) 풀노드

  • 모든 기록을 다 가진 학생
  • 모든 규칙을 다 알고 있음
  • 더 많은 책임이 있어요

2) 라이트노드(경량노드)

  • 중요한 기록만 가진 학생
  • 다른 친구들에게 물어보며 확인

학급의 예시로 다시 돌아가볼게요. 철수가 영희에게 송금했다는 사실 말고도 학급의 누군가가 또다른 누군가에게 돈을 보낼 수 있겠죠? 이런 ‘거래’가 매우 많이 생길 수 있어요. 모든 학급의 아이들이 거래 사실들을 공유하지만 정말 모든 아이들이 동일하게 모든 거래를 다 알지는 못할 거에요.

각자가 장부를 가지고 기록을 하고 있다고 했을때 1월 ~ 12월의 거래 내역중 누군가는 1월 ~ 12월 모든 거래를 다 적어뒀을 것이고, 누군가는 5 ~ 7월만 적어뒀을 수 있죠.

이 차이가 곧 위에 설명된 풀노드와 라이트노드(경량노드)의 차이에요. 블록체인을 구성하는 네트워크는 풀노드와 라이트노드 두 노드로 구성되어요.

노드(Node)의 역할

이미 어느정도 예시를 통해서 노드의 역할을 이미 다뤘어요. 학급 아이들의 역할이었어요.

거래 검증과 전파 📢

  • 새로운 거래가 발생하면 검증해요
    • 철수가 정말 그만한 돈이 있는지?
  • 검증된 거래를 다른 노드들에게 알려요
    • 마치 학급 아이들이 서로에게 소식을 전하듯이

블록체인 데이터 저장 💾

  • 거래 내역을 저장하고 보관해요
  • 풀노드는 모든 거래 내역을 가지고 있어요
  • 라이트노드는 일부 거래 내역만 가지고 있어요

합의 참여 🤝

  • 새로운 블록이 유효한지 함께 결정해요
  • 악의적인 거래를 막아요
    • 누군가 거짓말을 하려고 하면 다같이 막는 것처럼
  • 블록체인 네트워크의 규칙을 지켜요

합의 참여에 대해서 조금 더 이야기 해볼게요. 왜냐하면 블록체인의 신뢰성을 보장하는 중요한 장치이기 때문이에요. 구체적인 기술은 나중에 다뤄보기로하고 ‘합의’라는 매커니즘의 장점에 대해서 조금 더 이야기 해봐요.

학급의 인원이 30명이라고 했을때, 철수가 영희에게 1000원을 보낸 적이 있다면 30명 중 다수의 인원이 이 사실을 알고 있을 거에요. 만약 이 때 철수가 영희에게 그때 1000원을 보낸게 아니라 2000원을 보냈다고 우기면 어떻게 될까요? 돈을 더 보냈으니 물건을 더 달라고 한다던가, 1000원을 돌려달라고 우기기 위해서 거래 사실을 조작하는 거에요.

이를 위해서 철수가 주변의 친구들을 포섭 하는거에요. 100원씩 줄테니 자신이 영희에게 1000원을 보낸게 아니라 2000원을 보낸 것으로 다른 사람들에게도 말해달라고 부탁하는 식으로요. 이게 의미가 있는 행위일까요?

의미가 없는 행위일거에요. 왜냐하면 이미 1000원을 보낸 것으로 알고 있는 사람이 다수고, 철수가 모든 이들을 일일이 포섭하기란 어려운 일이에요. 애초에 이런 시도가 의미가 없기에 블록체인에 기록된 정보들을 신뢰할 수 있게 되어요.

나중에 기술적인 부분을 설명하면서 이 부분을 더 자세히 다뤄볼게요. 일단 위 예시에서 철수가 일일이 모두를 포섭하려면 뇌물이 많이 필요하듯이, 블록체인 네트워크에서 개별 노드가 정보를 조작하고 이를 전체 노드가 합의할 수 있도록 조작하는 것은 하나의 노드가 동원하기 힘든 정도의 강력한 컴퓨팅 파워가 필요해요. 이론적으로 불가능해요.

트랜잭션(Transaction): 거래 기록 💸

트랜잭션은 이미 학급 예시에서도 다뤘듯이 ‘철수가 영희에게 1000원을 보냄’ 이라는 행위를 두고 이를 트랜잭션이라고 불러요. 트랜잭션은 어떤 정보들을 가지고 있는지에 대해서는 나중에 더 자세히 다뤄보기로 하고 여기서는 트랜잭션이 어떻게 전파 되는지에 관해 다뤄볼게요.

학급의 예시에서 철수가 영희에게 1000원을 보냈다는 트랜잭션이 일어날때, 이 트랜잭션을 모든 학급원(노드)들이 인지하고 인정했을때 비로소 트랜잭션이 기록되어요. 기록이 된다는 것은 블록체인 상에서 블록에 거래가 포함된다는 것을 의미해요.

트랜잭션 전파 과정

  1. 트랜잭션이 발생. 최초로 이를 특정한 노드가 접함
  2. 노드는 자신의 트랜잭션 풀(일종의 저장소)에 트랜잭션을 저장하고 이를 전파
  3. 각각의 노드가 트랜잭션을 받아서 각자의 풀에 저장하고 검증
  4. 블록에 트랜잭션이 담기며 블록이 연결됨

이 과정에서 수수료, 채굴 등 여러 개념이 추가로 설명이 필요한데, 일단 여기서는 ‘트랜잭션이 어떻게 발생되고 어떻게 전파되어서 결국 어떻게 되는지’ 에 대해서만 이해해도 충분해요.