Skip to content

Latest commit

 

History

History
383 lines (371 loc) · 48 KB

README_Korean.md

File metadata and controls

383 lines (371 loc) · 48 KB

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

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

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

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

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

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

@corbpage메리디오(Meridio)를 큐레이팅하고 있는 @pakaplace 그리고 좀 더 논리적인 방법으로 리스트를 재구축한 @jpantunes 를 포함해 100명이 넘는 기여자들에게 감사를 표합니다.

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

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

목차

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

  • 솔리디티(Solidity) - 가장 유명한 스마트 컨트렉트 언어입니다.
  • 트러플(Truffle) - 가장 유명한 스마트 컨트렉트 개발, 테스팅, 배포(deployment) 프레임워크 입니다. npm에서 cli를 설치하고 당신의 첫번째 스마트 컨트렉트를 작성하세요.
  • 메타마스크(Metamask) - 크롬 확장 지갑으로 탈중앙화 어플리케이션과 작동합니다.
  • 트러플 박스(Truffle boxes) - 이더리움 생태계를 위한 패키지 컴포넌트 입니다.
  • EthHub.io - 이더리움의 개요 (역사, 거버넌스, 향후 계획, 개발 리소스)가 있는 종합적인 크라우드 소스(crowdsourced)입니다.
  • dfuse - 매끄러운 블록 체인 API로 세계적 수준의 애플리케이션을 구축하십시오.

개발 도구

스마트 컨트렉트 개발

스마트 컨트렉트 언어

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

프레임워크

  • 트러플(Truffle) - 가장 유명한 스마트 컨트렉트 개발, 테스팅, 배포 프레임워크 입니다. 트러플 세트(suite)는 트러플과 가나쉬(Ganache), 드리즐(Drizzle)이 포함되어 있습니다. 트러플에 대한 보충설명
  • 엠바크(Embark) - 탈중앙화 어플리케이션 개발을 위한 프레임워크 입니다.
  • 와플(Waffle) - 진화한 스마트 컨트렉트 개발, 테스팅을 위한 프레임워크 입니다. ethers.js를 기반으로 작고 유연하며 빠릅니다.
  • Dapp - DApple의 뒤를 잇는 탈중앙화 어플리케이션 개발 프레임 워크 입니다.
  • 팝풀러스(Populus) - 가장 귀여운 동물 사진들과 함께하는 이더리움 개발 프레임워크 입니다.
  • 이더라임(Etherlime) - ethers.js를 기반으로 한 탈중앙화 어플리케이션 개발 프레임워크 입니다.
  • Parasol - 테스팅과 인퓨라(INFURA) 배포, 자동 컨트렉트 문서 등 애자일(Agile)방식의 스마트 컨트렉트 개발 환경 입니다. 자유로운 사용자 정의(unlimited customizability)와 남을 생각하는(unopinionated) 디자인, 융통성(flexible) 있는 기능이 있습니다.
  • 0xcert - 탈중앙화 어플리케이션 제작을 위한 자바스크립트 프레임워크 입니다.
  • EVMTools - 웹3 및 솔리디티 개발자를 위한 EVM 도구 모음, 모든 개발 도구를 한 곳에서. 20개 이상의 유틸리티가 있으며, 더 많은 유틸리티가 자주 추가됩니다.

통합 개발 환경

