본문으로 건너뛰기
0%

Ethereum 노드란?

Alchemy team headshot

작성자 Alchemy

2022년 4월 18일에 게시됨4분 읽기

정의와 활용

이더리움 노드는 이더리움 네트워크에 연결하는 데 필요한 소프트웨어를 실행하는 컴퓨터를 말한다. 노드들은 서로 연결되어 정보를 주고받으며 트랜잭션을 검증하고 블록체인의 상태에 대한 데이터를 저장한다.

두 용어가 종종 혼용되지만, 정확히는 이렇게 연결된 컴퓨터가 노드이고 이 컴퓨터가 실행하는 소프트웨어를 클라이언트라고 부른다.

노드가 Web3에 중요한 이유는?

Ethereum 네트워크 전반에서 블록체인 노드가 연결되는 모습을 보여주는 애니메이션

노드는 블록체인 네트워크를 구성하며 이 네트워크에 접근할 수 있는 유일한 방법이다.

각 노드는 블록체인의 자체 사본을 유지하며 이 사본이 다른 모든 노드의 사본과 일치하는지 확인하는 작업을 수행한다. 새로운 블록이 블록체인에 추가되어야 할 때마다 네트워크상의 모든 노드가 이를 처리해야 한다.

블록체인 노드가 새 블록에 대해 합의에 도달하는 과정을 보여주는 애니메이션

각 노드는 서명과 트랜잭션의 유효성을 기준으로 새 블록을 수락하거나 거부한다. 블록이 수락되면 합의가 이루어지고 모든 노드가 동기화될 때까지 다른 노드들과 계속 공유된다. 노드는 유효하지 않은 블록을 신속히 거부하고 규칙을 어기려는 나쁜 노드를 식별할 수 있다. 이렇게 노드들이 끊임없이 통신하는 네트워크 덕분에 단일 진실 공급원과 그에 따른 여러 문제에 의존할 필요가 없어진다.

이러한 노드 간의 합의는 블록체인 네트워크를 탈중앙화시키며 Web3의 근간이 된다. 실행되는 노드가 많을수록 블록체인은 더 강력해진다!

노드에는 어떤 종류가 있는가?

노드에는 세 가지 종류가 있다:

  • 라이트 노드
  • 풀 노드
  • 아카이브 노드

_라이트 노드_는 네트워크에서 트랜잭션을 처리하는 데 필요한 최소한의 데이터인 블록 헤더만 다운로드한다. 라이트 노드는 이 데이터를 이용해 확인해야 할 특정 블록을 재생성할 수 있기 때문에 트랜잭션을 검증할 수 있다.

이 덕분에 라이트 노드는 네트워크와 효율적으로 상호작용하면서 수 메가바이트의 대역폭과 수 기가바이트의 저장 공간을 절약할 수 있다. 그래서 라이트 노드는 스마트폰이나 노트북처럼 메모리 자원이 제한된 일반적인 기기에서도 실행할 수 있다.

하지만 라이트 노드에도 한계가 있다. 라이트 노드는 접근할 수 없는 데이터를 풀 노드에 요청해야 할 때가 있으며, 이 경우 풀 노드가 직접 트랜잭션을 검증하는 것보다 시간이 더 걸릴 수 있다.

라이트 노드가 노드를 실행하는 가장 쉬운 방법이긴 하지만, 클라이언트를 설치하고 변수를 설정하고 블록 헤더를 다운로드하고 모든 것이 정상적으로 작동하는지 확인하는 데는 여전히 시간과 노하우가 필요하다.

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

_풀 노드_는 네트워크의 블록이 올바른지 검증하는 데 필요한 모든 것을 갖추고 있다. 어떤 스마트 컨트랙트와도 상호작용할 수 있고 자체 컨트랙트를 배포할 수도 있다.

