마지막으로 업데이트 된 페이지: 3월 06, 2020
↳ 개발자 리소스
↳ 시작하면서
만약 당신이 이더리움을 처음 개발해보신다면, 여기 제대로 찾아오셨습니다. 이더리움 커뮤니티에 의해 쓰여진 이 가이드들은 이더리움 기술 스택에 대한 기초부터 기존의 앱 개발과는 다를지도 모르는 새로운 개념들을 소개해 줄 거에요.
좀 더 준비운동이 필요하시다고요? 그럼 ethereum.org/ko/learn로 들어와 주세요.
- 이더리움 쫓아가기 Aug 7, 2017 - Matt Condon
- 이더리움 In Depth, 파트 1 May 11, 2018 - Facu Spagnuolo
- 이더리움 In Depth, 파트 2 May 11, 2018 - Facu Spagnuolo
- 이더리움 개발 연습, 파트 1-5 Jan 14, 2018 - dev_zl
- 이더리움 101, Parts 1-7 Feb 13, 2019 - Wil Barnes
- 풀스택 Hello World 투표 이더리움 Dapp 튜토리얼 Jan 18, 2017 - Mahesh Murthy
- 마스터링 이더리움 - 온라인으로 무료로 제공되는 포괄적인 교과서 Dec 1, 2018 - Andreas Antonopoulos & Gavin Wood
- 이더리움 개발자 포탈 - 이더리움 개발을 시작할 때 필요한 모든 것 Updated often - ConsenSys
- 솔리디티 컨트랙트를 해부해보면서 Aug 13, 2018 - Alejandro Santander & Leo Arias
- 풀스택 Dapp 튜토리얼 시리즈 Updated Often - Joshua Cassidy
↳ 스마트 컨트랙트 언어들
이더리움 가상 머신(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) 이더리움 스마트 컨트렉트를 위한 보안 스캐너
↳ 형식 검증에 대한 추가 정보
- 스마트 컨트랙트에서는 어떻게 형식 검증을 진행하는가? 2018년 7월 20일 - 브라이언 머릭(Brian Marick)
- 어떻게 형식 검증을 통해 스마트 컨트랙트의 무결성을 보장할 수 있을까? 2018년 1월 29일 - 버나드 뮐러(Bernard Mueller)
↳ 추가자료 찾으세요?
↳ 테스트 도구
↳ 솔리디티 커버리지(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) 로컬 개발 환경을 위한 이더리움 노드(게스 또는 패리티) 구동 도구
↳ 이더리움 노드 자료
- 노드 구성 요약 2019년 1월 5일 - 아프리 쇼든(Afri Schoeden)
↳ 추가자료 찾으세요?
↳ 모범 사례, 패턴 및 안티 패턴(Anti-patterns)
↳ 댑시스(DappSys) 스마트 컨트랙트 개발에 사용할 수 있는 안전하고 단순 유연한 솔리디티 조각모음
↳ 오픈제플린(OpenZeppelin) 안전한 스마트 컨트랙트 개발을 위한 라이브러리
↳ 아라곤OS(aragonOS) 업그레이드와 권한 제어를 위한 패턴
↳ 스마트 컨트랙트 취약점 레지스트리(Registry)
↳ 스마트 컨트랙트 보안 모범 사례 가이드
↳ 추가자료 찾으세요?
↳ 개발자 지원 & 훈련
↳ 이더리움 스택익스체인지(Ethereum Stackexchange)
↳ 솔리디티 깃터 채팅방
↳ 이더리움 깃터 채팅방
↳ 크립토좀비(Cryptozombies) 이더리움 위에서 게임으로 코드를 배우세요
↳ 체인샷(Chainshot) 웹 기반 탈중앙애플리케이션 코딩 튜토리얼
↳ 블록긱스(Blockgeeks) 블록체인 기술 온라인 코스
↳ 댑 유니버시티(DappUniversity) 이더리움상에서의 탈중앙화 애플리케이션 개발을 배우세요
↳ 이더넛(Ethernaut) 컨트랙트를 해킹해가며 레벨업하는 솔리디티 기반의 워게임(wargame)
↳ UI/UX
- 이더리움이 마주하고 있는 UX 문제들 2018년 6월 25일 - 안나 로즈(Anna Rose)
- 블록체인을 위한 디자인: 무엇이 다르고 무엇이 문제인가? 2018년 3월 22일 - 사라 베이커 밀스(Sara Baker Mills)
↳ 표준(Standards)
이더리움 커뮤니티는 개발자에게 도움이 되는 많은 표준을 채택해왔습니다. 일반적으로 표준들은 이더리움 개선 제안(Ethereum Improvement Proposals, EIPs)을 통해 소개되고, 이더리움 커뮤니티의 구성원들은 EIP-1에 정의된 표준 절차에 따라 제안된 내용에 대해 토론합니다.
- 이더리움개선제안(EIP) 목록
- 이더리움 개선제안 깃허브 레포지토리
- 이더리움 개선제안 토론 게시판
- 이더리움 거버넌스 개요 2019년 3월 31일 - 보리스 맨(Boris Mann)
- 이더리움 코어 개발자 회의 플레이리스트 (유튜브 재생 목록) 이더리움개선제안이 프로토콜-수준보다는 애플리케이션-수준의 표준일 경우(예: 스마트 컨트렉트 형식에 대한 표준), 해당 제안들은 이더리움 논평 요청서(Ethereum Requests for Comment, ERC)라는 이름으로 소개됩니다. 많은 ERC 표준들이 이더리움 생태계에서 널리 사용되는 핵심적인 표준입니다.
- ERCs 리스트
- ERC20 - 토큰을 위한 표준 인터페이스
- ERC721 - 대체불가능(non-fungible) 토큰을 위한 표준 인터페이스