Skip to content

Latest commit

 

History

History
324 lines (312 loc) · 38.5 KB

README_Korean.md

File metadata and controls

324 lines (312 loc) · 38.5 KB

이더리움 개발자 도구 리스트(Ethereum Developer Tools List)

이더리움 위에서 개발 어플리케이션을 위한 도구와 컴포넌트(components), 패턴(patterns), 플랫폼(platforms)의 사용 가이드 입니다.

신입과 경력있는 블록체인 개발자들 사이에서 도구와 개발 패턴, 컴포넌트의 더 좋은 공유를 원하는 컨센시스(ConsenSys)의 프로덕트 매니저에 의해 이 리스트가 만들어졌습니다.

이 자료는 개발자 툴에 집중하는 것뿐만 아니라, 유용한 탈중앙화 어플리케이션(DApps)과 교육적인 자료, 지갑, 서비스를 위한 이더리움 생태계 자료들(Ethereum Ecosystem Resources)도 포함되어 있습니다.

기여자들(Contributions)을 환영합니다!

작은 수정에서 부터 추가(삭제)하려는 툴까지 어느 것이든 자유롭게 풀리퀘스트(pull request)를 해주세요. 만약에 새로운 툴을 추가하면, 당신이 생각하기에 새로운 개발자들이 이해할 수 있도록 간략한 설명을 적어주세요

Meridio를 설립한 @corbpage, 확장과 큐레이팅을 한 @pakaplace, 그리고 좀 더 논리적인 방법으로 리스트를 재구축한 @jpantunes 를 포함해 20명이 넘는 기여자들에게 감사를 표합니다.

  • 작동하지 않는 제품의 프로젝트는 추가할 수 없습니다.
  • 더 이상 사용되지 않거나 유지되지 않는 프로젝트는 제거 되게 됩니다.
  • 오픈소스 코드가 아니거나 개발자 리뷰가 없는 유료/제한 서비스 프로젝트들은 추가로 조사될 것 입니다.

^위 내용이 타당하죠? 당신의 생각을 말해주세요 - Consensys#70

목차

신입 개발자는 여기서부터 시작

  • 솔리디티(Solidity) - 가장 유명한 스마트 컨트렉트 언어입니다.
  • 트러플(Truffle) - 가장 유명한 스마트 컨트렉트 개발, 테스팅, 배포(deployment) 프레임워크 입니다. npm에서 cli를 설치하고 당신의 첫번째 스마트 컨트렉트를 작성하세요.
  • 메타마스크(Metamask) - 크롬 확장 지갑으로 탈중앙화 어플리케이션과 작동합니다.
  • 트러플 박스(Truffle boxes) - 이더리움 생태계를 위한 패키지 컴포넌트 입니다.

개발 도구

스마트 컨트렉트 개발

스마트 컨트렉트 언어

  • 솔리디티(Solidity)- 이더리움 스마트 컨트렉트 언어 입니다.
  • 밤부(Bamboo) - 모핑 스마트 컨트렉트 언어 입니다.
  • 바이퍼(Vyper) - 새롭게 시도되는 파이썬 프로그래밍 언어 입니다.
  • LLL - Low-level Lisp-like Language, 저수준 프로그래밍 언어 입니다.
  • Flint - 자산 유형(asset types)과 상태 변환(state transition), 안전한 정수(safe integers)를 포함하고 보안 기능을 고려해 개발 중인 새로운 언어 입니다.

프레임워크

  • 트러플(Truffle) - 가장 유명한 스마트 컨트렉트 개발, 테스팅, 배포 프레임워크 입니다. 트러플 세트(suite)는 트러플과 가나쉬(Ganache), 드리즐(Drizzle)이 포함되어 있습니다. 트러플에 대한 보충설명
  • 엠바크(Embark) - 탈중앙화 어플리케이션 개발을 위한 프레임워크 입니다.
  • Dapp - DApple의 뒤를 잇는 탈중앙화 어플리케이션 개발 프레임 워크 입니다.
  • 팝풀러스(Populus) - 가장 귀여운 동물 사진들과 함께하는 이더리움 개발 프레임워크 입니다.
  • 이더라임(Etherlime) - ethers.js를 기반으로 한 탈중앙화 어플리케이션 개발 프레임워크 입니다.
  • Parasol - 테스팅과 인퓨라(INFURA) 배포, 자동 컨트렉트 문서 등 애자일(Agile)방식의 스마트 컨트렉트 개발 환경 입니다. 자유로운 사용자 정의(unlimited customizability)와 남을 생각하는(unopinionated) 디자인, 융통성(flexible) 있는 기능이 있습니다.