전체 데이터를 사용하고 저장한다는 것은 풀 노드가 훨씬 더 많은 컴퓨팅 및 대역폭 자원을 필요로 한다는 의미다. 풀 노드는 0번 블록부터 최신 블록(현재 +1,000만 개 이상이며 계속 증가 중)까지 전체 블록체인 상태를 다운로드하고 저장하고 검증하는데, 동기화에 몇 주가 걸릴 수도 있다!

_아카이브 노드_는 풀 노드보다 한 단계 더 나아간다. 풀 노드는 검증에 더 이상 필요하지 않은 항목, 즉 체인과의 오래된 상호작용 내역을 정리하지만, 아카이브 노드는 모든 것(수 테라바이트에 달하는 추가 데이터)을 유지한다. 이러한 세부 정보는 정보를 더 효율적으로 쿼리하는 데 유용하고 일부 애플리케이션에는 도움이 되지만, 대부분의 경우에는 과도하다.

노드를 실행하는 것이 왜 어려운가?

노드를 구축하고 실행하는 것은 길고 어려운 과정이 될 수 있다. 특히 Web3 세계에 처음 발을 들이고 기술적 전문성이 없는 경우(적어도 아직은) 더욱 그렇다.

풀 노드가 현재 블록체인 상태 기준으로 +1,000만 개 노드에 동기화되기까지 몇 주가 걸릴 수 있다는 사실만으로도 많은 사람이 이 분야에서의 개발을 꺼리게 된다.

비용 또한 요인이며, 빠르게 누적될 수 있다. 여기에는 하드웨어 구매를 위한 높은 초기 투자 비용과 전기 및 서버 호스팅에 드는 지속적인 비용이 포함된다. 노드를 운영할 때는 이것이 항상 작동 중임을 확인해야 한다. 인터넷 지연, 정전, 하드웨어 문제는 비용이 많이 드는 다운타임으로 이어질 수 있다.

클라이언트 업데이트는 이더리움의 확장성, 보안성, 지속가능성을 지속적으로 개선하는 데 도움이 되지만, 이러한 변경 사항이 예상치 못한 문제를 일으킬 수도 있다. 그리고 더 큰 것을 구축하려 할 때 문제가 본격적으로 시작된다!

이더리움 노드 확장에는 어떤 문제가 있는가?

이더리움 노드는 애초에 이 정도 수준의 요청을 처리하도록 설계되지 않았기 때문에 몇 가지 고유한 문제가 발생할 수 있다.

신뢰성

일부 요청은 노드에게 로그 0번부터 현재 블록까지 전부 조회하도록 요구하며, 이 경우 타임아웃이 발생할 수 있다. 이러한 "죽음의 쿼리"는 노드를 다운시킬 수 있으며 하루 중 언제든 발생할 수 있다. 일반적인 노드처럼 신뢰성이 72%에 불과하다면, 애플리케이션이 연간 100일 넘게 오프라인 상태가 될 수 있다는 의미다!

확장성

노드 인프라를 확장하는 것은 까다로울 수 있다. 구축 중인 애플리케이션이 트위터에서 하룻밤 사이에 입소문을 타는데, 기존에 운영 중인 노드가 갑작스러운 트래픽과 트랜잭션 볼륨 증가를 감당하지 못하는 상황을 상상해보라.

새 노드를 동기화하는 데 몇 주가 걸리기 때문에 빠르게 새 노드를 추가할 수도 없다. 게다가 새로운 수요가 기존 노드에 과부하를 걸어 다운시킬 수도 있다. 이는 아무도 애플리케이션을 사용할 수 없는 다운타임과, 자신이 만든 것을 신뢰할 수 없다고 느끼는 불만족스러운 사용자로 이어질 수 있다!

데이터 일관성

Web2에서는 로드 밸런서, 즉 상위 계층에서 트래픽을 서로 구분되지 않는 서버들로 분산시키는 네트워크 계층을 사용해 이러한 확장성 문제를 우회할 수 있다. 하지만 블록체인은 비동기적이기 때문에 노드에서는 이것이 불가능하다. 두 노드가 결국에는 동일한 최신 블록을 공유하게 되더라도, 특정 시점에는 한 노드가 다른 노드보다 뒤처져 있을 수 있다.