블록체인 테스트 네트워크

  • 가나쉬(Ganache) - 시각적인 UI와 로그들을 보여주는 테스트 이더리움 블록체인 어플리케이션 입니다.
  • 칼레이도(Kaleido) - 컨소시엄(consortium) 블록체인 네트워크를 돌릴때 사용하세요. 개념증명들(PoCs)과 테스팅에 좋습니다.
  • Pantheon Private Network - 도커(Docker) 컨테이너 안에서 판테온(Pantheon) 노드의 프라이빗 네트워크를 사용할 수 있습니다. ** Orion - 페가시스(PegaSys)의 프라이빗 거래 수행을 위한 컴포넌트 입니다. ** Artemis - 페가시스(PegaSys)의 이더리움 2.0 비콘 체인의 자바 구현물 입니다.
  • 클리끄베이트(Cliquebait) - 실제 블록체인 네트워크와 유사한 도커(docker) 인스턴스를 사용해 스마트 컨트렉트 어플리케이션을 통합(integration)하고 테스팅을 합니다.
  • 로컬 라이덴(Local Raiden) - 데모(demo)와 테스트 목적으로 도커 컨테이너에서 로컬 라이덴 네트워크를 실행하세요.
  • 개인 네트워크 배포 스크립트(Private networks deployment scripts) - 개인 권위증명(PoA) 네트워크를 위한 배포 스크립트를 실행(Out-of-the-box) 합니다.
  • 로컬 이더리움 네트워크(Local Ethereum Network) - 개인 작업증명(PoW) 네트워크를 위한 배포 스크립트로 실행 합니다.
  • Ethereum on Azure - 이더리움 PoA 네트워크 컨소시엄의 거버넌스와 배포 네트워크 입니다.
  • getho - PoA 방식의 프라이빗 블록체인과 스마트 컨트렉트 테스팅 툴이 있는 DApp 개발 플랫폼 입니다.
  • Ethereum on Google Cloud - 작업증명(Proof of Work)을 기반으로 한 이더리움 네트워크를 만들 수 있습니다.

테스트 이더 파우셋(faucets)

이더리움과 정보 전달

이더리움 프론트엔드 API

  • Web3.js - 자바스크립트 웹3 입니다.
    • Eth.js - 자바스크립트 웹3 대안입니다.
    • Ethers.js - 자바스크립트 웹3 대안이고, 유용한 유틸리티들과 지갑 기능이 있습니다.
    • 웹3래퍼(Web3Wrapper) - 타입스크립트 웹3 대안입니다.
    • 이더리움js(Ethereumjs) - 이더리움이 좋아하는 ethereumjs-utilethereumjs-tx 를 위한 유틸리티 함수 모음 입니다.
    • flex-contractflex-ether 는 최신이며, 제로 구성(zero-configuration), 스마트 컨트렉트와 트렌젝션을 만들때 상호작용을 위한 고수준 (high-level) 라이브러리 입니다.
    • ez-ens 간단하며, 제로 구성(zero-configuration) 이더리움 이름 서비스(Ethereum Name Service) 주소 해결책 입니다.
    • web3x - web3.js의 타입스크립트 포트 입니다. 컨트렉트 상호작용이 포함되어 모든 타입의 보안(safety)과 작은 빌드의 이점이 있습니다.
  • 드리즐(Drizzle) - 리덕스(Redux) 라이브러리 블록체인 프론트엔드와 연결합니다.
  • dfuse - dfuse Ethereum API를 사용하는 TypeScript 라이브러리
  • Tasit SDK - 리엑트 네이티브(React Native)를 사용하여 모바일 이더리움 dapps를 만들기 위한 자바스크립트 SDK 입니다.
  • useMetamask - 이더리움 분산 응용 프로그램(Ethereum ĐApp) 프로젝트에서 메타마스크(Metamask) 를 관리하는 사용자 정의 React Hook
  • WalletConnect - 월렛과 분산 애플리케이션 (DApp)을 연결하기위한 개방형 프로토콜
  • Subproviders - 웹3 프로바이더 엔진(Web3-provider-engine) 과 함께 사용되는 여러가지 유용한 subproviders 입니다. (당신의 탈중앙화 어플리케이션을 지원하는 렛저(Ledger) 하드웨어 월렛을 위한 LedgerSubprovider를 포함합니다.)
  • web3-react - 싱글페이지(single-page) 이더리움 dApps를 빌딩하기 위한 리액트 프레임워크 입니다.
  • 볼텍스(Vortex) - Dapp-ready 리덕스 Store 입니다. 웹소켓(WebSockets) 덕분에 효율적(Smart)이고 민첩(Dynamic)하게 백그라운드 데이터를 새로고침 합니다. 트러플엠바크와 작동합니다.
  • Strictly Typed - 자바스크립트 대안 입니다.

이더리움 백엔드 API

  • Web3.py - 파이썬 웹3 입니다.
  • Web3.php - PHP 웹3 입니다.
  • Ethereum-php - PHP 웹3 입니다.
  • Web3j - 자바 웹3 입니다.
  • ethers-kt - EVM 기반 블록체인과 상호 작용하기 위한 비동기, 고성능 Kotlin 라이브러리입니다. JVM 및 Android 플랫폼을 대상으로 합니다.
  • Nethereum - 닷넷 웹3 입니다.
  • Ethereum.rb - 루비 웹3 입니다.
  • Web3.hs - 하스켈(Haskell) 웹3 입니다.
  • KEthereum - 코틀린(Kotlin) 웹3 입니다.
  • web3dart - 다트 웹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) 라이브러리 입니다.
  • One Click dApp - ABI를 이용해 유일한 URL로 dApp를 즉시 생성 합니다.
  • 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) 기초 계층 서비스 입니다.