통합 개발 환경

블록체인 테스트 네트워크

테스트 이더 파우셋(faucets)

이더리움과 정보 전달

이더리움 프론트엔드 API

이더리움 백엔드 API

  • Web3.py- 파이썬 웹3 입니다.
  • Web3.php - PHP 웹3 입니다.
  • Ethereum-php - PHP 웹3 입니다.
  • Web3j - 자바 웹3 입니다.
  • Nethereum - 닷넷 웹3 입니다.
  • Ethereum.rb - 루비 웹3 입니다.
  • Web3.hs - 하스켈(Haskell) 웹3 입니다.
  • KEthereum - 코틀린(Kotlin) 웹3 입니다.
  • Pyethereum - 이더리움 프로젝트의 파이썬 코어 라이브러리 입니다.
  • Eventeum - 이더리움 스마트 컨트렉트 이벤트와 백엔드 마이크로서비스를 연결 합니다. Kauri가 자바로 작성했습니다.
  • Ethereumex - 이더리움 블록체인을 위한 엘릭서(Elixir) JSON-RPC 클라이언트 입니다.
  • EthContract - 엘릭서(Elixir) 언어로 된 이더리움 스마트 컨트렉트 쿼리를 도와주는 헬퍼 메소드(helper methods) 세트 입니다.

부트스트랩(Bootstrap) / 실행(out of box) 도구

이더리움 ABI(Application Binary Interface) 도구

  • ABI 디코더(decoder) - 이더리움 거래(transactions)의 데이터 매개변수 디코딩과 이벤트를 위한 라이브러리
  • ABI-gen - 컨트렉트 ABI의 타입스크립트 컨트렉트 래퍼(wrappers)를 생성합니다.
  • 이더리움 ABI UI - 이더리움 컨트렉트 ABI의 필드 정의와 관련 발리데이터(validators) UI를 자동 생성 합니다.
  • headlong - 프로그램의 동작이 잘 정의된(type-safe) 컨트렉트 ABI와 자바 언어로 된 RLP(Recursive Length Prefix) 라이브러리 입니다.
  • Truffle Pig - 로컬로 개발할때 사용하도록, 간단한 HTTP API를 찾거나 트러플에서 생성된 컨트렉트 파일을 읽는 개발 툴 입니다. http를 통해 최신 컨트렉트 ABI를 제공합니다.

패턴 & 모범 사례(Best Practices)

스마트 컨트렉트 개발을 위한 패턴
고급과정(Upgradebility)

기반시설

이더리움 클라이언트

저장소

  • IPFS - 탈중앙화 된 저장소와 파일 레퍼런스(referencing) 입니다.
    • IPFS-Store - 검색 기능이 포함된 IPFS 저장소 서비스
    • OrbitDB - IPFS의 최상단 탈중앙화 된 데이터베이스
    • JS IPFS API - IPFS HTTP API를 위한 클라이언트 라이브러리, 자바스크립트로 실행
    • TEMPORAL - 다른 분산화/탈중앙화 저장소 프로토콜과 IPFS로 들어오는 API를 쉽게 이용
  • 스웜(Swarm) - 분산화 된 저장소 플랫폼과 컨텐츠 분산 서비스, 이더리움 웹3 스택(stack)의 네이티브(native) 기초 계층 서비스 입니다.

메세징

테스팅 도구

보안 도구

모니터링

