【Vyper】第4章第5回:Vyperでのデプロイとテスト:実践的な手順

本記事では、Vyperを使用したスマートコントラクトのデプロイ(展開)とテストの手順について解説します。Ethereumネットワーク上でコントラクトを安全に実行し、正しく動作することを確認する方法を学びましょう。
0. 記事の概要
この記事を読むメリット
- Vyperスマートコントラクトのデプロイ方法を学べる
- ローカル環境でのテスト方法を理解できる
- Ethereumネットワークへの展開手順を習得できる
1. スマートコントラクトのデプロイとは?

デプロイとは、作成したスマートコントラクトをEthereumネットワーク上に配置し、実際に動作させることを指します。適切な手順でデプロイすることで、安全なコントラクト運用が可能になります。
1.1 デプロイの流れ
- スマートコントラクトの作成: Vyperを使用してコントラクトを作成
- コンパイル: バイトコードに変換
- デプロイ: Ethereumネットワークに配置
- 実行とテスト: 動作を確認
1.2 デプロイに必要なツール
- Python & Vyper: コントラクトの記述とコンパイル
- Web3.py: Ethereumとやり取りするライブラリ
- Ganache: ローカルテストネット
2. スマートコントラクトのデプロイ
スマートコントラクトを実際にデプロイする手順を説明します。
2.1 Vyperコントラクトのコンパイル
vyper my_contract.vy -o my_contract.json
動作解説
- vyper my_contract.vy – コントラクトをコンパイル
- -o my_contract.json – 出力ファイルを指定
2.2 Web3.pyを使用したデプロイ

from web3 import Web3
w3 = Web3(Web3.HTTPProvider("http://127.0.0.1:7545"))
with open("my_contract.json") as f:
bytecode = f.read()
tx_hash = w3.eth.contract(bytecode=bytecode).deploy()
print(f"Deployed at: {tx_hash}")
動作解説
- Web3.py – Ethereumネットワークと通信
- deploy() – コントラクトをデプロイ
3. スマートコントラクトのテスト
デプロイ後、コントラクトが正常に動作するかテストを行います。
3.1 pytestを使ったテスト

def test_contract():
contract = w3.eth.contract(address="0x1234...", abi=abi)
assert contract.functions.get_value().call() == 0
動作解説
- デプロイしたコントラクトを呼び出し
- 初期値が正しいかチェック
4. 練習問題
4.1 練習問題
以下の課題に挑戦してください。
- ローカルネットワークでデプロイし、コントラクトの関数を実行する
- pytestを使用してコントラクトの動作を検証する
5. まとめ
本記事では、Vyperでのスマートコントラクトのデプロイとテスト方法について解説しました。次回は、Vyperを活用したセキュリティ対策について詳しく学びます。