Vyper

【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を活用したセキュリティ対策について詳しく学びます。