
이더리움(Ethereum)과 스마트 컨트랙트(Smart Contract) 기초: Solidity로 나만의 탈중앙화 크라우드펀딩 DApp 만들기
Solidity 지식이 전혀 없는 상태에서 시작하여, 이더리움 테스트넷(testnet)에 완전히 작동하는 포트폴리오용 크라우드펀딩 DApp을 배포하기까지
소개
이더리움은 탈중앙화 금융(DeFi), 대체 불가능 토큰(NFT), 웹3(Web3)의 근간이며, 스마트 컨트랙트는 그 엔진입니다. 이 강좌는 이더리움 가상 머신(EVM)이 실제로 어떻게 작동하는지 이해하는 것부터, ETH 기여금을 받고 마감 기한을 적용하며 환불을 처리하는 실제 크라우드펀딩 DApp을 작성하고 테스트하고 배포하는 것까지 다룹니다 — 모든 것이 신뢰 없이 온체인(on-chain)에서 이루어집니다. 단순히 Solidity 문법을 배우는 것이 아니라, 스마트 컨트랙트가 *왜* 그렇게 동작하는지, 그리고 함수를 배포하거나 호출할 때마다 내부적으로 *무슨 일이 일어나는지*를 이해하게 됩니다. 이 강좌는 구축 우선 방법론(build-first methodology)을 따릅니다. 모든 개념은 10개의 레슨에 걸쳐 한 줄씩 직접 구축하는 탈중앙화 크라우드펀딩 플랫폼인 FundChain에 즉시 적용됩니다. 이더리움의 핵심 아키텍처부터 시작하여 Solidity의 타입 시스템과 보안 패턴을 거쳐, 메타마스크(MetaMask)를 통해 실제 작동하는 웹 프론트엔드(frontend)에 연결된 배포된 컨트랙트로 마무리됩니다. 각 레슨에는 직접 코딩, 보안 분석, 자동화 테스트가 포함됩니다 — 블록체인(Blockchain)에서 테스트되지 않은 코드는 신뢰할 수 없는 코드이기 때문입니다. 나선형 접근 방식(spiral approach)은 프로젝트가 성장함에 따라 가스(gas), 스토리지(storage), 체크-이펙트-인터랙션(checks-effects-interactions) 패턴과 같은 핵심 개념을 점점 더 깊은 수준에서 다시 살펴보게 됨을 의미합니다. 이 강좌는 Python, JavaScript, Java 등 변수, 함수, 조건문이 있는 어떤 언어로든 기본 프로그래밍 경험이 있지만, 스마트 컨트랙트를 작성해본 적 없는 개발자를 위해 설계되었습니다. 블록체인 개발 사전 경험은 필요하지 않으나, 블록체인이 무엇인지에 대한 개념적 이해가 있으면 더 빠르게 시작하는 데 도움이 됩니다. 블록체인 또는 비트코인(Bitcoin) 입문 강좌를 수료하고 실제 구축으로 나아가고 싶다면, 이 강좌가 그 출발점입니다. 강좌를 마치면 처음부터 직접 만든 작동하는 DApp을 GitHub 포트폴리오에 보유하게 되고, 간단한 Solidity 컨트랙트를 읽고 감사(audit)할 수 있는 자신감과 DeFi 프로토콜, NFT 컨트랙트, 고급 이더리움 개발 패턴을 탐구할 탄탄한 기반을 갖추게 됩니다. 또한 향후 모든 스마트 컨트랙트 프로젝트에 적용할 수 있는 재사용 가능한 테스트 스위트(test suite)와 배포 파이프라인(deployment pipeline)도 갖추게 됩니다.
학습 목표
- ✓EVM 아키텍처, 계정 유형(EOA 대 컨트랙트 계정), 가스 계산을 포함한 전체 트랜잭션(transaction) 라이프사이클을 설명할 수 있습니다
- ✓핵심 데이터 타입, 구조체(struct), 매핑(mapping), 배열(array), 함수 가시성 수정자(visibility modifier)를 사용하여 Solidity 스마트 컨트랙트를 작성할 수 있습니다
- ✓온체인에서 계정 간에 이더(Ether)를 안전하게 수신, 추적, 전송하는 payable 함수를 구현할 수 있습니다
- ✓체크-이펙트-인터랙션(checks-effects-interactions), 인출 패턴(withdrawal pattern), 재진입 공격(reentrancy) 방지를 포함한 스마트 컨트랙트 보안 패턴을 적용할 수 있습니다
- ✓Hardhat, Ethers.js, Chai를 사용하여 시간 조작(time manipulation)이 포함된 Solidity 컨트랙트의 자동화 테스트 스위트를 구축하고 실행할 수 있습니다
- ✓검증된 스마트 컨트랙트를 Sepolia 테스트넷에 배포하고, 배포 스크립트를 통해 프로그래밍 방식으로 상호 작용할 수 있습니다
- ✓Ethers.js를 사용하여 MetaMask 지갑을 배포된 스마트 컨트랙트에 연결하는 최소한의 웹 프론트엔드를 구축할 수 있습니다