✅ DApp 개발을 위한 구성 요소
📌 1. Ethereum Node (RPC)
✅ 정의
블록체인과 상호작용하기 위한 진입점. 스마트컨트랙트 호출, 트랜잭션 전송 등 모든 통신은 Ethereum Node를 통해 이루어짐.
✅ 형태
- 자체 노드 실행: Geth, Nethermind 등 (실제 Ethereum 프로토콜 전체를 동작시킴)
- RPC 서비스: Infura, Alchemy, QuickNode (개발자용 API 제공, 노드 운영 부담 없음)
✅ 역할
- JSON-RPC 인터페이스를 통해 외부 시스템과 통신
- Web3/Ethers → JSON-RPC → 노드 → EVM
📌 2. EVM (Ethereum Virtual Machine)
✅ 정의
Ethereum의 스마트컨트랙트를 실행하는 가상 머신. 전 세계 모든 노드는 같은 EVM 코드를 실행하여 상태를 합의함.
✅ 작동 원리
- Solidity 코드는 컴파일되어 EVM 바이트코드로 변환됨
- EVM은 각 명령어(
SLOAD,SSTORE,ADD,CALL)의 가스 비용을 계산하며 실행
✅ 특징
- 결정적(Deterministic): 입력과 블록 상태가 같으면 결과도 항상 동일
- Isolation(Sandboxed): 외부 시스템과 분리 → 보안성 높음
- 가스(Gas): 연산 비용을 수치화하여 네트워크 자원 낭비 방지
📌 3. Solidity
✅ 정의
EVM에서 실행할 수 있는 스마트컨트랙트를 작성하는 주요 프로그래밍 언어
✅ 언어 특징
- 정적 타입 언어 (타입 명시 필수)
- JavaScript, C 계열 문법 기반
contract,function,modifier,event,mapping,struct등 EVM 친화적 키워드 지원
✅ 메모리 구조
storage: 블록체인에 영구 저장됨 (가스 많이 듦)memory: 함수 내 일시적 데이터 저장소 (값 타입 전달용)calldata: 외부 호출 시 읽기 전용 인자 저장 (cheap)
📌 4. Smart Contract
✅ 정의
블록체인에서 실행되며, 자동화된 로직을 코드화한 계약. 수정 불가능하며 영구 기록됨.
✅ 특성
- 누구나 읽을 수 있고 실행 가능 (오픈 소스 + 불변성)
- 조건 충족 시 자동 실행 (
require,if,revert) - 사용자, DApp, 또는 다른 스마트컨트랙트에 의해 호출 가능
✅ 실전 예시
- 예치금 관리 (
deposit,withdraw) - 권한 기반 승인 (
onlyOwner,modifier) - NFT 발행 (
ERC721,mint)
📌 5. Ganache (로컬 테스트 블록체인)
✅ 정의
개발자가 로컬에서 빠르게 스마트컨트랙트를 배포/테스트할 수 있도록 해주는 개인용 블록체인
✅ 특징
- 트랜잭션 자동 채굴, 무료 가스
- 모든 계정에 이더 지급
- 블록 시간, 가스 한도, chainId 설정 가능
✅ 실무 활용
- 개발 중 반복 배포/테스트
- 디버깅 및 로그 추적
- Truffle 또는 Hardhat과 연동해 자동화 테스트
📌 6. Truffle / Hardhat
| 항목 | Truffle | Hardhat |
|---|---|---|
| 정의 | 전통적인 Ethereum 개발 프레임워크 | 현대적이고 확장 가능한 개발 프레임워크 |
| 배포 스크립트 | ✔️ migrations 사용 |
✔️ scripts/deploy.js로 자유 구성 |
| 테스트 | Mocha + Chai | Mocha + EVM tracing 지원 |
| 디버깅 | 기본 수준 | 🧠 고급 디버거, 스택트레이스 제공 |
| 특징 | 안정성 + GUI(Ganache) 지원 | 빠른 컴파일, 유연성, 플러그인 생태계 |
📌 7. Remix IDE
✅ 정의
브라우저 기반 Solidity IDE. 컴파일, 배포, 실행, 디버깅을 웹 상에서 한 번에 처리 가능
✅ 구성
- Solidity Editor: 코드 작성
- Deploy & Run: 컴파일 → 네트워크 선택 → 배포/호출
- Debugger: 트랜잭션 스텝별 실행 추적
- File Explorer: 가상 파일시스템
✅ 실무 팁
- 초급자 입문용으로 최적
- 테스트넷 및 WalletConnect 연동 가능
- production 배포는 Truffle/Hardhat 권장
📌 8. MetaMask
✅ 정의
브라우저 확장형 지갑 + Ethereum provider 역할
✅ 기능
- 개인키 관리 및 서명
- 네트워크 전환 (Mainnet / Testnet / Custom RPC)
- 트랜잭션 전송 및 확인
- DApp에서
window.ethereum객체로 접근 가능
📌 9. Web3.js / Ethers.js
| 항목 | Web3.js | Ethers.js |
|---|---|---|
| 정의 | JS 기반 Ethereum 인터랙션 라이브러리 | 경량화, TypeScript 친화 |
| 계약 호출 | contract.methods.func().call() |
contract.func() |
| 트랜잭션 전송 | .send() |
.sendTransaction() |
| 네트워크 감지 | web3.eth.net |
provider.getNetwork() |
| 실무 적합성 | 유지보수 감소, 약간 구식 | 빠른 속도, 현대적 코드 스타일, 더 선호됨 |
📌 10. DApp (Decentralized Application)
✅ 정의
사용자 인터페이스(웹, 앱)는 일반 앱과 같지만, 중앙 서버 대신 스마트컨트랙트가 핵심 로직을 담당하는 탈중앙 앱
✅ 핵심 구조
[React/Vue Frontend]
↕ (Web3/Ethers.js)
[Smart Contract (Solidity)]
↕ (JSON-RPC)
[Ethereum Node (Infura, Geth)]
✅ 실무 흐름 예시
- 사용자 → MetaMask 통해 트랜잭션 서명
- Web3.js가 RPC로 트랜잭션 전송
- EVM에서 스마트컨트랙트 실행
- 상태 업데이트 후 블록체인에 기록
- 이벤트 발생 → 프론트에 반영
📌 테스트넷 비교 (보너스)
| 네트워크 | 설명 | 특징 |
|---|---|---|
| Sepolia | 메인 테스트넷 | 가볍고 빠름. EVM 완전 동일 |
| Goerli | 과거 인기 | 점차 사용 중단 중 |
| Holesky | Staking 중심 테스트넷 | Sepolia와 역할 분리. 검증자 테스트에 특화됨 |
✅ 전체 흐름 요약 순서
[1] Ethereum Node (Infura, Geth 등)
↓
[2] EVM (명령 실행 환경)
↓
[3] Solidity (코드 작성)
↓
[4] Smart Contract (계약 로직)
↓
[5] Ganache (로컬 테스트)
↓
[6] Truffle / Hardhat (개발 자동화)
↓
[7] Remix (웹 IDE 실습)
↓
[8] MetaMask (지갑 + 서명)
↓
[9] Web3.js / Ethers.js (브라우저 ↔ RPC)
↓
[10] DApp (전체 사용자 인터페이스)
'Blockchain' 카테고리의 다른 글
| [Solidity] 1. 스마트컨트랙트 기본 구조와 구성 요소 (0) | 2025.04.17 |
|---|---|
| [Solidity] Solidity 스마트컨트랙트 개발 문법 및 용어 정리 목차 (0) | 2025.04.17 |
| [Ethereum] Remix이전에 배포한 스마트컨트랙트를 다시 불러오는 방법 (0) | 2025.04.11 |
| [Ethereum] 이더리움 테스트넷 Sepolia, Holesky (0) | 2025.04.11 |
| [Blockchain] Reorg (0) | 2025.03.18 |
댓글