블록체인/비트코인 / / 2023. 4. 7. 00:45

노드 (Nodes)


본 글은 비트코인의 작동 원리를 이해하기 쉽게 설명해 놓은 해외 사이트 Learn me a bitcoin 의 Nodes 페이지를 번역한 글입니다. 읽은 것을 개인적으로 이해하기 쉽게 정리하여 작성한 글이다 보니, 어색한 부분이 있을 수도 있습니다. 원문을 읽고자 하시는 분은 위의 링크를 참조해 주세요. 😀


 

What is a node?

  • 비트코인 프로그램을 실행하는 컴퓨터들

노드란 단지 비트코인 프로그램(Bitcoin client)을 실행하는 하나의 컴퓨터를 말합니다. 더 중요한 것은 비트코인 네트워크(Bitcoin network)를 만들기 위해서 동일한 프로그램을 실행 중인 다른 컴퓨터들과 연결된다는 것입니다.

 

네트워크를 이루는 노드들

노드의 역할은 무엇인가요?

  • 노드는 3가지 역할이 있습니다.
    1. 규칙을 지킨다. (Follow rules)
    2. 정보를 공유한다. (Share information)
    3. 확인된 트랜잭션의 사본을 보관한다. (Keep a copy of confirmed transactions)

 

1. 규칙을 지킨다.

각 노드(비트코인 클라이언트)는 일련의 규칙을 따르도록 프로그래밍되었습니다. 이러한 규칙을 지킴으로써 노드는 수신되는 트랜잭션을 확인하고 모든 것이 정상일 경우에만 트랜잭션을 전달/전파할 수 있습니다. 만약 문제가 있는 트랜잭션이라면, 해당 트랜잭션은 전달되지 않습니다.

 

문제가 있는 트랜잭션은 걸러내어, 네트워크의 다른 노드로 전달하지 않는다.

 

예를 들어서, 한 가지 규칙은 어떤 사람이 비트코인을 전송하려고 할 때, 그 사람은 전송하려고 하는 양보다 더 많은 양을 보유하고 있거나 또는 최소한 동일한 양을 소유해야 한다는 것입니다. 따라서 만약 당신의 노드가 누군가가 자신이 보유한 양보다 더 많은 비트코인을 보내려고 시도하는 트랜잭션을 수신한다면, 해당 트랜잭션은 다른 노드로 전달되지 않을 것입니다.

 

2. 정보를 공유한다.

노드의 주요 역할은 다른 노드와 정보를 공유하는 것이며, 노드가 공유하는 본질적인 정보는 바로 트랜잭션입니다.
노드가 공유하는 트랜잭션에는 2가지 유형이 있습니다.

1. 새로운 트랜잭션 - 최근에 네트워크에 들어온 트랜잭션
2. 확인된 트랜잭션 - 이미 확인되어(confirmed) 파일에 기록된 트랜잭션. 이 트랜잭션들은 개별적으로가 아니라 블록 내에 포함되어 공유됩니다.

 

위 - 최근에 네트워크에 들어와 블록에 올라가기 전인 하나의 트랜잭션 / 아래 - 블록 내에 포함되어있는 "확정된" 트랜잭션

 

3. 확인된 트랜잭션들의 사본을 보관한다.

앞서 언급했듯이, 각 노드는 확인된(confirmed) 트랜잭션을 담고있는 블록들도 보관합니다. 이것들은 블록체인이라고 불리는 파일에 포함되어 있습니다.

 

각 노드는 블록체인의 복사본도 보관하고 있습니다.

 

새로운 트랜잭션은 확인된 트랜잭션의 장부인 블록체인에 기록될 때까지 네트워크를 통해 전달됩니다.
(그리고 이 새로운 트랜잭션이 블록체인 파일에 추가되는 과정을 채굴(Mining)이라고 합니다.)

각 노드는 안전한 보관을 위해 블록체인의 복사본을 가지고 있으며, 네트워크의 모든 다른 노드들이 최신 상태를 항상 유지하도록 복사본을 공유합니다.


저는 각 노드가 자율적(autonomous)이라는 것을 언급하고 싶습니다.

무슨 뜻이냐면, 당신이 비트코인 클라이언트를 실행할 때(노드가 됐을 때) 네트워크가 당신에게 "무엇 무엇을 실행하라"며 말해주고 지시하지 않는다는 것입니다. 대신 당신의 비트코인 클라이언트는 이미 무엇을 해야 하는지 알고 있고, 스스로 그것을 결정합니다.

따라서 전체 비트코인 네트워크는 노드가 각자 스스로 결정을 내리는 것으로 구성되지만, 서로 동일한 결정을 내리며, 이것은 완전히 분산되어(completely decentralised) 있음에도 불구하고 강력한 네트워크를 구성할 수 있습니다.

 

비트코인을 사용하기 위해서는 노드가 되어야 하나요?


아니요!

노드가 아니어도 비트코인을 주고받을 수 있습니다. 당신은 그냥 트랜잭션을 비트코인 네트워크에 전송해주기만 하면 됩니다.
예를 들어 웹 지갑을 사용하는 경우, 지갑 어플리케이션은 사용자가 수행한 트랜잭션을 네트워크에 제공합니다.

당신이 하나의 노드에 트랜잭션을 전송하면, 이 트랜잭션은 전체 네트워크로 전달될 것입니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유