Python は最も汎用性の高いプログラミング言語の 1 つです。テスト モデルを実行する研究者から、大規模な運用環境でそれを使用する開発者まで、考えられるほぼすべてのテクノロジ ドメインで使用例があります。今日のガイドでは、スマート コントラクトを作成してデプロイするための Python ベースのツールである Brownie について見ていきます。
スマート コントラクトの開発は、主に 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 と入力すると、次の出力が表示されます。
トークン ミックスを取得するには、ターミナル/コマンドに次のように入力します:
brownie bake token
これにより、brownieDemo ディレクトリ Directory token/ に新しいトークンが作成されます。
まず、トークン ディレクトリに移動します。
cd token
次に、テキスト エディタでトークン ディレクトリを開きます。 Contracts/ フォルダーの下に、私たちの主要な契約である Token.sol があり、独自の契約を作成したり、これを変更したりできます。 scripts/ フォルダーの下に token.py スクリプトがあります。このスクリプトはコントラクトをデプロイするために使用され、コントラクトに従って変更する必要があります。
#この契約は ERC-20 契約です。 イーサリアム ノードを開始します独自のノードを実行するのではなく、Ropsten テストネットにコントラクトをデプロイします。チェックアウト時に必ずチェーンとしてイーサリアムを選択し、ネットワークとして Ropsten を選択してください。 HTTP URL を保存します。次のステップで必要になります。 ネットワークとアカウントの設定Brownie で QuickNode の無料ノードをセットアップする必要があります。これを行うには、ターミナル/cmd に次のように入力します。brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3YOUR_QUICKNODE_URL を、前の手順で取得した RopstenURL に置き換えます。 上記のコマンドでは、Ethereum は環境の名前、ropstenquicknode はネットワークのカスタム名です。カスタム ネットワークには任意の名前を付けることができます。 ここで次に行う必要があるのは、Brownie を使用して新しいウォレットを作成することです。これを行うには、ターミナル/cmd に次のように入力します。アカウントのパスワードを設定するように求められます。
brownie accounts generate testacこれにより、アカウントと記憶に残るフレーズが生成され、オフラインに保存されます。 testac という名前は私たちのアカウントの名前です。任意の名前を選択できます。 アカウント アドレスをコピーして、テスト用の ETH を取得します。これは、コントラクトをデプロイするために必要です。
由于我们的合约将被部署在Ropsten测试网,我们需要一些Ropsten测试ETH来支付gas费。前往Ropsten水龙头,将您的地址粘贴在该区域,然后点击 "Send me test Ether"。
在部署合约之前,我们需要用以下方法编译它。
brownie compile
现在在你的文本编辑器中打开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测试网上部署的地址。
你可以在Ropsten etherscan复制粘贴合约地址,查看已部署的合约。
我们学会了如何导入一个Brownie-mix,添加一个自定义网络,创建一个账户,以及编译和部署一个合约,整个过程中我们都使用了Brownie框架。
以上がPython Web3 開発: Brownie を使用したスマート コントラクトのデプロイの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。