ホームページ >バックエンド開発 >Python チュートリアル >Python Web3 開発: Brownie を使用したスマート コントラクトのデプロイ

Python Web3 開発: Brownie を使用したスマート コントラクトのデプロイ

WBOY
WBOY転載
2023-05-19 17:34:061920ブラウズ

Python Web3 开发:用 Brownie 部署智能合约

Python は最も汎用性の高いプログラミング言語の 1 つです。テスト モデルを実行する研究者から、大規模な運用環境でそれを使用する開発者まで、考えられるほぼすべてのテクノロジ ドメインで使用例があります。今日のガイドでは、スマート コントラクトを作成してデプロイするための Python ベースのツールである Brownie について見ていきます。

準備

  • Python3のインストール
  • Ethereumノード
  • テキストエディタ
  • ターミナル

ブラウニーとは何ですか?

スマート コントラクトの開発は、主に web3.js、ethers.js、Truffle、Hardhat などの JavaScript ベースのライブラリが主流です。 Python は、スマート コントラクト/Web3 開発にも使用できる汎用性の高い言語で、web3.py は Web3 のニーズを満たす魅力的な Python ライブラリです。 Brownie フレームワークは web3.py 上に構築されています。

ブラウニーとは本来、小さな長方形のキャンディーを意味しますが、今日取り上げるブラウニーは、スマート コントラクトを開発およびテストするための Python ベースのフレームワークです。 Brownie は Solidity と Vyper の両方のコントラクトをサポートしており、pytest を通じてコン​​トラクトのテストを提供することもできます。

Brownie を使用してスマート コントラクトを作成および展開するプロセスを示すために、テンプレート プロジェクトである Brownie-mixes を使用します。具体的には、ERC-20実装のテンプレートであるトークンミックスを使用します。

依存関係パッケージをインストールする

Brownie は python3 上に構築されているため、Brownie で動作するにはそれをインストールする必要があります。Python3 がシステムにインストールされているかどうかを確認してみましょう。これを行うには、ターミナル/cmd に次のように入力します。

python3 -V

このコマンドは、インストールされている python3 のバージョンを返します。インストールされていない場合は、Python 公式 Web サイトからダウンロードしてインストールしてください。

Brownie をインストールする前にプロジェクト ディレクトリを作成し、そのプロジェクト ディレクトリを現在の作業ディレクトリにします。

mkdir brownieDemo
cd brownieDemo

システムに python3 がインストールされたので、Python のパッケージ マネージャーである pip を使用して Brownie をインストールしましょう。 pip は、npm が JavaScript に対して行うものと似ています。端末/cmd に次を入力します:

pip3 install eth-brownie
## If the install failS, use the following command for better luck.
sudo pip3 install eth-brownie

Brownie が正しくインストールされているかどうかを確認するには、端末/cmd に Brownie と入力すると、次の出力が表示されます。

Python Web3 开发:用 Brownie 部署智能合约

トークン ミックスを取得するには、ターミナル/コマンドに次のように入力します:

brownie bake token

これにより、brownieDemo ディレクトリ Directory token/ に新しいトークンが作成されます。

ファイル構造

まず、トークン ディレクトリに移動します。

cd token

次に、テキスト エディタでトークン ディレクトリを開きます。 Contracts/ フォルダーの下に、私たちの主要な契約である Token.sol があり、独自の契約を作成したり、これを変更したりできます。 scripts/ フォルダーの下に token.py スクリプトがあります。このスクリプトはコントラクトをデプロイするために使用され、コントラクトに従って変更する必要があります。

Python Web3 开发:用 Brownie 部署智能合约

#この契約は ERC-20 契約です。

イーサリアム ノードを開始します

独自のノードを実行するのではなく、Ropsten テストネットにコントラクトをデプロイします。チェックアウト時に必ずチェーンとしてイーサリアムを選択し、ネットワークとして Ropsten を選択してください。

Python Web3 开发:用 Brownie 部署智能合约

HTTP URL を保存します。次のステップで必要になります。

ネットワークとアカウントの設定

Brownie で QuickNode の無料ノードをセットアップする必要があります。これを行うには、ターミナル/cmd に次のように入力します。

brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3

YOUR_QUICKNODE_URL を、前の手順で取得した RopstenURL に置き換えます。

上記のコマンドでは、Ethereum は環境の名前、ropstenquicknode はネットワークのカスタム名です。カスタム ネットワークには任意の名前を付けることができます。

ここで次に行う必要があるのは、Brownie を使用して新しいウォレットを作成することです。これを行うには、ターミナル/cmd に次のように入力します。アカウントのパスワードを設定するように求められます。

brownie accounts generate testac

これにより、アカウントと記憶に残るフレーズが生成され、オフラインに保存されます。 testac という名前は私たちのアカウントの名前です。任意の名前を選択できます。

Python Web3 开发:用 Brownie 部署智能合约

アカウント アドレスをコピーして、テスト用の ETH を取得します。これは、コントラクトをデプロイするために必要です。

获取ETH测试币

由于我们的合约将被部署在Ropsten测试网,我们需要一些Ropsten测试ETH来支付gas费。前往Ropsten水龙头,将您的地址粘贴在该区域,然后点击 "Send me test Ether"。

Python Web3 开发:用 Brownie 部署智能合约

部署我们的合约

在部署合约之前,我们需要用以下方法编译它。

brownie compile

Python Web3 开发:用 Brownie 部署智能合约

现在在你的文本编辑器中打开scripts/token.py,并做如下修改。

#!/usr/bin/python3
from brownie import Token, accounts
def main():
acct = accounts.load('testac')
return Token.deploy("Test Token", "TST", 18, 1e21, {'from': acct})

第6行。我们添加这一行是为了导入我们先前创建的testac账户,并将其存储在acct变量中。

第7行。在这一行,我们编辑了 'From':部分,以获取我们的acct变量。

最后,我们将使用脚本(这里是 scripts/token.py)部署我们的合约。

brownie run token.py --network ropstenquicknode

在上面的命令中,ropstenquicknode是我们之前创建的自定义网络的名称。提示将要求你提供我们之前在建立账户时设置的密码。运行上述命令后,你必须得到交易哈希值,Brownie将等待交易得到确认。一旦交易被确认,它将返回我们的合约在Ropsten测试网上部署的地址。

Python Web3 开发:用 Brownie 部署智能合约

你可以在Ropsten etherscan复制粘贴合约地址,查看已部署的合约。

总结

我们学会了如何导入一个Brownie-mix,添加一个自定义网络,创建一个账户,以及编译和部署一个合约,整个过程中我们都使用了Brownie框架。

以上がPython Web3 開発: Brownie を使用したスマート コントラクトのデプロイの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。