ページの最終更新日時: December 4, 2020
デベロッパー向けリソース
はじめに
イーサリアムの開発について知りたければ、このページは最適な場所です。 イーサリアムコミュニティによって書かれた以下のガイドを通してイーサリアムのスタックの基礎に触れ、おそらく他の馴染みあるアプリケーション開発とは異なるコアコンセプトを知りましょう。
すぐにでもコーディングを始めたいですか? ここで開発を始めましょう。
先により基礎的なことを学びたい人は 学習リソースをチェックしてください。
役に立つリソース
- Getting up to speed on Ethereum 2017 年 8 月 7 日 - Matt Condon
- Ethereum In Depth, Part 1 2018 年 5 月 11 日 - Facu Spagnuolo
- Ethereum In Depth, Part 2 2018 年 7 月 24 日 - Facu Spagnuolo
- Ethereum Development Walkthrough, Parts 1-5 2018 年 1 月 14 日 - dev_zl
- Ethereum 101, Parts 1-7 2019 年 2 月 13 日 - Wil Barnes
- Full Stack Hello World Voting Ethereum Dapp Tutorial 2017 年 1 月 18 日 - Mahesh Murthy
- Mastering Ethereum - A comprehensive textbook available for free online 2018 年 12 月 1 日 - Andreas Antonopoulos & Gavin Wood
- Ethereum Developer Portal - Everything you need to get started building on Ethereum 頻繁にアップデートあり - ConsenSys
- Deconstructing a Solidity Contract 2018 年 8 月 13 日 - Alejandro Santander & Leo Arias
- Full Stack Dapp Tutorial Series 頻繁にアップデートあり - Joshua Cassidy
スマートコントラクト言語
イーサリアムバーチャルマシン (EVM) で動作するあらゆるプログラムは一般的に「スマートコントラクト」と呼ばれます。 スマートコントラクトを記述するための言語として最も人気なのは Solidity と Vyperです。その他の言語は現在開発中です。
Solidity - C++、Python、JavaScript にインスパイアされた、イーサリアムで最もポピュラーな言語。
Vyper - Python をベースにしたイーサリアム用のセキュリティ重視の言語。
その他の選択肢をお探しですか?
言語別のリソース
開発者が好みのプログラミング言語でイーサリアムについて学ぶための言語別のランディングページを構築しています。
- Java 開発者のためのイーサリアム
- Python 開発者のためのイーサリアム
- JavaScript 開発者のためのイーサリアム
- Go 開発者のためのイーサリアム
- Rust 開発者のためのイーサリアム
- .NET 開発者のためのイーサリアム
- 今後さらに追加する予定です! ここにあなたの言語がありませんか? イシューを立ててください!
開発者ツール
開発者によるアプリケーションの開発、テスト、デプロイを支援するツールがイーサリアムにはすでに多くあり、今も増え続けています。 以下は最も人気のあるツールです。 より深く知りたければこちらの全リストを参照してください。
フレームワーク
Truffle - 開発環境、テストフレームワーク、ビルドパイプラインなどのツール群。
Embark - イーサリアム、IPFS、Whisper と統合された開発環境、テストフレームワークなどのツール群。
Waffle - 高度なスマートコントラクトの開発とテストのためのフレームワーク (ethers.js ベース)。
Etherlime - Ethers.js ベースの dapp 開発 (Solidity & Vyper)、デプロイ、デバッグ、テストなどのためのフレームワーク。
他のツール
Hardhat - イーサリアムスマートコントラクト開発者のためのタスクランナー。
OpenZeppelin SDK - 究極のスマートコントラクトツールキット。スマートコントラクトの開発、コンパイル、アップグレード、デプロイ、およびインタラクションを支援するツール群。.
The Graph - イーサリアムと IPFS のデータをインデックス化し、GraphQL を使用してクエリを作成するためのプロトコル。
Tenderly - エラートラッキング、アラート、パフォーマンス測定、詳細なコントラクト分析ができる、スマートコントラクトを簡単に監視するためのプラットフォーム。
Python Tooling - Python によるイーサリアムインタラクションのための各種ライブラリ。
Brownie - Python ベースの開発環境とテストフレームワーク。
web3j - イーサリアム用の Java/Android/Kotlin/Scala の統合ライブラリ。
One Click Dapp - 迅速な開発とテストのために、ABI から直接フロントエンドを生成する。
その他の選択肢をお探しですか?
統合開発環境 (IDE)
Ethereum Studio - スマートコントラクトを試したい新規開発者に最適な Web ベースの IDE です。 Ethereum Studio は、複数のテンプレート、MetaMask の統合、トランザクションロガー、ビルトインブラウザの Ethereum Virtual Machine (EVM) を備えており、イーサリアム上での開発を可能な限り早く始めれます。
Visual Studio Code - イーサリアムを公式にサポートするプロフェッショナルなクロスプラットフォーム IDE。
- Visual Studio Code
- Azure Blockchain Development Kit for Ethereum
- Azure Blockchain Workbench プラグイン
- サンプルコード
- GitHub
Remix - 静的分析とテスト用のブロックチェーンバーチャルマシンを備えた Web ベースの IDE。
EthFiddle - スマートコントラクトの書き込み、コンパイル、デバッグができる Web ベースの IDE。
その他の選択肢をお探しですか?
フロントエンドの JavaScript API
Web3.js - イーサリアムの JavaScript API。
Ethers.js - JavaScript と TypeScript による完全なイーサリアムウォレットの実装とユーティリティ。
light.js - ライトクライアントに最適化されたハイレベルのリアクティブ JS ライブラリ。
Web3-wrapper - Web3.js に代わる Typescript。
その他の選択肢をお探しですか?
バックエンド API
Infura - サービスとしてのイーサリアム API。
Cloudflare のイーサリアムゲートウェイ。
Nodesmith - イーサリアムのメインネットとテストネットへの JSON-RPC API アクセス。
Chainstack - サービスとしての共有および専用のイーサリアムノード。
ストレージ
IPFS - InterPlanetary File System は、イーサリアムの分散型ストレージとファイル参照システムです。
Swarm - イーサリアム web3 スタックのための分散型ストレージプラットフォームとコンテンツ配信サービス。
OrbitDB - IPFS 上の分散型ピアツーピアデータベース。
セキュリティツール
スマートコントラクトセキュリティ
Slither - Python 3 で書かれた Solidity 静的分析フレームワーク。
MythX - イーサリアムスマートコントラクトのためのセキュリティ分析 API。
Mythril - EVM バイトコードのためのセキュリティ分析ツール。
SmartContract.Codes - 検証済みの Solidity ソースコードの検索エンジン。
Manticore - スマートコントラクトやバイナリ上でシンボリック実行ツールを使えるコマンドラインインターフェース。
Securify - イーサリアムスマートコントラクトのためのセキュリティスキャナ。
ERC20 Verifier - コントラクトが ERC20 規格に適合しているかどうかを確認する検証ツール。
形式検証
形式検証について
- How formal verification of smart-contacts works 2018 年 7 月 20 日 - Brian Marick
- How Formal Verification Can Ensure Flawless Smart Contracts 2018 年 1 月 29 日 - Bernard Mueller
その他の選択肢をお探しですか?
テストツール
Solidity-Coverage - Solidity コードのカバレッジツールの代替版。
hevm - ユニットテストとスマートコントラクトのデバッグに特化して作られた EVM の実装。
Whiteblock Genesis - ブロックチェーンのためのエンドツーエンドの開発サンドボックスとテストプラットフォーム。
その他の選択肢をお探しですか?
ブロックエクスプローラー
ブロックエクスプローラーはイーサリアムブロックチェーン (およびテストネット) をブラウズできます。つまり特定のトランザクションやブロック、コントラクトなどのオンチェーンアクティビティを監視できるサービスです。
テストネットとフォーセット
イーサリアムコミュニティは複数のテストネットを運営しています。 これは開発者がイーサリアムのメインネットにアプリケーションをデプロイする前に別の環境で行うアプリケーションのテストのために使われています。
Ropsten - Proof of Work ブロックチェーン、テストイーサをマイニングできます。
Rinkeby - Proof of Authority ブロックチェーン、Geth 開発チームによって維持されています。
Goerli - クロスクライアントの Proof of Authority ブロックチェーン、Goerli コミュニティによって構築・管理されています。
クライアントと、ノードの運用
イーサリアムネットワークは互換性のあるクライアントソフトウェアが実行されている多くのノードによって構成されています。 ノードの大多数はGeth または Parityというクライアントを使用しており必要に応じて設定を行うことができます。
クライアント
Geth - Go で書かれたイーサリアムクライアント。
Parity - Rust で書かれたイーサリアムクライアント。
Pantheon - Java で書かれたイーサリアムクライアント。
Nethermind - C# .NET Core で書かれたイーサリアムクライアント。
自分のノードを実行中
Ethnode - ローカルでの開発のためにイーサリアムノード (Geth または Parity) を実行します。
イーサリアムノードのリソース
- ノード設定用チートシート 2019 年 1 月 5 日 - Afri Schoeden
その他の選択肢をお探しですか?
ベストプラクティスとパターン、アンチパターン
スマートコントラクト
DappSys - スマートコントラクトのための安全でシンプルで柔軟なビルディングブロック。
OpenZeppelin Contracts - 安全なスマートコントラクト開発のためのライブラリ。
aragonOS - アップグレードとパーミッションコントロールのパターン。
Smart Contract Weakness Registry
セキュリティ
スマートコントラクトセキュリティのベストプラクティスガイド
Smart Contract Security Verification Standard (SCSVS)
その他の選択肢をお探しですか?
開発者サポートとトレーニング
一般的な学習
イーサリアム Stackexchange
ConsenSys Academy - セルフペースで通年開講されているエンドツーエンドのイーサリアム開発者向けコース。
Solidity Gitter チャットルーム
全てのイーサリアム Gitter チャットルーム
Chainshot - Web ベースの dapp コーディングチュートリアル。
Blockgeeks - ブロックチェーン技術に関するオンラインコース。
DappUniversity - イーサリアムブロックチェーン上での分散型アプリケーションの構築を学ぶ。
B9lab Academy - 最も古いプロ向けイーサリアム dapp 開発者コース、および監査人と QA 向けの学習リソースを提供。 これは次を含みます: メンタリングとコードレビュー。
ゲームベースの学習
Cryptozombies - イーサリアムでゲームのコーディングを学ぶ。
Ethernaut - 各レベルにハッキングするコントラクトが用意されている Solidity ベースのウォーゲーム。
Capture the Ether - イーサリアムのスマートコントラクトセキュリティのゲーム。
UI/UX デザイン
- Challenge of UX in Ethereum 2018 年 6 月 25 日 - Anna Rose
- Designing for blockchain: what’s different and what’s at stake 2018 年 3 月 22 日 - Sarah Baker Mills
Rimble UI - 分散型アプリケーションのためのコンポーネントと設計標準。
スタンダード
イーサリアムコミュニティはこれまで数多くのスタンダードを採用し、開発者をサポートしてきました。 基本的にスタンダードはEthereum Improvement Proposals (EIPs) として、コミュニティによる議論のプロセスを経て導入されます。
- EIP リスト
- EIP GitHub レポジトリ
- EIP ディスカッションボード
- イーサリアムのガバナンス概要 2019 年 3 月 31 日 - Boris Mann
- コア開発者ミーティングのプレイリスト (YouTube プレイリスト)
スマートコントラクトの標準フォーマットなど、アプリケーションレベルのスタンダードに関わる EIP はEthereum Requests for Comment (ERC) として導入されます。 ERC にはイーサリアムエコシステム全体で広く使われているような必要不可欠なものも多くあります。