트래픽이 최신 블록에 대해 서로 다른 견해를 가진 서로 다른 노드를 통해 라우팅되기 때문에, 로드 밸런싱은 매우 다른 두 가지 결과로 이어질 수 있다. 그토록 원하던 NFT를 구매했는데 새로고침을 하니 사라진 것처럼 보이는 상황을 상상해보라!

로드밸런싱된 블록체인 노드가 일관되지 않은 데이터를 반환하는 모습을 나타낸 다이어그램

이러한 종류의 데이터 불일치를 피하려는 시도는 개발팀이 복잡한 임시방편을 짜맞추게 만들고, 결국 오류를 일으키고 애플리케이션을 다운시키게 된다. 이 모든 문제는 노드를 다루는 과정에서 개발자가 확장성, 신뢰성 유지, 데이터 일관성 보장 중 하나를 선택해야 하는 경우가 많다는 것을 의미하며, 결국 모두에게 만족스럽지 못한 경험으로 이어진다.

Node-as-a-Service는 언제 사용해야 하는가?

이 모든 것이 다소 벅차게 느껴진다면 걱정하지 않아도 된다! 이제 막 시작하는 단계이든, 노드 문제에 너무 많은 시간과 비용을 쓰고 있다고 느끼든, node-as-a-service가 해결책이 될 수 있다.

Alchemy 같은 노드 제공업체가 노드를 운영해주기 때문에 여러분은 애플리케이션 개발에 집중할 수 있다. 대부분의 제공업체를 통합하는 것은 매우 쉬우며, 블록체인에 대한 읽기와 쓰기를 시작하는 데는 흔히 API 하나만 있으면 된다.

즉, 서버 접근 비용을 지불하고 하드웨어 요구사항을 맞추고 직접 상태를 유지하는 대신, Alchemy의 Supernode 인프라를 사용할 수 있다…

확장 가능한 Ethereum 노드 액세스를 위한 Alchemy Supernode 인프라 다이어그램

단 한 줄의 코드로.

Alchemy API 키로 Ethereum에 연결하는 코드 스니펫

Alchemy는 자체 개발한 코디네이터 서비스를 통해 뛰어난 데이터 정확성과 업계 최고 수준의 신뢰성을 보장할 수 있다. 이는 전용 분산 시스템을 통해 이루어지며, 빠르고 매끄럽게 확장할 수 있게 해주어 더 나은 것을 구축하고 더 빠르게 출시할 수 있도록 돕는다.

"자체 노드나 오류가 잦은 서비스를 사용하는 것은 회사와 아무 관련 없는 문제에 수백 시간의 소중한 엔지니어링 시간을 낭비하는 것이다. Alchemy의 놀라운 수준의 신뢰성, 속도, 지원에 견줄 만한 것은 없다." - Alex Atallah, CTO, OpenSea

OpenSea, Dapper Labs, 0x, Royal, Axie Infinity를 비롯한 선도적인 블록체인 기업 및 프로젝트 수백 곳이 놀라운 수준의 신뢰성, 탁월한 고객 서비스, 그리고 Web3 구축을 그 어느 때보다 접근하기 쉽게 만들어주는 뛰어난 제품군 덕분에 모두 Alchemy를 선택하고 있다.

OpenSea, Dapper Labs 등 Alchemy 기반으로 구축하는 기업들의 로고

Alchemy 계정에 가입하고 노드에 대한 걱정 없이 바로 개발을 시작해보라! Alchemy가 Web3 구축 여정에 어떻게 도움이 될 수 있는지 더 알아보고 싶다면 Getting Started With Alchemy 문서를 확인하고, Alchemy Discord에서 24시간 언제든 문의해보라.

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.