これは何?
-
Ethereum Developer Tools Listの邦訳です
- 邦訳のPR
- 割と知らないものあり
- TODO: ここ日本独自の情報も追記してゆく
-
Qiitaの様式美に従い 2018年の〜 がタイトルです。もうすぐ終わるけど。
- 2019年のどこかでまたまとめます
Ethereum Developer Tools List
Ethereum開発で利用可能なツール、コンポーネント、パターン、プラットフォームのガイドです。
新規の開発者はこちらから
- Solidity - もっともポピュラーなスマートコントラクト用言語
- Truffle - もっともポピュラーなスマートコントラクトの開発、テスト、デプロイ用フレームワーク。npmでインストールしこのツールで最初のスマートコントラクトを書いてみてください。
- Metamask - DAppsと連携するChrome拡張ウォレット。
- Truffle boxes - Ethereumエコシステムのためのパッケージされたコンポーネント。
開発ツール
スマートコントラクト開発
スマートコントラクト用言語
- Solidity- Ethereumのスマートコントラクト用言語。
- Bamboo - モーフィング・スマートコントラクト用言語
- Vyper - 新しい実験的プログラミング言語
- LLL - Lispライクな低レベル言語
フレームワーク
- Truffle - もっともポピュラーなスマートコントラクトの開発、テスト、デプロイ用フレームワーク。TruffleスイートはTruffle、Ganache、Drizzleを含みます。参考: Deep dive on Truffle here
- Embark - DApps開発フレームワーク
- Dapp - DApps開発フレームワーク。DAppleの後継。
- Populus - もっともかわいい動物写真を含むEthereum開発フレームワーク。
- Etherlime - ethers.jsベースのDApps開発フレームワーク。
IDEs
- Remix - 静的解析とブロックチェーンVMによるテスト機能を含むWeb IDE。
- Atom - Atomエディタ + Atom Solidity Linter, Etheratom
- Pragma - スマートコントラクトのインターフェイス自動生成機能を含む非常にシンプルなSolidity Web IDE。
- Superblocks Studio - Superblocks Studioはスマートコントラクトのコーディング、ビルド、デプロイを支援します。
- Vim solidity - Solidity用Vimシンタックスファイル。
- Visual Studio Code - Visual Studio CodeのSolidity用エクステンション。
- Intellij Solidity Plugin - シンタックスハイライト、フォーマット、コード補完等の機能を含むオープンソースのJetBrains IntelliJ Idea IDE (フリー/商用)プラグイン。
- YAKINDU Solidity Tools - EclipseベースのIDE。コンテクストに応じたコード補完とヘルプ、コードナビゲーション、シンタックスハイライト、ビルド、クイックフィックス&テンプレート。
- Eth Fiddle - The Loom Network製のIDE。スマートコントラクトの作成、コンパイル、デバッグが可能。シェアが容易。
テスト用ブロックチェーンネットワーク
- Ganache - GUIとログ基盤を持つEthereumブロックチェーンのテストアプリケーション。
- Kaleido - コンソーシアムブロックチェーンを効率よく利用するためのツール。PoCや検証に最適。
- Cliquebait - 本物のブロックチェーンに近いDockerベースのシンプルなスマートコントラクト・アプリケーションのテスト環境。
- Local Raiden - デモやテストのためにDockerコンテナ上でRaidenを可動させる環境。
- Private networks deployment scripts - プライベートPoAチェーン構築のためのクリエイティブなスクリプト。
- Local Ethereum Network - プライベートPoWチェーン構築のためのクリエイティブなスクリプト。
- Ethereum on Azure - コンソーシアムEthereumネットワークの構築とガバナンス。
テスト用のEther faucets
Ethereumを利用するためのクライアント
フロントエンドEthereum API
-
Web3.js - Javascript Web3
- Eth.js - Javascript Web3 その2
- Ethers.js- Javascript Web3 その3、便利なユーティリティとウォレット機能も。
- Web3Wrapper- Typescript Web3
- Ethereumjs - ethereumjs-util や ethereumjs-txのようなEthereumのユーティリティ集
-
Drizzle - フロントエンドからブロックチェーンに繋ぐためのReduxライブラリ
-
Subproviders - Web3-provider-engine と接続するためのいくつかの便利なsubproviders(ハードウェアウォレットLedgerサポートをdAppに追加するためのLedgerSubproviderを含む)
-
web3-webpacked - Web3を利用するためのJSフレームワーク。
-
Vortex - DApp対応したReduxストア。WebSocketでスマートでダイナミックなバックグラウンドデータの更新が可能。 TruffleとEmbarkで利用可能。
-
静的型付けALT JS言語
バックエンドEthereum API
- Web3.py- Python Web3
- Web3.php - PHP Web3
- Ethereum-php - PHP Web3
- Web3j - Java Web3
- Nethereum - .Net Web3
- Ethereum.rb - Ruby Web3
- Web3.hs - Haskell Web3
- KEthereum - Kotlin Web3
- Pyethereum - The Python core library of the Ethereum project
- Eventeum - Kauri作成のEthereumのスマートコントラクト・イベントと バックエンドのマイクロサービスを繋ぐブリッジ。JAVA製。
- Ethereumex - Elixir製のEthereumブロックチェーン用JSON-RPCクライアント
- EthContract - ElixirからEthereumのスマートコントラクトへクエリを投げるためのヘルパーメソッド。
ブートストラップ
- Truffle boxes - Ethereumエコシステムのためのパッケージされたコンポーネント。
- Local Raiden - デモやテストのためにDockerコンテナ上でRaidenを可動させる環境。
- Private networks deployment scripts - プライベートPoAチェーン構築のためのクリエイティブなスクリプト。
- Parity Demo-PoA Tutorial - 2ノードによるParity PoAテストネットを構築するためのチュートリアル。
- Local Ethereum Network - プライベートPoWチェーン構築のためのクリエイティブなスクリプト。
- Kaleido - コンソーシアムブロックチェーンを効率よく利用するためのツール。PoCや検証に最適。
- Cheshire - CryptoKitties APIとスマートコントラクトのためのローカル・サンドボックス実装。Truffle Boxで利用可能。
- Aragon CLI - Aragonアプリケーション構築のためのCLIツール。
Ethereum ABI (Application Binary Interface) ツール
- ABI r - Ethereumトランザクションのデータ、パラメータ、イベントのデコーダ・ライブラリ。
- ABI-gen - コントラクトのABIからTypescriptのコントラクト・ラッパーを生成。
- Ethereum ABI UI - EthereumのコントラクトABIのフィールド定義と関連するバリデータからUIフォームを生成。
- headlong - Javaの型安全コントラクトABIと再帰ライブラリ。
パターン & ベストプラクティス
スマートコントラクトのパターン
-
Dappsys: Safe, simple, and flexible Ethereum contract building blocks
- EthereumとSolidityの一般的な問題への解決方法。以下は例:
- MakerDAOやThe TAOのbuilding blocksを提供
- 独自のテストされていないソリューションを作成する前に相談すべきです
- 使い方はDapp-a-day 1-10やDapp-a-day 11-25を参照
-
OpenZeppelin: Solidity用の再利用可能でセキュアなオープン・フレームワーク
- もっとも利用されているスマートコントラクトライブラリ
- Dappsysに似ていますが、よりTruffleに統合されています。
- Security Auditsのベストプラクティス
- Assemblyを深掘りしたワークショップ
- Simpler Ethereum Multisig - 特に Benefits セクションは必見。
- CryptoFin Solidity Auditing Checklist - コントラクトをメインネットにローンチする際の検証に! 一般的な問題と発見のチェックリスト。
-
aragonOS: DAO,DApp,protocol作成用のスマートコントラクト・フレームワーク
- Upgreadability: 新しいバージョンへ更新できるスマートコントラクト。
- Permission control:
auth
とauthP
のmodifierを利用することで、関数へのアクセスを制限。 - Forwarders: aragonOSアプリは他のアプリを利用するためのintentを送信可能なため、一連の要件が満たされた場合にintentが転送されます
Upgradebility
インフラ
Ethereum クライアント
- Geth - Goクライアント
- Parity - Rustクライアント
- Cpp-ethereum - C++クライアント
- Pyethapp - pyethereumを利用したPythonクライアント
- Trinity - py-evmを利用したPythonクライアント
- Ethereumjs - ethereumjs-vmを利用したJSクライアント
- Ethereumj - Ethereum FoundationによるJavaクライアント
- Harmony - EtherCampによるJavaクライアント
- Seth - "コマンドラインのためのMetaMask" のようなクライアントツール。
- Mustekala - MetamaskのEthereum Light Clientプロジェクト。
- Exthereum - Elixirクライアント
- EWF Parity - Tobalaba test network用のEnergy Web Foundationクライアント
- Quorum - JP Morganによるデータ・プライバシーをサポートした認証されたEthereum実装。
ストレージ
-
IPFS - 分散ストレージとファイル参照
- IPFS-Store - 検索機能を追加したIPFSストレージサービス
- OrbitDB - IPFS上の分散データベース
- JS IPFS API - IPFSのHTTP API JSライブラリ
- TEMPORAL - IPFSとその他の分散ストレージプロトコルを容易に利用できるAPI
- Swarm - Ethereum web3スタックのネイティブ・ベース・レイヤーの分散ストレージ、ファイルディストリビューションサービス
メッセージング
- Whisper - Ethereum web3スタックのネイティブ・ベース・レイヤーの、DApps間のコミュニケーションプロトコル
- DEVp2p Wire Protocol - Ethereum/Whisperが稼働するノード間のP2Pコミュニケーション
- Pydevp2p - RLPxネットワークレイヤーのPython実装
テストツール
- Solidity code coverage - Solidityコードカバレッジツール
- Solidity coverage - Solidityコードカバレッジツール・その2
- Solidity function profiler - Solidityコントラクトのfunctionプロファイラ
- Espresso - 迅速、並列処理、 ホットリロードを特徴としたSolidityテストフレームワーク
- Eth tester - Ethereumアプリケーション用テストスイート
- Cliquebait - 本物のブロックチェーンに似せた、テスト可能なスマートコントラクトが統合されたDockerインスタンス
- Hevm - テストとデバッグのためのEVM実装
- Ethereum graph debugger - Solidityのグラフィカルデバッガ
- Solhint - セキュリティ、スタイルガイド、ベストプラクティスをチェックできるスマートコントラクト・バリデーションのためのSolidity linter
- Solium - スタイルとセキュリティの問題を検出するためのSolidity linter
- - ローカルのtestrpcノードにsubmitされたトランザクションをよりリーダブルで理解を容易にするためのnpmパッケージ
セキュリティ・ツール
- Mythril - スマートコントラクトの静的解析
- Oyente - スマートコントラクトの静的解析・その2
- Securify - Ethereumスマートコントラクトのセキュリティ・スキャナ
- Porosity - Ethereumスマートコントラクトのデコンパイラとセキュリティチェックツール
- Ethersplay - EVMディスアセンブラ
- Evmdis - EVMディスアセンブラ・その2
- Hydra - Cryptoeconomicコントラクトのセキュリティと分散バウンティ・フレームワーク
- Solgraph - スマートコントラクトのセキュリティ検証のためのSolidityコントロールフローの可視化
- Manticore - スマートコントラクトとバイナリのためのSymbolic executionツール
- Solidity security blog - 既知の攻撃手法と一般的なアンチパターンの包括的なリスト
- Awesome Buggy ERC20 Tokens - ERC20トークン・スマートコントラクトの脆弱性コレクション
モニタリング
- Neufund - Smart Contract Watch - 多くのスマートコントラクト、トランザクションを監視するためのツール
- Supermax - Ethereumスマートコントラクトのアクティビティ、Event logのライブデータフィード
その他のツール
-
Truffle boxes - Ethereumエコシステムのためのパッケージされたコンポーネント。
- Cheshire - CryptoKitties APIとスマートコントラクトのためのローカル・サンドボックス実装。Truffle Boxで利用可能。
- Solc - Solidityコンパイラ
- Sol-compiler - プロジェクトレベルのSolidityコンパイラ
- Solidity cli - より信頼でき、簡単に、迅速にSolidityコードをコンパイル
- Solidity flattener - Solidityプロジェクトを1ファイルに集約。importしたコントラクトを可視化したり、Etherscanで検証可能としたりする際に便利
- RLP - RLP(Recursive Length Prefix)のJSエンコーダ
- eth-cli - Ethereumの習熟・開発時に便利なCLIツールのコレクション
- Ethereal - Ethereumの一般的なタスクを管理するためのCLIツール
- Eth crypto - Ethereum用JS暗号関数とそれをweb3.js & Solidityで使用するためのチュートリアル
- Parity Signer - トランザクションに署名できるモバイルアプリ
- py-eth - EthereumエコシステムのためのPythonツールのコレクション
- truffle-flattener - Truffleで開発されたSolidityファイルを全ての依存関係を含め結合
- - ローカルのtestrpcノードにsubmitされたトランザクションをよりリーダブルで理解を容易にするためのnpmパッケージ
- TypeChain - Ethereumスマートコントラクト用のTypescriptバインディング
- EthSum - シンプルなEthereumアドレス用Checksumツール
- PHP based Blockchain indexer - PHPでブロックをインデックスしたりEventを監視
スマートコントラクトの規格とライブラリ
ERCs - Ethereum版RFCのリポジトリ
- トークン
- ERC-165 - スマートコントラクトがどのインターフェースを実装するかを公開&検出するための標準メソッドを作成
- ERC-725 - ブロックチェーンのアイデンティティを確立するためのキー管理&実行Proxyコントラクト
- ERC-173 - コントラクトの所有権のためのインターフェース規格
主要なスマートコントラクトライブラリ
- Zeppelin - 検証された再利用可能なSafeMathやスマートコントラクトのupgradeabilityのためのZeppelinOS libraryを包含
- cryptofin-solidity - セキュアでgasを抑えたEthereumスマートコントラクト開発のためのSolidityライブラリ
- Modular Libraries - EVMを利用するブロックチェーンで使用するためのパッケージ集
- DateTime Library - gas抑制効果のあるSolidity用のdate & timeライブラリ
- Aragon - DAOプロトコル. ガバナンスとupgradeabilityにフォーカスしたaragonOS smart contract frameworkを包含
- 0x - DEXプロトコル
- Token Libraries with Proofs - トークンコントラクトのcorrectness proofsに関する、高品質な仕様と特性を包含
2ndレイヤのインフラ開発のためのガイド
スケーラビリティ
Payment/State Channels
- Ethereum Payment Channel - 50行で実装されたEthereumのPayment Channel
- µRaiden Documentation - μRaidenのSender/Receiverユースケースのガイドとサンプル
Plasma
- Learn Plasma - コーネル大学の2018 IC3-Ethereum Crypto Boot Campで始まったNode.jsによるWebアプリケーション。Plasmaの全ての種類をカバー(MVP/Cash/Debit)
- Plasma MVP - Omise Goが実装したMinimal Viable Plasma
- Plasma MVP Golang - Go言語で実装されたMinimal Viable Plasmaとその拡張
- Plasma Cash - シンプルなPlasma Cashの実装
Side-Chains
Privacy
zkSNARKs
- ZoKrates - EthereumのzkSNARKSのツールボックス