개발자 리소스

시작하면서

만약 당신이 이더리움을 처음 개발해보신다면, 여기 제대로 찾아오셨습니다. 이더리움 커뮤니티에 의해 쓰여진 이 가이드들은 이더리움 기술 스택에 대한 기초부터 기존의 앱 개발과는 다를지도 모르는 새로운 개념들을 소개해 줄 거에요.

좀 더 준비운동이 필요하시다고요? 그럼 smilo.foundation/ko/learn로 들어와 주세요.

스마트 컨트랙트 언어들

이더리움 가상 머신(EVM)에서 작동되는 프로그램들은 흔히 "스마트 컨트랙트(smart contract)"라고 불립니다. 이더리움 위에서 쓰여지는 스마트 컨트랙트 언어로는 Solidity(솔리디티)Vyper(바이퍼) 가 있지만, 다른 언어들도 매우 활발하게 개발되고 있습니다.

솔리디티(Solidity): C++, 파이썬(Python), 자바스크립트(Javascript) 로부터 영감을 얻은 이더리움에서 가장 인기 있는 언어

바이퍼(Vyper) 파이썬 기반으로 보안에 집중한 이더리움 개발 언어

추가자료 찾으세요?

개발자 도구

이더리움은 개발자들이 애플리케이션을 빌드, 테스트 및 배포하는 것을 도와줄 수 있는 다양한 도구를 가지고 있고 또 많은 도구가 계속 생겨나고 있습니다. 아래는 개발을 시작할 때 가장 인기 있는 도구들을 모아놓은 것들입니다. 더 깊게 알고 싶다면 이 목록을 참고해 주세요.

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

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

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

이더라임(Etherlime) 탈중앙애플리케이션의 개발(솔리디티, 바이퍼), 배포, 디버깅, 테스트 등을 위한 Ethers.js 기반의 개발 프레임워크

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

제플린OS(ZeppelinOS) 업그레이드 가능한 스마트 컨트랙트 개발 및 컨트랙트의 안전한 관리를 위한 개발 프레임워크

추가자료 찾으세요?

통합 개발 환경 (IDEs)

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

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

슈퍼블록스(Superblocks) 웹 기반 통합개발환경으로 브라우저 빌트인 형태의 블록체인 가상머신, 메타마스트(MetaMask) 통합, 전송 로그 기록 등의 다양한 기능을 포함

이드피들(EthFiddle) 스마트 컨트랙트를 작성하고 컴파일하고 다른 사람들에게 알릴 수 있는 웹 기반 통합개발환경

추가자료 찾으세요?

프론트엔드 자바스크립트 API

Web3.js 이더리움 자바스크립트 API

Ethers.js 자바스크립트와 타입스크립트로 짜여진 완전한 이더리움 지갑 구현체와 각종 유틸리티 도구들

light.js 라이트 클라이언트에 최적화된 고수준 반응형 자바스크립트 라이브러리

Web3-wrapper Web3.js의 타입스크립트 버전

추가자료 찾으세요?

백엔드 API

인퓨라(Infura) 이더리움 API 서비스(AaaS, API as a Service)

보안 도구

스릿터(Slither) 파이썬3으로 작성된 솔리디티 정적분석 프레임워크

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

만티코어(Manticore) 스마트 컨트렉트 및 바이너리에 대한 기호 실행(Symbolic Execution) 명령줄 도구

시큐리파이(Securify) 이더리움 스마트 컨트렉트를 위한 보안 스캐너

형식 검증에 대한 추가 정보

추가자료 찾으세요?

테스트 도구

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

hevm 유닛 테스트 및 스마트 컨트랙트 디버깅을 위해 특별히 만들어진 EVM

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

추가자료 찾으세요?

블록 탐색기

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

테스트넷과 파우셋(Faucets)

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

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

링크비(Rinkeby) 권한 증명(Proof of Authority) 블록체인, 게스(Geth) 개발팀에 의해 유지

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

클라이언트 & 나만의 노드를 직접 운영하기

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

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

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

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

이더리움 노드 자료

추가자료 찾으세요?

모범 사례, 패턴 및 안티 패턴(Anti-patterns)

댑시스(DappSys) 스마트 컨트랙트 개발에 사용할 수 있는 안전하고 단순 유연한 솔리디티 조각모음

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

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

스마트 컨트랙트 취약점 레지스트리(Registry)

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

추가자료 찾으세요?

개발자 지원 & 훈련

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

솔리디티 깃터 채팅방

이더리움 깃터 채팅방

크립토좀비(Cryptozombies) 이더리움 위에서 게임으로 코드를 배우세요

체인샷(Chainshot) 웹 기반 탈중앙애플리케이션 코딩 튜토리얼

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

댑 유니버시티(DappUniversity) 이더리움상에서의 탈중앙화 애플리케이션 개발을 배우세요

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

UI/UX

표준(Standards)

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