본문으로 건너뛰기
Change page

이더리움 스택 소개

다른 소프트웨어 스택과 마찬가지로, 완전한 "이더리움 스택"은 목표에 따라 프로젝트마다 다릅니다.

하지만 소프트웨어 애플리케이션이 이더리움 블록체인과 상호 작용하는 방식에 대한 멘탈 모델을 제공하는 이더리움의 핵심 구성 요소가 있습니다. 스택의 계층을 이해하면 이더리움이 소프트웨어 프로젝트에 통합될 수 있는 다양한 방법을 이해하는 데 도움이 됩니다.

레벨 1: 이더리움 가상 머신

이더리움 가상 머신(EVM)은 이더리움의 스마트 컨트랙트를 위한 런타임 환경입니다. 이더리움 블록체인의 모든 스마트 컨트랙트와 상태 변경은 트랜잭션에 의해 실행됩니다. EVM은 이더리움 네트워크의 모든 트랜잭션 처리를 담당합니다.

다른 가상 머신과 마찬가지로 EVM은 실행 중인 코드와 실행 중인 머신(이더리움 노드) 사이에 추상화 계층을 만듭니다. 현재 EVM은 전 세계에 분산된 수천 개의 노드에서 실행되고 있습니다.

내부적으로 EVM은 특정 작업을 실행하기 위해 일련의 연산 코드 명령을 사용합니다. 이러한 (140개의 고유한) 연산 코드를 통해 EVM은 튜링 완전(Turing-complete) (opens in a new tab)해지며, 이는 충분한 리소스가 주어지면 EVM이 거의 모든 것을 계산할 수 있음을 의미합니다.

탈중앙화 애플리케이션(dapp) 개발자로서 EVM에 대해 알아야 할 것은 EVM이 존재하며 다운타임 없이 이더리움의 모든 애플리케이션을 안정적으로 구동한다는 사실뿐입니다.

레벨 2: 스마트 컨트랙트

스마트 컨트랙트는 이더리움 블록체인에서 실행되는 실행 가능한 프로그램입니다.

스마트 컨트랙트는 EVM 바이트코드(연산 코드라고 하는 저수준 기계어 명령)로 컴파일되는 특정 프로그래밍 언어를 사용하여 작성됩니다.

스마트 컨트랙트는 오픈 소스 라이브러리 역할을 할 뿐만 아니라, 본질적으로 항상 실행되고 중단될 수 없는 개방형 API 서비스입니다. 스마트 컨트랙트는 사용자와 애플리케이션(탈중앙화 애플리케이션(dapp))이 권한 없이 상호 작용할 수 있는 퍼블릭 함수를 제공합니다. 모든 애플리케이션은 배포된 스마트 컨트랙트와 통합하여 데이터 피드를 추가하거나 토큰 스왑을 지원하는 등의 기능을 구성할 수 있습니다. 또한 누구나 애플리케이션의 요구 사항을 충족하는 사용자 지정 기능을 추가하기 위해 이더리움에 새로운 스마트 컨트랙트를 배포할 수 있습니다.

탈중앙화 애플리케이션(dapp) 개발자로서 이더리움 블록체인에 사용자 지정 기능을 추가하려는 경우에만 스마트 컨트랙트를 작성하면 됩니다. 예를 들어 스테이블코인 결제를 지원하거나 토큰의 탈중앙화된 교환을 활성화하려는 경우, 기존 스마트 컨트랙트와 통합하는 것만으로도 프로젝트 요구 사항의 대부분 또는 전부를 달성할 수 있습니다.

레벨 3: 이더리움 노드

애플리케이션이 이더리움 블록체인과 상호 작용하려면 이더리움 노드에 연결해야 합니다. 노드에 연결하면 블록체인 데이터를 읽거나 네트워크에 트랜잭션을 보낼 수 있습니다.

이더리움 노드는 소프트웨어, 즉 이더리움 클라이언트를 실행하는 컴퓨터입니다. 클라이언트는 각 블록의 모든 트랜잭션을 검증하여 네트워크를 안전하게 유지하고 데이터를 정확하게 유지하는 이더리움의 구현체입니다. 이더리움 노드가 곧 이더리움 블록체인입니다. 이들은 집단적으로 이더리움 블록체인의 상태를 저장하고 블록체인 상태를 변경하기 위한 트랜잭션에 대해 합의에 도달합니다.

애플리케이션을 이더리움 노드에 연결하면(JSON-RPC API를 통해), 애플리케이션은 블록체인에서 데이터(예: 사용자 계정 잔액)를 읽을 수 있을 뿐만 아니라 네트워크에 새로운 트랜잭션(예: 사용자 계정 간 ETH 전송 또는 스마트 컨트랙트 함수 실행)을 브로드캐스트할 수 있습니다.

레벨 4: 이더리움 클라이언트 API

(이더리움의 오픈 소스 커뮤니티에서 구축하고 유지 관리하는) 많은 편의성 라이브러리를 통해 애플리케이션이 이더리움 블록체인에 연결하고 통신할 수 있습니다.

사용자 대면 애플리케이션이 웹 앱인 경우, 프론트엔드에서 직접 JavaScript APInpm install할 수 있습니다. 또는 Python이나 Java API를 사용하여 서버 측에서 이 기능을 구현하도록 선택할 수도 있습니다.

이러한 API가 스택의 필수 요소는 아니지만, 이더리움 노드와 직접 상호 작용하는 복잡성의 상당 부분을 추상화합니다. 또한 유틸리티 함수(예: ETH를 Gwei로 변환)를 제공하므로 개발자는 이더리움 클라이언트의 복잡성을 다루는 데 드는 시간을 줄이고 애플리케이션에 특화된 기능에 더 많은 시간을 집중할 수 있습니다.

레벨 5: 최종 사용자 애플리케이션

스택의 최상위 레벨에는 사용자 대면 애플리케이션이 있습니다. 이는 오늘날 정기적으로 사용하고 구축하는 표준 애플리케이션으로, 주로 웹 및 모바일 앱입니다.

이러한 사용자 인터페이스를 개발하는 방식은 본질적으로 변하지 않습니다. 종종 사용자는 자신이 사용하는 애플리케이션이 블록체인을 사용하여 구축되었다는 사실을 알 필요가 없습니다.

스택을 선택할 준비가 되셨나요?

이더리움 애플리케이션을 위한 로컬 개발 환경 설정 가이드를 확인해 보세요.

더 읽어보기

도움이 된 커뮤니티 리소스를 알고 계신가요? 이 페이지를 편집하여 추가해 주세요!