메세징

  • 위스퍼(Whisper) - 각각의 탈중앙화 어플리케이션들 통신을 위한 의사소통 프로토콜, 이더리움 웹3 스택의 네이티브 기초 계층 서비스 입니다.
  • 데브p2p 와이어 프로토콜(DEVp2p Wire Protocol) - 작동 중인 이더리움/위스퍼 노드간 피어-투-피어(Peer-to-peer) 통신 입니다.
  • 파이데브p2p(Pydevp2p) - RLPx 네트워크 계층의 파이썬 구현 입니다.
  • GroupFi - GroupFi Chatbox SDK를 사용하여 개발자가 EVM 체인의 dApps에 GroupFi의 채팅 기능을 쉽게 통합 할 수 있습니다.

테스팅 도구

  • 솔리디티 코드 커버리지(Solidity code coverage) - 솔리디티 코드 커버리지 도구 입니다.
  • 솔리디티 커버리지(Solidity coverage) - 솔리디티 스마트 컨트렉트를 위한 코드 커버리지 대안 입니다.
  • 솔리디티 함수 프로파일러(Solidity function profiler) - 솔리디티 컨트렉트 함수 프로파일러 입니다.
  • Sol-profiler - 업데이트 된 솔리디티 스마트 컨트렉트 프로파일러(profiler) 및 대안 입니다.
  • 에스프레소(Espresso) - 빠르고, 병렬(parallelised) 방식이며, 핫 리로딩(hot-reloading)이 있는 솔리디티 테스트 프레임워크 입니다.
  • Eth tester - 테스팅 이더리움 어플리케이션들을 위한 도구 세트(Tool suite) 입니다.
  • 클리끄베이트(Cliquebait) - 실제 블록체인 네트워크와 유사한 도커(docker) 인스턴스를 사용해 스마트 컨트렉트 어플리케이션을 통합(integration)하고 테스팅을 합니다.
  • Hevm - hevm 프로젝트는 단위 테스팅과 스마트 컨트렉트 디버깅을 위해 특별히 만들어진 이더리움 가상 머신(EVM) 구현체 입니다.
  • 이더리움 그래프 디버거(Ethereum graph debugger) - 솔리디티 그래픽적인 디버거 입니다.
  • Tenderly CLI - 사람이 읽을 수 있는 스택 트레이스(stack traces)와 함께 개발속도를 빠르게 합니다.
  • 솔힌트(Solhint) - 보안을 제공하는 솔리디티 린터, 스타일 가이드와 스마트 컨트렉트 인증을 위한 모범 사례 규칙이 있습니다.
  • Ethlint - 솔리디티 보안 이슈 & 식별과 스타일 수정을 린터(Linter)로 합니다. 예전의 솔리움(Solium) 입니다.
  • 디코드(Decode) - 읽을 수 있고 쉽게 이해할 수 있도록 로컬 testrpc 노드에서 제출된 거래를 분석하는 npm 패키지 입니다.
  • 트러플어설션(truffle-assertions) - 트러플의 솔리디티 스마트컨트렉트 테스팅에 사용되는 유틸리티와 추가적인 어설션(assertions) npm 패키지 입니다. 가장 중요한 부분은 특정 이벤트가 발생했는지(안했는지)를 확인하는 기능이 추가 되었습니다.
  • Psol - 매크로와 조건부 컴파일(conditional compilation), 자동 원격 종속성 포함, mustache.js형식 문법을 이용한 솔리디티 어휘 처리기 입니다.
  • solpp - 포괄적인 지시문 및 표현식 언어, 복잡한() 수학 및 많이 유용한 도우미 기능을 제공하는 솔리디티 전처리기(preprocessor)와 플랫테너(flattener)입니다.
  • Decode and Publish – 가공되지 않은 이더리움 트랜젝션을 복호(decode)하고 퍼블리시 합니다. https://live.blockcypher.com/btc-testnet/decodetx/ 와 유사합니다.
  • Doppelgänger - 유닛 테스팅 동안에 제작 중인(mocking) 스마트 컨트렉트 종속성(dependencies)을 위한 라이브러리 입니다.
  • rocketh - 선택 가능한 테스트 실행기(test runner)와 web3 라이브러리를 허용하는 이더리움 스마트 컨트렉트 테스트를 위한 간단한 라이브러리 입니다.

