페이지를 마지막으로 업데이트한 날짜: December 4, 2020

개발자용 참고 자료

시작하기

이더리움이 처음인 개발자는 위에서 소개한 참고 자료를 확인해 보세요. 이더리움 커뮤니티에서 작성한 이 가이드에서는 이더리움 스택의 기본적인 사용법을 소개하고 이미 잘 알고 있는 다른 앱 개발과는 다를 수 있는 핵심 개념을 소개합니다.

지금 바로 코딩을 시작해 볼까요? 여기에서 시작해 보세요.

먼저 기본 지식이 더 필요하시나요? 학습용 참고 자료를 확인해 보세요.

유용한 참고 자료

스마트 컨트랙트 언어

이더리움 가상머신(Ethereum Virtual Machine, EVM) 에서 작동되는 프로그램을 흔히 “스마트 컨트랙트(smart contract)”라고 부릅니다. 이더리움을 기반으로 스마트 컨트랙트를 작성하는 데 주로 사용되는 언어로는 솔리디티(Solidity)바이퍼(Vyper)가 있으며 다른 언어들도 개발 중입니다..

솔리디티(Solidity) - 이더리움에서 가장 많이 사용되는 언어로, C++, Python 및 JavaScript에서 아이디어를 얻었습니다.

바이퍼(Vyper) - 보안에 중점을 둔 이더리움 언어로 Python을 기반으로 합니다.

다른 언어를 찾고 계시나요?

언어별 참고 자료

개발자들이 자신이 선호하는 프로그래밍 언어로 이더리움을 배울 수 있도록 각 언어별 랜딩 페이지를 만들고 있습니다.

개발자 도구

이더리움은 개발자가 애플리케이션을 빌드, 테스트 및 배포하도록 도와주는 다양한 도구를 제공하고 있으며 점점 더 많은 도구가 추가되고 있습니다. 아래에는 개발을 시작할 때 가장 많이 사용되는 도구가 나와 있습니다. 자세히 살펴보려면 전체 목록을 확인해 보세요.

프레임워크

트러플(Truffle) - 개발 환경, 테스트 프레임워크, 빌드 파이프라인, 각종 개발 도구

엠바크(Embark) - 개발 환경, 테스트 프레임워크, 이더리움과 통합된 각종 개발 도구, IPFS, Whisper

와플(Waffle) - 고급 스마트 컨트랙트 개발 및 테스트용 프레임워크(ethers.js 기반)

이더라임(Etherlime) - 디앱 개발(솔리디티 및 바이퍼), 배포, 디버깅, 테스트 등에 적합한 Ethers.js 기반 프레임워크

기타 개발 도구

비들러(Hardhat) - 이더리움 스마트 컨트랙트 개발자를 위한 작업 자동화 도구

오픈제플린 SDK(OpenZeppelin SDK) - 궁극적인 스마트 컨트랙트 툴킷: 스마트 컨트랙트의 개발, 컴파일, 업그레이드, 배포, 상호 작용을 지원하는 도구 모음

더 그래프(The Graph) - 이더리움 및 IPFS 데이터를 인덱싱하고 GraphQL을 사용하여 쿼리하기 위한 프로토콜

텐더리(Tenderly) - 오류 추적, 경고, 성능 메트릭, 컨트랙트 상세 분석을 통해 스마트 컨트랙트를 간편하게 모니터링할 수 있는 플랫폼

파이썬 툴링(Python Tooling) - Python을 통해 이더리움 상호 작용을 구현하기 위한 다양한 라이브러리

브라우니(Brownie) - Python 기반의 개발 환경 및 테스트 프레임워크

web3j - 이더리움의 Java/Android/Kotlin/Scala 통합 라이브러리

원 클릭 댑(One Click Dapp) - ABI에서 직접 프런트엔드를 생성하여 빠른 개발 및 테스트 지원

다른 언어를 찾고 계시나요?

통합 개발 환경(IDE)

