페이지가 마지막으로 업데이트됨: September 17, 2020
개발자용 참고 자료
시작하기
만약 당신이 이더리움을 처음 개발해보신다면, 여기 제대로 찾아오셨습니다. 이더리움 커뮤니티에 의해 쓰여진 이 가이드들은 이더리움 기술 스택에 대한 기초부터 기존의 앱 개발과는 다를지도 모르는 새로운 개념들을 소개해 줄 거에요.
지금 바로 코딩을 시작하고 싶으세요? 코딩 시작하기.
먼저 기본 지식이 더 필요하시나요? 학습용 참고 자료를 확인해 보세요.
유용한 참고 자료
- Getting up to speed on Ethereum Aug 7, 2017 - Matt Condon
- Ethereum In Depth, Part 1 May 11, 2018 - Facu Spagnuolo
- Ethereum In Depth, Part 2 July 24, 2018 - Facu Spagnuolo
- Ethereum Development Walkthrough, Parts 1-5 Jan 14, 2018 - dev_zl
- Ethereum 101, Parts 1-7 Feb 13, 2019 - Wil Barnes
- Full Stack Hello World Voting Ethereum Dapp Tutorial Jan 18, 2017 - Mahesh Murthy
- Mastering Ethereum - A comprehensive textbook available for free online Dec 1, 2018 - Andreas Antonopoulos & Gavin Wood
- Ethereum Developer Portal - Everything you need to get started building on Ethereum Updated often - ConsenSys
- Deconstructing a Solidity Contract Aug 13, 2018 - Alejandro Santander & Leo Arias
- Full Stack Dapp Tutorial Series Updated Often - Joshua Cassidy
스마트 컨트랙트 언어
이더리움 가상 머신(EVM)에서 작동되는 프로그램을 흔히 "스마트 컨트랙트(smart contract)"라고 부릅니다. 이더리움에 기반하여 스마트 컨트랙트를 작성할 때 주로 사용되는 언어로는 Solidity(솔리디티)와 Vyper(바이퍼)가 있지만, 다른 언어들도 매우 활발하게 개발되고 있습니다.
솔리디티(Solidity) - C++, 파이썬(Python), 자바스크립트(JavaScript)에서 영감을 얻은 가장 인기 있는 이더리움 기반 언어
바이퍼(Vyper) - 파이썬에 기반하여 보안에 중점을 둔 이더리움 개발 언어
자료가 더 필요하세요?
언어별 참고 자료
개발자들이 자신이 선호하는 프로그래밍 언어로 이더리움을 배울 수 있도록 각 언어별 랜딩 페이지를 만들고 있습니다.
- Java 개발자를 위한 이더리움
- Python 개발자를 위한 이더리움
- JavaScript 개발자를 위한 이더리움
- Go 개발자를 위한 이더리움
- Rust 개발자를 위한 이더리움
- .NET 개발자를 위한 이더리움
- 향후 더 많은 내용이 추가될 예정입니다! 원하는 언어를 찾을 수 없으세요? 이슈 생성하기!
개발 도구
이더리움은 개발자들이 애플리케이션을 빌드, 테스트 및 배포하도록 도와 주는 다양한 도구를 갖추고 있으며, 많은 도구가 계속 추가되고 있습니다. 아래에 개발을 시작할 때 가장 인기 있는 도구들이 정리되어 있습니다. 더 자세히 알고 싶으면 이 목록을 참고해 주세요.
프레임워크
트러플(Truffle) - 개발 환경, 테스팅 프레임워크, 빌드 파이프라인 및 기타 각종 개발 도구
엠바크(Embark) - 개발 환경, 테스팅 프레임워크, 이더리움과 통합된 기타 개발 도구, IPFS, Whisper
와플(Waffle) - 고급 스마트 컨트랙트 개발 및 테스트용 프레임워크(ethers.js 기반)
이더라임(Etherlime) - 디앱 개발(솔리디티, 바이퍼), 배포, 디버깅, 테스트 등의 작업을 위한 Ethers.js 기반 프레임워크
기타 개발 도구
Ethereum Grid - 이더리움 클라이언트 및 도구를 다운로드, 설정, 실행할 수 있는 데스크톱 애플리케이션
비들러(Buidler) - 이더리움 스마트 컨트랙트 개발자를 위한 작업 실행기
OpenZeppelin SDK - 궁극적인 스마트 컨트랙트 도구 키트: 스마트 컨트랙트 개발, 컴파일, 업그레이드, 배포, 상호 작용을 지원하는 도구 모음
The Graph - 이더리움 및 IPFS 데이터를 인덱싱하고 GraphQL을 사용하여 쿼리하기 위한 프로토콜
Tenderly - 오류 추적, 경고, 성능 메트릭, 컨트랙트 상세 분석을 통해 스마트 컨트랙트를 간편하게 모니터링할 수 있는 플랫폼
Python Tooling - 파이썬을 통해 이더리움 상호 작용을 구현하기 위한 다양한 라이브러리
Brownie - Python 기반 개발 환경 및 테스트 프레임워크
web3j - 이더리움용 Java/Android/Kotlin/Scala 통합 라이브러리
One Click dApp - ABI에서 직접 프런트 엔드를 생성하여 빠른 개발 및 테스트 지원
자료가 더 필요하세요?
통합 개발 환경 (IDE)
Ethereum Studio - 스마트 컨트랙트로 다양한 실험을 하고 싶은 신규 개발자를 위한 웹 기반 IDE. Ethereum Studio는 다양한 템플릿, MetaMask 통합, 트랜잭션 로거, 브라우저 빌트인 형태의 이더리움 가상 머신(EVM)을 갖추고 있어서 이더리움에 기반한 개발 작업을 아주 빠르게 시작할 수 있습니다.
비주얼 스튜디오 코드(Visual Studio Code) - 공식적으로 이더리움을 지원하는 전문 크로스 플랫폼 통합 개발 환경
리믹스(Remix) - 정적 분석 도구와 테스트용 블록체인 가상 머신이 내장된 웹 기반 통합 개발 환경
이드피들(EthFiddle) - 스마트 컨트랙트의 작성, 컴파일, 디버깅을 지원하는 웹 기반 통합 개발 환경
자료가 더 필요하세요?
프런트 엔드 자바스크립트 API
Web3.js - 이더리움 자바스크립트 API
Ethers.js - 자바스크립트와 타입스크립트로 작성된 완전한 이더리움 지갑 구현체 및 각종 유틸리티
light.js - 경량급 클라이언트에 최적화된 고도의 반응형 자바스크립트 라이브러리
Web3-wrapper - Web3.js의 타입스크립트 버전
자료가 더 필요하세요?
백엔드 API
인퓨라(Infura) - 이더리움 API 서비스
Cloudflare 이더리움 게이트웨이
Nodesmith - 이더리움 메인넷 및 테스트넷에 대한 JSON-RPC API 액세스 도구
Chainstack - 공유 및 전용 이더리움 노드 서비스
스토리지
IPFS - InterPlanetary File System은 이더리움을 위한 분산 스토리지 및 파일 참조 시스템입니다
Swarm - 이더리움 web3 스택을 위한 분산 스토리지 플랫폼 및 콘텐츠 배포 서비스
OrbitDB - IPFS에 기반한 탈중앙화 피어 투 피어(P2P) 데이터베이스
보안 도구
스마트 컨트랙트 보안
Slither - 파이썬3으로 작성된 솔리디티 정적 분석 프레임워크
MythX - 이더리움 스마트 컨트랙트용 보안 분석 API
Mythril - EVM 바이트코드용 보안 분석 도구
SmartContract.Codes - 검증된 솔리디티 소스 코드용 검색 엔진
Manticore - 명령줄 인터페이스를 통해 스마트 컨트랙트 및 바이너리를 분석하는 기호 실행(symbolic execution) 도구
Securify - 이더리움 스마트 컨트랙트용 보안 스캐너
ERC20 Verifier - 컨트랙트가 ERC20 표준에 부합하는지 확인하는 데 사용되는 검증 도구
형식 검증
형식 검증에 대한 참고 자료
- 스마트 컨트랙트에 대한 형식 검증은 어떻게 진행되는가? 2018년 7월 20일 - 브라이언 머릭(Brian Marick)
- 형식 검증을 통해 어떻게 스마트 컨트랙트의 무결성을 보장할 수 있는가? 2018년 1월 29일 - 버나드 뮐러(Bernard Mueller)
자료가 더 필요하세요?
테스트 도구
Solidity-Coverage - 또 다른 솔리디티 도구 커버리지 도구
hevm - 스마트 컨트랙트 유닛 테스트 및 디버깅을 위해 특별히 제작된 EVM
Whiteblock Genesis - 블록체인을 위한 엔드 투 엔드 개발 샌드박스 및 테스팅 플랫폼
추가자료 찾으세요?
블록 탐색기
블록 탐색기는 특정 거래, 블록, 컨트랙트 및 기타 온체인(on-chain) 활동에 대한 정보를 검색하여 이더리움 블록체인(테스트넷 포함)을 탐색할 수 있게 해주는 서비스입니다.
테스트넷과 파우셋(Faucets)
이더리움 커뮤니티는 여러 개의 테스트넷을 관리합니다. 테스트넷은 개발자들이 이더리움 메인넷에 배포하기 전, 애플리케이션을 여러 가지 다른 조건에서 테스트하는 데 사용됩니다.
롭스텐(Ropsten) - 작업 증명(Proof of Work) 블록체인, 테스트 이더 채굴 가능
Rinkeby - 권위 증명(Proof of Authority blockchain) 블록체인, 게스(Geth) 개발팀이 관리함
Goerli - 크로스 클라이언트 권위 증명 블록체인, Goerli 커뮤니티가 구축하고 관리함
클라이언트 및 사용자 자신의 노드 운영하기
이더리움 네트워크는 호환 가능한 클라이언트 소프트웨어를 실행하는 수많은 노드로 구성되어 있습니다. 대부분의 노드는 게스(Geth) 또는 패리티(Parity) 클라이언트를 구동하고 있으며 사용자의 필요에 따라 다양한 방식으로 구성할 수 있습니다.
클라이언트
게스(Geth) - Go로 작성된 이더리움 클라이언트
패리티(Parity) - Rust로 작성된 이더리움 클라이언트
판테온(Pantheon) - Java로 작성된 이더리움 클라이언트
Nethermind - C# .NET Core로 작성된 이더리움 클라이언트
사용자 자신의 노드 운영하기
Ethnode - 로컬 개발 환경을 위한 이더리움 노드(게스 또는 패리티) 운영 도구
이더리움 노드 참고 자료
- 노드 구성 요약 *2019년 1월 5일 - 아프리 쇼든(Afri Schoeden)
자료가 더 필요하세요?
모범 사례, 패턴 및 안티패턴(Anti-patterns)
스마트 컨트랙트
DappSys - 스마트 컨트랙트 개발에 사용할 수 있는 안전하고 단순하며 유연한 스마트 컨트랙트 구성 요소 모음- 개발 문서
- 깃허브(GitHub)OpenZeppelin 컨트랙트 - 보안 스마트 컨트랙트 개발용 라이브러리
- openzeppelin.com/contracts/
- 깃허브(GitHub)
- 커뮤니티 포럼aragonOS - 업그레이드 가능성 및 권한 제어를 위한 패턴
- hack.aragon.org
- 개발 문서스마트 컨트랙트 취약점 레지스트리
- 스마트 컨트랙트 취약점 분류 레지스트리(Smart Contract Weakness Classification Registry, SWC Registry)
- 깃허브(GitHub)
보안
스마트 컨트랙트 보안 모범 사례 가이드- consensys.github.io/smart-contract-best-practices/
- 깃허브(GitHub)
- 보안 권장 사항 모음 및 모범 사례스마트 컨트랙트 보안 검증 표준(SCSVS)
- securing.github.io/SCSVS/자료가 더 필요하세요?
- 이더리움 개발 도구 목록 #패턴-모범사례
개발자 지원 및 교육
일반 학습
이더리움 스택 익스체인지(Ethereum Stack Exchange)- ethereum.stackexchange.comConsenSys Academy - 엔드 투 엔드 이더리움 개발자를 위해 연중 운영되는 자기 주도형 코스
- consensys.academy솔리디티 깃터 채팅방
- gitter.im/ethereum/solidity이더리움 깃터 채팅방
- gitter.im/ethereum/homeChainshot - 웹 기반 디앱 코딩 튜토리얼
- chainshot.comBlockgeeks - 블록체인 기술에 대한 온라인 코스
- courses.blockgeeks.comDappUniversity - 이더리움 블록체인에서 탈중앙화 애플리케이션을 개발하는 방법 교육
- DappUniversity.comB9lab Academy - 가장 오래된 전문 이더리움 디앱 개발자 코스 및 감사인과 QA를 위한 추가 교육 제공. 포함 내용: 멘토링 및 코드 리뷰
- academy.b9lab.com
게임 기반 학습
크립토좀비(Cryptozombies) - 이더리움 기반 게임을 코딩하는 방법 학습- Cryptozombies.ioEthernaut - 레벨에 해당하는 컨트랙트를 해킹하며 진행하는 솔리디티 기반 워게임(가상 전쟁 게임)
- ethernaut.openzeppelin.comCapture the Ether - 이더리움 스마트 컨트랙트 보안 게임
- capturetheether.com
UI/UX 디자인
- Challenge of UX in Ethereum 2018년 6월 25일 - Anna Rose
- Designing for blockchain: what’s different and what’s at stake 2018년 3월 22일 - Sarah Baker MillsRimble UI - 탈중앙화 애플리케이션에 적용 가능한 구성 요소 및 디자인 표준
- rimble.consensys.design
- 깃허브(GitHub)
표준
이더리움 커뮤니티는 개발자에게 도움이 되는 많은 표준을 채택해왔습니다. 일반적으로, 이더리움 개선 제안(Ethereum Improvement Proposals, EIPs)을 통해 표준이 소개되고, 이더리움 커뮤니티의 구성원들이 EIP-1에 정의된 표준 절차에 따라 제안된 내용에 대해 토론합니다.- 이더리움 개선 제안(EIP) 목록
- 이더리움 개선 제안 깃허브 리포지토리
- 이더리움 개선 제안 토론 게시판
- 이더리움 거버넌스 개요 2019년 3월 31일 - 보리스 맨(Boris Mann)
- 이더리움 코어 개발자 회의 재생 목록 (유튜브 재생 목록) 이더리움 개선 제안이 프로토콜 수준이 아닌 애플리케이션 수준의 표준일 경우(예: 스마트 컨트랙트 형식에 대한 표준), 해당 제안은 이더리움 논평 요청서(Ethereum Requests for Comment, ERC)의 형태로 소개됩니다. 많은 ERC 표준이 이더리움 생태계에서 널리 사용되고 있는 핵심적인 표준입니다.
- ERC 목록
- ERC20 - 토큰용 표준 인터페이스
- ERC721 - 대체불가 토큰용 표준 인터페이스