개발저장소
[Ethereum] 이더리움 아키텍처 본문
1. 클라이언트 / 서버 아키텍처와 비교

서버 측 구성요소
- 프로그래밍 언어: Java, C#, Ruby, Python 등
- 호스팅 환경: AWS, Microsoft Azure, Google Cloud Platform, Heroku, VPS 등
클라이언트 측 구성요소
- 프론트엔드: HTML/CSS/JavaScript
- 접근 방법: 웹 브라우저, curl/wget(커맨드라인), API
중앙화된 아키텍처의 특징:
- 하나의 중앙화된 웹 애플리케이션이 존재
- 모든 클라이언트가 이 단일 애플리케이션과 상호작용
- 요청-응답 흐름
- 클라이언트 → 서버 요청
- 서버가 요청 처리
- 데이터베이스/캐시와 상호작용 (읽기/쓰기/업데이트)
- 서버 → 클라이언트 응답 반환
2. 이더리움 탈중앙화 아키텍처

탈중앙화 구조의 특징
- 모든 클라이언트가 애플리케이션의 자체 인스턴스와 통신
- 중앙 서버가 존재하지 않음
- 이상적인 탈중앙화 세계: 모든 사용자가 자신의 기기에 블록체인 전체 복사본 보유
현실적인 탈중앙화 솔루션
문제점: 모든 사용자가 블록체인 서버를 운영하는 것은 비현실적
해결책:
- 블록체인 호스팅 서비스 - 전문 업체가 노드를 대신 운영 (예: Infura, Alchemy)
- Metamask - 브라우저 지갑으로 원격 노드에 연결하여 가벼운 사용
- 경량 클라이언트 - 필요한 데이터만 다운로드하여 리소스 절약
→ 개인이 풀 노드를 운영하지 않아도 탈중앙화 네트워크 참여 가능
3. 이더리움 블록체인의 구성 요소
1) 데이터베이스
- 네트워크의 모든 트랜잭션을 블록체인에 저장
- 애플리케이션 배포도 트랜잭션으로 간주
- ex. 투표 애플리케이션에서 개별 투표 = 트랜잭션
- 특징
- 모든 트랜잭션이 공개되어 누구나 확인 가능
- 데이터 조작 불가능
- 작업증명(Proof of Work) 알고리즘으로 네트워크 보안 유지
- 모든 노드가 동일한 데이터 복사본 보유
2) 코드
- 스마트 계약(Smart Contract): 애플리케이션 로직 구현
- Solidity: 스마트 계약 작성 언어 (가장 인기 있고 상대적으로 쉬움)
- 개발 과정
- Solidity로 스마트 계약 작성
- Solidity 컴파일러로 이더리움 바이트코드(Ethereum Byte Code)로 컴파일
- 바이트코드를 블록체인에 배포
블록체인 = 데이터 저장 + 코드 저장 + EVM에서 코드 실행
'Computer Science > Blockhcain' 카테고리의 다른 글
| [Ethereum] 이더리움이란? (0) | 2025.05.25 |
|---|