보안 도구

모니터링

  • 노이펀드(Neufund) - Smart Contract Watch - 스마트 컨트렉트와 거래의 수를 모니터하는 도구 입니다.
  • Scout - 이더리움 안에서 당신의 스마트 컨트렉트의 이벤트 로그와 활동을 바로(live) 데이터 피드(data feed) 합니다.
  • Chainlyt - 구체적인 함수 호출 거래를 검색할 수 있고 컨트렉트 작동 방법을 확인할 수 있습니다. 디코드 된 거래 데이터가 포함된 스마트 컨트렉트를 탐색할 수 있습니다.

그 밖에 다양한 도구

  • 트러플 박스(Truffle boxes) - 탈중앙화 어플리케이션을 빠르게 만들기 위한 패키지 컴포넌트 입니다.
    • 쳬셔(Cheshire) - 크립토키티(CryptoKitties) API와 스마트 컨트렉트의 로컬 샌드박스 도구이며, 트러플 박스로 이용 가능합니다.
  • Solc - 솔리디티 컴파일러 입니다.
  • 솔컴파일러(Sol-compiler) - 프로젝트 단계의 솔리디티 컴파일러 입니다.
  • Solidity cli - 솔리디티 코드를 빠르고 쉽고, 더 믿을 수 있게 컴파일 합니다.
  • Solidity flattener - 솔리디티 프로젝트와 단층 파일(flat file) 유틸리티를 합쳐줍니다. 이더스캔(Etherscan)에서 컨트렉트 인증하거나 임포트(imported) 된 컨트렉트 시각화에 유용합니다.
  • Sol-merger - 대안이며, 솔리디티 컨트렉트를 위한 개별 파일을 가져와 병합(merges) 합니다.
  • 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로 부터 메타마스크를 연결 합니다.
  • Solidity-docgen - 솔리디티 프로젝트를 위한 문서 생성기 입니다.
  • Ethereum ETL - 이더리움 블록체인 데이터를 CSV 또는 JSON 파일로 내보냅니다.
  • prettier-plugin-solidity - 정형화 된 솔리디티 코드를 위한 Prettier 플러그인 입니다.
  • EthToolbox - 이더리움 개발자를 위해 오프체인 도구가 있는 웹앱입니다. EC recovery, address formatter, unit converter, hash functions, keys generator 등의 기능이 있습니다.
  • Unity3dSimpleSample - 이더리움과 유니티 통합(integration) 데모 입니다.
  • Flappy - 이더리움과 유니티 통합(integration) 데모/샘플 입니다.
  • Wonka - 니더리움(Nethereum) 비즈니스 방식 엔진 데모/샘플 입니다.

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

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을 위한 툴박스 입니다.
  • The AZTEC Protocol - 이더리움 네트워크 안에서 비밀 거래와 이더리움 메인넷에서 구현을 실시간으로 합니다.

UI 컴포넌트 사전빌드

  • ui.aragon.org - Dapp 컴포넌트를 포함하는 리액트(React) 라이브러리 입니다.
  • components.bounties.network - Dapp 컴포넌트를 포함하는 리액트(React) 라이브러리 입니다.
  • lorikeet.design - Dapp 컴포넌트를 포함하는 리액트(React) 라이브러리 입니다.
  • ui.decentraland.org - Dapp 컴포넌트를 포함하는 리액트(React) 라이브러리 입니다.
  • dapparatus - 재사용가능한 리액트 Dapp 컴포넌트 입니다.
  • Metamask ui - 메타마스크 리액트 컴포넌트 입니다.
  • DappHybrid - 웹을 기반으로 한 분산화 어플리케이션을 위한 하이브리드 호스팅 방식의 플랫폼 입니다.
  • Nethereum.UI.Desktop - 크로스 플랫폼 데스크탑 지갑 샘플입니다.