그 밖에 다양한 도구

  • 트러플 박스(Truffle boxes) - 탈중앙화 어플리케이션을 빠르게 만들기 위한 패키지 컴포넌트 입니다.
    • 쳬셔(Cheshire) - 크립토키티(CryptoKitties) API와 스마트 컨트렉트의 로컬 샌드박스 도구이며, 트러플 박스로 이용 가능합니다.
  • Solc - 솔리디티 컴파일러 입니다.
  • 솔컴파일러(Sol-compiler) - 프로젝트 단계의 솔리디티 컴파일러 입니다.
  • Solidity cli - 솔리디티 코드를 빠르고 쉽고, 더 믿을 수 있게 컴파일 합니다.
  • Solidity flattener - 솔리디티 프로젝트와 단층 파일(flat file) 유틸리티를 합쳐줍니다. 이더스캔(Etherscan)에서 컨트렉트 인증하거나 임포트(imported) 된 컨트렉트 시각화에 유용합니다.
  • RLP - 자바스크립트의 RLP(Recursive Length Prefix) 인코딩 입니다.
  • eth-cli - 이더리움 학습과 개발을 도와주는 CLI 도구 모음집 입니다.
  • 이더리얼(Ethereal) - 이더리얼은 이더리움에서 일반 작업 관리를 위한 커멘드 라인 도구 입니다.
  • Eth crypto - web3js와 솔리디티를 사용하는 튜토리얼과 이더리움을 위한 암호적(Cryptographic) 자바스크립트 함수 입니다.
  • 패리티 싸이너(Parity Signer) - 서명(signing) 거래를 모바일 어플리케이션으로 가능하게 합니다.
  • py-eth - 이더리움 생태계를 위한 파이썬 도구들 모음 입니다.
  • truffle-flattener - 트러플에서 개발 중인 솔리디티 파일의 의존성(dependencies)을 연결(concats)해 줍니다.
  • 디코드(Decode) - 읽을 수 있고 쉽게 이해할 수 있도록 로컬 testrpc 노드에서 제출된 거래를 분석하는 npm 패키지 입니다.
  • 타입체인(TypeChain) - 이더리움 스마트 컨트렉트를 위한 타입스크립트 바인딩(bindings) 입니다.
  • EthSum - 간단하게 이더리움 주소를 검사합(Checksum)하는 도구 입니다.
  • PHP를 기반 블록체인 인덱서(PHP based Blockchain indexer) - PHP에서 이벤트 리스닝 또는 블록 인덱싱 해 줍니다.
  • Purser - 이더리움 기반 지갑을 위한 자바스크립트 통합 지갑 도구입니다. 소프트웨어, 하드웨어, 메타마스크를 지원합니다. 탈중앙화 어플리케이션 개발을 위해 모든 지갑을 일관되고 예측 가능한 인터페이스로 가져옵니다.
  • Node-Metamask - node.js로 부터 메타마스크를 연결 합니다.

스마트 컨트렉트 표준 & 라이브러리

ERCs - 이더리움 주석 요청(Ethereum Request for Comment) 저장소

  • 토큰들
    • ERC-20 - 대체 가능 자산(fungible assets)의 토큰 컨트렉트 입니다.
    • ERC-721 - 대체 불가 자산(non-fungible assets) 토큰 기준 입니다.
    • ERC-918 - 채굴 가능한(Mineable) 토큰 기준 입니다.
  • ERC-165 - 스마트 컨트렉트 도구 인터페이스 확인(detect)과 발행(publish)를 표준 방법으로 생성 합니다.
  • ERC-725 - 키 관리와 실행, 블록체인 아이덴티 구축을 위한 프록시 컨트렉트 입니다.
  • ERC-173 - 컨트렉트의 소유권(ownership)을 위한 표준 인터페이스 입니다.

인기있는 스마트 컨트렉트 라이브러리

2번째 계층 구조(Infrastructure)를 위한 개발자 가이드

확장성(Scalability)

결제/상태 채널(Payment/State Channels)

플라즈마(Plasma)

  • Learn Plasma - 코넬 대학교(Cornell University)에서 시작한 2018 IC3-Ethereum Crypto Boot Camp의 노드 어플리케이션 웹사이트로, 다양한(MVP/Cash/Debit) 플라즈마를 모두 포함합니다.
  • 플라즈마 MVP - 오미세고(OmiseGO)의 최소 실행 가능한 플라즈마의 연구 구현물 입니다.
  • 플라즈마 MVP 고랭(Golang) - 최소 실행 가능한 플라즈마 규격 확장과 고랭 구현물 입니다.
  • 플라즈마 캐시(Cash) - 간단한 플라즈마 캐시 구현물 입니다.

사이드체인

프라이버시

zkSNARKs
  • ZoKrates - 이더리움에서 zkSNARKS을 위한 툴박스 입니다.