풀노드
풀노드(full node)는 블록체인의 모든 내역을 저장하는 노드이다. PC에 모든 내역이 저장되어 있기 때문에 스스로 거래 검증이 가능하다는 것이 가장 큰 특징이며, 모든 내용을 저장하기 위해 소요되는 시간이 길고 큰 용량이 필요하다는 단점이 있다.
개요[편집]
풀노드는 블록체인에서 이뤄진 모든 거래 정보를 전부 저장하는 검증인을 뜻한다. 제네시스 블록부터 시작해서 현재 블록까지 모든 블록체인 정보를 수집, 저장한다. 이런 방대한 양의 데이터를 다운받고 검증하는 시스템을 갖춘 만큼, 방대한 양의 데이터를 소화할 수 있는 대규모 채굴업 관련 종사자들에게 필요한 기술이라고 할 수 있다.
보통의 경우, 중앙서버 한 곳에 저장하여 내용을 확인한다. 하지만 블록체인에서는 주요 데이터를 여러 풀노드가 함께 보관하고 있다. 때문에 해킹을 하기 위해서는 여러 곳을 한꺼번에 공격해야 하므로, 사실상 해킹이 불가능하다고 본다.
풀노드는 블록체인 데이터를 동기화하기 위헤 메모리를 사용한다. 새로운 블록을 추가하기 위해 블록체인의 모든 거래를 검증하고 실시간으로 데이터를 업데이트 한다. 또한 블록체인 분산원장 중 블록체인 거래를 다른 노드로 전송 및 수신하고 확인하는 중요한 역할을 담당하고 있다.[1] 즉, 전체적으로 거래내역에 오류가 없음을 확인하고 새로운 블록이 생성될 때 최종 승인하는 역할을 한다.[2] 더 자세한 풀노드의 역할은 다음과 같다.
- 거래가 진행될 때 각 거래자들의 계좌정보, 잔액 등의 정보확인을 통해 유효한 거래인지 확인한다.
- 전체 기록을 다 가지고 있기에, 새로운 블록이 추가될 때 조작이 없는지 이전 거래와 내역이 일치하는지 등을 누구의 도움 없이 모든 거래에 대한 검증이 가능하다.
- 새로운 블록이 생성된 후 채굴을 성공한 채굴자에게 올바르게 보상이 제공되었는지 확인한다.
- 블록에서 이중 지불이 발생하지 않았는지를 확인한다.
- 본인이 가진 기록정보를 다른 노드들에게 전달하는 일을한다.[3]
풀노드는 자신의 PC에 모든 블록체인의 내용을 가지고 있기 때문에 다른 노드의 도움없이 스스로 거래 검증이 가능하다. 하지만 용량이 너무 커서 다운로드를 받는데 시간이 오래 걸리고 하드디스크의 용량을 많이 차지한다는 단점이 있다. 이런 풀노드의 단점을 해결하기 위해 나온 것이 라이트노드(light node)이다.[4] 라이트노드는 가볍고 풀노드와 다르게 자료의 일부분만을 다운받는다. 대신 거래를 위해 내용 검증이 필요한데, 그때마다 풀노드에게 자료를 요청해야만 한다.
활용[편집]
비트코인[편집]
풀노드는 비트코인 네트워크에 필수적인 것으로, 비트코인에 실제로 보안을 지원하고 제공한다. 풀노드는 시스템 합의 규칙에 관한 트랜잭션과 블록을 확인하는 과정에 관여하여 완전한 검증 노드라 일컬어진다. 이를 통해 새로운 블록과 트랜잭션들을 블록체인에 전송할 수 있다.
비트코인 풀노드는 비트코인 코어(Bitcoin Core) 등의 클라이언트를 통해 완전한 블록체인 데이터를 내려받고 보존한다. 또한 방송 통신, 정보 암호화 및 암호 해독, 합의 알고리즘, 거래 인증 알고리즘을 통해 블록체인 거래 네트워크의 혼잡으로 인한 문제를 해결한다.[5] 일반 사용자부터 채굴자까지 모두 비트코인 네트워크 중 하나의 노드로 볼 수 있는데, 비트코인은 다중심화 특징을 갖고 있어 전체 네트워크 중에서도 비트코인 풀 노드라는 중요한 역할을 담당하는 노드가 필요하다.[6]
비트코인 초기에는 사용자 수가 적어, 비트코인 네트워크에서 컴퓨터를 실행하는 모든 클라이언트 개개인을 하나의 풀 노드로 볼 수 있었다. 이러한 노드는 전체 비트코인 네트워크의 데이터를 보관한다. 네트워크에서 생성된 거래마다 정보를 수신한 노드는 해당 거래에 대한 안전성과 준수 여부 등에 대한 검증을 한다.[1] 이후 검증에서 통과된 거래는 전체 네트워크에서 다른 노드에게로 전송된다. 따라서 데이터가 한 번 생성되면 이를 변조할 수 없게 된다. 즉, 비트코인 풀 노드의 수량이 많을수록 비트코인 블록체인 네트워크가 더욱 안전해진다.
- 비트코인 코어
- 비트코인 풀노드는 다른 소프트웨어를 통해 구현될 수 있지만, 비트코인 코어(Bitcoin Core)가 가장 많이 사용되고 있는 프로그램이다.[5] 비트코인 네트워크 상에서 거래를 하기 위해서 사용자는 먼저 비트코인 노드에 연결해야 한다. 비트코인 풀노드는 100GB가 넘는 분산원장 데이터가 다 들어있는 노드로, 메모리 크기가 작은 노트북 하드웨어 용량에 맞먹는다. 방대한 용량이 필요하지만 풀노드만 가진 장점도 있는데, 정확한 금융 정보를 얻기 위해서 제3자에게 의존할 필요가 없다는 것이다. 비트코인의 가치는 신뢰가 필요없는 공유원장이라는 데 있다. 따라서 원칙을 고수하는 일부 보수적인 개발자들은 풀노드를 사용하지 않는 것이 곧 비트코인의 기본 목적을 위배하는 것이라고 주장하기도 한다. 예를 들어, 비트코인 코어의 개발자인 쇼즈 브로부스트(Sjors Provoost)는 풀노드를 사용하면 비트코인이 실재하는 블록체인이라는 사실을 인식하는데 큰 도움이 된다며 세그윗2x(Segwit 2x)를 그 근거로 들었다. 세그윗2x는 2017년에 추진되었다가 커뮤니티의 반발로 무산된 비트코인의 블록 크기를 두 배로 늘리는 하드포크이다.
- 당시 세그윗2x에 대한 반발로 비트코인 블록체인이 둘로 분리되면 간이 결제 확인(Simplified Payment Verification, SPV) 기술에 의존하는 모바일 지갑의 안전성에 대한 위협이 될 수 있다는 것이었다. 이론적으로 사용자의 잔액을 서버에서 거짓으로 나타낼 수 있다. 만약 세그윗2x가 실행되었다면 두 개로 나눠진 비트코인 네트워크 가운데 어느 한 쪽 정보를 선택할 것인지를 정해야 했을 것이다. 하지만 풀노드 사용자라면 그럴 필요가 없다. 풀노드 사용은 사용자의 개인정보 보호 문제와도 연관성이 있다. 프로부스트의 말을 빌리면 “일반적으로 하드웨어 지갑에 연동된 지갑 소프트웨어는 제3의 서버에 사용자의 계좌 정보를 제공한다. 하지만 풀노드는 이러한 지갑 소프트웨어의 대체제가 될 수 있으며 사용자의 개인정보는 보호받을 수 있다.” 또한 비트코인 코어의 지갑 관리 책임자인 사무엘 돕슨(Samuel Dobson)은 “최종적으로 편리성과 안전성 중 어느 쪽을 선택할 것인지의 문제가 될 것”이라고 주장했다.
- 이러한 보안 문제 때문에 아예 모두가 풀노드 소프트웨어를 사용하여 정확한 금융정보를 스스로 검증할 수 있는 구조 만들어져야 한다는 주장도 있었다. BTC페이의 창립자 니콜라스 도리에(Nicolas Dorier)는 “나는 언젠가는 모든 사람이 풀노드를 사용하게 될 것이라고 확신한다. 미래에는 풀노드를 쓰지 않는 사람은 경험 측면뿐만 아니라 실행 측면에서도 커다란 제약을 받게 될 것이다.”라고 말했다.[7]
이더리움[편집]
이더리움 풀노드를 실행하기 위해 사용자는 컴퓨터가 충분한 자원을 갖고 있는지 확인해야 한다. 이더리움 블록체인의 전체 사본을 저장하기 위해서는 적어도 80GB의 디스크 공간이 필요하다. 만약 이더리움 테스트넷에서 풀노드를 실행하기를 원한다면 적어도 15GB가 더 필요하다. 80GB 블록체인 데이터를 다운로드하는 데는 오랜 시간이 걸린다. 이더리움 블록체인을 동기화하는 것은 매우 많은 입출력을 필요로 한다. 가장 좋은 방법은 솔리드 스테이트 드라이브(Solid-State Drive, SSD)를 준비하는 것이다. 만약 기계식 하드 디스크 드라이브(Hard Disk Drive, HDD)를 갖고 있다면 캐시(cache)를 사용하기 위해 적어도 8GB의 램(RAM)이 필요할 것이다. 그렇지 않으면 너무 느려서 완전히 동기화되지 않을 수도 있다. 일반적으로 모든 블록체인에는 자체 버전의 게스(Geth)가 있다. 패리티(Parity)는 동일한 클라이언트 다운로드를 통해 여러 이더리움 기반 블록체인을 지원한다.
- 게스(Geth) : 이더리움에서 고(Go) 언어로 개발하였으며, 이더리움의 공식 클라이언트다. 일반적으로 모든 이더리움 기반 블록체인은 자체 게스 구현을 갖고 있다. 게스를 처음 시작하면 네트워크 내의 다른 이더리움 노드에 연결하는 작업을 먼저 시작하고, 블록체인의 전체 사본을 내려받게 된다. 게스는 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신한다. 또한 블록을 채굴하고 블록체인에 트랜잭션을 추가하며 블록의 트랜잭션을 검증하여 트랜잭션을 실행할 수도 있다. 게스는 RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할을 하기도 한다.
- 패리티(Parity) : 풀 노드 이더리움 클라이언트 및 디앱 브라우저를 구현한 것이다. 패리티는 모듈식의 안전하과 확장 가능한 이더리움 클라이언트를 구축하기 위해 시스템 프로그래밍 언어인 러스트(Rust)를 기반으로 작성되었다. 패리티는 영국 회사인 패리티 테크(Parity Tech)에서 개발했으며, GPLv3 무료 소프트웨어 라이선스 하에 출시되었다.
각주[편집]
- ↑ 1.0 1.1 죽순, 〈암호화페 이야기〉, 《네이버 블로그》, 2018-08-11
- ↑ 레스코, 〈채굴자, 노드 란? 쉽고 간단한 정리 – 풀노드 편〉, 《네이버 블로그》, 2018-03-12
- ↑ 강휘, 〈채굴자, 노드 란? 쉽고 간단한 정리 - 풀노드〉, 《브런치》, 2018-03-26
- ↑ 코인뉴스, 〈노드에도 종류가 있다. 풀노드와 라이트노드〉, 《티스토리》, 2018-03-14
- ↑ 5.0 5.1 〈노드란 무엇인가요?〉, 《바이낸스 아카데미》, 2018-08-12
- ↑ 〈블록체인 기술용어〉, 《오케이코인 코리아》, 2018-11-19
- ↑ Alyssa Hertig, 〈새 비트코인 코어, 풀노드와 하드웨어 지갑 결합〉, 《코인데스크코리아》, 2019-04-15
참고자료[편집]
- 〈노드란 무엇인가요?〉, 《바이낸스 아카데미》, 2018-08-12
- Alyssa Hertig, 〈새 비트코인 코어, 풀노드와 하드웨어 지갑 결합〉, 《코인데스크코리아》, 2019-04-15
같이 보기[편집]