スマートコントラクトの導入
最終編集者: @sekisanchi(opens in a new tab), Invalid DateTime
イーサリアムネットワークのユーザーがスマートコントラクトを利用できるようにするには、それをデプロイする必要があります。
ブロックチェーン上でのスマートコントラクトのデプロイとは、要するにスマートコントラクトのコンパイル済みのコードが格納されたイーサリアムトランザクションを、受信者を指定せずに送信するということです。
事前に
スマートコントラクトをデプロイする前に、イーサリアムネットワーク、トランザクション、スマートコントラクトの構造を理解する必要があります。
コントラクトはブロックチェーンに保存されているため、デプロイする際にイーサ(ETH)もかかります。そのため、イーサリアムのガスと手数料を熟知しておく必要があります。
最後に、デプロイする前にコントラクトをコンパイルする必要がありますので、 スマートコントラクトのコンパイルを必ずお読みください。
スマートコントラクトのデプロイ方法
必要なもの
- コントラクトのバイトコード - これはコンパイルによって生成されます。
- ガス用の ETH - 他のトランザクションと同様にガスリミットを設定しますので、コントラクトのデプロイには、単純な ETH の送金よりも多くのガスが必要であることに注意してください。
- デプロイメントのためのスクリプトやプラグイン。
- イーサリアムノードへのアクセス。これは、自身のノードを実行するか、公開ノードに接続するか、Infura(opens in a new tab)やAlchemy(opens in a new tab)のようなノードサービスを使用して API キーを介するかのいずれかの方法で行います。
スマートコントラクトをデプロイする手順
実際の手順は、どのツールを利用するかによって変わります。 例えば、コントラクトのデプロイに関する Hardhat のドキュメント(opens in a new tab)や、ネットワークとアプリケーションのデプロイに関する Truffle のドキュメント(opens in a new tab)をご確認ください。 これらは、スマートコントラクトをデプロイするための最も一般的なツールです。このデプロイでは、デプロイの手順を進めていくためのスクリプトを作成します。
デプロイされると、コントラクトは他のアカウントと同じように、イーサリアムアドレスを持つようになります。
関連ツール
Remix - Remix IDE では、イーサリアムのようなブロックチェーン上のスマートコントラクトの開発、デプロイ、管理を行うことができます。
Tenderly - スマートコントラクトの開発、テスト、監視、運用のためのデバッグ、オブザーバビリティ、インフラストラクチャ・ビルディング・ブロックを提供する Web3 開発プラットフォーム
- tenderly.co(opens in a new tab)
- ドキュメント(opens in a new tab)
- GitHub(opens in a new tab)
- Discord(opens in a new tab)
Hardhat - イーサリアムソフトウェアのコンパイル、デプロイ、テスト、デバッグができる開発環境。
- hardhat.org(opens in a new tab)
- コントラクトのデプロイについてのドキュメント(opens in a new tab)
- GitHub(opens in a new tab)
- Discord(opens in a new tab)
Truffle - 開発環境、テストフレームワーク、ビルドパイプライン、およびその他のツール。
- trufflesuite.com(opens in a new tab)
- ネットワークとアプリケーションのデプロイに関するドキュメント(opens in a new tab)
- GitHub(opens in a new tab)
関連チュートリアル
- 最初のスマートコントラクトのデプロイ - イーサリアムテストネットワークに最初のスマートコントラクトをデプロイする方法の紹介
- Hello World | スマートコントラクトチュートリアル – 容易に理解できるチュートリアルです。基本的なスマートコントラクトを作成し、イーサリアムにデプロイします。
- Solidity を使用した他のコントラクトとの連携 - 既存のコントラクトからスマートコントラクトをデプロイし、それを扱う方法
- コントラクトのサイズを小さくする方法 - コントラクトコードのサイズをリミットよりも下げて、ガスを節約する方法
参考文献
- https://docs.openzeppelin.com/learn/deploying-and-interacting(opens in a new tab) - OpenZeppelin
- Hardhat を使用したコントラクトのデプロイ(opens in a new tab) - Nomic Labs
イーサリアムを学ぶために利用したコミュニティリソースはありますか? もしあればページを編集して追加してください!