이더리움 스튜디오(Ethereum Studio) - 스마트 컨트랙트를 실험해 보려는 신규 개발자를 위한 웹 기반 IDE. 이더리움 스튜디오(Ethereum Studio) 에는 다양한 템플릿, 메타마스크(MetaMask) 통합, 트랜잭션 로거, 브라우저 빌트인 형태의 이더리움 가상머신(Ethereum Virtual Machine, EVM) 이 포함되어 있어 이더리움에 기반한 개발 작업 시간을 최대한 단축할 수 있습니다.

비쥬얼 스튜디오 코드(Visual Studio Code) - 공식적으로 이더리움을 지원하는 전문 크로스 플랫폼 통합 개발 환경(IDE)

리믹스(Remix) - 정적 분석 도구와 테스트용 블록체인 가상 머신을 포함하는 웹 기반 통합 개발 환경(IDE)

이드피들(EthFiddle) - 스마트 컨트랙트의 작성, 컴파일, 디버깅을 지원하는 웹 기반 통합 개발 환경(IDE)

다른 언어를 찾고 계시나요?

프런트엔드 JavaScript API

Web3.js - 이더리움 JavaScript API

Ethers.js - JavaScript와 TypeScript로 작성된 완전한 이더리움 지갑 구현체 및 각종 유틸리티

light.js - 경량급 클라이언트에 최적화된 고도의 반응형 JavaScript 라이브러리

Web3-wrapper - Web3.js의 Typescript 버전

다른 언어를 찾고 계시나요?

백엔드 API

인퓨라(Infura) - 서비스로 제공되는 이더리움 API

클라우드플레어 이더리움 게이트웨이(Cloudflare Ethereum Gateway)

노드스미스(Nodesmith) - 이더리움 메인넷 및 테스트넷에 대한 JSON-RPC API 액세스 도구

체인스택(Chainstack) - 서비스로 제공되는 공유 및 전용 이더리움 노드

스토리지

IPFS - InterPlanetary File System을 나타내며 이더리움을 위한 분산 스토리지 및 파일 참조 시스템입니다.

스웜(Swarm) - 이더리움 web3 스택을 위한 분산 스토리지 플랫폼 및 콘텐츠 배포 서비스

오르빗DB(OrbitDB) - IPFS에 기반한 탈중앙화 P2P 데이터베이스

보안 도구

스마트 컨트랙트 보안

슬리터(Slither) - Python 3로 작성된 솔리디티 정적 분석 프레임워크

미스엑스(MythX) - 이더리움 스마트 컨트랙트를 위한 보안 분석 API

미스릴(Mythril) - EVM 바이트코드용 보안 분석 도구

SmartContract.Codes - 검증된 솔리디티 소스 코드용 검색 엔진

만티코어(Manticore) - 명령줄 인터페이스를 통해 스마트 컨트랙트 및 바이너리를 분석하는 기호화된 실행 도구

시큐리파이(Securify) - 이더리움 스마트 컨트랙트의 취약점을 탐지하는 보안 스캐너

ERC20 검증 도구(ERC20 Verifier) - 컨트랙트가 ERC20 표준을 준수하는지 여부를 확인하는 데 사용되는 검증 도구

형식 검증

형식 검증 정보

다른 언어를 찾고 계시나요?

테스트 도구

솔리디티 커버리지(Solidity-Coverage) - 또 다른 솔리디티 코드 범위 도구

hevm - 스마트 컨트랙트의 유닛 테스트 및 디버깅을 위해 특별히 제작된 EVM

화이트블록 제네시스(Whiteblock Genesis) - 블록체인을 위한 엔드 투 엔드 개발 샌드박스 및 테스트 플랫폼

다른 언어를 찾고 계시나요?

블록 탐색기

블록 탐색기는 특정 거래, 블록, 컨트랙트 및 기타 온체인(on-chain) 활동에 대한 정보를 검색하여 이더리움 블록체인(테스트넷 포함)을 탐색할 수 있게 해주는 서비스입니다.

테스트넷과 파우셋(Faucets)

이더리움 커뮤니티는 여러 개의 테스트넷을 관리합니다. 테스트넷은 개발자들이 이더리움 메인넷에 배포하기 전에 애플리케이션을 여러 가지 다른 조건에서 테스트하는 데 사용됩니다.

롭스텐(Ropsten) - 작업 증명(Proof of Work) 블록체인, 테스트 이더 채굴 가능

린케비(Rinkeby) - 권한 증명(Proof of Authority) 블록체인, 게스(Geth) 개발팀에서 관리

괴를리(Goerli) - 크로스 클라이언트 권한 증명 블록체인, 고얼리 커뮤니티에서 만들고 관리

클라이언트 및 사용자 노드 실행하기

이더리움 네트워크는 호환 가능한 클라이언트 소프트웨어를 실행하는 수많은 노드로 구성되어 있습니다. 대부분의 노드는 게스(Geth) 또는 패리티(Parity) 클라이언트를 실행하고 있으며 필요에 따라 다양한 방식으로 구성할 수 있습니다.

클라이언트

게스(Geth) - Go로 작성된 이더리움 클라이언트

패리티(Parity) - Rust로 작성된 이더리움 클라이언트

판테온(Pantheon) - Java로 작성된 이더리움 클라이언트

네더마인드(Nethermind) - C# .NET Core로 작성된 이더리움 클라이언트

사용자 노드 실행하기

이드노드(Ethnode) - 로컬 개발을 위한 이더리움 노드(게스 또는 패리티) 실행 도구

이더리움 노드 참고 자료

다른 언어를 찾고 계시나요?

모범 사례, 패턴 및 안티패턴

스마트 컨트랙트

댑시스(DappSys) - 스마트 컨트랙트 개발에 사용할 수 있는 안전하고 단순하며 유연한 구성 요소 모음

오픈제플린(OpenZeppelin) 컨트랙트 - 안전한 스마트 컨트랙트 개발을 위한 라이브러리

아라곤OS(aragonOS) - 업그레이드와 권한 제어를 위한 패턴

스마트 컨트랙트 취약점 레지스트리

보안

스마트 컨트랙트 보안 모범 사례 가이드

스마트 컨트랙트 보안 검증 표준(SCSVS)

다른 언어를 찾고 계시나요?

개발자 지원 및 교육

일반 학습

이더리움 스택 익스체인지(Ethereum Stack Exchange)

컨센시스 아카데미(ConsenSys Academy) - 엔드 투 엔드 이더리움 개발자를 위해 연중 운영되는 자기 주도형 코스

솔리디티 Gitter 채팅방

모든 이더리움 Gitter 채팅방

체인샷(Chainshot) - 웹 기반 디앱 코딩 튜토리얼

블록긱스(Blockgeeks) - 블록체인 기술 온라인 코스

댑 유니버시티(DappUniversity) - 이더리움 블록체인에서 탈중앙화 애플리케이션을 개발하는 방법 교육

B9lab Academy - 가장 오래된 전문 이더리움 디앱 개발자 코스 및 감사관과 QA를 위한 추가 교육 제공(멘토링 및 코드 리뷰 포함)

게임 기반 학습

크립토좀비(Cryptozombies) - 이더리움 기반으로 게임 코딩하는 방법 학습

이더넛(Ethernaut) - 컨트랙트를 해킹하면서 레벨업하는 솔리디티 기반의 워게임(wargame)

이더 캡처 - 이더리움 스마트 컨트랙트 보안 게임

UI/UX 디자인

Rimble UI - 탈중앙화 애플리케이션에 적용 가능한 구성 요소 및 디자인 표준

표준

이더리움 커뮤니티는 개발자에게 도움이 되는 많은 표준을 채택해왔습니다. 일반적으로 이더리움 개선 제안(Ethereum Improvement Proposals, EIP)을 통해 표준이 소개되고, 이더리움 커뮤니티의 구성원들이 EIP-1에 정의된 표준 절차에 따라 제안된 내용에 대해 토론합니다.

이더리움 개선 제안(EIP)이 애플리케이션 수준의 표준(예: 스마트 컨트랙트 형식에 대한 표준)일 경우 해당 제안은 이더리움 논평 요청(Ethereum Requests for Comment, ERC)의 형태로 소개됩니다. 많은 ERC 표준이 이더리움 생태계에서 널리 사용되고 있는 핵심적인 표준입니다.